Refactored the code to not use two different functions to get_next_interim_numbers.

- Legacy-Id: 11425
This commit is contained in:
Henrik Levkowetz 2016-06-20 18:53:12 +00:00
parent f083e88592
commit ef8da52f27
3 changed files with 15 additions and 33 deletions

View file

@ -205,7 +205,7 @@ class InterimMeetingModelForm(forms.ModelForm):
if not meeting.type_id:
meeting.type_id = 'interim'
if not meeting.number:
meeting.number = get_next_interim_number(group, date)
meeting.number = get_next_interim_number(group.acronym, date)
meeting.date = date
if kwargs.get('commit', True):
# create schedule with meeting

View file

@ -385,7 +385,7 @@ def create_interim_meeting(group, date, city='', country='', timezone='UTC',
"""Helper function to create interim meeting and associated schedule"""
if not person:
person = Person.objects.get(name='(System)')
number = get_next_interim_number(group, date)
number = get_next_interim_number(group.acronym, date)
meeting = Meeting.objects.create(
number=number,
type_id='interim',
@ -488,24 +488,19 @@ def is_meeting_approved(meeting):
else:
return True
def get_next_interim_number(group, date):
"""Returns a unique string to use for the next interim meeting for
*group*, used for Meeting.number field."""
meetings = Meeting.objects.filter(
number__startswith='interim-{year}-{group}'.format(
year=date.year,
group=group.acronym))
def get_next_interim_number(acronym,date):
'''
This function takes a group acronym and date object and returns the next number
to use for an interim meeting. The format is interim-[year]-[acronym]-[01-99]
'''
base = 'interim-%s-%s-' % (date.year, acronym)
# can't use count() to calculate the next number in case one was deleted
meetings = Meeting.objects.filter(type='interim', number__startswith=base)
if meetings:
sequences = [int(m.number.split('-')[-1]) for m in meetings]
last_sequence = sorted(sequences)[-1]
serial = sorted([ int(x.number.split('-')[-1]) for x in meetings ])[-1]
else:
last_sequence = 0
return 'interim-{year}-{group}-{sequence}'.format(
year=date.year,
group=group.acronym,
sequence=str(last_sequence + 1).zfill(2))
serial = 0
return "%s%02d" % (base, serial+1)
def get_next_agenda_name(meeting):
"""Returns the next name to use for an agenda document for *meeting*"""

View file

@ -27,6 +27,7 @@ from ietf.doc.models import Document, DocAlias, DocEvent, State, NewRevisionDocE
from ietf.group.models import Group
from ietf.ietfauth.utils import has_role, role_required
from ietf.meeting.models import Meeting, Session, TimeSlot, SchedTimeSessAssignment
from ietf.meeting.helpers import get_next_interim_number
from ietf.secr.proceedings.forms import EditSlideForm, InterimMeetingForm, RecordingForm, RecordingEditForm, ReplaceSlideForm, UnifiedUploadForm
from ietf.secr.proceedings.proc_utils import ( gen_acknowledgement, gen_agenda, gen_areas,
gen_attendees, gen_group_pages, gen_index, gen_irtf, gen_overview, gen_plenaries,
@ -102,20 +103,6 @@ def get_extras(meeting):
groups.append(session.group)
return groups
def get_next_interim_num(acronym,date):
'''
This function takes a group acronym and date object and returns the next number to use for an
interim meeting. The format is interim-[year]-[acronym]-[1-99]
'''
base = 'interim-%s-%s-' % (date.year, acronym)
# can't use count() to calculate the next number in case one was deleted
meetings = Meeting.objects.filter(type='interim',number__startswith=base)
if meetings:
nums = sorted([ int(x.number.split('-')[-1]) for x in meetings ])
return base + str(nums[-1] + 1)
else:
return base + '1'
def get_next_slide_num(session):
'''
This function takes a session object and returns the
@ -445,7 +432,7 @@ def interim(request, acronym):
form = InterimMeetingForm(request.POST) # A form bound to the POST data
if form.is_valid():
date = form.cleaned_data['date']
number = get_next_interim_num(acronym,date)
number = get_next_interim_number(acronym,date)
meeting=Meeting.objects.create(type_id='interim',
date=date,
number=number)