66import tarfile
77import urllib
88from tempfile import mkstemp
9- from collections import OrderedDict
9+ from collections import OrderedDict , Counter
1010import csv
1111import json
1212
2525
2626from ietf .doc .models import Document , State
2727from ietf .group .models import Group
28+ from ietf .group .utils import can_manage_materials
2829from ietf .ietfauth .utils import role_required , has_role
2930from ietf .meeting .models import Meeting , Session , Schedule , Room
3031from ietf .meeting .helpers import get_areas , get_person_by_email , get_schedule_by_name
@@ -830,7 +831,7 @@ def session_details(request, num, acronym ):
830831 sessions = Session .objects .filter (meeting = meeting ,group__acronym = acronym ,type__in = ['session' ,'plenary' ,'other' ])
831832
832833 if not sessions :
833- sessions = Session .objects .filter (meeting = meeting ,short = acronym )
834+ sessions = Session .objects .filter (meeting = meeting ,short = acronym , type__in = [ 'session' , 'plenary' , 'other' ] )
834835
835836 def sort_key (session ):
836837 official_sessions = session .timeslotassignments .filter (schedule = session .meeting .agenda )
@@ -844,21 +845,32 @@ def sort_key(session):
844845 if not sessions :
845846 raise Http404
846847
848+ type_counter = Counter ()
849+
847850 for session in sessions :
848851
849852 ss = session .timeslotassignments .filter (schedule = meeting .agenda ).order_by ('timeslot__time' )
850853 if ss :
851854 session .time = ', ' .join (x .timeslot .time .strftime ("%A %b-%d-%Y %H%M" ) for x in ss )
855+ if session .status .slug == 'canceled' :
856+ session .time += " CANCELLED"
852857 elif session .meeting .type_id == 'interim' :
853858 session .time = session .meeting .date .strftime ("%A %b-%d-%Y" )
859+ if session .status .slug == 'canceled' :
860+ session .time += " CANCELLED"
854861 else :
855- session .time = 'Not yet scheduled'
862+ session .time = session . status . name
856863
857864 # TODO FIXME Deleted materials shouldn't be in the sessionpresentation_set
858865 session .filtered_sessionpresentation_set = [p for p in session .sessionpresentation_set .all () if p .document .get_state_slug (p .document .type_id )!= 'deleted' ]
866+ type_counter .update ([p .document .type .slug for p in session .filtered_sessionpresentation_set ])
867+
868+ can_manage = can_manage_materials (request .user , Group .objects .get (acronym = acronym ))
859869
860870 return render (request , "meeting/session_details.html" ,
861871 { 'sessions' :sessions ,
862872 'meeting' :meeting ,
863873 'acronym' :acronym ,
874+ 'can_manage_materials' : can_manage ,
875+ 'type_counter' : type_counter ,
864876 })
0 commit comments