Skip to content

Commit 98afcae

Browse files
committed
Remove legacy secretariat code for adding interim meetings in favor of new ietf.meeting interim features.
- Legacy-Id: 11434
1 parent cc337f9 commit 98afcae

11 files changed

Lines changed: 24 additions & 267 deletions

File tree

6.21.0/ietf/meeting/forms.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
from ietf.group.models import Group
1414
from ietf.ietfauth.utils import has_role
1515
from ietf.meeting.models import Session, Meeting, Schedule, countries, timezones
16-
from ietf.meeting.helpers import get_next_interim_number
16+
from ietf.meeting.helpers import get_next_interim_number, make_directories
1717
from ietf.meeting.helpers import is_meeting_approved, get_next_agenda_name
1818
from ietf.message.models import Message
1919
from ietf.person.models import Person
@@ -215,6 +215,9 @@ def save(self, *args, **kwargs):
215215
meeting=meeting,
216216
owner=Person.objects.get(name='(System)'))
217217
meeting.save() # save with agenda
218+
219+
# create directories
220+
make_directories(meeting)
218221

219222
return meeting
220223

6.21.0/ietf/meeting/helpers.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -522,6 +522,18 @@ def get_next_agenda_name(meeting):
522522
sequence=str(last_sequence + 1).zfill(2))
523523

524524

