예제 #1
0
class OrderHistoryView(ListView):
    """
    Customer order history
    """
    context_object_name = "orders"
    template_name = 'customer/order-history.html'
    paginate_by = 20
    model = order_model
    form_class = SearchByDateRangeForm

    def get(self, request, *args, **kwargs):
        if 'date_from' in request.GET:
            self.form = SearchByDateRangeForm(self.request.GET)
            if not self.form.is_valid():
                ctx = self.get_context_data()
                return self.render_to_response(ctx)
        else:
            self.form = SearchByDateRangeForm()
        return super(OrderHistoryView, self).get(request, *args, **kwargs)

    def get_queryset(self):
        qs = self.model._default_manager.filter(user=self.request.user)
        if self.form.is_bound:
            qs = qs.filter(**self.form.get_filters())
        return qs

    def get_context_data(self, *args, **kwargs):
        ctx = super(OrderHistoryView, self).get_context_data(*args, **kwargs)
        ctx['form'] = self.form
        return ctx
예제 #2
0
 def get(self, request, *args, **kwargs):
     if 'date_from' in request.GET:
         self.form = SearchByDateRangeForm(self.request.GET)
         if not self.form.is_valid():
             ctx = self.get_context_data()
             return self.render_to_response(ctx)
     else:
         self.form = SearchByDateRangeForm()
     return super(OrderHistoryView, self).get(request, *args, **kwargs)
예제 #3
0
 def get_context_data(self, *args, **kwargs):
     ctx = super(OrderHistoryView, self).get_context_data(*args, **kwargs)
     if 'date_from' in self.request.REQUEST or 'date_to' in self.request.REQUEST:
         filter_form = SearchByDateRangeForm(self.request.REQUEST)
     else:
         filter_form = SearchByDateRangeForm()
     ctx['search_date_form'] = filter_form
     if not filter_form.is_valid():
         return ctx
     date_to = filter_form.cleaned_data['date_to']
     date_from = filter_form.cleaned_data['date_from']
     # Return filtered data from date_from to date_to
     if date_to or date_from:
         if not date_from:
             ctx['orders'] = self.model._default_manager.filter(user=self.request.user, date_placed__lte=date_to)
         elif not date_to:
             ctx['orders'] = self.model._default_manager.filter(user=self.request.user, date_placed__gte=date_from)
         else:
             ctx['orders'] = self.model._default_manager.filter(user=self.request.user, date_placed__range=[date_from, date_to])
     else:  # If both fields of search_date_form are blank
         ctx['error'] = 'Please select filter settings'
     return ctx