From 9cce10c28129548ea5ee6d6036cd6d3dd1b47254 Mon Sep 17 00:00:00 2001 From: Thomas Steen Rasmussen Date: Tue, 17 May 2016 15:09:31 +0200 Subject: [PATCH] add public field to Product --- shop/models.py | 6 ++++++ shop/views.py | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/shop/models.py b/shop/models.py index a9d760d6..b3be331a 100644 --- a/shop/models.py +++ b/shop/models.py @@ -98,6 +98,7 @@ class Order(CreatedUpdatedModel): def get_absolute_url(self): return str(reverse_lazy('shop:order_detail', kwargs={'pk': self.pk})) + class ProductCategory(CreatedUpdatedModel, UUIDModel): class Meta: verbose_name = 'Product category' @@ -140,6 +141,11 @@ class Product(CreatedUpdatedModel, UUIDModel): '(Format: YYYY-MM-DD HH:MM) | Only one of start/end is required' ) ) + + public = models.BooleanField( + default=True, + help_text='Is this product publicly available in the webshop?' + ) objects = ProductQuerySet.as_manager() diff --git a/shop/views.py b/shop/views.py index a3798cf9..a6bd283f 100644 --- a/shop/views.py +++ b/shop/views.py @@ -168,6 +168,11 @@ class ProductDetailView(LoginRequiredMixin, FormView, DetailView): form_class = AddToOrderForm context_object_name = 'product' + def dispatch(self, request, *args, **kwargs): + if not self.get_object().public: + ### this product is not publicly available + raise Http404("Product not found") + def form_valid(self, form): product = self.get_object() quantity = form.cleaned_data.get('quantity')