0001-manager-configure-filters-for-check-page-53238.patch
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 |
- |