From a7c4944e54e9da5289f9749f4eba1ed177b17355 Mon Sep 17 00:00:00 2001 From: Mitch Riedstra Date: Mon, 9 Oct 2017 23:16:05 -0400 Subject: Fix up the shitty amount of date related variables being set in the template context. User friendly dates on load view --- app/dispatch/views.py | 52 ++++++++++++++++++++++++++------------------------- 1 file changed, 27 insertions(+), 25 deletions(-) (limited to 'app/dispatch/views.py') diff --git a/app/dispatch/views.py b/app/dispatch/views.py index 9dd60af..6ce552b 100644 --- a/app/dispatch/views.py +++ b/app/dispatch/views.py @@ -21,40 +21,44 @@ def home(request): return redirect(reverse('load_list')) def get_week_dates(date=None): + week_dates = {} if date == None: date = formats.date_format(datetime.now(), "SHORT_DATE_FORMAT") dt = datetime.strptime(date, '%m/%d/%Y') weekday = dt.weekday() if weekday == 6: - start_date = dt + week_dates['start_date'] = dt else: weekday = weekday + 1 - start_date = dt - timedelta(days=weekday) - end_date = start_date + timedelta(days=6) - next_week = end_date + timedelta(days=1) - previous_week = start_date - timedelta(days=1) - return start_date, end_date, next_week, previous_week + week_dates['start_date'] = dt - timedelta(days=weekday) + week_dates['end_date'] = week_dates['start_date'] + timedelta(days=6) + week_dates['next_week'] = week_dates['end_date'] + timedelta(days=1) + week_dates['previous_week'] = week_dates['start_date'] - timedelta(days=1) + return week_dates def split_loads_by_day(loads,start_date,end_date): split_loads = {} + for date in rrule.rrule(rrule.DAILY,dtstart=start_date, until=end_date): str_date = formats.date_format(date, "SHORT_DATE_FORMAT") - if str_date not in split_loads: - split_loads[str_date] = loads.filter(date=date) + if date not in split_loads: + split_loads[date] = loads.filter(date=date) + return split_loads class LoadDateSort(DetailView): def get_context_data(self, **kwargs): context = super(DetailView, self).get_context_data(**kwargs) - start_date, end_date, next_week, previous_week = get_week_dates(self.request.GET.get('date',None)) - loads = self.get_object().load_set.filter(date__range=(start_date, end_date)).prefetch_related('company') - context['loads'] = split_loads_by_day(loads,start_date,end_date) - - # Holy fucking shit this wasn't really necessary - context['start_date'] = start_date - context['end_date'] = end_date - context['next_week'] = next_week - context['previous_week'] = previous_week + week_dates = get_week_dates(self.request.GET.get('date',None)) + + loads = self.get_object().load_set.filter(date__range=(week_dates['start_date'], + week_dates['end_date'])).prefetch_related('company') + + context['loads'] = split_loads_by_day(loads,week_dates['start_date'], + week_dates['end_date']) + + context['week_dates'] = week_dates + return context class FilteredListView(ListView): @@ -142,17 +146,15 @@ class LoadList(FilteredListView): def get_queryset(self): base_qs = super(LoadList, self).get_queryset() - start_date, end_date, next_week, previous_week = get_week_dates(self.request.GET.get('date',None)) - return base_qs.filter(date__range=(start_date, end_date)) + wd = get_week_dates(self.request.GET.get('date',None)) + return base_qs.filter(date__range=(wd['start_date'], wd['end_date'])) def get_context_data(self, **kwargs): context = super(LoadList, self).get_context_data(**kwargs) - start_date, end_date, next_week, previous_week = get_week_dates(self.request.GET.get('date',None)) - context['start_date'] = formats.date_format(start_date, "SHORT_DATE_FORMAT") - context['end_date'] = formats.date_format(end_date, "SHORT_DATE_FORMAT") - context['next_week'] = formats.date_format(next_week, "SHORT_DATE_FORMAT") - context['previous_week'] = formats.date_format(previous_week, "SHORT_DATE_FORMAT") - context['loads'] = split_loads_by_day(self.object_list,start_date,end_date) + wd = get_week_dates(self.request.GET.get('date',None)) + context['week_dates'] = wd + + context['loads'] = split_loads_by_day(self.object_list,wd['start_date'],wd['end_date']) return context class LoadCreate(CreateView): -- cgit v1.2.3