manager: hide timesheet links if agenda has no subscription (#68479)

This commit is contained in:
Lauréline Guérin 2022-08-29 09:59:50 +02:00
parent fa6f5dcfe7
commit 95ccebb3cb
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
6 changed files with 46 additions and 6 deletions

View File

@ -9,10 +9,12 @@
{% endblock %}
{% block actions %}
{% if agenda.subscriptions.exists %}
<a class="extra-actions-menu-opener"></a>
<ul class="extra-actions-menu">
<li><a href="{% url 'chrono-manager-events-timesheet' pk=agenda.pk %}">{% trans 'Timesheet' %}</a></li>
</ul>
{% endif %}
{{ block.super }}
<a href="{% url 'chrono-manager-agenda-month-redirect-view' pk=agenda.pk %}">{% trans 'Month view' %}</a>
{% endblock %}

View File

@ -44,7 +44,7 @@
{% if event.agenda.booking_form_url %}
<li><a href="{{ event.get_booking_form_url }}&ReturnURL={{ request.build_absolute_uri }}">{% trans "Booking form" %}</a></li>
{% endif %}
{% if not event.cancelled %}
{% if not event.cancelled and agenda.subscriptions.exists %}
<li><a href="{% url 'chrono-manager-event-timesheet' pk=agenda.pk event_pk=event.pk %}">{% trans "Timesheet" %}</a></li>
{% endif %}
</ul>

View File

@ -2,10 +2,12 @@
{% load i18n %}
{% block actions %}
{% if agenda.subscriptions.exists %}
<a class="extra-actions-menu-opener"></a>
<ul class="extra-actions-menu">
<li><a href="{% url 'chrono-manager-events-timesheet' pk=agenda.pk %}">{% trans 'Timesheet' %}</a></li>
</ul>
{% endif %}
{{ block.super }}
<a href="{% url 'chrono-manager-agenda-open-events-view' pk=agenda.pk %}">{% trans 'Open events' %}</a>
<a href="{% url 'chrono-manager-agenda-month-view' pk=agenda.pk year=view.date|date:"Y" month=view.date|date:"n" %}">{% trans 'Month view' %}</a>

View File

@ -5,7 +5,9 @@
<a class="extra-actions-menu-opener"></a>
<ul class="extra-actions-menu">
<li><a href="{% url 'chrono-manager-event-cancellation-report-list' pk=agenda.pk %}">{% trans 'Cancellation error reports' %}</a></li>
{% if agenda.subscriptions.exists %}
<li><a href="{% url 'chrono-manager-events-timesheet' pk=agenda.pk %}">{% trans 'Timesheet' %}</a></li>
{% endif %}
</ul>
{{ block.super }}
<a href="{% url 'chrono-manager-agenda-open-events-view' pk=agenda.pk %}">{% trans 'Open events' %}</a>

View File

@ -1103,7 +1103,7 @@ def test_agenda_events_day_view(app, admin_user):
with CaptureQueriesContext(connection) as ctx:
resp = app.get('/manage/agendas/%s/2020/11/11/' % agenda.pk)
assert len(ctx.captured_queries) == 4
assert len(ctx.captured_queries) == 5
assert len(resp.pyquery.find('.event-info')) == 2
assert 'abc' in resp.pyquery.find('.event-info')[0].text
@ -1172,7 +1172,7 @@ def test_agenda_events_month_view(app, admin_user):
with CaptureQueriesContext(connection) as ctx:
resp = app.get('/manage/agendas/%s/%s/%s/' % (agenda.id, 2020, 11))
assert len(ctx.captured_queries) == 7
assert len(ctx.captured_queries) == 8
assert len(resp.pyquery.find('.event-info')) == 5
assert 'abc' in resp.pyquery.find('.event-info')[0].text
assert 'abc' in resp.pyquery.find('.event-info')[1].text
@ -1188,9 +1188,9 @@ def test_agenda_events_month_view(app, admin_user):
agenda.update_event_recurrences()
resp = app.get('/manage/agendas/%s/%s/%s/' % (agenda.id, 2020, 11))
assert len(resp.pyquery.find('.event-info')) == 4
assert 'abc' in resp.pyquery.find('li')[5].text_content()
assert 'Exception: 11/10/2020' in resp.pyquery.find('li')[6].text_content()
assert 'xyz' in resp.pyquery.find('li')[7].text_content()
assert 'abc' in resp.pyquery.find('li')[4].text_content()
assert 'Exception: 11/10/2020' in resp.pyquery.find('li')[5].text_content()
assert 'xyz' in resp.pyquery.find('li')[6].text_content()
# 12/2020 has 5 Wednesday
resp = app.get('/manage/agendas/%s/%s/%s/' % (agenda.id, 2020, 12))

View File

@ -12,6 +12,40 @@ from tests.utils import login
pytestmark = pytest.mark.django_db
def test_events_timesheet_link(app, admin_user):
agenda = Agenda.objects.create(label='Events', kind='events')
event = Event.objects.create(label='event', start_datetime=now(), places=10, agenda=agenda)
login(app)
# agenda without subscription
resp = app.get('/manage/agendas/%s/month/' % agenda.pk).follow()
assert '/manage/agendas/%s/events/timesheet' % agenda.pk not in resp
resp = app.get('/manage/agendas/%s/day/' % agenda.pk).follow()
assert '/manage/agendas/%s/events/timesheet' % agenda.pk not in resp
resp = app.get('/manage/agendas/%s/events/open/' % agenda.pk)
assert '/manage/agendas/%s/events/timesheet' % agenda.pk not in resp
resp = app.get('/manage/agendas/%s/events/%s/' % (agenda.pk, event.pk))
assert '/manage/agendas/%s/events/%s/timesheet' % (agenda.pk, event.pk) not in resp
# agenda with subscription
Subscription.objects.create(
agenda=agenda,
user_external_id='user:1',
user_first_name='Subscription',
user_last_name='42',
date_start=now(),
date_end=now(),
)
resp = app.get('/manage/agendas/%s/month/' % agenda.pk).follow()
assert '/manage/agendas/%s/events/timesheet' % agenda.pk in resp
resp = app.get('/manage/agendas/%s/day/' % agenda.pk).follow()
assert '/manage/agendas/%s/events/timesheet' % agenda.pk in resp
resp = app.get('/manage/agendas/%s/events/open/' % agenda.pk)
assert '/manage/agendas/%s/events/timesheet' % agenda.pk in resp
resp = app.get('/manage/agendas/%s/events/%s/' % (agenda.pk, event.pk))
assert '/manage/agendas/%s/events/%s/timesheet' % (agenda.pk, event.pk) in resp
def test_events_timesheet_wrong_kind(app, admin_user):
agenda = Agenda.objects.create(label='Foo bar', kind='meetings')