@@ -1550,7 +1550,7 @@ def agenda_plain(request, num=None, name=None, base=None, ext=None, owner=None,
15501550 person = get_person_by_email (owner )
15511551 schedule = get_schedule_by_name (meeting , person , name )
15521552
1553- if schedule == None :
1553+ if schedule is None :
15541554 base = base .replace ("-utc" , "" )
15551555 return render (request , "meeting/no-" + base + ext , {'meeting' :meeting }, content_type = mimetype [ext ])
15561556
@@ -1565,7 +1565,7 @@ def agenda_plain(request, num=None, name=None, base=None, ext=None, owner=None,
15651565
15661566 # Done processing for CSV output
15671567 if ext == ".csv" :
1568- return agenda_csv (schedule , filtered_assignments )
1568+ return agenda_csv (schedule , filtered_assignments , utc = utc is not None )
15691569
15701570 filter_organizer = AgendaFilterOrganizer (assignments = filtered_assignments )
15711571
@@ -1804,7 +1804,7 @@ def agenda_extract_slide (item):
18041804 "ext" : item .file_extension ()
18051805 }
18061806
1807- def agenda_csv (schedule , filtered_assignments ):
1807+ def agenda_csv (schedule , filtered_assignments , utc = False ):
18081808 encoding = 'utf-8'
18091809 response = HttpResponse (content_type = f"text/csv; charset={ encoding } " )
18101810 writer = csv .writer (response , delimiter = str (',' ), quoting = csv .QUOTE_ALL )
@@ -1830,11 +1830,12 @@ def slides_field(item):
18301830
18311831 write_row (headings )
18321832
1833+ tz = datetime .timezone .utc if utc else schedule .meeting .tz ()
18331834 for item in filtered_assignments :
18341835 row = []
1835- row .append (item .timeslot .time .strftime ("%Y-%m-%d" ))
1836- row .append (item .timeslot .time .strftime ("%H%M" ))
1837- row .append (item .timeslot .end_time ().strftime ("%H%M" ))
1836+ row .append (item .timeslot .time .astimezone ( tz ). strftime ("%Y-%m-%d" ))
1837+ row .append (item .timeslot .time .astimezone ( tz ). strftime ("%H%M" ))
1838+ row .append (item .timeslot .end_time ().astimezone ( tz ). strftime ("%H%M" ))
18381839
18391840 if item .slot_type ().slug == "break" :
18401841 row .append (item .slot_type ().name )
@@ -3029,43 +3030,6 @@ def delete_schedule(request, num, owner, name):
30293030# -------------------------------------------------
30303031# Interim Views
30313032# -------------------------------------------------
3032-
3033-
3034- def ajax_get_utc (request ):
3035- '''Ajax view that takes arguments time, timezone, date and returns UTC data'''
3036- time = request .GET .get ('time' )
3037- timezone = request .GET .get ('timezone' )
3038- date = request .GET .get ('date' )
3039- time_re = re .compile (r'^\d{2}:\d{2}$' )
3040- # validate input
3041- if not time_re .match (time ) or not date :
3042- return HttpResponse (json .dumps ({'error' : True }),
3043- content_type = 'application/json' )
3044- hour , minute = time .split (':' )
3045- if not (int (hour ) <= 23 and int (minute ) <= 59 ):
3046- return HttpResponse (json .dumps ({'error' : True }),
3047- content_type = 'application/json' )
3048- year , month , day = date .split ('-' )
3049- dt = datetime .datetime (int (year ), int (month ), int (day ), int (hour ), int (minute ))
3050- tz = pytz .timezone (timezone )
3051- aware_dt = tz .localize (dt , is_dst = None )
3052- utc_dt = aware_dt .astimezone (pytz .utc )
3053- utc = utc_dt .strftime ('%H:%M' )
3054- # calculate utc day offset
3055- naive_utc_dt = utc_dt .replace (tzinfo = None )
3056- utc_day_offset = (naive_utc_dt .date () - dt .date ()).days
3057- html = "<span>{utc} UTC</span>" .format (utc = utc )
3058- if utc_day_offset != 0 :
3059- html = html + '<span class="day-offset"> {0:+d} Day</span>' .format (utc_day_offset )
3060- context_data = {'timezone' : timezone ,
3061- 'time' : time ,
3062- 'utc' : utc ,
3063- 'utc_day_offset' : utc_day_offset ,
3064- 'html' : html }
3065- return HttpResponse (json .dumps (context_data ),
3066- content_type = 'application/json' )
3067-
3068-
30693033def interim_announce (request ):
30703034 '''View which shows interim meeting requests awaiting announcement'''
30713035 meetings = data_for_meetings_overview (Meeting .objects .filter (type = 'interim' ).order_by ('date' ), interim_status = 'scheda' )
0 commit comments