0001-manager-fix-desk-edition-slug-unicity-50640.patch
chrono/manager/forms.py | ||
---|---|---|
297 | 297 |
model = Desk |
298 | 298 |
exclude = ['agenda'] |
299 | 299 | |
300 |
def clean_slug(self): |
|
301 |
slug = self.cleaned_data['slug'] |
|
302 | ||
303 |
if self.instance.agenda.desk_set.filter(slug=slug).exclude(pk=self.instance.pk).exists(): |
|
304 |
raise ValidationError(_('Another desk exists with the same identifier.')) |
|
305 | ||
306 |
return slug |
|
307 | ||
300 | 308 | |
301 | 309 |
class TimePeriodExceptionForm(forms.ModelForm): |
302 | 310 |
all_desks = forms.BooleanField(label=_('Apply exception on all desks of the agenda'), required=False) |
tests/test_manager.py | ||
---|---|---|
2078 | 2078 |
assert 'Desk B' in resp.text |
2079 | 2079 | |
2080 | 2080 | |
2081 |
def test_meetings_agenda_edit_desk(app, admin_user): |
|
2082 |
agenda = Agenda.objects.create(label=u'Foo bar', kind='meetings') |
|
2083 |
desk = Desk.objects.create(agenda=agenda, label='Desk A') |
|
2084 |
desk2 = Desk.objects.create(agenda=agenda, label='Desk B') |
|
2085 |
other_agenda = Agenda.objects.create(label=u'Foo bar', kind='meetings') |
|
2086 |
other_desk = Desk.objects.create(agenda=other_agenda, label='Desk A') |
|
2087 |
assert other_desk.slug == desk.slug |
|
2088 | ||
2089 |
app = login(app) |
|
2090 |
resp = app.get('/manage/desks/%s/edit' % desk.pk) |
|
2091 |
resp.form['label'] = 'Desk C' |
|
2092 |
resp.form['slug'] = desk.slug |
|
2093 |
resp = resp.form.submit().follow() |
|
2094 |
assert 'Desk A' not in resp.text |
|
2095 |
assert 'Desk B' in resp.text |
|
2096 |
assert 'Desk C' in resp.text |
|
2097 |
desk.refresh_from_db() |
|
2098 |
assert desk.label == 'Desk C' |
|
2099 |
assert desk.slug == other_desk.slug |
|
2100 | ||
2101 |
# check slug edition |
|
2102 |
resp = app.get('/manage/desks/%s/edit' % desk.pk) |
|
2103 |
resp.form['slug'] = desk2.slug |
|
2104 |
resp = resp.form.submit() |
|
2105 |
assert resp.context['form'].errors['slug'] == ['Another desk exists with the same identifier.'] |
|
2106 | ||
2107 | ||
2081 | 2108 |
def test_meetings_agenda_add_desk_from_another(app, admin_user): |
2082 | 2109 |
agenda = Agenda.objects.create(label=u'Foo bar', kind='meetings') |
2083 | 2110 |
desk = Desk.objects.create(agenda=agenda, label='Desk A') |
2084 |
- |