Skip to content

Commit 6ef2904

Browse files
committed
Move standalone monthly report scripts to bin directory. Commit ready for merge.
- Legacy-Id: 11118
1 parent 523f0d8 commit 6ef2904

6 files changed

Lines changed: 141 additions & 120 deletions

File tree

ietf/bin/report_id_activity.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#!/usr/bin/env python
2+
# -*- coding: utf-8 -*-
3+
# -*- Python -*-
4+
#
5+
6+
# Set PYTHONPATH and load environment variables for standalone script -----------------
7+
import os, sys
8+
basedir = os.path.abspath(os.path.join(os.path.dirname(__file__), "../.."))
9+
sys.path = [ basedir ] + sys.path
10+
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ietf.settings")
11+
12+
import django
13+
django.setup()
14+
# -------------------------------------------------------------------------------------
15+
16+
from ietf.secr.drafts.reports import report_id_activity
17+
18+
print report_id_activity(sys.argv[1], sys.argv[2]),
19+

ietf/bin/report_progress_report.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#!/usr/bin/env python
2+
# -*- coding: utf-8 -*-
3+
# -*- Python -*-
4+
#
5+
6+
# Set PYTHONPATH and load environment variables for standalone script -----------------
7+
import os, sys
8+
basedir = os.path.abspath(os.path.join(os.path.dirname(__file__), "../.."))
9+
sys.path = [ basedir ] + sys.path
10+
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ietf.settings")
11+
12+
import django
13+
django.setup()
14+
# -------------------------------------------------------------------------------------
15+
16+
from ietf.secr.drafts.reports import report_progress_report
17+
18+
print report_progress_report(sys.argv[1], sys.argv[2]),

ietf/secr/drafts/report_id_activity.py

Lines changed: 0 additions & 9 deletions
This file was deleted.

ietf/secr/drafts/report_progress_report.py

Lines changed: 0 additions & 9 deletions
This file was deleted.

ietf/secr/drafts/reports.py

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
import datetime
2+
3+
from django.template.loader import render_to_string
4+
5+
from ietf.meeting.models import Meeting
6+
from ietf.doc.models import DocEvent, Document
7+
from ietf.secr.proceedings.proc_utils import get_progress_stats
8+
9+
def report_id_activity(start,end):
10+
11+
# get previous meeting
12+
meeting = Meeting.objects.filter(date__lt=datetime.datetime.now(),type='ietf').order_by('-date')[0]
13+
syear,smonth,sday = start.split('-')
14+
eyear,emonth,eday = end.split('-')
15+
sdate = datetime.datetime(int(syear),int(smonth),int(sday))
16+
edate = datetime.datetime(int(eyear),int(emonth),int(eday))
17+
18+
#queryset = Document.objects.filter(type='draft').annotate(start_date=Min('docevent__time'))
19+
new_docs = Document.objects.filter(type='draft').filter(docevent__type='new_revision',
20+
docevent__newrevisiondocevent__rev='00',
21+
docevent__time__gte=sdate,
22+
docevent__time__lte=edate)
23+
new = new_docs.count()
24+
updated = 0
25+
updated_more = 0
26+
for d in new_docs:
27+
updates = d.docevent_set.filter(type='new_revision',time__gte=sdate,time__lte=edate).count()
28+
if updates > 1:
29+
updated += 1
30+
if updates > 2:
31+
updated_more +=1
32+
33+
# calculate total documents updated, not counting new, rev=00
34+
result = set()
35+
events = DocEvent.objects.filter(doc__type='draft',time__gte=sdate,time__lte=edate)
36+
for e in events.filter(type='new_revision').exclude(newrevisiondocevent__rev='00'):
37+
result.add(e.doc)
38+
total_updated = len(result)
39+
40+
# calculate sent last call
41+
last_call = events.filter(type='sent_last_call').count()
42+
43+
# calculate approved
44+
approved = events.filter(type='iesg_approved').count()
45+
46+
# get 4 weeks
47+
monday = Meeting.get_ietf_monday()
48+
cutoff = monday + datetime.timedelta(days=3)
49+
ff1_date = cutoff - datetime.timedelta(days=28)
50+
#ff2_date = cutoff - datetime.timedelta(days=21)
51+
#ff3_date = cutoff - datetime.timedelta(days=14)
52+
#ff4_date = cutoff - datetime.timedelta(days=7)
53+
54+
ff_docs = Document.objects.filter(type='draft').filter(docevent__type='new_revision',
55+
docevent__newrevisiondocevent__rev='00',
56+
docevent__time__gte=ff1_date,
57+
docevent__time__lte=cutoff)
58+
ff_new_count = ff_docs.count()
59+
ff_new_percent = format(ff_new_count / float(new),'.0%')
60+
61+
# calculate total documents updated in final four weeks, not counting new, rev=00
62+
result = set()
63+
events = DocEvent.objects.filter(doc__type='draft',time__gte=ff1_date,time__lte=cutoff)
64+
for e in events.filter(type='new_revision').exclude(newrevisiondocevent__rev='00'):
65+
result.add(e.doc)
66+
ff_update_count = len(result)
67+
ff_update_percent = format(ff_update_count / float(total_updated),'.0%')
68+
69+
#aug_docs = augment_with_start_time(new_docs)
70+
'''
71+
ff1_new = aug_docs.filter(start_date__gte=ff1_date,start_date__lt=ff2_date)
72+
ff2_new = aug_docs.filter(start_date__gte=ff2_date,start_date__lt=ff3_date)
73+
ff3_new = aug_docs.filter(start_date__gte=ff3_date,start_date__lt=ff4_date)
74+
ff4_new = aug_docs.filter(start_date__gte=ff4_date,start_date__lt=edate)
75+
ff_new_iD = ff1_new + ff2_new + ff3_new + ff4_new
76+
'''
77+
context = {'meeting':meeting,
78+
'new':new,
79+
'updated':updated,
80+
'updated_more':updated_more,
81+
'total_updated':total_updated,
82+
'last_call':last_call,
83+
'approved':approved,
84+
'ff_new_count':ff_new_count,
85+
'ff_new_percent':ff_new_percent,
86+
'ff_update_count':ff_update_count,
87+
'ff_update_percent':ff_update_percent}
88+
89+
report = render_to_string('drafts/report_id_activity.txt', context)
90+
91+
return report
92+
93+
def report_progress_report(start_date,end_date):
94+
syear,smonth,sday = start_date.split('-')
95+
eyear,emonth,eday = end_date.split('-')
96+
sdate = datetime.datetime(int(syear),int(smonth),int(sday))
97+
edate = datetime.datetime(int(eyear),int(emonth),int(eday))
98+
99+
context = get_progress_stats(sdate,edate)
100+
101+
report = render_to_string('drafts/report_progress_report.txt', context)
102+
103+
return report

