From e26c8da5508a33c5f84960952c80fd62b7eec81f Mon Sep 17 00:00:00 2001 From: Valentin Deniaud Date: Thu, 8 Apr 2021 17:34:22 +0200 Subject: [PATCH] manager: use native checkbox select widget (#52879) --- chrono/manager/forms.py | 2 +- chrono/manager/widgets.py | 28 +--------------------------- tests/manager/test_all.py | 14 +++++++------- 3 files changed, 9 insertions(+), 35 deletions(-) diff --git a/chrono/manager/forms.py b/chrono/manager/forms.py index e3e5b4aa..3ad52b5f 100644 --- a/chrono/manager/forms.py +++ b/chrono/manager/forms.py @@ -293,7 +293,7 @@ class MeetingTypeForm(forms.ModelForm): class TimePeriodAddForm(forms.Form): weekdays = forms.MultipleChoiceField( - label=_('Days'), widget=widgets.WeekdaysWidget(), choices=WEEKDAYS_LIST + label=_('Days'), widget=forms.CheckboxSelectMultiple(), choices=WEEKDAYS_LIST ) start_time = forms.TimeField(label=_('Start Time'), widget=widgets.TimeWidget()) end_time = forms.TimeField(label=_('End Time'), widget=widgets.TimeWidget()) diff --git a/chrono/manager/widgets.py b/chrono/manager/widgets.py index bba7bb0f..296a8a14 100644 --- a/chrono/manager/widgets.py +++ b/chrono/manager/widgets.py @@ -16,7 +16,7 @@ from django.forms.fields import SplitDateTimeField -from django.forms.widgets import SelectMultiple, SplitDateTimeWidget, TimeInput +from django.forms.widgets import SplitDateTimeWidget, TimeInput from django.utils.safestring import mark_safe @@ -59,29 +59,3 @@ class TimeWidget(TimeInput): super(TimeWidget, self).__init__(**kwargs) self.attrs['step'] = '300' # 5 minutes self.attrs['pattern'] = '[0-9]{2}:[0-9]{2}' - - -class WeekdaysWidget(SelectMultiple): - def render(self, name, value, attrs=None, choices=(), renderer=None): - s = [] - value = value or [] - for choice_id, choice_label in self.choices: - s.append( - '
  • ' - % { - 'name': name, - 'checked': 'checked' if choice_id in value else '', - 'choice_id': choice_id, - 'choice_label': choice_label, - } - ) - return mark_safe('') - - def value_from_datadict(self, data, files, name): - choices = [] - for choice_id, choice_label in self.choices: - if data.get('%s-%s' % (name, choice_id)): - choices.append(choice_id) - return choices diff --git a/tests/manager/test_all.py b/tests/manager/test_all.py index 109617b5..ace00cad 100644 --- a/tests/manager/test_all.py +++ b/tests/manager/test_all.py @@ -870,7 +870,7 @@ def test_meetings_agenda_add_time_period(app, admin_user): app = login(app) resp = app.get('/manage/agendas/%s/settings' % agenda.pk) resp = resp.click('Add a time period', index=0) - resp.form['weekdays-2'].checked = True + resp.form.get('weekdays', index=2).checked = True resp.form['start_time'] = '10:00' resp.form['end_time'] = '17:00' resp = resp.form.submit() @@ -884,7 +884,7 @@ def test_meetings_agenda_add_time_period(app, admin_user): # add a second time period resp = resp.click('Add a time period', index=0) - resp.form['weekdays-0'].checked = True + resp.form.get('weekdays', index=0).checked = True resp.form['start_time'] = '10:00' resp.form['end_time'] = '13:00' resp = resp.form.submit() @@ -895,7 +895,7 @@ def test_meetings_agenda_add_time_period(app, admin_user): # invert start and end resp2 = resp.click('Add a time period', index=0) - resp2.form['weekdays-0'].checked = True + resp2.form.get('weekdays', index=0).checked = True resp2.form['start_time'] = '13:00' resp2.form['end_time'] = '10:00' resp2 = resp2.form.submit() @@ -903,8 +903,8 @@ def test_meetings_agenda_add_time_period(app, admin_user): # and add same time periods on multiple days resp = resp.click('Add a time period', index=0) - resp.form['weekdays-4'].checked = True - resp.form['weekdays-5'].checked = True + resp.form.get('weekdays', index=4).checked = True + resp.form.get('weekdays', index=5).checked = True resp.form['start_time'] = '10:00' resp.form['end_time'] = '13:00' resp = resp.form.submit() @@ -919,7 +919,7 @@ def test_meetings_agenda_add_time_period_desk_simple_management(app, admin_user) app = login(app) resp = app.get('/manage/agendas/%s/desk/%s/add-time-period' % (agenda.pk, desk.pk)) - resp.form['weekdays-0'].checked = True + resp.form.get('weekdays', index=0).checked = True resp.form['start_time'] = '10:00' resp.form['end_time'] = '13:00' resp.form.submit() @@ -3813,7 +3813,7 @@ def test_virtual_agenda_settings_add_excluded_period(app, admin_user): resp = app.get('/manage/agendas/%s/settings' % agenda.pk) resp = resp.click('Add Excluded Period') - resp.form['weekdays-0'].checked = True + resp.form.get('weekdays', index=0).checked = True resp.form['start_time'] = '10:00' resp.form['end_time'] = '17:00' resp = resp.form.submit()