Projet

Général

Profil

0002-agendas-add-desk_simple_management-flag-48924.patch

Lauréline Guérin, 05 février 2021 10:19

Télécharger (4,8 ko)

Voir les différences:

Subject: [PATCH 02/11] agendas: add desk_simple_management flag (#48924)

 .../agendas/migrations/0074_simple_desks.py   | 19 +++++++++++++++++++
 chrono/agendas/models.py                      |  1 +
 chrono/manager/forms.py                       | 17 +++++++++++++----
 chrono/manager/views.py                       |  8 --------
 tests/test_manager.py                         | 18 ++++++++++++++++++
 5 files changed, 51 insertions(+), 12 deletions(-)
 create mode 100644 chrono/agendas/migrations/0074_simple_desks.py
chrono/agendas/migrations/0074_simple_desks.py
1
# -*- coding: utf-8 -*-
2
from __future__ import unicode_literals
3

  
4
from django.db import migrations, models
5

  
6

  
7
class Migration(migrations.Migration):
8

  
9
    dependencies = [
10
        ('agendas', '0073_auto_20210125_1800'),
11
    ]
12

  
13
    operations = [
14
        migrations.AddField(
15
            model_name='agenda',
16
            name='desk_simple_management',
17
            field=models.BooleanField(default=False),
18
        ),
19
    ]
chrono/agendas/models.py
195 195
    booking_form_url = models.CharField(
196 196
        _('Booking form URL'), max_length=200, blank=True, validators=[django_template_validator]
197 197
    )
198
    desk_simple_management = models.BooleanField(default=False)
198 199

  
199 200
    class Meta:
200 201
        ordering = ['label']
chrono/manager/forms.py
54 54

  
55 55

  
56 56
class AgendaAddForm(forms.ModelForm):
57
    class Meta:
58
        model = Agenda
59
        fields = ['label', 'kind', 'category', 'edit_role', 'view_role']
60

  
61 57
    edit_role = forms.ModelChoiceField(
62 58
        label=_('Edit Role'), required=False, queryset=Group.objects.all().order_by('name')
63 59
    )
......
65 61
        label=_('View Role'), required=False, queryset=Group.objects.all().order_by('name')
66 62
    )
67 63

  
64
    class Meta:
65
        model = Agenda
66
        fields = ['label', 'kind', 'category', 'edit_role', 'view_role']
67

  
68
    def save(self, *args, **kwargs):
69
        super().save()
70
        if self.instance.kind == 'meetings':
71
            default_desk = self.instance.desk_set.create(label=_('Desk 1'))
72
            default_desk.import_timeperiod_exceptions_from_settings(enable=True)
73
            self.instance.desk_simple_management = True
74
            self.instance.save()
75
        return self.instance
76

  
68 77

  
69 78
class AgendaEditForm(forms.ModelForm):
70 79
    class Meta:
chrono/manager/views.py
616 616
            raise PermissionDenied()
617 617
        return super(AgendaAddView, self).dispatch(request, *args, **kwargs)
618 618

  
619
    def form_valid(self, form):
620
        model_form = super(AgendaAddView, self).form_valid(form)
621
        if self.object.kind == 'meetings':
622
            default_desk = Desk(agenda=self.object, label=_('Desk 1'))
623
            default_desk.save()
624
            default_desk.import_timeperiod_exceptions_from_settings(enable=True)
625
        return model_form
626

  
627 619
    def get_success_url(self):
628 620
        return reverse('chrono-manager-agenda-settings', kwargs={'pk': self.object.id})
629 621

  
tests/test_manager.py
883 883
    assert '<h2>Settings' in resp.text
884 884
    assert agenda.minimal_booking_delay == 1
885 885
    assert agenda.maximal_booking_delay == 56
886
    assert agenda.kind == 'events'
887
    assert agenda.desk_simple_management is False
888

  
889
    resp = app.get('/manage/agendas/add/')
890
    resp.form['label'] = 'Foo bar 2'
891
    resp.form['kind'] = 'meetings'
892
    resp = resp.form.submit()
893
    agenda = Agenda.objects.latest('pk')
894
    assert agenda.kind == 'meetings'
895
    assert agenda.desk_simple_management is True
896

  
897
    resp = app.get('/manage/agendas/add/')
898
    resp.form['label'] = 'Foo bar 3'
899
    resp.form['kind'] = 'virtual'
900
    resp = resp.form.submit()
901
    agenda = Agenda.objects.latest('pk')
902
    assert agenda.kind == 'virtual'
903
    assert agenda.desk_simple_management is False
886 904

  
887 905

  
888 906
@override_settings(
889
-