@@ -132,7 +132,10 @@ def __unicode__(self):
132132 def __str__ (self ):
133133 return "[%d] |%s| %s" % (self .meeting .number , self .time .strftime ('%A' ), self .time_desc )
134134 def sessions (self ):
135- return WgMeetingSessionProxy .objects .filter (meeting = self .meeting , time = self .time , type__in = ("session" , "plenary" , "other" ))
135+ if not hasattr (self , "sessions_cache" ):
136+ self .sessions_cache = WgMeetingSessionProxy .objects .filter (meeting = self .meeting , time = self .time , type__in = ("session" , "plenary" , "other" ))
137+
138+ return self .sessions_cache
136139 def sessions_by_area (self ):
137140 return [ {"area" :session .area ()+ session .acronym (), "info" :session } for session in self .sessions () ]
138141 def meeting_date (self ):
@@ -225,16 +228,21 @@ def group_acronym_id(self):
225228 #number_attendee = models.IntegerField(null=True, blank=True)
226229 @property
227230 def number_attendee (self ):
228- s = self .get_session ()
229- return s .attendees if s else 0
231+ return self .get_session ().attendees if self .get_session () else 0
230232 #approval_ad = models.IntegerField(null=True, blank=True)
231233 #status = models.ForeignKey(SessionStatus, null=True, blank=True) # same name
232234 #ts_status_id = models.IntegerField(null=True, blank=True)
233235 #requested_date = models.DateField(null=True, blank=True)
234236 #approved_date = models.DateField(null=True, blank=True)
235237 #requested_by = BrokenForeignKey(PersonOrOrgInfo, db_column='requested_by', null=True, null_values=(0, 888888))
236238 #scheduled_date = models.DateField(null=True, blank=True)
239+ @property
240+ def scheduled_date (self ):
241+ return self .get_session ().scheduled .date () if self .get_session () else ""
237242 #last_modified_date = models.DateField(null=True, blank=True)
243+ @property
244+ def last_modified_date (self ):
245+ return self .get_session ().modified .date () if self .get_session () else ""
238246 #ad_comments = models.TextField(blank=True,null=True)
239247 #sched_room_id1 = models.ForeignKey(MeetingRoom, db_column='sched_room_id1', null=True, blank=True, related_name='here1')
240248 #sched_time_id1 = BrokenForeignKey(MeetingTime, db_column='sched_time_id1', null=True, blank=True, related_name='now1')
@@ -246,6 +254,9 @@ def number_attendee(self):
246254 #sched_time_id3 = BrokenForeignKey(MeetingTime, db_column='sched_time_id3', null=True, blank=True, related_name='now3')
247255 #sched_date3 = models.DateField(null=True, blank=True)
248256 #special_agenda_note = models.CharField(blank=True, max_length=255)
257+ @property
258+ def special_agenda_note (self ):
259+ return self .get_session ().agenda_note if self .get_session () else ""
249260 #combined_room_id1 = models.ForeignKey(MeetingRoom, db_column='combined_room_id1', null=True, blank=True, related_name='here4')
250261 #combined_time_id1 = models.ForeignKey(MeetingTime, db_column='combined_time_id1', null=True, blank=True, related_name='now4')
251262 #combined_room_id2 = models.ForeignKey(MeetingRoom, db_column='combined_room_id2', null=True, blank=True, related_name='here5')
@@ -254,46 +265,25 @@ def __str__(self):
254265 return "%s at %s" % (self .acronym (), self .meeting )
255266 def agenda_file (self ,interimvar = 0 ):
256267 if not hasattr (self , '_agenda_file' ):
257- # FIXME
258- irtfvar = 0
259- if self .irtf :
260- irtfvar = self .group_acronym_id
261- if interimvar == 0 :
262- try :
263- if self .interim :
264- interimvar = 1
265- except AttributeError :
266- interimvar = 0
267- try :
268- filename = WgAgenda .objects .get (meeting = self .meeting , group_acronym_id = self .group_acronym_id ,irtf = irtfvar ,interim = interimvar ).filename
269- if self .meeting_id in WgMeetingSession ._dirs :
270- dir = WgMeetingSession ._dirs [self .meeting_id ]
271- else :
272- dir = Proceeding .objects .get (meeting_num = self .meeting ).dir_name
273- WgMeetingSession ._dirs [self .meeting_id ]= dir
274- retvar = "%s/agenda/%s" % (dir ,filename )
275- except WgAgenda .DoesNotExist :
276- retvar = ""
277- self ._agenda_file = retvar
268+ docs = self .materials .filter (type = "agenda" )
269+ if not docs :
270+ return ""
271+
272+ # we use external_url at the moment, should probably regularize
273+ # the filenames to match the document name instead
274+ filename = docs [0 ].external_url
275+ self ._agenda_file = "%s/agenda/%s" % (self .meeting .number , filename )
276+
278277 return self ._agenda_file
279278 def minute_file (self ,interimvar = 0 ):
280- # FIXME
281- irtfvar = 0
282- if self .irtf :
283- irtfvar = self .group_acronym_id
284- if interimvar == 0 :
285- try :
286- if self .interim :
287- interimvar = 1
288- except AttributeError :
289- interimvar = 0
290- try :
291- filename = Minute .objects .get (meeting = self .meeting , group_acronym_id = self .group_acronym_id ,irtf = irtfvar ,interim = interimvar ).filename
292- dir = Proceeding .objects .get (meeting_num = self .meeting ).dir_name
293- retvar = "%s/minutes/%s" % (dir ,filename )
294- except Minute .DoesNotExist :
295- retvar = ""
296- return retvar
279+ docs = self .materials .filter (type = "minutes" )
280+ if not docs :
281+ return ""
282+
283+ # we use external_url at the moment, should probably regularize
284+ # the filenames to match the document name instead
285+ filename = docs [0 ].external_url
286+ return "%s/minutes/%s" % (self .meeting .number , filename )
297287 def slides (self ,interimvar = 0 ):
298288 """
299289 Get all slides of this session.
@@ -337,12 +327,16 @@ class Dummy: pass
337327 d .room_name = self .location .name
338328 return d
339329
340- _dirs = {}
341-
342330 # from ResolveAcronym:
343331 def acronym (self ):
344332 s = self .get_session ()
345333 if not s :
334+ if self .type_id == "plenary" :
335+ for m in self .materials .filter (type = "agenda" ):
336+ if "plenaryw" in m .name :
337+ return "plenaryw"
338+ if "plenaryt" in m .name :
339+ return "plenaryt"
346340 return ""
347341 if hasattr (self , "interim" ):
348342 return "i" + s .group .acronym
0 commit comments