From 2933f4ad23cf20cfb05889d59ccfbdb2841f3e70 Mon Sep 17 00:00:00 2001 From: Valentin Deniaud Date: Fri, 19 Apr 2019 18:00:30 +0200 Subject: [PATCH 4/4] manager: ensure buttons behave properly We don't want to let the redirection to login happen inside a popup. --- .../chrono/manager_agenda_settings.html | 40 +++++++++---------- .../templates/chrono/manager_desk_form.html | 2 +- .../templates/chrono/manager_event_form.html | 2 +- .../templates/chrono/manager_home.html | 4 +- .../chrono/manager_meeting_type_form.html | 2 +- .../manager_time_period_exception_form.html | 2 +- .../manager_time_period_exception_list.html | 2 +- .../chrono/manager_time_period_form.html | 2 +- chrono/manager/utils.py | 9 +++++ chrono/manager/views.py | 8 ++-- 10 files changed, 41 insertions(+), 32 deletions(-) diff --git a/chrono/manager/templates/chrono/manager_agenda_settings.html b/chrono/manager/templates/chrono/manager_agenda_settings.html index 433667e..52dac49 100644 --- a/chrono/manager/templates/chrono/manager_agenda_settings.html +++ b/chrono/manager/templates/chrono/manager_agenda_settings.html @@ -12,17 +12,17 @@ {% if user.is_staff %} - {% trans 'Delete' %} +{% trans 'Delete' %} {% endif %} {% if user_can_manage %} {% trans 'Export' %} - {% trans 'Options' %} + {% trans 'Options' %} {% if object.kind == "events" %} - {% trans 'Import Events' %} - {% trans 'New Event' %} + {% trans 'Import Events' %} + {% trans 'New Event' %} {% else %} - {% trans 'New Meeting Type' %} - {% trans 'New Desk' %} + {% trans 'New Meeting Type' %} + {% trans 'New Desk' %} {% endif %} {% endif %} @@ -45,7 +45,7 @@ {% elif event.waiting_list_places %} data-total="{{event.waiting_list_places}}" data-booked="{{event.waiting_list}}" {% endif %} - > + > {% if event.label %}{{event.label}} / {% endif %} {{ event.start_datetime }} {% if event.full %}/ {% trans "full" %}{% endif %} @@ -64,7 +64,7 @@ ({% trans "out of bookable period" %}) {% endif %} - {% if user_can_manage %}{% trans "remove" %}{% endif %} + {% if user_can_manage %}{% trans "remove" %}{% endif %} {% endfor %} @@ -89,12 +89,12 @@ {% if object.meetingtype_set.count %} @@ -119,34 +119,34 @@ {% url 'chrono-manager-agenda-add-time-period' agenda_pk=object.pk pk=desk.pk as add_time_period_url %} diff --git a/chrono/manager/templates/chrono/manager_desk_form.html b/chrono/manager/templates/chrono/manager_desk_form.html index 7952eb6..8309ea2 100644 --- a/chrono/manager/templates/chrono/manager_desk_form.html +++ b/chrono/manager/templates/chrono/manager_desk_form.html @@ -19,7 +19,7 @@ {% if object.id %}

{% trans "Edit Desk" %}

-{% trans 'Delete' %} +{% trans 'Delete' %} {% else %}

{% trans "New Desk" %}

diff --git a/chrono/manager/templates/chrono/manager_event_form.html b/chrono/manager/templates/chrono/manager_event_form.html index 44f28cf..326d08b 100644 --- a/chrono/manager/templates/chrono/manager_event_form.html +++ b/chrono/manager/templates/chrono/manager_event_form.html @@ -17,7 +17,7 @@ {% if object.id %}

{% trans "Edit Event" %}

-{% trans 'Delete' %} +{% trans 'Delete' %} {% else %}

{% trans "New Event" %}

diff --git a/chrono/manager/templates/chrono/manager_home.html b/chrono/manager/templates/chrono/manager_home.html index b8fc057..afa9a38 100644 --- a/chrono/manager/templates/chrono/manager_home.html +++ b/chrono/manager/templates/chrono/manager_home.html @@ -5,8 +5,8 @@

{% trans 'Agendas' %}

{% if user.is_staff %} -{% trans 'Import' %} -{% trans 'New' %} +{% trans 'Import' %} +{% trans 'New' %} {% endif %} {% endblock %} diff --git a/chrono/manager/templates/chrono/manager_meeting_type_form.html b/chrono/manager/templates/chrono/manager_meeting_type_form.html index f3c9cfe..fe655c4 100644 --- a/chrono/manager/templates/chrono/manager_meeting_type_form.html +++ b/chrono/manager/templates/chrono/manager_meeting_type_form.html @@ -17,7 +17,7 @@ {% if object.id %}

