forked from DGNum/gestioCOF
categories are updatable
This commit is contained in:
parent
72615bf400
commit
ba11aa49db
5 changed files with 123 additions and 3 deletions
|
@ -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
|
||||
# -----
|
||||
|
|
53
kfet/templates/kfet/category.html
Normal file
53
kfet/templates/kfet/category.html
Normal file
|
@ -0,0 +1,53 @@
|
|||
{% extends 'kfet/base.html' %}
|
||||
|
||||
{% block title %}Categories d'articles{% endblock %}
|
||||
{% block content-header-title %}Categories d'articles{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-4 col-md-3 col-content-left">
|
||||
<div class="content-left">
|
||||
<div class="content-left-top">
|
||||
<div class="line line-big">{{ categories|length }}</div>
|
||||
<div class="line line-bigsub">catégorie{{ categories|length|pluralize }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-8 col-md-9 col-content-right">
|
||||
{% include 'kfet/base_messages.html' %}
|
||||
<div class="content-right">
|
||||
<div class="content-right-block">
|
||||
<h2>Liste des catégories</h2>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-condensed">
|
||||
<thead>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>Nom</td>
|
||||
<td class="text-right">Nombre d'articles</td>
|
||||
<td class="text-right">Peut-être majoré</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for category in categories %}
|
||||
<tr>
|
||||
<td class="text-center">
|
||||
<a href="{% url 'kfet.category.update' category.pk %}">
|
||||
<span class="glyphicon glyphicon-cog"></span>
|
||||
</a>
|
||||
</td>
|
||||
<td>{{ category.name }}</td>
|
||||
<td class="text-right">{{ category.articles.all|length }}</td>
|
||||
<td class="text-right">{{ category.has_addcost | yesno:"Oui,Non"}}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
17
kfet/templates/kfet/category_update.html
Normal file
17
kfet/templates/kfet/category_update.html
Normal file
|
@ -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 %}
|
||||
|
||||
<form action="" method="post">
|
||||
{% csrf_token %}
|
||||
{{ form.as_p }}
|
||||
{% if not perms.kfet.change_articlecategory %}
|
||||
<input type="password" name="KFETPASSWORD">
|
||||
{% endif %}
|
||||
<input type="submit" value="Mettre à jour">
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
|
@ -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<pk>\d+)/edit$',
|
||||
teamkfet_required(views.CategoryUpdate.as_view()),
|
||||
name='kfet.category.update'),
|
||||
# Article - General
|
||||
url('^articles/$',
|
||||
teamkfet_required(views.ArticleList.as_view()),
|
||||
|
|
|
@ -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
|
||||
# -----
|
||||
|
|
Loading…
Reference in a new issue