forms.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import datetime
  2. from django import forms
  3. from .widgets import DatePickerWidget, SlotPickerWidget
  4. def get_hours():
  5. return [(x, datetime.time(x, 0)) for x in range(24)]
  6. def get_interval():
  7. return [(x, datetime.timedelta(minutes=x)) for x in [15, 30, 60]]
  8. class CreateEventForm(forms.Form):
  9. event_name = forms.CharField(label='Event name', max_length=100)
  10. event_date = forms.Field(label='Event date', widget=DatePickerWidget)
  11. start_time = forms.ChoiceField(label='Start time', initial=9, choices=get_hours)
  12. end_time = forms.ChoiceField(label='End time', initial=20, choices=get_hours)
  13. slot_interval = forms.ChoiceField(label='Time slot interval', initial=15, choices=get_interval)
  14. def clean(self) -> dict:
  15. cleaned_data = super().clean()
  16. if (not "start_time" in cleaned_data) or (not "end_time" in cleaned_data):
  17. return cleaned_data
  18. if cleaned_data['start_time'] == cleaned_data['end_time']:
  19. self.add_error('start_time', 'Start time must be different from end time')
  20. return cleaned_data
  21. class LoginForm(forms.Form):
  22. username = forms.CharField(label='Username', max_length=100)
  23. password = forms.CharField(label='Password', max_length=100, widget=forms.PasswordInput, required=False)
  24. class UpdateSlotsForm(forms.Form):
  25. slots = forms.Field(label='Slots')
  26. def __init__(self, *args, participant, **kwargs):
  27. super().__init__(*args, **kwargs)
  28. self.fields['slots'].widget = SlotPickerWidget(participant=participant)