diff --git a/kfet/forms.py b/kfet/forms.py index 2b59e1b3..53791456 100644 --- a/kfet/forms.py +++ b/kfet/forms.py @@ -229,6 +229,16 @@ class CheckoutStatementUpdateForm(forms.ModelForm): model = CheckoutStatement exclude = ['by', 'at', 'checkout', 'amount_error', 'amount_taken'] + +# ----- +# Category +# ----- + +class CategoryForm(forms.ModelForm): + class Meta: + model = ArticleCategory + fields = ['name', 'has_addcost'] + # ----- # Article forms # ----- diff --git a/kfet/templates/kfet/category.html b/kfet/templates/kfet/category.html new file mode 100644 index 00000000..4de44207 --- /dev/null +++ b/kfet/templates/kfet/category.html @@ -0,0 +1,53 @@ +{% extends 'kfet/base.html' %} + +{% block title %}Categories d'articles{% endblock %} +{% block content-header-title %}Categories d'articles{% endblock %} + +{% block content %} + +
+
+
+
+
{{ categories|length }}
+
catégorie{{ categories|length|pluralize }}
+
+
+
+
+ {% include 'kfet/base_messages.html' %} +
+
+

Liste des catégories

+
+ + + + + + + + + + + {% for category in categories %} + + + + + + + {% endfor %} + +
NomNombre d'articlesPeut-être majoré
+ + + + {{ category.name }}{{ category.articles.all|length }}{{ category.has_addcost | yesno:"Oui,Non"}}
+
+
+
+
+
+ +{% endblock %} diff --git a/kfet/templates/kfet/category_update.html b/kfet/templates/kfet/category_update.html new file mode 100644 index 00000000..fb04e12b --- /dev/null +++ b/kfet/templates/kfet/category_update.html @@ -0,0 +1,17 @@ +{% extends 'kfet/base.html' %} + +{% block title %}Édition de la catégorie {{ category.name }}{% endblock %} +{% block content-header-title %}Catégorie {{ category.name }} - Édition{% endblock %} + +{% block content %} + +
+ {% csrf_token %} + {{ form.as_p }} + {% if not perms.kfet.change_articlecategory %} + + {% endif %} + +
+ +{% endblock %} diff --git a/kfet/urls.py b/kfet/urls.py index 0a5c2128..aabbfc3c 100644 --- a/kfet/urls.py +++ b/kfet/urls.py @@ -134,6 +134,14 @@ urlpatterns = [ # Article urls # ----- + # Category - General + url('^categories/$', + teamkfet_required(views.CategoryList.as_view()), + name='kfet.category'), + # Category - Update + url('^categories/(?P\d+)/edit$', + teamkfet_required(views.CategoryUpdate.as_view()), + name='kfet.category.update'), # Article - General url('^articles/$', teamkfet_required(views.ArticleList.as_view()), diff --git a/kfet/views.py b/kfet/views.py index b684b90f..7cb37f28 100644 --- a/kfet/views.py +++ b/kfet/views.py @@ -1,4 +1,4 @@ -# -*- coding: utf-8 -*- + from django.shortcuts import render, get_object_or_404, redirect from django.core.exceptions import PermissionDenied @@ -27,7 +27,7 @@ from kfet.models import ( Account, Checkout, Article, Settings, AccountNegative, CheckoutStatement, GenericTeamToken, Supplier, SupplierArticle, Inventory, InventoryArticle, Order, OrderArticle, Operation, OperationGroup, - TransferGroup, Transfer) + TransferGroup, Transfer, ArticleCategory) from kfet.forms import ( AccountTriForm, AccountBalanceForm, AccountNoTriForm, UserForm, CofForm, UserRestrictTeamForm, UserGroupForm, AccountForm, CofRestrictForm, @@ -37,7 +37,7 @@ from kfet.forms import ( KPsulOperationGroupForm, KPsulAccountForm, KPsulCheckoutForm, KPsulOperationFormSet, AddcostForm, FilterHistoryForm, SettingsForm, TransferFormSet, InventoryArticleForm, OrderArticleForm, - OrderArticleToInventoryForm + OrderArticleToInventoryForm, CategoryForm ) from collections import defaultdict from kfet import consumers @@ -720,6 +720,38 @@ class CheckoutStatementUpdate(SuccessMessageMixin, UpdateView): form.instance.amount_taken = getAmountTaken(form.instance) return super(CheckoutStatementUpdate, self).form_valid(form) +# ----- +# Category views +# ----- + + +# Category - General +class CategoryList(ListView): + queryset = (ArticleCategory.objects + .prefetch_related('articles') + .order_by('name')) + template_name = 'kfet/category.html' + context_object_name = 'categories' + + +# Category - Update +class CategoryUpdate(SuccessMessageMixin, UpdateView): + model = ArticleCategory + template_name = 'kfet/category_update.html' + form_class = CategoryForm + success_url = reverse_lazy('kfet.category') + success_message = "Informations mises à jour pour la catégorie : %(name)s" + + # Surcharge de la validation + def form_valid(self, form): + # Checking permission + if not self.request.user.has_perm('kfet.change_articlecategory'): + form.add_error(None, 'Permission refusée') + return self.form_invalid(form) + + # Updating + return super(CategoryUpdate, self).form_valid(form) + # ----- # Article views # -----