Use sensible date format in symposion schedule upload
This commit is contained in:
parent
48ffffe3e3
commit
97d55b8876
1 changed files with 20 additions and 5 deletions
25
vendor/symposion/schedule/forms.py
vendored
25
vendor/symposion/schedule/forms.py
vendored
|
@ -10,7 +10,7 @@ from django.db import IntegrityError, transaction
|
||||||
from django.db.models import Q
|
from django.db.models import Q
|
||||||
|
|
||||||
from symposion.schedule.models import (Day, Presentation, Room, SlotKind, Slot,
|
from symposion.schedule.models import (Day, Presentation, Room, SlotKind, Slot,
|
||||||
SlotRoom)
|
SlotRoom, ProposalBase)
|
||||||
|
|
||||||
|
|
||||||
class SlotEditForm(forms.Form):
|
class SlotEditForm(forms.Form):
|
||||||
|
@ -58,6 +58,8 @@ class ScheduleSectionForm(forms.Form):
|
||||||
DATE_KEY = 'date'
|
DATE_KEY = 'date'
|
||||||
START_KEY = 'time_start'
|
START_KEY = 'time_start'
|
||||||
END_KEY = 'time_end'
|
END_KEY = 'time_end'
|
||||||
|
EXCLUSIVE = 'exclusive'
|
||||||
|
PROPOSAL = 'proposal_id'
|
||||||
KIND = 'kind'
|
KIND = 'kind'
|
||||||
|
|
||||||
filename = forms.FileField(
|
filename = forms.FileField(
|
||||||
|
@ -103,6 +105,7 @@ class ScheduleSectionForm(forms.Form):
|
||||||
room = Room.objects.create(
|
room = Room.objects.create(
|
||||||
schedule=self.schedule, name=room, order=i
|
schedule=self.schedule, name=room, order=i
|
||||||
)
|
)
|
||||||
|
created = True
|
||||||
if created:
|
if created:
|
||||||
created_rooms.append(room)
|
created_rooms.append(room)
|
||||||
return created_rooms
|
return created_rooms
|
||||||
|
@ -113,7 +116,7 @@ class ScheduleSectionForm(forms.Form):
|
||||||
days = set([x[self.DATE_KEY] for x in data])
|
days = set([x[self.DATE_KEY] for x in data])
|
||||||
for day in days:
|
for day in days:
|
||||||
try:
|
try:
|
||||||
date = datetime.strptime(day, "%m/%d/%Y")
|
date = datetime.strptime(day, "%Y-%m-%d")
|
||||||
except ValueError:
|
except ValueError:
|
||||||
[x.delete() for x in created_days]
|
[x.delete() for x in created_days]
|
||||||
return messages.ERROR, u'Malformed data found: %s.' % day
|
return messages.ERROR, u'Malformed data found: %s.' % day
|
||||||
|
@ -138,7 +141,7 @@ class ScheduleSectionForm(forms.Form):
|
||||||
room = Room.objects.get(
|
room = Room.objects.get(
|
||||||
schedule=self.schedule, name=row[self.ROOM_KEY]
|
schedule=self.schedule, name=row[self.ROOM_KEY]
|
||||||
)
|
)
|
||||||
date = datetime.strptime(row[self.DATE_KEY], "%m/%d/%Y")
|
date = datetime.strptime(row[self.DATE_KEY], "%Y-%m-%d")
|
||||||
day = Day.objects.get(schedule=self.schedule, date=date)
|
day = Day.objects.get(schedule=self.schedule, date=date)
|
||||||
start, end = self._get_start_end_times(row)
|
start, end = self._get_start_end_times(row)
|
||||||
slot_kind, created = SlotKind.objects.get_or_create(
|
slot_kind, created = SlotKind.objects.get_or_create(
|
||||||
|
@ -148,13 +151,13 @@ class ScheduleSectionForm(forms.Form):
|
||||||
created_items.append(slot_kind)
|
created_items.append(slot_kind)
|
||||||
if row[self.KIND] == 'plenary':
|
if row[self.KIND] == 'plenary':
|
||||||
slot, created = Slot.objects.get_or_create(
|
slot, created = Slot.objects.get_or_create(
|
||||||
kind=slot_kind, day=day, start=start, end=end
|
kind=slot_kind, day=day, start=start, end=end, exclusive=bool(int(row[self.EXCLUSIVE]))
|
||||||
)
|
)
|
||||||
if created:
|
if created:
|
||||||
created_items.append(slot)
|
created_items.append(slot)
|
||||||
else:
|
else:
|
||||||
slot = Slot.objects.create(
|
slot = Slot.objects.create(
|
||||||
kind=slot_kind, day=day, start=start, end=end
|
kind=slot_kind, day=day, start=start, end=end, exclusive=bool(int(row[self.EXCLUSIVE]))
|
||||||
)
|
)
|
||||||
created_items.append(slot)
|
created_items.append(slot)
|
||||||
try:
|
try:
|
||||||
|
@ -165,6 +168,18 @@ class ScheduleSectionForm(forms.Form):
|
||||||
for x in created_items:
|
for x in created_items:
|
||||||
x.delete()
|
x.delete()
|
||||||
return messages.ERROR, u'An overlap occurred; the import was cancelled.'
|
return messages.ERROR, u'An overlap occurred; the import was cancelled.'
|
||||||
|
|
||||||
|
if row[self.PROPOSAL]:
|
||||||
|
proposal = ProposalBase.objects.get(id=row[self.PROPOSAL])
|
||||||
|
Presentation.objects.get_or_create(
|
||||||
|
slot=slot,
|
||||||
|
section_id=1,
|
||||||
|
proposal_base=proposal,
|
||||||
|
speaker=proposal.speaker,
|
||||||
|
title=proposal.title,
|
||||||
|
abstract=proposal.abstract
|
||||||
|
)
|
||||||
|
|
||||||
return messages.SUCCESS, u'Your schedule has been imported.'
|
return messages.SUCCESS, u'Your schedule has been imported.'
|
||||||
|
|
||||||
def delete_schedule(self):
|
def delete_schedule(self):
|
||||||
|
|
Loading…
Reference in a new issue