ietf/secr/drafts/views.py

Lines changed: 1 addition & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -9,22 +9,18 @@
99
from django.forms.formsets import formset_factory
1010
from django.shortcuts import render_to_response, get_object_or_404, redirect, render
1111
from django.template import RequestContext
12-
from django.template.loader import render_to_string
1312

14-
#from email import *
1513
from ietf.doc.models import Document, DocumentAuthor, DocAlias, DocRelationshipName, RelatedDocument, State
1614
from ietf.doc.models import DocEvent, NewRevisionDocEvent
1715
from ietf.doc.models import save_document_in_history
1816
from ietf.ietfauth.utils import role_required
19-
from ietf.meeting.models import Meeting
2017
from ietf.meeting.helpers import get_meeting
2118
from ietf.name.models import StreamName
2219
from ietf.person.models import Person
2320
from ietf.secr.drafts.email import announcement_from_form, get_email_initial
2421
from ietf.secr.drafts.forms import ( AddModelForm, AuthorForm, BaseRevisionModelForm, EditModelForm,
2522
EmailForm, ExtendForm, ReplaceForm, RevisionModelForm, RfcModelForm,
2623
RfcObsoletesForm, SearchForm, UploadForm, WithdrawForm )
27-
from ietf.secr.proceedings.proc_utils import get_progress_stats
2824
from ietf.secr.utils.ams_utils import get_base
2925
from ietf.secr.utils.decorators import clear_non_auth
3026
from ietf.secr.utils.document import get_rfc_num, get_start_date
@@ -381,104 +377,7 @@ def do_withdraw(draft,request):
381377
announcement_from_form(request.session['email'],by=request.user.person)
382378