{% trans "Edit Meeting Type" %}

-{% trans 'Delete' %} +{% trans 'Delete' %} {% else %}

{% trans "New Meeting Type" %}

diff --git a/chrono/manager/templates/chrono/manager_time_period_exception_form.html b/chrono/manager/templates/chrono/manager_time_period_exception_form.html index 0456588..945aed4 100644 --- a/chrono/manager/templates/chrono/manager_time_period_exception_form.html +++ b/chrono/manager/templates/chrono/manager_time_period_exception_form.html @@ -19,7 +19,7 @@ {% if object.id %}

{% trans "Edit time period exception" %}

-{% trans 'Delete' %} +{% trans 'Delete' %} {% else %}

{% trans "New time period exception" %}

diff --git a/chrono/manager/templates/chrono/manager_time_period_exception_list.html b/chrono/manager/templates/chrono/manager_time_period_exception_list.html index d77e082..4a7d60f 100644 --- a/chrono/manager/templates/chrono/manager_time_period_exception_list.html +++ b/chrono/manager/templates/chrono/manager_time_period_exception_list.html @@ -22,7 +22,7 @@ {% for exception in object_list %}
  • {{ exception }} - {% if user_can_manage %}{% trans "remove" %}{% endif %} + {% if user_can_manage %}{% trans "remove" %}{% endif %}
  • {% endfor %} diff --git a/chrono/manager/templates/chrono/manager_time_period_form.html b/chrono/manager/templates/chrono/manager_time_period_form.html index 815c57f..54b894b 100644 --- a/chrono/manager/templates/chrono/manager_time_period_form.html +++ b/chrono/manager/templates/chrono/manager_time_period_form.html @@ -19,7 +19,7 @@ {% if object.id %}

    {% trans "Edit Time Period" %}

    -{% trans 'Delete' %} +{% trans 'Delete' %} {% else %}

    {% trans "New Time Period" %}

    diff --git a/chrono/manager/utils.py b/chrono/manager/utils.py index 20ad2e0..c77ae66 100644 --- a/chrono/manager/utils.py +++ b/chrono/manager/utils.py @@ -17,6 +17,7 @@ from django.db import transaction from chrono.agendas.models import Agenda, AgendaImportError +from chrono.exceptions import RoleNotInSession def export_site(): @@ -42,3 +43,11 @@ def import_site(data, if_empty=False, clean=False, overwrite=False): else: results['updated'] += 1 return results + + +def set_manage_context(agenda, request, context): + try: + context['user_can_manage'] = agenda.can_be_managed(request) + context['rel'] = 'popup' + except RoleNotInSession: + context['user_can_manage'] = True diff --git a/chrono/manager/views.py b/chrono/manager/views.py index 081869d..b102470 100644 --- a/chrono/manager/views.py +++ b/chrono/manager/views.py @@ -40,7 +40,7 @@ from chrono.exceptions import RoleNotInSession from .forms import (AgendaAddForm, AgendaEditForm, EventForm, NewMeetingTypeForm, MeetingTypeForm, TimePeriodForm, ImportEventsForm, NewDeskForm, DeskForm, TimePeriodExceptionForm, ExceptionsImportForm, AgendasImportForm, TimePeriodAddForm) -from .utils import import_site +from .utils import import_site, set_manage_context class HomepageView(ListView): @@ -236,7 +236,7 @@ class AgendaDateView(object): context['hour_span'] = max(60 // self.agenda.get_base_meeting_duration(), 1) except ValueError: # no meeting types defined context['hour_span'] = 1 - context['user_can_manage'] = self.agenda.can_be_managed(self.request.user) + set_manage_context(self.agenda, self.request, context) return context def get_queryset(self): @@ -553,7 +553,7 @@ class AgendaSettings(ManagedAgendaMixin, DetailView): def get_context_data(self, **kwargs): context = super(AgendaSettings, self).get_context_data(**kwargs) - context['user_can_manage'] = self.get_object().can_be_managed(self.request.user) + set_manage_context(self.get_object(), self.request, context) return context agenda_settings = AgendaSettings.as_view() @@ -759,7 +759,7 @@ class TimePeriodExceptionListView(ManagedDeskMixin, ListView): def get_context_data(self, **kwargs): context = super(TimePeriodExceptionListView, self).get_context_data(**kwargs) - context['user_can_manage'] = self.desk.agenda.can_be_managed(self.request.user) + set_manage_context(self.desk.agenda, self.request, context) return context -- 2.20.1