diff --git a/kfet/forms.py b/kfet/forms.py index 61529b7c..17add53b 100644 --- a/kfet/forms.py +++ b/kfet/forms.py @@ -5,7 +5,7 @@ from django.contrib.contenttypes.models import ContentType from django.contrib.admin.widgets import FilteredSelectMultiple from django.forms import modelformset_factory from kfet.models import (Account, Checkout, Article, OperationGroup, Operation, - CheckoutStatement) + CheckoutStatement, ArticleCategory) from gestioncof.models import CofProfile # ----- @@ -129,6 +129,24 @@ class CheckoutStatementForm(forms.ModelForm): # ----- class ArticleForm(forms.ModelForm): + category_new = forms.CharField( + max_length=45, + required = False) + category = forms.ModelChoiceField( + queryset = ArticleCategory.objects.all(), + required = False) + + def clean(self): + category = self.cleaned_data.get('category') + category_new = self.cleaned_data.get('category_new') + + if not category and not category_new: + raise ValidationError('Sélectionnez une catégorie ou créez en une') + elif not category: + category, _ = ArticleCategory.objects.get_or_create(name=category_new) + self.cleaned_data['category'] = category + super(ArticleForm, self).clean() + class Meta: model = Article fields = ['name', 'is_sold', 'price', 'stock', 'category'] diff --git a/kfet/templates/kfet/article_create.html b/kfet/templates/kfet/article_create.html index 6ab1c2b2..742756b2 100644 --- a/kfet/templates/kfet/article_create.html +++ b/kfet/templates/kfet/article_create.html @@ -8,6 +8,9 @@
{% csrf_token %} {{ form.as_p }} + {% if not perms.kfet.add_article %} + + {% endif %}
diff --git a/kfet/templates/kfet/article_update.html b/kfet/templates/kfet/article_update.html index 66e97f78..db0107cc 100644 --- a/kfet/templates/kfet/article_update.html +++ b/kfet/templates/kfet/article_update.html @@ -8,6 +8,9 @@
{% csrf_token %} {{ form.as_p }} + {% if not perms.kfet.change_article %} + + {% endif %}
diff --git a/kfet/views.py b/kfet/views.py index 738788d5..fac18cc5 100644 --- a/kfet/views.py +++ b/kfet/views.py @@ -432,8 +432,10 @@ class ArticleCreate(SuccessMessageMixin, CreateView): # Surcharge de la validation def form_valid(self, form): # Checking permission - if not self.request.user.has_perm('add_article'): - raise PermissionDenied + if not self.request.user.has_perm('kfet.add_article'): + form.add_error(None, 'Permission refusée') + return self.form_invalid(form) + # Creating return super(ArticleCreate, self).form_valid(form) @@ -455,8 +457,9 @@ class ArticleUpdate(UpdateView): # Surcharge de la validation def form_valid(self, form): # Checking permission - if not self.request.user.has_perm('change_article'): - raise PermissionDenied + if not self.request.user.has_perm('kfet.change_article'): + form.add_error(None, 'Permission refusée') + return self.form_invalid(form) # Updating return super(ArticleUpdate, self).form_valid(form)