Projet

Général

Profil

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

Lauréline Guérin, 18 mai 2021 10:06

Télécharger (5,39 ko)

Voir les différences:

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

 .../migrations/0087_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/0087_booking_check_filters.py
chrono/agendas/migrations/0087_booking_check_filters.py
1
from django.db import migrations, models
2

  
3

  
4
class Migration(migrations.Migration):
5

  
6
    dependencies = [
7
        ('agendas', '0086_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='Comma separated list of keys defined in extra_data.',
17
                max_length=250,
18
                verbose_name='Filters',
19
            ),
20
        ),
21
    ]
chrono/agendas/models.py
204 204
        _('Booking form URL'), max_length=200, blank=True, validators=[django_template_validator]
205 205
    )
206 206
    desk_simple_management = models.BooleanField(default=False)
207
    booking_check_filters = models.CharField(
208
        _('Filters'),
209
        max_length=250,
210
        blank=True,
211
        help_text=_('Comma separated list of keys defined in extra_data.'),
212
    )
207 213
    booking_user_block_template = models.TextField(
208 214
        _('User block template'),
209 215
        help_text=_('Displayed for each booking in event check page'),
......
720 726
        except (VariableDoesNotExist, TemplateSyntaxError):
721 727
            return
722 728

  
729
    def get_booking_check_filters(self):
730
        if not self.booking_check_filters:
731
            return []
732
        return [x.strip() for x in self.booking_check_filters.split(',')]
733

  
723 734
    def get_booking_user_block_template(self):
724 735
        return (
725 736
            self.booking_user_block_template
chrono/manager/forms.py
747 747
class AgendaBookingCheckSettingsForm(forms.ModelForm):
748 748
    class Meta:
749 749
        model = Agenda
750
        fields = ['absence_reasons_group', 'booking_user_block_template']
750
        fields = ['absence_reasons_group', 'booking_check_filters', 'booking_user_block_template']
751 751
        widgets = {'booking_user_block_template': forms.Textarea(attrs={'rows': 3})}
752 752

  
753 753
    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
519 519
    assert agenda.maximal_booking_delay is None
520 520

  
521 521

  
522
def test_options_agenda_booking_user_block_template(app, admin_user):
522
def test_options_agenda_booking_check_options(app, admin_user):
523 523
    agenda = Agenda.objects.create(label='Foo bar', kind='events')
524

  
525
    # check user template
524 526
    assert agenda.booking_user_block_template == ''
525 527
    assert (
526 528
        agenda.get_booking_user_block_template()
......
546 548
        == '{{ booking.user_name|default:booking.label|default:"Unknown" }}'
547 549
    )
548 550

  
551
    # check filters
552
    assert agenda.booking_check_filters == ''
553
    assert agenda.get_booking_check_filters() == []
554

  
555
    resp = app.get(url)
556
    resp.form['booking_check_filters'] = 'foo,bar,baz'
557
    resp = resp.form.submit()
558
    agenda.refresh_from_db()
559
    assert agenda.booking_check_filters == 'foo,bar,baz'
560
    assert agenda.get_booking_check_filters() == ['foo', 'bar', 'baz']
561

  
549 562
    # check kind
550 563
    agenda.kind = 'meetings'
551 564
    agenda.save()
552
-