Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. from django.views.generic import ListView
  2. from django.db.models import get_model
  3. from django import http
  4. from oscar.apps.offer.models import ConditionalOffer
  5. Product = get_model('catalogue', 'Product')
  6. class OfferListView(ListView):
  7. model = ConditionalOffer
  8. context_object_name = 'offers'
  9. template_name = 'offer/list.html'
  10. def get_queryset(self):
  11. return ConditionalOffer.active.filter(
  12. offer_type=ConditionalOffer.SITE)
  13. class OfferDetailView(ListView):
  14. context_object_name = 'products'
  15. template_name = 'offer/detail.html'
  16. paginate_by = 20
  17. def get(self, request, *args, **kwargs):
  18. try:
  19. self.offer = ConditionalOffer.objects.select_related().get(
  20. slug=self.kwargs['slug'])
  21. except ConditionalOffer.DoesNotExist:
  22. raise http.Http404
  23. return super(OfferDetailView, self).get(request, *args, **kwargs)
  24. def get_context_data(self, **kwargs):
  25. ctx = super(OfferDetailView, self).get_context_data(**kwargs)
  26. ctx['offer'] = self.offer
  27. ctx['upsell_message'] = self.offer.get_upsell_message(
  28. self.request.basket)
  29. return ctx
  30. def get_queryset(self):
  31. return self.offer.products()