Projet

Général

Profil

0001-manager-fix-desk-edition-slug-unicity-50640.patch

Lauréline Guérin, 28 janvier 2021 10:31

Télécharger (2,59 ko)

Voir les différences:

Subject: [PATCH] manager: fix desk edition & slug unicity (#50640)

 chrono/manager/forms.py |  8 ++++++++
 tests/test_manager.py   | 27 +++++++++++++++++++++++++++
 2 files changed, 35 insertions(+)
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
-