From 4f8d67dee97b61b25145ab90b6443b3d8754b649 Mon Sep 17 00:00:00 2001 From: Serghei Mihai Date: Wed, 20 Jun 2018 23:21:04 +0200 Subject: [PATCH 1/3] manager: refactor agenda day view --- chrono/manager/views.py | 41 ++++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/chrono/manager/views.py b/chrono/manager/views.py index 0ca50f8..7a7720a 100644 --- a/chrono/manager/views.py +++ b/chrono/manager/views.py @@ -148,8 +148,7 @@ class AgendaView(DetailView): agenda_view = AgendaView.as_view() -class AgendaDayView(DayArchiveView): - template_name = 'chrono/manager_agenda_day_view.html' +class AgendaDateView(object): model = Event month_format = '%m' date_field = 'start_datetime' @@ -168,15 +167,10 @@ class AgendaDayView(DayArchiveView): self.date = make_aware(datetime.datetime.strptime( '%s-%s-%s 06:00' % (self.get_year(), self.get_month(), self.get_day()), '%Y-%m-%d %H:%M')) - return super(AgendaDayView, self).dispatch(request, *args, **kwargs) - - def get_queryset(self): - queryset = super(AgendaDayView, self).get_queryset() - queryset = queryset.filter(agenda=self.agenda).prefetch_related('booking_set') - return queryset + return super(AgendaDateView, self).dispatch(request, *args, **kwargs) def get_context_data(self, **kwargs): - context = super(AgendaDayView, self).get_context_data(**kwargs) + context = super(AgendaDateView, self).get_context_data(**kwargs) context['agenda'] = self.agenda try: context['hour_span'] = max(60 // self.agenda.get_base_meeting_duration(), 1) @@ -185,6 +179,25 @@ class AgendaDayView(DayArchiveView): context['user_can_manage'] = self.agenda.can_be_managed(self.request.user) return context + def get_queryset(self): + queryset = super(AgendaDateView, self).get_queryset() + queryset = queryset.filter(agenda=self.agenda).prefetch_related('booking_set') + return queryset + + def get_days(self): + return [str(x) for x in range(1, 32)] + + def get_months(self): + return [(str(x), MONTHS[x]) for x in range(1, 13)] + + def get_years(self): + year = now().year + return [str(x) for x in range(year-1, year+5)] + + +class AgendaDayView(AgendaDateView, DayArchiveView): + template_name = 'chrono/manager_agenda_day_view.html' + def get_previous_day_url(self): previous_day = self.date.date() - datetime.timedelta(days=1) return reverse('chrono-manager-agenda-day-view', @@ -252,16 +265,6 @@ class AgendaDayView(DayArchiveView): current_date += interval first = False - def get_days(self): - return [str(x) for x in range(1, 32)] - - def get_months(self): - return [(str(x), MONTHS[x]) for x in range(1, 13)] - - def get_years(self): - year = now().year - return [str(x) for x in range(year-1, year+5)] - agenda_day_view = AgendaDayView.as_view() -- 2.19.0.rc2