1+ import datetime
12from django import forms
23from 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+
2235class 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
3043class AttendForm (forms .Form ):
3144 guests = forms .IntegerField ('Additional Guests' ,
0 commit comments