manager: fix desk edition & slug unicity (#50640)
This commit is contained in:
parent
7beef8f747
commit
a11173e9ed
|
@ -297,6 +297,14 @@ class DeskForm(forms.ModelForm):
|
|||
model = Desk
|
||||
exclude = ['agenda']
|
||||
|
||||
def clean_slug(self):
|
||||
slug = self.cleaned_data['slug']
|
||||
|
||||
if self.instance.agenda.desk_set.filter(slug=slug).exclude(pk=self.instance.pk).exists():
|
||||
raise ValidationError(_('Another desk exists with the same identifier.'))
|
||||
|
||||
return slug
|
||||
|
||||
|
||||
class TimePeriodExceptionForm(forms.ModelForm):
|
||||
all_desks = forms.BooleanField(label=_('Apply exception on all desks of the agenda'), required=False)
|
||||
|
|
|
@ -2078,6 +2078,33 @@ def test_meetings_agenda_add_desk(app, admin_user):
|
|||
assert 'Desk B' in resp.text
|
||||
|
||||
|
||||
def test_meetings_agenda_edit_desk(app, admin_user):
|
||||
agenda = Agenda.objects.create(label=u'Foo bar', kind='meetings')
|
||||
desk = Desk.objects.create(agenda=agenda, label='Desk A')
|
||||
desk2 = Desk.objects.create(agenda=agenda, label='Desk B')
|
||||
other_agenda = Agenda.objects.create(label=u'Foo bar', kind='meetings')
|
||||
other_desk = Desk.objects.create(agenda=other_agenda, label='Desk A')
|
||||
assert other_desk.slug == desk.slug
|
||||
|
||||
app = login(app)
|
||||
resp = app.get('/manage/desks/%s/edit' % desk.pk)
|
||||
resp.form['label'] = 'Desk C'
|
||||
resp.form['slug'] = desk.slug
|
||||
resp = resp.form.submit().follow()
|
||||
assert 'Desk A' not in resp.text
|
||||
assert 'Desk B' in resp.text
|
||||
assert 'Desk C' in resp.text
|
||||
desk.refresh_from_db()
|
||||
assert desk.label == 'Desk C'
|
||||
assert desk.slug == other_desk.slug
|
||||
|
||||
# check slug edition
|
||||
resp = app.get('/manage/desks/%s/edit' % desk.pk)
|
||||
resp.form['slug'] = desk2.slug
|
||||
resp = resp.form.submit()
|
||||
assert resp.context['form'].errors['slug'] == ['Another desk exists with the same identifier.']
|
||||
|
||||
|
||||
def test_meetings_agenda_add_desk_from_another(app, admin_user):
|
||||
agenda = Agenda.objects.create(label=u'Foo bar', kind='meetings')
|
||||
desk = Desk.objects.create(agenda=agenda, label='Desk A')
|
||||
|
|
Loading…
Reference in New Issue