|
2 | 2 | import glob |
3 | 3 | import itertools |
4 | 4 | import os |
5 | | -import shutil |
6 | 5 | import subprocess |
7 | 6 |
|
8 | 7 | import debug # pyflakes:ignore |
|
27 | 26 | from ietf.group.models import Group |
28 | 27 | from ietf.ietfauth.utils import has_role, role_required |
29 | 28 | 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 |
31 | 31 | from ietf.secr.proceedings.proc_utils import ( gen_acknowledgement, gen_agenda, gen_areas, |
32 | 32 | 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 ) |
35 | 34 | from ietf.utils.log import log |
36 | 35 |
|
37 | 36 | # ------------------------------------------------- |
@@ -102,20 +101,6 @@ def get_extras(meeting): |
102 | 101 | groups.append(session.group) |
103 | 102 | return groups |
104 | 103 |
|
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 | | - |
119 | 104 | def get_next_slide_num(session): |
120 | 105 | ''' |
121 | 106 | This function takes a session object and returns the |
@@ -187,17 +172,6 @@ def handle_upload_file(file,filename,meeting,subdir): |
187 | 172 | os.chdir(path) |
188 | 173 | os.system('unzip %s' % filename) |
189 | 174 |
|
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 | | - |
201 | 175 | def parsedate(d): |
202 | 176 | ''' |
203 | 177 | This function takes a date object and returns a tuple of year,month,day |
@@ -362,33 +336,6 @@ def delete_material(request,slide_id): |
362 | 336 |
|
363 | 337 | return HttpResponseRedirect(url) |
364 | 338 |
|
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 | | - |
392 | 339 | @check_permissions |
393 | 340 | def edit_slide(request, slide_id): |
394 | 341 | ''' |
@@ -428,55 +375,6 @@ def edit_slide(request, slide_id): |
428 | 375 | RequestContext(request, {}), |
429 | 376 | ) |
430 | 377 |
|
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 | | - |
480 | 378 | @role_required(*AUTHORIZED_ROLES) |
481 | 379 | def main(request): |
482 | 380 | ''' |
@@ -810,38 +708,6 @@ def select(request, meeting_num): |
810 | 708 | RequestContext(request,{}), |
811 | 709 | ) |
812 | 710 |
|
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 | | - |
845 | 711 | @check_permissions |
846 | 712 | def upload_unified(request, meeting_num, acronym=None, session_id=None): |
847 | 713 | ''' |
|
0 commit comments