1584 |
1584 |
return reverse('chrono-manager-agenda-settings', kwargs={'pk': self.desk.agenda.id})
|
1585 |
1585 |
|
1586 |
1586 |
|
1587 |
|
class ManagedDeskSubobjectMixin:
|
1588 |
|
desk = None
|
1589 |
|
|
1590 |
|
def dispatch(self, request, *args, **kwargs):
|
1591 |
|
self.desk = self.get_object().desk
|
1592 |
|
if not self.desk.agenda.can_be_managed(request.user):
|
1593 |
|
raise PermissionDenied()
|
1594 |
|
return super().dispatch(request, *args, **kwargs)
|
1595 |
|
|
1596 |
|
def get_context_data(self, **kwargs):
|
1597 |
|
context = super().get_context_data(**kwargs)
|
1598 |
|
context['desk'] = self.object.desk
|
1599 |
|
context['agenda'] = self.object.desk.agenda
|
1600 |
|
return context
|
1601 |
|
|
1602 |
|
def get_success_url(self):
|
1603 |
|
return reverse('chrono-manager-agenda-settings', kwargs={'pk': self.desk.agenda.id})
|
1604 |
|
|
1605 |
|
|
1606 |
1587 |
class ManagedTimePeriodMixin:
|
1607 |
1588 |
agenda = None
|
1608 |
1589 |
|
... | ... | |
1647 |
1628 |
if self.desk:
|
1648 |
1629 |
context['desk'] = self.object.desk
|
1649 |
1630 |
context['agenda'] = self.object.desk.agenda
|
|
1631 |
context['base_template'] = 'chrono/manager_agenda_settings.html'
|
1650 |
1632 |
else:
|
1651 |
1633 |
context['unavailability_calendar'] = self.unavailability_calendar
|
|
1634 |
context['base_template'] = 'chrono/manager_unavailability_calendar_settings.html'
|
1652 |
1635 |
return context
|
1653 |
1636 |
|
1654 |
1637 |
def get_success_url(self):
|
... | ... | |
2707 |
2690 |
model = TimePeriodException
|
2708 |
2691 |
form_class = TimePeriodExceptionForm
|
2709 |
2692 |
|
2710 |
|
def get_context_data(self, **kwargs):
|
2711 |
|
context = super().get_context_data(**kwargs)
|
2712 |
|
if self.desk:
|
2713 |
|
context['base_template'] = 'chrono/manager_agenda_settings.html'
|
2714 |
|
context['cancel_url'] = reverse(
|
2715 |
|
'chrono-manager-agenda-settings', kwargs={'pk': self.desk.agenda.pk}
|
2716 |
|
)
|
2717 |
|
elif self.unavailability_calendar:
|
2718 |
|
context['base_template'] = 'chrono/manager_unavailability_calendar_settings.html'
|
2719 |
|
context['cancel_url'] = reverse(
|
2720 |
|
'chrono-manager-unavailability-calendar-settings',
|
2721 |
|
kwargs={'pk': self.unavailability_calendar.pk},
|
2722 |
|
)
|
2723 |
|
return context
|
2724 |
|
|
2725 |
2693 |
def form_valid(self, form):
|
2726 |
2694 |
result = super().form_valid(form)
|
2727 |
2695 |
messages.info(self.request, _('Exception updated.'))
|
... | ... | |
2829 |
2797 |
)
|
2830 |
2798 |
)
|
2831 |
2799 |
)
|
|
2800 |
context['base_template'] = 'chrono/manager_agenda_settings.html'
|
2832 |
2801 |
return context
|
2833 |
2802 |
|
2834 |
2803 |
def import_file(self, desk, form):
|
... | ... | |
2871 |
2840 |
desk_import_time_period_exceptions = DeskImportTimePeriodExceptionsView.as_view()
|
2872 |
2841 |
|
2873 |
2842 |
|
2874 |
|
class TimePeriodExceptionSourceDeleteView(ManagedDeskSubobjectMixin, DeleteView):
|
|
2843 |
class TimePeriodExceptionSourceDeleteView(ManagedTimePeriodExceptionMixin, DeleteView):
|
2875 |
2844 |
template_name = 'chrono/manager_confirm_source_delete.html'
|
2876 |
2845 |
model = TimePeriodExceptionSource
|
2877 |
2846 |
|
2878 |
|
def get_success_url(self):
|
2879 |
|
return reverse('chrono-manager-agenda-settings', kwargs={'pk': self.desk.agenda_id})
|
2880 |
|
|
2881 |
2847 |
def delete(self, request, *args, **kwargs):
|
2882 |
2848 |
source = self.get_object()
|
2883 |
2849 |
response = super().delete(request, *args, **kwargs)
|
... | ... | |
2900 |
2866 |
time_period_exception_source_delete = TimePeriodExceptionSourceDeleteView.as_view()
|
2901 |
2867 |
|
2902 |
2868 |
|
2903 |
|
class TimePeriodExceptionSourceReplaceView(ManagedDeskSubobjectMixin, UpdateView):
|
|
2869 |
class TimePeriodExceptionSourceReplaceView(ManagedTimePeriodExceptionMixin, UpdateView):
|
2904 |
2870 |
model = TimePeriodExceptionSource
|
2905 |
2871 |
form_class = TimePeriodExceptionSourceReplaceForm
|
2906 |
2872 |
template_name = 'chrono/manager_replace_exceptions.html'
|
... | ... | |
2935 |
2901 |
time_period_exception_source_replace = TimePeriodExceptionSourceReplaceView.as_view()
|
2936 |
2902 |
|
2937 |
2903 |
|
2938 |
|
class TimePeriodExceptionSourceRefreshView(ManagedDeskSubobjectMixin, DetailView):
|
|
2904 |
class TimePeriodExceptionSourceRefreshView(ManagedTimePeriodExceptionMixin, DetailView):
|
2939 |
2905 |
model = TimePeriodExceptionSource
|
2940 |
2906 |
|
2941 |
2907 |
def get_queryset(self):
|
... | ... | |
2960 |
2926 |
|
2961 |
2927 |
messages.info(self.request, _('Exceptions will be synchronized in a few minutes.'))
|
2962 |
2928 |
# redirect to settings
|
2963 |
|
return HttpResponseRedirect(reverse('chrono-manager-agenda-settings', kwargs={'pk': desk.agenda_id}))
|
|
2929 |
return HttpResponseRedirect(self.get_success_url())
|
2964 |
2930 |
|
2965 |
2931 |
|
2966 |
2932 |
time_period_exception_source_refresh = TimePeriodExceptionSourceRefreshView.as_view()
|
... | ... | |
3166 |
3132 |
event_create_recurrence = EventCreateRecurrenceView.as_view()
|
3167 |
3133 |
|
3168 |
3134 |
|
3169 |
|
class TimePeriodExceptionSourceToggleView(ManagedDeskSubobjectMixin, DetailView):
|
|
3135 |
class TimePeriodExceptionSourceToggleView(ManagedTimePeriodExceptionMixin, DetailView):
|
3170 |
3136 |
model = TimePeriodExceptionSource
|
3171 |
3137 |
|
3172 |
3138 |
def get_object(self, queryset=None):
|
3173 |
|
-
|