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