Changed a helper function meeting_updated() to a method on Meeting, and provided it as a synthetic attribute on the /api/v1/meeting/meeting/ endpoints of the JSON API.
- Legacy-Id: 10611
This commit is contained in:
parent
d1e245f042
commit
d8413d5d28
|
@ -1,7 +1,6 @@
|
|||
# Copyright The IETF Trust 2007, All Rights Reserved
|
||||
|
||||
import datetime
|
||||
import pytz
|
||||
import os
|
||||
import re
|
||||
from tempfile import mkstemp
|
||||
|
@ -148,14 +147,6 @@ def get_schedule_by_name(meeting, owner, name):
|
|||
else:
|
||||
return meeting.schedule_set.filter(name = name).first()
|
||||
|
||||
def meeting_updated(meeting):
|
||||
meeting_time = datetime.datetime(*(meeting.date.timetuple()[:7]))
|
||||
ts = max(meeting.timeslot_set.aggregate(Max('modified'))["modified__max"] or meeting_time,
|
||||
meeting.session_set.aggregate(Max('modified'))["modified__max"] or meeting_time)
|
||||
tz = pytz.timezone(settings.PRODUCTION_TIMEZONE)
|
||||
ts = tz.localize(ts)
|
||||
return ts
|
||||
|
||||
def preprocess_assignments_for_agenda(assignments_queryset, meeting):
|
||||
# prefetch some stuff to prevent a myriad of small, inefficient queries
|
||||
assignments_queryset = assignments_queryset.select_related(
|
||||
|
|
|
@ -13,6 +13,7 @@ from timedeltafield import TimedeltaField
|
|||
import debug # pyflakes:ignore
|
||||
|
||||
from django.db import models
|
||||
from django.db.models import Max
|
||||
from django.conf import settings
|
||||
# mostly used by json_dict()
|
||||
#from django.template.defaultfilters import slugify, date as date_format, time as time_format
|
||||
|
@ -264,6 +265,14 @@ class Meeting(models.Model):
|
|||
self.agenda = agenda
|
||||
self.save()
|
||||
|
||||
def updated(self):
|
||||
meeting_time = datetime.datetime(*(self.date.timetuple()[:7]))
|
||||
ts = max(self.timeslot_set.aggregate(Max('modified'))["modified__max"] or meeting_time,
|
||||
self.session_set.aggregate(Max('modified'))["modified__max"] or meeting_time)
|
||||
tz = pytz.timezone(settings.PRODUCTION_TIMEZONE)
|
||||
ts = tz.localize(ts)
|
||||
return ts
|
||||
|
||||
class Meta:
|
||||
ordering = ["-date", ]
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Autogenerated by the mkresources management command 2014-11-13 23:15
|
||||
from tastypie.resources import ModelResource
|
||||
from tastypie.fields import ToOneField, ToManyField
|
||||
from tastypie.fields import ToOneField, ToManyField, DateTimeField
|
||||
from tastypie.constants import ALL, ALL_WITH_RELATIONS
|
||||
|
||||
from ietf import api
|
||||
|
@ -12,6 +12,7 @@ from ietf.name.resources import MeetingTypeNameResource
|
|||
class MeetingResource(ModelResource):
|
||||
type = ToOneField(MeetingTypeNameResource, 'type')
|
||||
agenda = ToOneField('ietf.meeting.resources.ScheduleResource', 'agenda', null=True)
|
||||
updated = DateTimeField(attribute='updated')
|
||||
class Meta:
|
||||
queryset = Meeting.objects.all()
|
||||
serializer = api.Serializer()
|
||||
|
|
|
@ -32,7 +32,7 @@ from ietf.meeting.helpers import build_all_agenda_slices, get_wg_name_list
|
|||
from ietf.meeting.helpers import get_all_assignments_from_schedule
|
||||
from ietf.meeting.helpers import get_modified_from_assignments
|
||||
from ietf.meeting.helpers import get_wg_list, find_ads_for_meeting
|
||||
from ietf.meeting.helpers import get_meeting, get_schedule, agenda_permissions, meeting_updated, get_meetings
|
||||
from ietf.meeting.helpers import get_meeting, get_schedule, agenda_permissions, get_meetings
|
||||
from ietf.meeting.helpers import preprocess_assignments_for_agenda, read_agenda_file
|
||||
from ietf.meeting.helpers import convert_draft_to_pdf
|
||||
from ietf.utils.pipe import pipe
|
||||
|
@ -380,7 +380,7 @@ def agenda(request, num=None, name=None, base=None, ext=None):
|
|||
base = base.replace("-utc", "")
|
||||
return render(request, "meeting/no-"+base+ext, {'meeting':meeting }, content_type=mimetype[ext])
|
||||
|
||||
updated = meeting_updated(meeting)
|
||||
updated = meeting.updated()
|
||||
filtered_assignments = schedule.assignments.exclude(timeslot__type__in=['lead','offagenda'])
|
||||
filtered_assignments = preprocess_assignments_for_agenda(filtered_assignments, meeting)
|
||||
|
||||
|
@ -528,7 +528,7 @@ def agenda_by_type_ics(request,num=None,type=None):
|
|||
assignments = schedule.assignments.order_by('session__type__slug','timeslot__time')
|
||||
if type:
|
||||
assignments = assignments.filter(session__type__slug=type)
|
||||
updated = meeting_updated(meeting)
|
||||
updated = meeting.updated()
|
||||
return render(request,"meeting/agenda.ics",{"schedule":schedule,"updated":updated,"assignments":assignments},content_type="text/calendar")
|
||||
|
||||
def session_agenda(request, num, session):
|
||||
|
@ -771,7 +771,7 @@ def room_view(request, num=None):
|
|||
def ical_agenda(request, num=None, name=None, ext=None):
|
||||
meeting = get_meeting(num)
|
||||
schedule = get_schedule(meeting, name)
|
||||
updated = meeting_updated(meeting)
|
||||
updated = meeting.updated()
|
||||
|
||||
if schedule is None:
|
||||
raise Http404
|
||||
|
|
Loading…
Reference in a new issue