383379
return
384-
# -------------------------------------------------
385-
# Reporting View Functions
386-
# -------------------------------------------------
387-
def report_id_activity(start,end):
388-
389-
# get previous meeting
390-
meeting = Meeting.objects.filter(date__lt=datetime.datetime.now(),type='ietf').order_by('-date')[0]
391-
syear,smonth,sday = start.split('-')
392-
eyear,emonth,eday = end.split('-')
393-
sdate = datetime.datetime(int(syear),int(smonth),int(sday))
394-
edate = datetime.datetime(int(eyear),int(emonth),int(eday))
395-
396-
#queryset = Document.objects.filter(type='draft').annotate(start_date=Min('docevent__time'))
397-
new_docs = Document.objects.filter(type='draft').filter(docevent__type='new_revision',
398-
docevent__newrevisiondocevent__rev='00',
399-
docevent__time__gte=sdate,
400-
docevent__time__lte=edate)
401-
new = new_docs.count()
402-
updated = 0
403-
updated_more = 0
404-
for d in new_docs:
405-
updates = d.docevent_set.filter(type='new_revision',time__gte=sdate,time__lte=edate).count()
406-
if updates > 1:
407-
updated += 1
408-
if updates > 2:
409-
updated_more +=1
410-
411-
# calculate total documents updated, not counting new, rev=00
412-
result = set()
413-
events = DocEvent.objects.filter(doc__type='draft',time__gte=sdate,time__lte=edate)
414-
for e in events.filter(type='new_revision').exclude(newrevisiondocevent__rev='00'):
415-
result.add(e.doc)
416-
total_updated = len(result)
417-
418-
# calculate sent last call
419-
last_call = events.filter(type='sent_last_call').count()
420-
421-
# calculate approved
422-
approved = events.filter(type='iesg_approved').count()
423-
424-
# get 4 weeks
425-
monday = Meeting.get_ietf_monday()
426-
cutoff = monday + datetime.timedelta(days=3)
427-
ff1_date = cutoff - datetime.timedelta(days=28)
428-
#ff2_date = cutoff - datetime.timedelta(days=21)
429-
#ff3_date = cutoff - datetime.timedelta(days=14)
430-
#ff4_date = cutoff - datetime.timedelta(days=7)
431-
432-
ff_docs = Document.objects.filter(type='draft').filter(docevent__type='new_revision',
433-
docevent__newrevisiondocevent__rev='00',
434-
docevent__time__gte=ff1_date,
435-
docevent__time__lte=cutoff)
436-
ff_new_count = ff_docs.count()
437-
ff_new_percent = format(ff_new_count / float(new),'.0%')
438-
439-
# calculate total documents updated in final four weeks, not counting new, rev=00
440-
result = set()
441-
events = DocEvent.objects.filter(doc__type='draft',time__gte=ff1_date,time__lte=cutoff)
442-
for e in events.filter(type='new_revision').exclude(newrevisiondocevent__rev='00'):
443-
result.add(e.doc)
444-
ff_update_count = len(result)
445-
ff_update_percent = format(ff_update_count / float(total_updated),'.0%')
446-
447-
#aug_docs = augment_with_start_time(new_docs)
448-
'''
449-
ff1_new = aug_docs.filter(start_date__gte=ff1_date,start_date__lt=ff2_date)
450-
ff2_new = aug_docs.filter(start_date__gte=ff2_date,start_date__lt=ff3_date)
451-
ff3_new = aug_docs.filter(start_date__gte=ff3_date,start_date__lt=ff4_date)
452-
ff4_new = aug_docs.filter(start_date__gte=ff4_date,start_date__lt=edate)
453-
ff_new_iD = ff1_new + ff2_new + ff3_new + ff4_new
454-
'''
455-
context = {'meeting':meeting,
456-
'new':new,
457-
'updated':updated,
458-
'updated_more':updated_more,
459-
'total_updated':total_updated,
460-
'last_call':last_call,
461-
'approved':approved,
462-
'ff_new_count':ff_new_count,
463-
'ff_new_percent':ff_new_percent,
464-
'ff_update_count':ff_update_count,
465-
'ff_update_percent':ff_update_percent}
466-
467-
report = render_to_string('drafts/report_id_activity.txt', context)
468-
469-
return report
470-
471-
def report_progress_report(start_date,end_date):
472-
syear,smonth,sday = start_date.split('-')
473-
eyear,emonth,eday = end_date.split('-')
474-
sdate = datetime.datetime(int(syear),int(smonth),int(sday))
475-
edate = datetime.datetime(int(eyear),int(emonth),int(eday))
476-
477-
context = get_progress_stats(sdate,edate)
478-
479-
report = render_to_string('drafts/report_progress_report.txt', context)
480-
481-
return report
380+
482381
# -------------------------------------------------
483382
# Standard View Functions
484383
# -------------------------------------------------

0 commit comments

Comments
 (0)