@@ -117,72 +117,62 @@ def label_from_instance(self, obj):
117117class InterimRequestForm (forms .Form ):
118118 group = GroupModelChoiceField (queryset = Group .objects .filter (type__in = ('wg' ,'rg' ),state = 'active' ).order_by ('acronym' ))
119119 face_to_face = forms .BooleanField (required = False )
120- multi_day = forms .BooleanField (required = False )
121- series = forms .BooleanField (required = False )
122- date = DatepickerDateField (date_format = "yyyy-mm-dd" , picker_settings = {"autoclose" : "1" }, label = 'Date' , required = True )
123- time = forms .TimeField ()
124- duration = DurationField ()
125- city = forms .CharField (max_length = 255 ,required = False )
126- country = forms .ChoiceField (choices = countries ,required = False )
127- timezone = forms .ChoiceField (choices = timezones )
128- remote_instructions = forms .CharField (max_length = 1024 ,required = False )
129- agenda = forms .CharField (required = False ,widget = forms .Textarea )
130- agenda_note = forms .CharField (max_length = 255 ,required = False )
120+ meeting_type = forms .ChoiceField (choices = (("single" , "Single" ), ("multi-day" , "Multi-Day" ), ('series' ,'Series' )), required = False , initial = 'single' , widget = forms .RadioSelect )
131121
132122 def __init__ (self , request , * args , ** kwargs ):
133123 super (InterimRequestForm , self ).__init__ (* args , ** kwargs )
134124 self .user = request .user
135125 self .person = self .user .person
136126 self .fields ["group" ].widget .attrs ["class" ] = "select2-field"
137-
138127 self .set_group_options ()
139128
129+ def set_group_options (self ):
130+ '''Set group options based on user accessing the form'''
131+
132+ if has_role (self .user , "Secretariat" ):
133+ return # don't reduce group options
134+ if has_role (self .user , "Area Director" ):
135+ queryset = Group .objects .filter (type = "wg" , state = "active" ).order_by ('acronym' )
136+ elif has_role (self .user , "IRTF Chair" ):
137+ queryset = Group .objects .filter (type = "rg" , state = "active" ).order_by ('acronym' )
138+ elif has_role (self .user , "WG Chair" ):
139+ queryset = Group .objects .filter (type = "wg" , state = "active" , role__person = self .person , role__name = "chair" ).distinct ().order_by ('acronym' )
140+
141+ self .fields ['group' ].queryset = queryset
142+
143+ class InterimSessionForm (forms .Form ):
144+ date = DatepickerDateField (date_format = "yyyy-mm-dd" , picker_settings = {"autoclose" : "1" }, label = 'Date' , required = True )
145+ time = forms .TimeField ()
146+ duration = DurationField ()
147+ remote_instructions = forms .CharField (max_length = 1024 ,required = False )
148+ agenda = forms .CharField (required = False ,widget = forms .Textarea )
149+ agenda_note = forms .CharField (max_length = 255 ,required = False )
150+ city = forms .CharField (max_length = 255 ,required = False )
151+ country = forms .ChoiceField (choices = countries ,required = False )
152+ timezone = forms .ChoiceField (choices = timezones )
153+
140154 def _save_agenda (self , text ):
141155 pass
142156
143- def save (self ):
157+ def save (self , request , group , meeting ):
158+ person = request .user .person
144159 agenda = self .cleaned_data .get ('agenda' )
145160 agenda_note = self .cleaned_data .get ('agenda_note' )
146161 date = self .cleaned_data .get ('date' )
147162 time = self .cleaned_data .get ('time' )
148163 duration = self .cleaned_data .get ('duration' )
149- group = self .cleaned_data .get ('group' )
150- city = self .cleaned_data .get ('city' )
151- country = self .cleaned_data .get ('country' )
152- timezone = self .cleaned_data .get ('timezone' )
153164 remote_instructions = self .cleaned_data .get ('remote_instructions' )
154- sequence = Meeting .objects .filter (number__startswith = 'interim-%s-%s' % (date .year ,group .acronym )).count () + 1
155- number = 'interim-%s-%s-%s' % (date .year ,group .acronym ,sequence )
156- meeting = Meeting .objects .create (number = number ,type_id = 'interim' ,date = date ,city = city ,
157- country = country ,agenda_note = agenda_note ,time_zone = timezone )
158- schedule = Schedule .objects .create (meeting = meeting , owner = self .person , visible = True , public = True )
159- meeting .agenda = schedule
160- meeting .save ()
165+
161166 slot = TimeSlot .objects .create (meeting = meeting , type_id = "session" , duration = duration ,
162167 time = datetime .datetime .combine (date , time ))
163168 session = Session .objects .create (meeting = meeting ,
164169 group = group ,
165- requested_by = self . person ,
170+ requested_by = person ,
166171 status_id = 'apprw' ,
167172 type_id = 'session' ,
168- remote_instructions = remote_instructions )
169- SchedTimeSessAssignment .objects .create (timeslot = slot , session = session , schedule = schedule )
173+ remote_instructions = remote_instructions ,
174+ agenda_note = agenda_note ,)
175+ SchedTimeSessAssignment .objects .create (timeslot = slot , session = session , schedule = meeting .agenda )
170176
171177 if agenda :
172178 self ._save_agenda (agenda )
173-
174- return meeting
175-
176- def set_group_options (self ):
177- '''Set group options based on user accessing the form'''
178-
179- if has_role (self .user , "Secretariat" ):
180- return # don't reduce group options
181- if has_role (self .user , "Area Director" ):
182- queryset = Group .objects .filter (type = "wg" , state = "active" ).order_by ('acronym' )
183- elif has_role (self .user , "IRTF Chair" ):
184- queryset = Group .objects .filter (type = "rg" , state = "active" ).order_by ('acronym' )
185- elif has_role (self .user , "WG Chair" ):
186- queryset = Group .objects .filter (type = "wg" , state = "active" , role__person = self .person , role__name = "chair" ).distinct ().order_by ('acronym' )
187-
188- self .fields ['group' ].queryset = queryset
0 commit comments