1154 |
1154 |
|
1155 |
1155 |
|
1156 |
1156 |
class ManagedAgendaMixin(ViewableAgendaMixin):
|
|
1157 |
tab_anchor = None
|
|
1158 |
|
1157 |
1159 |
def check_permissions(self, user):
|
1158 |
1160 |
return self.agenda.can_be_managed(user)
|
1159 |
1161 |
|
... | ... | |
1165 |
1167 |
return kwargs
|
1166 |
1168 |
|
1167 |
1169 |
def get_success_url(self):
|
1168 |
|
return reverse('chrono-manager-agenda-settings', kwargs={'pk': self.agenda.id})
|
|
1170 |
url = reverse('chrono-manager-agenda-settings', kwargs={'pk': self.agenda.id})
|
|
1171 |
if self.tab_anchor:
|
|
1172 |
url += '#open:%s' % self.tab_anchor
|
|
1173 |
return url
|
1169 |
1174 |
|
1170 |
1175 |
|
1171 |
1176 |
class AgendaEditView(ManagedAgendaMixin, UpdateView):
|
... | ... | |
1186 |
1191 |
class AgendaBookingDelaysView(AgendaEditView):
|
1187 |
1192 |
form_class = AgendaBookingDelaysForm
|
1188 |
1193 |
title = _('Configure booking delays')
|
|
1194 |
tab_anchor = 'delays'
|
1189 |
1195 |
|
1190 |
1196 |
|
1191 |
1197 |
agenda_booking_delays = AgendaBookingDelaysView.as_view()
|
... | ... | |
1194 |
1200 |
class AgendaRolesView(AgendaEditView):
|
1195 |
1201 |
form_class = AgendaRolesForm
|
1196 |
1202 |
title = _('Configure roles')
|
|
1203 |
tab_anchor = 'permissions'
|
1197 |
1204 |
|
1198 |
1205 |
|
1199 |
1206 |
agenda_roles = AgendaRolesView.as_view()
|
... | ... | |
1202 |
1209 |
class AgendaDisplaySettingsView(AgendaEditView):
|
1203 |
1210 |
form_class = AgendaDisplaySettingsForm
|
1204 |
1211 |
title = _("Configure display options")
|
|
1212 |
tab_anchor = 'display-options'
|
1205 |
1213 |
|
1206 |
1214 |
def set_agenda(self, **kwargs):
|
1207 |
1215 |
self.agenda = get_object_or_404(Agenda.objects.exclude(kind='virtual'), pk=kwargs.get('pk'))
|
... | ... | |
1216 |
1224 |
class AgendaBookingCheckSettingsView(AgendaEditView):
|
1217 |
1225 |
form_class = AgendaBookingCheckSettingsForm
|
1218 |
1226 |
title = _("Configure booking check options")
|
|
1227 |
tab_anchor = 'booking-check-options'
|
1219 |
1228 |
|
1220 |
1229 |
def set_agenda(self, **kwargs):
|
1221 |
1230 |
self.agenda = get_object_or_404(Agenda, pk=kwargs.get('pk'), kind='events')
|
... | ... | |
1748 |
1757 |
|
1749 |
1758 |
class ManagedAgendaSubobjectMixin:
|
1750 |
1759 |
agenda = None
|
|
1760 |
tab_anchor = None
|
1751 |
1761 |
|
1752 |
1762 |
def dispatch(self, request, *args, **kwargs):
|
1753 |
1763 |
self.agenda = self.get_object().agenda
|
... | ... | |
1761 |
1771 |
return context
|
1762 |
1772 |
|
1763 |
1773 |
def get_success_url(self):
|
1764 |
|
return reverse('chrono-manager-agenda-settings', kwargs={'pk': self.agenda.id})
|
|
1774 |
url = reverse('chrono-manager-agenda-settings', kwargs={'pk': self.agenda.id})
|
|
1775 |
if self.tab_anchor:
|
|
1776 |
url += '#open:%s' % self.tab_anchor
|
|
1777 |
return url
|
1765 |
1778 |
|
1766 |
1779 |
|
1767 |
1780 |
class ManagedDeskMixin:
|
1768 |
1781 |
desk = None
|
|
1782 |
tab_anchor = None
|
1769 |
1783 |
|
1770 |
1784 |
def dispatch(self, request, *args, **kwargs):
|
1771 |
1785 |
try:
|
... | ... | |
1790 |
1804 |
return context
|
1791 |
1805 |
|
1792 |
1806 |
def get_success_url(self):
|
1793 |
|
return reverse('chrono-manager-agenda-settings', kwargs={'pk': self.desk.agenda.id})
|
|
1807 |
url = reverse('chrono-manager-agenda-settings', kwargs={'pk': self.desk.agenda.id})
|
|
1808 |
if self.tab_anchor:
|
|
1809 |
url += '#open:%s' % self.tab_anchor
|
|
1810 |
return url
|
1794 |
1811 |
|
1795 |
1812 |
|
1796 |
1813 |
class ManagedTimePeriodMixin:
|
1797 |
1814 |
agenda = None
|
|
1815 |
tab_anchor = None
|
1798 |
1816 |
|
1799 |
1817 |
def dispatch(self, request, *args, **kwargs):
|
1800 |
1818 |
self.time_period = self.get_object()
|
... | ... | |
1812 |
1830 |
return context
|
1813 |
1831 |
|
1814 |
1832 |
def get_success_url(self):
|
1815 |
|
return reverse('chrono-manager-agenda-settings', kwargs={'pk': self.agenda.id})
|
|
1833 |
url = reverse('chrono-manager-agenda-settings', kwargs={'pk': self.agenda.id})
|
|
1834 |
if self.tab_anchor:
|
|
1835 |
url += '#open:%s' % self.tab_anchor
|
|
1836 |
return url
|
1816 |
1837 |
|
1817 |
1838 |
|
1818 |
1839 |
class ManagedTimePeriodExceptionMixin:
|
1819 |
|
|
1820 |
1840 |
desk = None
|
1821 |
1841 |
unavailability_calendar = None
|
|
1842 |
tab_anchor = None
|
1822 |
1843 |
|
1823 |
1844 |
def dispatch(self, request, *args, **kwargs):
|
1824 |
1845 |
object_ = self.get_object()
|
... | ... | |
1845 |
1866 |
|
1846 |
1867 |
def get_success_url(self):
|
1847 |
1868 |
if self.desk:
|
1848 |
|
return reverse('chrono-manager-agenda-settings', kwargs={'pk': self.desk.agenda.id})
|
|
1869 |
url = reverse('chrono-manager-agenda-settings', kwargs={'pk': self.desk.agenda.id})
|
1849 |
1870 |
elif self.unavailability_calendar:
|
1850 |
|
return reverse(
|
|
1871 |
url = reverse(
|
1851 |
1872 |
'chrono-manager-unavailability-calendar-settings',
|
1852 |
1873 |
kwargs={'pk': self.unavailability_calendar.pk},
|
1853 |
1874 |
)
|
|
1875 |
if self.tab_anchor:
|
|
1876 |
url += '#open:%s' % self.tab_anchor
|
|
1877 |
return url
|
1854 |
1878 |
|
1855 |
1879 |
|
1856 |
1880 |
class AgendaSettingsRedirectView(RedirectView):
|
... | ... | |
2092 |
2116 |
template_name = 'chrono/manager_agenda_notifications_form.html'
|
2093 |
2117 |
model = AgendaNotificationsSettings
|
2094 |
2118 |
form_class = AgendaNotificationsForm
|
|
2119 |
tab_anchor = 'notifications'
|
2095 |
2120 |
|
2096 |
2121 |
def get_object(self):
|
2097 |
2122 |
try:
|
... | ... | |
2114 |
2139 |
title = _('Reminder Settings')
|
2115 |
2140 |
model = AgendaReminderSettings
|
2116 |
2141 |
form_class = AgendaReminderForm
|
|
2142 |
tab_anchor = 'reminders'
|
2117 |
2143 |
|
2118 |
2144 |
def get_object(self):
|
2119 |
2145 |
try:
|
... | ... | |
2548 |
2574 |
class AgendaAddResourceView(ManagedAgendaMixin, FormView):
|
2549 |
2575 |
template_name = 'chrono/manager_agenda_resource_form.html'
|
2550 |
2576 |
form_class = AgendaResourceForm
|
|
2577 |
tab_anchor = 'resources'
|
2551 |
2578 |
|
2552 |
2579 |
def set_agenda(self, **kwargs):
|
2553 |
2580 |
self.agenda = get_object_or_404(Agenda, id=kwargs.get('pk'), kind='meetings')
|
... | ... | |
2569 |
2596 |
template_name = 'chrono/manager_confirm_delete.html'
|
2570 |
2597 |
model = Resource
|
2571 |
2598 |
pk_url_kwarg = 'resource_pk'
|
|
2599 |
tab_anchor = 'resources'
|
2572 |
2600 |
|
2573 |
2601 |
def set_agenda(self, **kwargs):
|
2574 |
2602 |
self.agenda = get_object_or_404(Agenda, id=kwargs.get('pk'), kind='meetings')
|
... | ... | |
2630 |
2658 |
break
|
2631 |
2659 |
|
2632 |
2660 |
return HttpResponseRedirect(
|
2633 |
|
reverse('chrono-manager-agenda-settings', kwargs={'pk': self.desk.agenda_id})
|
|
2661 |
'%s#open:time-periods'
|
|
2662 |
% reverse('chrono-manager-agenda-settings', kwargs={'pk': self.desk.agenda_id})
|
2634 |
2663 |
)
|
2635 |
2664 |
|
2636 |
2665 |
|
... | ... | |
2731 |
2760 |
class AgendaAddTimePeriodView(ManagedDeskMixin, FormView):
|
2732 |
2761 |
template_name = 'chrono/manager_time_period_form.html'
|
2733 |
2762 |
form_class = TimePeriodAddForm
|
|
2763 |
tab_anchor = 'time-periods'
|
2734 |
2764 |
|
2735 |
2765 |
def get_form_kwargs(self):
|
2736 |
2766 |
return super(FormView, self).get_form_kwargs()
|
... | ... | |
2750 |
2780 |
class VirtualAgendaAddTimePeriodView(ManagedAgendaMixin, FormView):
|
2751 |
2781 |
template_name = 'chrono/manager_time_period_form.html'
|
2752 |
2782 |
form_class = TimePeriodAddForm
|
|
2783 |
tab_anchor = 'time-periods'
|
2753 |
2784 |
|
2754 |
2785 |
def get_form_kwargs(self):
|
2755 |
2786 |
return super(FormView, self).get_form_kwargs()
|
... | ... | |
2766 |
2797 |
template_name = 'chrono/manager_time_period_form.html'
|
2767 |
2798 |
model = TimePeriod
|
2768 |
2799 |
form_class = TimePeriodForm
|
|
2800 |
tab_anchor = 'time-periods'
|
2769 |
2801 |
|
2770 |
2802 |
|
2771 |
2803 |
time_period_edit = TimePeriodEditView.as_view()
|
... | ... | |
2774 |
2806 |
class TimePeriodDeleteView(ManagedTimePeriodMixin, DeleteView):
|
2775 |
2807 |
template_name = 'chrono/manager_confirm_delete.html'
|
2776 |
2808 |
model = TimePeriod
|
|
2809 |
tab_anchor = 'time-periods'
|
2777 |
2810 |
|
2778 |
2811 |
def delete(self, request, *args, **kwargs):
|
2779 |
2812 |
time_period = self.get_object()
|
... | ... | |
2803 |
2836 |
model = Desk
|
2804 |
2837 |
form_class = NewDeskForm
|
2805 |
2838 |
agenda = None
|
|
2839 |
tab_anchor = 'desks'
|
2806 |
2840 |
|
2807 |
2841 |
def set_agenda(self, **kwargs):
|
2808 |
2842 |
self.agenda = get_object_or_404(Agenda, pk=kwargs.get('pk'), kind='meetings')
|
... | ... | |
2815 |
2849 |
template_name = 'chrono/manager_desk_form.html'
|
2816 |
2850 |
model = Desk
|
2817 |
2851 |
form_class = DeskForm
|
|
2852 |
tab_anchor = 'desks'
|
2818 |
2853 |
|
2819 |
2854 |
def get_queryset(self):
|
2820 |
2855 |
return super().get_queryset().filter(agenda__kind='meetings')
|
... | ... | |
2826 |
2861 |
class DeskDeleteView(ManagedAgendaSubobjectMixin, DeleteView):
|
2827 |
2862 |
template_name = 'chrono/manager_confirm_delete.html'
|
2828 |
2863 |
model = Desk
|
|
2864 |
tab_anchor = 'desks'
|
2829 |
2865 |
|
2830 |
2866 |
def dispatch(self, request, *args, **kwargs):
|
2831 |
2867 |
agenda = self.get_object().agenda
|
... | ... | |
2895 |
2931 |
template_name = 'chrono/manager_time_period_exception_form.html'
|
2896 |
2932 |
model = TimePeriodException
|
2897 |
2933 |
form_class = NewTimePeriodExceptionForm
|
|
2934 |
tab_anchor = 'time-periods'
|
2898 |
2935 |
|
2899 |
2936 |
def get_context_data(self, **kwargs):
|
2900 |
2937 |
context = super().get_context_data(**kwargs)
|
... | ... | |
2925 |
2962 |
template_name = 'chrono/manager_time_period_exception_form.html'
|
2926 |
2963 |
model = TimePeriodException
|
2927 |
2964 |
form_class = TimePeriodExceptionForm
|
|
2965 |
tab_anchor = 'time-periods'
|
2928 |
2966 |
|
2929 |
2967 |
def form_valid(self, form):
|
2930 |
2968 |
result = super().form_valid(form)
|
... | ... | |
2972 |
3010 |
class TimePeriodExceptionDeleteView(ManagedTimePeriodExceptionMixin, DeleteView):
|
2973 |
3011 |
template_name = 'chrono/manager_confirm_exception_delete.html'
|
2974 |
3012 |
model = TimePeriodException
|
|
3013 |
tab_anchor = 'time-periods'
|
2975 |
3014 |
|
2976 |
3015 |
def get_success_url(self):
|
2977 |
3016 |
if self.desk:
|
... | ... | |
3018 |
3057 |
model = Desk
|
3019 |
3058 |
form_class = DeskExceptionsImportForm
|
3020 |
3059 |
template_name = 'chrono/manager_import_exceptions.html'
|
|
3060 |
tab_anchor = 'time-periods'
|
3021 |
3061 |
|
3022 |
3062 |
def get_context_data(self, **kwargs):
|
3023 |
3063 |
context = super().get_context_data(**kwargs)
|
... | ... | |
3079 |
3119 |
class TimePeriodExceptionSourceDeleteView(ManagedTimePeriodExceptionMixin, DeleteView):
|
3080 |
3120 |
template_name = 'chrono/manager_confirm_source_delete.html'
|
3081 |
3121 |
model = TimePeriodExceptionSource
|
|
3122 |
tab_anchor = 'time-periods'
|
3082 |
3123 |
|
3083 |
3124 |
def delete(self, request, *args, **kwargs):
|
3084 |
3125 |
source = self.get_object()
|
... | ... | |
3106 |
3147 |
model = TimePeriodExceptionSource
|
3107 |
3148 |
form_class = TimePeriodExceptionSourceReplaceForm
|
3108 |
3149 |
template_name = 'chrono/manager_replace_exceptions.html'
|
|
3150 |
tab_anchor = 'time-periods'
|
3109 |
3151 |
|
3110 |
3152 |
def get_queryset(self):
|
3111 |
3153 |
queryset = super().get_queryset()
|
... | ... | |
3136 |
3178 |
|
3137 |
3179 |
class TimePeriodExceptionSourceRefreshView(ManagedTimePeriodExceptionMixin, DetailView):
|
3138 |
3180 |
model = TimePeriodExceptionSource
|
|
3181 |
tab_anchor = 'time-periods'
|
3139 |
3182 |
|
3140 |
3183 |
def get_queryset(self):
|
3141 |
3184 |
queryset = super().get_queryset()
|
... | ... | |
3404 |
3447 |
|
3405 |
3448 |
messages.info(self.request, message % {'source': source, 'desk': source.desk})
|
3406 |
3449 |
return HttpResponseRedirect(
|
3407 |
|
reverse('chrono-manager-agenda-settings', kwargs={'pk': source.desk.agenda_id})
|
|
3450 |
'%s#open:time-periods'
|
|
3451 |
% reverse('chrono-manager-agenda-settings', kwargs={'pk': source.desk.agenda_id})
|
3408 |
3452 |
)
|
3409 |
3453 |
|
3410 |
3454 |
|