525+
def make_directories(meeting):
526+
'''
527+
This function takes a meeting object and creates the appropriate materials directories
528+
'''
529+
path = meeting.get_materials_path()
530+
os.umask(0)
531+
for leaf in ('slides','agenda','minutes','id','rfc','bluesheets'):
532+
target = os.path.join(path,leaf)
533+
if not os.path.exists(target):
534+
os.makedirs(target)
535+
536+
525537
def send_interim_approval_request(meetings):
526538
"""Sends an email to the secretariat, group chairs, and resposnible area
527539
director or the IRTF chair noting that approval has been requested for a

6.21.0/ietf/meeting/tests_views.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -987,7 +987,7 @@ def test_interim_request_edit(self):
987987
self.assertEqual(len(outbox),length_before+1)
988988
self.assertTrue('CHANGED' in outbox[-1]['Subject'])
989989
session = meeting.session_set.first()
990-
timeslot = session.official_timeslotassignment.timeslot
990+
timeslot = session.official_timeslotassignment().timeslot
991991
self.assertEqual(timeslot.time,new_time)
992992

993993

6.21.0/ietf/secr/meetings/views.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,15 @@
1616

1717
from ietf.ietfauth.utils import role_required
1818
from ietf.utils.mail import send_mail
19-
from ietf.meeting.helpers import get_meeting
19+
from ietf.meeting.helpers import get_meeting, make_directories
2020
from ietf.meeting.models import Meeting, Session, Room, TimeSlot, SchedTimeSessAssignment, Schedule
2121
from ietf.group.models import Group, GroupEvent
2222
from ietf.person.models import Person
2323
from ietf.secr.meetings.blue_sheets import create_blue_sheets
2424
from ietf.secr.meetings.forms import ( BaseMeetingRoomFormSet, MeetingModelForm,
2525
MeetingRoomForm, NewSessionForm, NonSessionEditForm, NonSessionForm, TimeSlotForm,
2626
UploadBlueSheetForm, get_next_slot )
27-
from ietf.secr.proceedings.views import build_choices, handle_upload_file, make_directories
27+
from ietf.secr.proceedings.views import build_choices, handle_upload_file
2828
from ietf.secr.sreq.forms import GroupSelectForm
2929
from ietf.secr.sreq.views import get_initial_session
3030
from ietf.secr.utils.meeting import get_session, get_timeslot

6.21.0/ietf/secr/proceedings/forms.py

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
from ietf.doc.models import Document
88
from ietf.name.models import DocTypeName
9-
from ietf.meeting.models import Meeting, Session
9+
from ietf.meeting.models import Session
1010

1111

1212
# ---------------------------------------------
@@ -27,21 +27,6 @@ class Meta:
2727
model = Document
2828
fields = ('title',)
2929

30-
class InterimMeetingForm(forms.Form):
31-
date = forms.DateField(help_text="(YYYY-MM-DD Format, please)")
32-
group_acronym_id = forms.CharField(widget=forms.HiddenInput())
33-
34-
def clean(self):
35-
super(InterimMeetingForm, self).clean()
36-
cleaned_data = self.cleaned_data
37-
# need to use get() here, if the date field isn't valid it won't exist
38-
date = cleaned_data.get('date','')
39-
group_acronym_id = cleaned_data["group_acronym_id"]
40-
qs = Meeting.objects.filter(type='interim',date=date,session__group__acronym=group_acronym_id)
41-
if qs:
42-
raise forms.ValidationError('A meeting already exists for this date.')
43-
return cleaned_data
44-
4530
class RecordingForm(forms.Form):
4631
external_url = forms.URLField(label='Url')
4732
session = forms.ModelChoiceField(queryset=Session.objects,empty_label='')

6.21.0/ietf/secr/proceedings/urls.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,4 @@
2222
'upload_unified', name='proceedings_upload_unified'),
2323
url(r'^(?P<meeting_num>\d{1,3}|interim-\d{4}-[A-Za-z0-9_\-\+]+)/(?P<acronym>[A-Za-z0-9_\-\+]+)/$',
2424
'upload_unified', name='proceedings_upload_unified'),
25-
# interim stuff
26-
url(r'^interim/$', 'select_interim', name='proceedings_select_interim'),
27-
url(r'^interim/(?P<meeting_num>interim-\d{4}-[A-Za-z0-9_\-\+]+)/delete/$', 'delete_interim_meeting',
28-
name='proceedings_delete_interim_meeting'),
29-
url(r'^interim/(?P<acronym>[A-Za-z0-9_\-\+]+)/$', 'interim', name='proceedings_interim'),
3025
)

6.21.0/ietf/secr/proceedings/views.py

Lines changed: 3 additions & 137 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
import glob
33
import itertools
44
import os
5-
import shutil
65
import subprocess
76

87
import debug # pyflakes:ignore
@@ -27,11 +26,11 @@
2726
from ietf.group.models import Group
2827
from ietf.ietfauth.utils import has_role, role_required
2928
from ietf.meeting.models import Meeting, Session, TimeSlot, SchedTimeSessAssignment
30-
from ietf.secr.proceedings.forms import EditSlideForm, InterimMeetingForm, RecordingForm, RecordingEditForm, ReplaceSlideForm, UnifiedUploadForm
29+
from ietf.meeting.helpers import make_directories
30+
from ietf.secr.proceedings.forms import EditSlideForm, RecordingForm, RecordingEditForm, ReplaceSlideForm, UnifiedUploadForm
3131
from ietf.secr.proceedings.proc_utils import ( gen_acknowledgement, gen_agenda, gen_areas,
3232
gen_attendees, gen_group_pages, gen_index, gen_irtf, gen_overview, gen_plenaries,
33-
gen_progress, gen_research, gen_training, create_proceedings, create_interim_directory,
34-
create_recording )
33+
gen_progress, gen_research, gen_training, create_proceedings, create_recording )
3534
from ietf.utils.log import log
3635

3736
# -------------------------------------------------
@@ -102,20 +101,6 @@ def get_extras(meeting):
102101
groups.append(session.group)
103102
return groups
104103

105-
def get_next_interim_num(acronym,date):
106-
'''
107-
This function takes a group acronym and date object and returns the next number to use for an
108-
interim meeting. The format is interim-[year]-[acronym]-[1-99]
109-
'''
110-
base = 'interim-%s-%s-' % (date.year, acronym)
111-
# can't use count() to calculate the next number in case one was deleted
112-
meetings = Meeting.objects.filter(type='interim',number__startswith=base)
113-
if meetings:
114-
nums = sorted([ int(x.number.split('-')[-1]) for x in meetings ])
115-
return base + str(nums[-1] + 1)
116-
else:
117-
return base + '1'
118-
119104
def get_next_slide_num(session):
120105
'''
121106
This function takes a session object and returns the
@@ -187,17 +172,6 @@ def handle_upload_file(file,filename,meeting,subdir):
187172
os.chdir(path)
188173
os.system('unzip %s' % filename)
189174

190-
def make_directories(meeting):
191-
'''
192-
This function takes a meeting object and creates the appropriate materials directories
193-
'''
194-
path = meeting.get_materials_path()
195-
os.umask(0)
196-
for leaf in ('slides','agenda','minutes','id','rfc','bluesheets'):
197-
target = os.path.join(path,leaf)
198-
if not os.path.exists(target):
199-
os.makedirs(target)
200-
201175
def parsedate(d):
202176
'''
203177
This function takes a date object and returns a tuple of year,month,day
@@ -362,33 +336,6 @@ def delete_material(request,slide_id):
362336

363337
return HttpResponseRedirect(url)
364338

365-
@role_required('Secretariat')
366-
def delete_interim_meeting(request, meeting_num):
367-
'''
368-
This view deletes the specified Interim Meeting and any material that has been
369-
uploaded for it. The pattern in urls.py ensures we don't call this with a regular
370-
meeting number.
371-
'''
372-
meeting = get_object_or_404(Meeting, number=meeting_num)
373-
sessions = Session.objects.filter(meeting=meeting)
374-
group = sessions[0].group
375-
376-
# delete directories
377-
path = meeting.get_materials_path()
378-
379-
# do a quick sanity check on this path before we go and delete it
380-
parts = path.split('/')
381-
assert parts[-1] == group.acronym
382-
383-
if os.path.exists(path):
384-
shutil.rmtree(path)
385-
386-
meeting.delete()
387-
sessions.delete()
388-
389-
url = reverse('proceedings_interim', kwargs={'acronym':group.acronym})
390-
return HttpResponseRedirect(url)
391-
392339
@check_permissions
393340
def edit_slide(request, slide_id):
394341
'''
@@ -428,55 +375,6 @@ def edit_slide(request, slide_id):
428375
RequestContext(request, {}),
429376
)
430377

431-
@role_required(*AUTHORIZED_ROLES)
432-
def interim(request, acronym):
433-
'''
434-
This view presents the user with a list of interim meetings for the specified group.
435-
The user can select a meeting to manage or create a new interim meeting by entering
436-
a date.
437-
'''
438-
group = get_object_or_404(Group, acronym=acronym)
439-
if request.method == 'POST': # If the form has been submitted...
440-
button_text = request.POST.get('submit', '')
441-
if button_text == 'Back':
442-
url = reverse('proceedings_select_interim')
443-
return HttpResponseRedirect(url)
444-
445-
form = InterimMeetingForm(request.POST) # A form bound to the POST data
446-
if form.is_valid():
447-
date = form.cleaned_data['date']
448-
number = get_next_interim_num(acronym,date)
449-
meeting=Meeting.objects.create(type_id='interim',
450-
date=date,
451-
number=number)
452-
453-
# create session to associate this meeting with a group and hold material
454-
Session.objects.create(meeting=meeting,
455-
group=group,
456-
requested_by=request.user.person,
457-
status_id='sched',
458-
type_id='session',
459-
)
460-
461-
create_interim_directory()
462-
make_directories(meeting)
463-
464-
messages.success(request, 'Meeting created')
465-
url = reverse('proceedings_interim', kwargs={'acronym':acronym})
466-
return HttpResponseRedirect(url)
467-
else:
468-
form = InterimMeetingForm(initial={'group_acronym_id':acronym}) # An unbound form
469-
470-
meetings = Meeting.objects.filter(type='interim',session__group__acronym=acronym).order_by('date')
471-
472-
return render_to_response('proceedings/interim_meeting.html',{
473-
'group': group,
474-
'meetings':meetings,
475-
'form':form},
476-
RequestContext(request, {}),
477-
)
478-
479-
480378
@role_required(*AUTHORIZED_ROLES)
481379
def main(request):
482380
'''
@@ -810,38 +708,6 @@ def select(request, meeting_num):
810708
RequestContext(request,{}),
811709
)
812710

813-
@role_required(*AUTHORIZED_ROLES)
814-
def select_interim(request):
815-
'''
816-
A screen to select which group you want to upload Interim material for. Works for Secretariat staff
817-
and external (ADs, chairs, etc)
818-
'''
819-
if request.method == 'POST':
820-
redirect_url = reverse('proceedings_interim', kwargs={'acronym':request.POST['group']})
821-
return HttpResponseRedirect(redirect_url)
822-
823-
if has_role(request.user, "Secretariat"):
824-
# initialize working groups form
825-
choices = build_choices(Group.objects.active_wgs())
826-
group_form = GroupSelectForm(choices=choices)
827-
828-
# per Alexa, not supporting Interim IRTF meetings at this time
829-
# intialize IRTF form
830-
#choices = build_choices(Group.objects.filter(type='wg', state='active')
831-
#irtf_form = GroupSelectForm(choices=choices)
832-
833-
else:
834-
# these forms aren't used for non-secretariat
835-
groups = get_my_groups(request.user)
836-
choices = build_choices(groups)
837-
group_form = GroupSelectForm(choices=choices)
838-
839-
return render_to_response('proceedings/interim_select.html', {
840-
'group_form': group_form},
841-
#'irtf_form': irtf_form,
842-
RequestContext(request,{}),
843-
)
844-
845711
@check_permissions
846712
def upload_unified(request, meeting_num, acronym=None, session_id=None):
847713
'''

6.21.0/ietf/secr/templates/proceedings/interim_meeting.html

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

0 commit comments

Comments
 (0)