Projet

Général

Profil

0001-manager-configure-filters-for-check-page-53238.patch

Lauréline Guérin, 22 avril 2021 11:40

Télécharger (5,39 ko)

Voir les différences:

Subject: [PATCH 1/2] manager: configure filters for check page (#53238)

 .../migrations/0081_booking_check_filters.py  | 21 +++++++++++++++++++
 chrono/agendas/models.py                      | 11 ++++++++++
 chrono/manager/forms.py                       |  2 +-
 .../manager_events_agenda_settings.html       | 13 ++++++++++++
 tests/manager/test_all.py                     | 15 ++++++++++++-
 5 files changed, 60 insertions(+), 2 deletions(-)
 create mode 100644 chrono/agendas/migrations/0081_booking_check_filters.py
chrono/agendas/migrations/0081_booking_check_filters.py
1
from django.db import migrations, models
2

  
3

  
4
class Migration(migrations.Migration):
5

  
6
    dependencies = [
7
        ('agendas', '0080_booking_user_block_template'),
8
    ]
9

  
10
    operations = [
11
        migrations.AddField(
12
            model_name='agenda',
13
            name='booking_check_filters',
14
            field=models.CharField(
15
                blank=True,
16
                help_text='Enter a comma separated list of keys defined in extra_data.',
17
                max_length=250,
18
                verbose_name='Filters',
19
            ),
20
        ),
21
    ]
chrono/agendas/models.py
203 203
        _('Booking form URL'), max_length=200, blank=True, validators=[django_template_validator]
204 204
    )
205 205
    desk_simple_management = models.BooleanField(default=False)
206
    booking_check_filters = models.CharField(
207
        _('Filters'),
208
        max_length=250,
209
        blank=True,
210
        help_text=_('Enter a comma separated list of keys defined in extra_data.'),
211
    )
206 212
    booking_user_block_template = models.TextField(
207 213
        _('User block template'),
208 214
        help_text=_('Displayed for each booking in event check page'),
......
669 675
        except (VariableDoesNotExist, TemplateSyntaxError):
670 676
            return
671 677

  
678
    def get_booking_check_filters(self):
679
        if not self.booking_check_filters:
680
            return []
681
        return self.booking_check_filters.split(',')
682

  
672 683
    def get_booking_user_block_template(self):
673 684
        return (
674 685
            self.booking_user_block_template
chrono/manager/forms.py
732 732
class AgendaBookingCheckSettingsForm(forms.ModelForm):
733 733
    class Meta:
734 734
        model = Agenda
735
        fields = ['absence_reasons_group', 'booking_user_block_template']
735
        fields = ['absence_reasons_group', 'booking_check_filters', 'booking_user_block_template']
736 736
        widgets = {'booking_user_block_template': forms.Textarea(attrs={'rows': 3})}
737 737

  
738 738
    def __init__(self, *args, **kwargs):
chrono/manager/templates/chrono/manager_events_agenda_settings.html
48 48
        {% endif %}
49 49
    {% endif %}
50 50

  
51
    {% with agenda.get_booking_check_filters as check_filters %}
52
        {% if check_filters %}
53
        <p>{% trans "Filters" %}:</p>
54
        <ul>
55
            {% for key in check_filters %}
56
            <li>{{ key }}</li>
57
            {% endfor %}
58
        </ul>
59
        {% else %}
60
        <p>{% trans "No filters configured for this agenda." %}</p>
61
        {% endif %}
62
    {% endwith %}
63

  
51 64
    <p>{% trans "User block template" %}:</p>
52 65
    <pre>{{ agenda.get_booking_user_block_template }}</pre>
53 66
</div>
tests/manager/test_all.py
492 492
    assert agenda.maximal_booking_delay is None
493 493

  
494 494

  
495
def test_options_agenda_booking_user_block_template(app, admin_user):
495
def test_options_agenda_booking_check_options(app, admin_user):
496 496
    agenda = Agenda.objects.create(label='Foo bar', kind='events')
497

  
498
    # check user template
497 499
    assert agenda.booking_user_block_template == ''
498 500
    assert (
499 501
        agenda.get_booking_user_block_template()
......
519 521
        == '{{ booking.user_name|default:booking.label|default:"Unknown" }}'
520 522
    )
521 523

  
524
    # check filters
525
    assert agenda.booking_check_filters == ''
526
    assert agenda.get_booking_check_filters() == []
527

  
528
    resp = app.get(url)
529
    resp.form['booking_check_filters'] = 'foo,bar,baz'
530
    resp = resp.form.submit()
531
    agenda.refresh_from_db()
532
    assert agenda.booking_check_filters == 'foo,bar,baz'
533
    assert agenda.get_booking_check_filters() == ['foo', 'bar', 'baz']
534

  
522 535
    # check kind
523 536
    agenda.kind = 'meetings'
524 537
    agenda.save()
525
-