From 7d10c5d837995e9593cca12513612810f9f7ceb4 Mon Sep 17 00:00:00 2001 From: guillaume-renaud Date: Fri, 13 Jan 2017 12:38:04 +0100 Subject: [PATCH] Forms initial quantity addition --- locale/fr/LC_MESSAGES/django.mo | Bin 52661 -> 52664 bytes locale/fr/LC_MESSAGES/django.po | 22 +++++++++---------- stock/templates/stock/stock_item_list.jinja | 4 ++-- stock/views.py | 23 +++++++------------- 4 files changed, 21 insertions(+), 28 deletions(-) diff --git a/locale/fr/LC_MESSAGES/django.mo b/locale/fr/LC_MESSAGES/django.mo index 8667ce295c7e20f71cbe56639b99d3a4bc9b037c..d177ae604a75b73fdace82afd3beda176b6aa8d6 100644 GIT binary patch delta 6492 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 g*#ie<4;VRiO#Yz!jSsD?afL3KRtyL&;S4c delta 6487 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 diff --git a/locale/fr/LC_MESSAGES/django.po b/locale/fr/LC_MESSAGES/django.po index 265295a3..41a2407a 100644 --- a/locale/fr/LC_MESSAGES/django.po +++ b/locale/fr/LC_MESSAGES/django.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-07 13:15+0100\n" +"POT-Creation-Date: 2017-01-12 15:49+0100\n" "PO-Revision-Date: 2016-07-18\n" "Last-Translator: Skia \n" "Language-Team: AE info \n" @@ -2386,7 +2386,7 @@ msgstr "Stats" #: stock/templates/stock/stock_item_list.jinja:11 #: stock/templates/stock/stock_list.jinja:16 msgid "Shopping lists" -msgstr "Liste de course" +msgstr "Liste de courses" #: core/templates/core/user_tools.jinja:46 #: counter/templates/counter/counter_list.jinja:39 @@ -3703,7 +3703,7 @@ msgstr "nombre d'éléments dans une boite" #: stock/models.py:31 msgid "effective quantity" -msgstr "qunatité effective" +msgstr "quantité effective" #: stock/models.py:31 msgid "number of box" @@ -3758,7 +3758,7 @@ msgstr "Quantité demandée" msgid "Quantity bought" msgstr "Quantité achetée" -#: stock/templates/stock/shopping_list_items.jinja:42 stock/views.py:188 +#: stock/templates/stock/shopping_list_items.jinja:42 stock/views.py:181 msgid "Comments" msgstr "Commentaires" @@ -3861,27 +3861,27 @@ msgstr "Mettre à jour les quantités de %(s)s après les courses" msgid "Update stock quantities" msgstr "Mettre à jour les quantités du stock" -#: stock/views.py:181 +#: stock/views.py:173 msgid "Shopping list name" -msgstr "Nom de la liste de course" +msgstr "Nom de la liste de courses" -#: stock/views.py:187 +#: stock/views.py:179 msgid " left" msgstr " restant(s)" -#: stock/views.py:189 +#: stock/views.py:180 msgid "" "Add here, items to buy that are not reference as a stock item (example : " "sponge, knife, mugs ...)" msgstr "" "Ajouter ici les éléments à acheter qui ne sont pas référencés comme un " -"élément du stock (exemple : éponges, couteaux, tasses ..." +"élément du stock (exemple : éponges, couteaux, tasses ...)" -#: stock/views.py:317 +#: stock/views.py:309 msgid " asked" msgstr " demandé(s)" -#: stock/views.py:383 +#: stock/views.py:376 msgid "(" msgstr "(" diff --git a/stock/templates/stock/stock_item_list.jinja b/stock/templates/stock/stock_item_list.jinja index 66639f71..dd8e68b6 100644 --- a/stock/templates/stock/stock_item_list.jinja +++ b/stock/templates/stock/stock_item_list.jinja @@ -16,14 +16,14 @@

{{ t }}

{% endfor %}

{% trans %}Others{% endtrans %}

{% else %} diff --git a/stock/views.py b/stock/views.py index 8c68c13c..2fab9ea4 100644 --- a/stock/views.py +++ b/stock/views.py @@ -41,10 +41,7 @@ class StockListView(CounterAdminTabsMixin, CanViewMixin, ListView): template_name = 'stock/stock_list.jinja' current_tab = "stocks" - def can_be_viewed_by(self, user): - return user.is_in_group(settings.SITH_GROUP_COUNTER_ADMIN_ID) - - + class StockEditForm(forms.ModelForm): """ A form to change stock's characteristics @@ -65,15 +62,10 @@ class StockEditView(CounterAdminTabsMixin, CanEditPropMixin, UpdateView): An edit view for the stock """ model = Stock - form_class = StockEditForm + form_class = modelform_factory(Stock, fields=['name', 'counter']) pk_url_kwarg = "stock_id" + template_name = 'core/edit.jinja' current_tab = "stocks" - - def get_context_data(self, **kwargs): - context = super(StockItemList, self).get_context_data(**kwargs) - if 'stock' in self.request.GET.keys(): - context['stock'] = Stock.objects.filter(id=self.request.GET['stock']).first() - return context class StockItemEditView(CounterAdminTabsMixin, CanEditPropMixin, UpdateView): @@ -183,10 +175,10 @@ class StockItemQuantityBaseFormView(CounterAdminTabsMixin, CanEditMixin, DetailV for i in self.stock.items.filter(type=t).order_by('name').all(): if i.effective_quantity <= i.minimal_quantity: field_name = "item-%s" % (str(i.id)) - fields[field_name] = forms.IntegerField(required=True, label=str(i), + fields[field_name] = forms.IntegerField(required=True, label=str(i), initial=0, help_text=_(str(i.effective_quantity)+" left")) - fields['comment'] = forms.CharField(widget=forms.Textarea(), required=False, label=_("Comments"), - initial=_("Add here, items to buy that are not reference as a stock item (example : sponge, knife, mugs ...)")) + fields['comment'] = forms.CharField(widget=forms.Textarea(attrs={"placeholder":_("Add here, items to buy that are not reference as a stock item (example : sponge, knife, mugs ...)")}), + required=False, label=_("Comments")) kwargs['stock_id'] = self.stock.id kwargs['base_fields'] = fields return type('StockItemQuantityForm', (StockItemQuantityForm,), kwargs) @@ -380,7 +372,8 @@ class StockTakeItemsBaseFormView(CounterTabsMixin, CanEditMixin, DetailView, Bas for t in ProductType.objects.order_by('name').all(): for i in self.stock.items.filter(type=t).order_by('name').all(): field_name = "item-%s" % (str(i.id)) - fields[field_name] = forms.IntegerField(required=False, label=str(i), help_text=_("("+ str(i.effective_quantity) + " left)")) + fields[field_name] = forms.IntegerField(required=False, label=str(i), initial=0, min_value=0, max_value=i.effective_quantity, + help_text=_("("+ str(i.effective_quantity) + " left)")) kwargs[field_name] = i.effective_quantity kwargs['stock_id'] = self.stock.id kwargs['counter_id'] = self.stock.counter.id