manager: configure filters for check page (#53238)

This commit is contained in:
Lauréline Guérin 2021-04-20 10:52:54 +02:00
parent 986ccd9a08
commit 233c6e62ca
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
5 changed files with 60 additions and 2 deletions

View File

@ -0,0 +1,21 @@
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('agendas', '0087_booking_user_name'),
]
operations = [
migrations.AddField(
model_name='agenda',
name='booking_check_filters',
field=models.CharField(
blank=True,
help_text='Comma separated list of keys defined in extra_data.',
max_length=250,
verbose_name='Filters',
),
),
]

View File

@ -205,6 +205,12 @@ class Agenda(models.Model):
_('Booking form URL'), max_length=200, blank=True, validators=[django_template_validator]
)
desk_simple_management = models.BooleanField(default=False)
booking_check_filters = models.CharField(
_('Filters'),
max_length=250,
blank=True,
help_text=_('Comma separated list of keys defined in extra_data.'),
)
booking_user_block_template = models.TextField(
_('User block template'),
help_text=_('Displayed for each booking in event check page'),
@ -721,6 +727,11 @@ class Agenda(models.Model):
except (VariableDoesNotExist, TemplateSyntaxError):
return
def get_booking_check_filters(self):
if not self.booking_check_filters:
return []
return [x.strip() for x in self.booking_check_filters.split(',')]
def get_booking_user_block_template(self):
return (
self.booking_user_block_template

View File

@ -747,7 +747,7 @@ class EventCancelForm(forms.ModelForm):
class AgendaBookingCheckSettingsForm(forms.ModelForm):
class Meta:
model = Agenda
fields = ['absence_reasons_group', 'booking_user_block_template']
fields = ['absence_reasons_group', 'booking_check_filters', 'booking_user_block_template']
widgets = {'booking_user_block_template': forms.Textarea(attrs={'rows': 3})}
def __init__(self, *args, **kwargs):

View File

@ -48,6 +48,19 @@
{% endif %}
{% endif %}
{% with agenda.get_booking_check_filters as check_filters %}
{% if check_filters %}
<p>{% trans "Filters:" %}</p>
<ul>
{% for key in check_filters %}
<li>{{ key }}</li>
{% endfor %}
</ul>
{% else %}
<p>{% trans "No filters configured for this agenda." %}</p>
{% endif %}
{% endwith %}
<p>{% trans "User block template" %}:</p>
<pre>{{ agenda.get_booking_user_block_template }}</pre>
</div>

View File

@ -519,8 +519,10 @@ def test_options_virtual_agenda_can_unset_delays(app, admin_user):
assert agenda.maximal_booking_delay is None
def test_options_agenda_booking_user_block_template(app, admin_user):
def test_options_agenda_booking_check_options(app, admin_user):
agenda = Agenda.objects.create(label='Foo bar', kind='events')
# check user template
assert agenda.booking_user_block_template == ''
assert (
agenda.get_booking_user_block_template()
@ -546,6 +548,17 @@ def test_options_agenda_booking_user_block_template(app, admin_user):
== '{{ booking.user_name|default:booking.label|default:"Unknown" }}'
)
# check filters
assert agenda.booking_check_filters == ''
assert agenda.get_booking_check_filters() == []
resp = app.get(url)
resp.form['booking_check_filters'] = 'foo,bar,baz'
resp = resp.form.submit()
agenda.refresh_from_db()
assert agenda.booking_check_filters == 'foo,bar,baz'
assert agenda.get_booking_check_filters() == ['foo', 'bar', 'baz']
# check kind
agenda.kind = 'meetings'
agenda.save()