feat: Reformats resposne
This commit is contained in:
parent
22f9b6b90b
commit
b8deff0b68
1 changed files with 27 additions and 18 deletions
|
|
@ -240,34 +240,43 @@ class CongressScheduleJSONView(views.APIView):
|
||||||
subs = SubEvent.objects.filter(event=ev).order_by('date_from')
|
subs = SubEvent.objects.filter(event=ev).order_by('date_from')
|
||||||
|
|
||||||
schedule = {
|
schedule = {
|
||||||
"generator": {"name": "voc/schedule/hackertours", "version": __version__},
|
"$schema": "https://c3voc.de/schedule/schema.json",
|
||||||
"version": f"{ev.slug}-v1",
|
"schedule": {
|
||||||
"conference": {
|
"generator": {"name": "voc/schedule/hackertours", "version": __version__},
|
||||||
"acronym": f"{organizer}_{event}".lower(),
|
"version": f"{ev.slug}-v1",
|
||||||
"title": (ev.name.localize(ev.settings.locale) if hasattr(ev.name, 'localize') else str(ev.name)) or str(ev.slug),
|
"conference": {
|
||||||
"start": None,
|
"acronym": f"{organizer}_{event}".lower(),
|
||||||
"end": None,
|
"title": (ev.name.localize(ev.settings.locale) if hasattr(ev.name, 'localize') else str(ev.name)) or str(ev.slug),
|
||||||
"daysCount": None,
|
"start": None,
|
||||||
"timeslot_duration": "00:15",
|
"end": None,
|
||||||
"time_zone_name": "Europe/Berlin",
|
"daysCount": None,
|
||||||
},
|
"timeslot_duration": "00:15",
|
||||||
"days": []
|
"time_zone_name": "Europe/Berlin",
|
||||||
|
"rooms": [
|
||||||
|
{
|
||||||
|
"name": "Hackertours",
|
||||||
|
"guid": "aa56c6c6-7dbc-4f73-b189-b8ee2245b0c3"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"days": []
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
all_starts = [se.date_from for se in subs if se.date_from]
|
all_starts = [se.date_from for se in subs if se.date_from]
|
||||||
all_ends = [se.date_to for se in subs if se.date_to]
|
all_ends = [se.date_to for se in subs if se.date_to]
|
||||||
if all_starts:
|
if all_starts:
|
||||||
schedule["conference"]["start"] = min(all_starts).isoformat()
|
schedule["schedule"]["conference"]["start"] = min(all_starts).isoformat()
|
||||||
if all_ends:
|
if all_ends:
|
||||||
schedule["conference"]["end"] = max(all_ends).isoformat()
|
schedule["schedule"]["conference"]["end"] = max(all_ends).isoformat()
|
||||||
|
|
||||||
unique_days = sorted({(se.date_from.date() if se.date_from else None) for se in subs} - {None})
|
unique_days = sorted({(se.date_from.date() if se.date_from else None) for se in subs} - {None})
|
||||||
if unique_days:
|
if unique_days:
|
||||||
schedule["conference"]["days"] = len(unique_days)
|
schedule["schedule"]["conference"]["daysCount"] = len(unique_days)
|
||||||
|
|
||||||
tz_name = getattr(ev, 'timezone', None) or getattr(ev.settings, 'timezone', None)
|
tz_name = getattr(ev, 'timezone', None) or getattr(ev.settings, 'timezone', None)
|
||||||
if tz_name:
|
if tz_name:
|
||||||
schedule["conference"]["time_zone_name"] = tz_name if isinstance(tz_name, str) else str(tz_name)
|
schedule["schedule"]["conference"]["time_zone_name"] = tz_name if isinstance(tz_name, str) else str(tz_name)
|
||||||
|
|
||||||
days = defaultdict(lambda: defaultdict(list))
|
days = defaultdict(lambda: defaultdict(list))
|
||||||
|
|
||||||
|
|
@ -280,7 +289,7 @@ class CongressScheduleJSONView(views.APIView):
|
||||||
txt = str(loc)
|
txt = str(loc)
|
||||||
else:
|
else:
|
||||||
txt = str(loc) if loc else ''
|
txt = str(loc) if loc else ''
|
||||||
return (txt or 'Main').strip() or 'Main'
|
return (txt or 'Hackertours').strip() or 'Hackertours'
|
||||||
|
|
||||||
for se in subs:
|
for se in subs:
|
||||||
if not se.date_from:
|
if not se.date_from:
|
||||||
|
|
@ -389,7 +398,7 @@ class CongressScheduleJSONView(views.APIView):
|
||||||
|
|
||||||
day_obj["rooms"][room_name] = room_events
|
day_obj["rooms"][room_name] = room_events
|
||||||
|
|
||||||
schedule["days"].append(day_obj)
|
schedule["schedule"]["conference"]["days"].append(day_obj)
|
||||||
|
|
||||||
return HttpResponse(
|
return HttpResponse(
|
||||||
json.dumps(schedule, ensure_ascii=False),
|
json.dumps(schedule, ensure_ascii=False),
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue