Skip to content

Commit f235cef

Browse files
committed
SplitDateOptionalTimeField
1 parent af78944 commit f235cef

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

anthill/events/forms.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import datetime
12
from django import forms
23
from anthill.events.models import Event
34

@@ -19,13 +20,25 @@ def format_output(self, rendered_widgets):
1920
return '<li><label>Date</label>%s</li><li><label>Time</label>%s</li>' % (rendered_widgets[0],
2021
rendered_widgets[1])
2122

23+
class SplitDateOptionalTimeField(forms.SplitDateTimeField):
24+
def compress(self, data_list):
25+
if data_list:
26+
# Raise a validation error if time or date is empty
27+
# (possible if SplitDateTimeField has required=False).
28+
if data_list[0] in (None, ''):
29+
raise ValidationError(self.error_messages['invalid_date'])
30+
if data_list[1] in (None, ''):
31+
data_list[1] = datetime.time() # use default time
32+
return datetime.datetime.combine(*data_list)
33+
return None
34+
2235
class EventForm(forms.ModelForm):
2336
class Meta:
2437
model = Event
2538
fields = ['title', 'description', 'location', 'url', 'start_date', 'end_date']
2639
location = forms.CharField(label='Address')
27-
start_date = forms.SplitDateTimeField(widget=SplitDateTimeListWidget, required=False)
28-
end_date = forms.SplitDateTimeField(widget=SplitDateTimeListWidget, required=False)
40+
start_date = SplitDateOptionalTimeField(widget=SplitDateTimeListWidget, required=False)
41+
end_date = SplitDateOptionalTimeField(widget=SplitDateTimeListWidget, required=False)
2942

3043
class AttendForm(forms.Form):
3144
guests = forms.IntegerField('Additional Guests',

0 commit comments

Comments
 (0)