Merged in [11118] from rcross@amsl.com:
Move standalone monthly report scripts to bin directory.
- Legacy-Id: 11146
Note: SVN reference [11118] has been migrated to Git commit 6ef2904307
This commit is contained in:
commit
2aff429c3f
19
ietf/bin/report_id_activity.py
Normal file
19
ietf/bin/report_id_activity.py
Normal file
|
@ -0,0 +1,19 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
# -*- Python -*-
|
||||
#
|
||||
|
||||
# Set PYTHONPATH and load environment variables for standalone script -----------------
|
||||
import os, sys
|
||||
basedir = os.path.abspath(os.path.join(os.path.dirname(__file__), "../.."))
|
||||
sys.path = [ basedir ] + sys.path
|
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ietf.settings")
|
||||
|
||||
import django
|
||||
django.setup()
|
||||
# -------------------------------------------------------------------------------------
|
||||
|
||||
from ietf.secr.drafts.reports import report_id_activity
|
||||
|
||||
print report_id_activity(sys.argv[1], sys.argv[2]),
|
||||
|
18
ietf/bin/report_progress_report.py
Normal file
18
ietf/bin/report_progress_report.py
Normal file
|
@ -0,0 +1,18 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
# -*- Python -*-
|
||||
#
|
||||
|
||||
# Set PYTHONPATH and load environment variables for standalone script -----------------
|
||||
import os, sys
|
||||
basedir = os.path.abspath(os.path.join(os.path.dirname(__file__), "../.."))
|
||||
sys.path = [ basedir ] + sys.path
|
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ietf.settings")
|
||||
|
||||
import django
|
||||
django.setup()
|
||||
# -------------------------------------------------------------------------------------
|
||||
|
||||
from ietf.secr.drafts.reports import report_progress_report
|
||||
|
||||
print report_progress_report(sys.argv[1], sys.argv[2]),
|
|
@ -1,9 +0,0 @@
|
|||
import os
|
||||
|
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ietf.settings")
|
||||
|
||||
from ietf.secr.drafts.views import report_id_activity
|
||||
import sys
|
||||
|
||||
print report_id_activity(sys.argv[1], sys.argv[2]),
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
import os
|
||||
|
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ietf.settings")
|
||||
|
||||
from ietf.secr.drafts.views import report_progress_report
|
||||
import sys
|
||||
|
||||
print report_progress_report(sys.argv[1], sys.argv[2]),
|
||||
|
103
ietf/secr/drafts/reports.py
Normal file
103
ietf/secr/drafts/reports.py
Normal file
|
@ -0,0 +1,103 @@
|
|||
import datetime
|
||||
|
||||
from django.template.loader import render_to_string
|
||||
|
||||
from ietf.meeting.models import Meeting
|
||||
from ietf.doc.models import DocEvent, Document
|
||||
from ietf.secr.proceedings.proc_utils import get_progress_stats
|
||||
|
||||
def report_id_activity(start,end):
|
||||
|
||||
# get previous meeting
|
||||
meeting = Meeting.objects.filter(date__lt=datetime.datetime.now(),type='ietf').order_by('-date')[0]
|
||||
syear,smonth,sday = start.split('-')
|
||||
eyear,emonth,eday = end.split('-')
|
||||
sdate = datetime.datetime(int(syear),int(smonth),int(sday))
|
||||
edate = datetime.datetime(int(eyear),int(emonth),int(eday))
|
||||
|
||||
#queryset = Document.objects.filter(type='draft').annotate(start_date=Min('docevent__time'))
|
||||
new_docs = Document.objects.filter(type='draft').filter(docevent__type='new_revision',
|
||||
docevent__newrevisiondocevent__rev='00',
|
||||
docevent__time__gte=sdate,
|
||||
docevent__time__lte=edate)
|
||||
new = new_docs.count()
|
||||
updated = 0
|
||||
updated_more = 0
|
||||
for d in new_docs:
|
||||
updates = d.docevent_set.filter(type='new_revision',time__gte=sdate,time__lte=edate).count()
|
||||
if updates > 1:
|
||||
updated += 1
|
||||
if updates > 2:
|
||||
updated_more +=1
|
||||
|
||||
# calculate total documents updated, not counting new, rev=00
|
||||
result = set()
|
||||
events = DocEvent.objects.filter(doc__type='draft',time__gte=sdate,time__lte=edate)
|
||||
for e in events.filter(type='new_revision').exclude(newrevisiondocevent__rev='00'):
|
||||
result.add(e.doc)
|
||||
total_updated = len(result)
|
||||
|
||||
# calculate sent last call
|
||||
last_call = events.filter(type='sent_last_call').count()
|
||||
|
||||
# calculate approved
|
||||
approved = events.filter(type='iesg_approved').count()
|
||||
|
||||
# get 4 weeks
|
||||
monday = Meeting.get_ietf_monday()
|
||||
cutoff = monday + datetime.timedelta(days=3)
|
||||
ff1_date = cutoff - datetime.timedelta(days=28)
|
||||
#ff2_date = cutoff - datetime.timedelta(days=21)
|
||||
#ff3_date = cutoff - datetime.timedelta(days=14)
|
||||
#ff4_date = cutoff - datetime.timedelta(days=7)
|
||||
|
||||
ff_docs = Document.objects.filter(type='draft').filter(docevent__type='new_revision',
|
||||
docevent__newrevisiondocevent__rev='00',
|
||||
docevent__time__gte=ff1_date,
|
||||
docevent__time__lte=cutoff)
|
||||
ff_new_count = ff_docs.count()
|
||||
ff_new_percent = format(ff_new_count / float(new),'.0%')
|
||||
|
||||
# calculate total documents updated in final four weeks, not counting new, rev=00
|
||||
result = set()
|
||||
events = DocEvent.objects.filter(doc__type='draft',time__gte=ff1_date,time__lte=cutoff)
|
||||
for e in events.filter(type='new_revision').exclude(newrevisiondocevent__rev='00'):
|
||||
result.add(e.doc)
|
||||
ff_update_count = len(result)
|
||||
ff_update_percent = format(ff_update_count / float(total_updated),'.0%')
|
||||
|
||||
#aug_docs = augment_with_start_time(new_docs)
|
||||
'''
|
||||
ff1_new = aug_docs.filter(start_date__gte=ff1_date,start_date__lt=ff2_date)
|
||||
ff2_new = aug_docs.filter(start_date__gte=ff2_date,start_date__lt=ff3_date)
|
||||
ff3_new = aug_docs.filter(start_date__gte=ff3_date,start_date__lt=ff4_date)
|
||||
ff4_new = aug_docs.filter(start_date__gte=ff4_date,start_date__lt=edate)
|
||||
ff_new_iD = ff1_new + ff2_new + ff3_new + ff4_new
|
||||
'''
|
||||
context = {'meeting':meeting,
|
||||
'new':new,
|
||||
'updated':updated,
|
||||
'updated_more':updated_more,
|
||||
'total_updated':total_updated,
|
||||
'last_call':last_call,
|
||||
'approved':approved,
|
||||
'ff_new_count':ff_new_count,
|
||||
'ff_new_percent':ff_new_percent,
|
||||
'ff_update_count':ff_update_count,
|
||||
'ff_update_percent':ff_update_percent}
|
||||
|
||||
report = render_to_string('drafts/report_id_activity.txt', context)
|
||||
|
||||
return report
|
||||
|
||||
def report_progress_report(start_date,end_date):
|
||||
syear,smonth,sday = start_date.split('-')
|
||||
eyear,emonth,eday = end_date.split('-')
|
||||
sdate = datetime.datetime(int(syear),int(smonth),int(sday))
|
||||
edate = datetime.datetime(int(eyear),int(emonth),int(eday))
|
||||
|
||||
context = get_progress_stats(sdate,edate)
|
||||
|
||||
report = render_to_string('drafts/report_progress_report.txt', context)
|
||||
|
||||
return report
|
|
@ -9,14 +9,11 @@ from django.db.models import Max
|
|||
from django.forms.formsets import formset_factory
|
||||
from django.shortcuts import render_to_response, get_object_or_404, redirect, render
|
||||
from django.template import RequestContext
|
||||
from django.template.loader import render_to_string
|
||||
|
||||
#from email import *
|
||||
from ietf.doc.models import Document, DocumentAuthor, DocAlias, DocRelationshipName, RelatedDocument, State
|
||||
from ietf.doc.models import DocEvent, NewRevisionDocEvent
|
||||
from ietf.doc.models import save_document_in_history
|
||||
from ietf.ietfauth.utils import role_required
|
||||
from ietf.meeting.models import Meeting
|
||||
from ietf.meeting.helpers import get_meeting
|
||||
from ietf.name.models import StreamName
|
||||
from ietf.person.models import Person
|
||||
|
@ -24,7 +21,6 @@ from ietf.secr.drafts.email import announcement_from_form, get_email_initial
|
|||
from ietf.secr.drafts.forms import ( AddModelForm, AuthorForm, BaseRevisionModelForm, EditModelForm,
|
||||
EmailForm, ExtendForm, ReplaceForm, RevisionModelForm, RfcModelForm,
|
||||
RfcObsoletesForm, SearchForm, UploadForm, WithdrawForm )
|
||||
from ietf.secr.proceedings.proc_utils import get_progress_stats
|
||||
from ietf.secr.utils.ams_utils import get_base
|
||||
from ietf.secr.utils.decorators import clear_non_auth
|
||||
from ietf.secr.utils.document import get_rfc_num, get_start_date
|
||||
|
@ -381,104 +377,7 @@ def do_withdraw(draft,request):
|
|||
announcement_from_form(request.session['email'],by=request.user.person)
|
||||
|
||||
return
|
||||
# -------------------------------------------------
|
||||
# Reporting View Functions
|
||||
# -------------------------------------------------
|
||||
def report_id_activity(start,end):
|
||||
|
||||
# get previous meeting
|
||||
meeting = Meeting.objects.filter(date__lt=datetime.datetime.now(),type='ietf').order_by('-date')[0]
|
||||
syear,smonth,sday = start.split('-')
|
||||
eyear,emonth,eday = end.split('-')
|
||||
sdate = datetime.datetime(int(syear),int(smonth),int(sday))
|
||||
edate = datetime.datetime(int(eyear),int(emonth),int(eday))
|
||||
|
||||
#queryset = Document.objects.filter(type='draft').annotate(start_date=Min('docevent__time'))
|
||||
new_docs = Document.objects.filter(type='draft').filter(docevent__type='new_revision',
|
||||
docevent__newrevisiondocevent__rev='00',
|
||||
docevent__time__gte=sdate,
|
||||
docevent__time__lte=edate)
|
||||
new = new_docs.count()
|
||||
updated = 0
|
||||
updated_more = 0
|
||||
for d in new_docs:
|
||||
updates = d.docevent_set.filter(type='new_revision',time__gte=sdate,time__lte=edate).count()
|
||||
if updates > 1:
|
||||
updated += 1
|
||||
if updates > 2:
|
||||
updated_more +=1
|
||||
|
||||
# calculate total documents updated, not counting new, rev=00
|
||||
result = set()
|
||||
events = DocEvent.objects.filter(doc__type='draft',time__gte=sdate,time__lte=edate)
|
||||
for e in events.filter(type='new_revision').exclude(newrevisiondocevent__rev='00'):
|
||||
result.add(e.doc)
|
||||
total_updated = len(result)
|
||||
|
||||
# calculate sent last call
|
||||
last_call = events.filter(type='sent_last_call').count()
|
||||
|
||||
# calculate approved
|
||||
approved = events.filter(type='iesg_approved').count()
|
||||
|
||||
# get 4 weeks
|
||||
monday = Meeting.get_ietf_monday()
|
||||
cutoff = monday + datetime.timedelta(days=3)
|
||||
ff1_date = cutoff - datetime.timedelta(days=28)
|
||||
#ff2_date = cutoff - datetime.timedelta(days=21)
|
||||
#ff3_date = cutoff - datetime.timedelta(days=14)
|
||||
#ff4_date = cutoff - datetime.timedelta(days=7)
|
||||
|
||||
ff_docs = Document.objects.filter(type='draft').filter(docevent__type='new_revision',
|
||||
docevent__newrevisiondocevent__rev='00',
|
||||
docevent__time__gte=ff1_date,
|
||||
docevent__time__lte=cutoff)
|
||||
ff_new_count = ff_docs.count()
|
||||
ff_new_percent = format(ff_new_count / float(new),'.0%')
|
||||
|
||||
# calculate total documents updated in final four weeks, not counting new, rev=00
|
||||
result = set()
|
||||
events = DocEvent.objects.filter(doc__type='draft',time__gte=ff1_date,time__lte=cutoff)
|
||||
for e in events.filter(type='new_revision').exclude(newrevisiondocevent__rev='00'):
|
||||
result.add(e.doc)
|
||||
ff_update_count = len(result)
|
||||
ff_update_percent = format(ff_update_count / float(total_updated),'.0%')
|
||||
|
||||
#aug_docs = augment_with_start_time(new_docs)
|
||||
'''
|
||||
ff1_new = aug_docs.filter(start_date__gte=ff1_date,start_date__lt=ff2_date)
|
||||
ff2_new = aug_docs.filter(start_date__gte=ff2_date,start_date__lt=ff3_date)
|
||||
ff3_new = aug_docs.filter(start_date__gte=ff3_date,start_date__lt=ff4_date)
|
||||
ff4_new = aug_docs.filter(start_date__gte=ff4_date,start_date__lt=edate)
|
||||
ff_new_iD = ff1_new + ff2_new + ff3_new + ff4_new
|
||||
'''
|
||||
context = {'meeting':meeting,
|
||||
'new':new,
|
||||
'updated':updated,
|
||||
'updated_more':updated_more,
|
||||
'total_updated':total_updated,
|
||||
'last_call':last_call,
|
||||
'approved':approved,
|
||||
'ff_new_count':ff_new_count,
|
||||
'ff_new_percent':ff_new_percent,
|
||||
'ff_update_count':ff_update_count,
|
||||
'ff_update_percent':ff_update_percent}
|
||||
|
||||
report = render_to_string('drafts/report_id_activity.txt', context)
|
||||
|
||||
return report
|
||||
|
||||
def report_progress_report(start_date,end_date):
|
||||
syear,smonth,sday = start_date.split('-')
|
||||
eyear,emonth,eday = end_date.split('-')
|
||||
sdate = datetime.datetime(int(syear),int(smonth),int(sday))
|
||||
edate = datetime.datetime(int(eyear),int(emonth),int(eday))
|
||||
|
||||
context = get_progress_stats(sdate,edate)
|
||||
|
||||
report = render_to_string('drafts/report_progress_report.txt', context)
|
||||
|
||||
return report
|
||||
# -------------------------------------------------
|
||||
# Standard View Functions
|
||||
# -------------------------------------------------
|
||||
|
|
Loading…
Reference in a new issue