diff --git a/gestion/forms.py b/gestion/forms.py index 95894b7..0c560a8 100644 --- a/gestion/forms.py +++ b/gestion/forms.py @@ -60,4 +60,9 @@ class SelectPositiveKegForm(forms.Form): keg = forms.ModelChoiceField(queryset=Keg.objects.filter(stockHold__gt = 0), required=True, label="Fût", widget=autocomplete.ModelSelect2(url='gestion:kegs-positive-autocomplete')) class SelectActiveKegForm(forms.Form): - keg = forms.ModelChoiceField(queryset=Keg.objects.filter(is_active = True), required=True, label="Fût", widget=autocomplete.ModelSelect2(url='gestion:kegs-active-autocomplete')) \ No newline at end of file + keg = forms.ModelChoiceField(queryset=Keg.objects.filter(is_active = True), required=True, label="Fût", widget=autocomplete.ModelSelect2(url='gestion:kegs-active-autocomplete')) + +class CreatePinteForm(forms.Form): + ids = forms.CharField(widget=forms.Textarea, label="Numéros", help_text="Numéros séparés par un espace. Laissez vide pour utiliser le range.", required=False) + begin = forms.IntegerField(label="Début", help_text="Début du range", required=False) + end = forms.IntegerField(label="Fin", help_text="Fin du range", required=False) \ No newline at end of file diff --git a/gestion/templates/gestion/products_index.html b/gestion/templates/gestion/products_index.html index 2a3ade6..21b8393 100644 --- a/gestion/templates/gestion/products_index.html +++ b/gestion/templates/gestion/products_index.html @@ -5,6 +5,7 @@
  • Produits
  • Futs
  • Menus
  • +
  • Pintes
  • {% endblock %} {% block content %} @@ -58,4 +59,21 @@ {% endif %} +
    +
    +

    Pintes

    +
    + Actions possibles : + +
    {% endblock %} diff --git a/gestion/urls.py b/gestion/urls.py index c05a330..3fb9e41 100644 --- a/gestion/urls.py +++ b/gestion/urls.py @@ -33,6 +33,7 @@ urlpatterns = [ path('cancelConsumption/', views.cancel_consumption, name="cancelConsumption"), path('cancelMenu/', views.cancel_menu, name="cancelMenu"), path('productProfile/', views.productProfile, name="productProfile"), + path('createPintes', views.create_pintes, name="createPintes"), path('products-autocomplete', views.ProductsAutocomplete.as_view(), name="products-autocomplete"), path('kegs-positive-autocomplete', views.KegPositiveAutocomplete.as_view(), name="kegs-positive-autocomplete"), path('kegs-active-autocomplete', views.KegActiveAutocomplete.as_view(), name="kegs-active-autocomplete"), diff --git a/gestion/views.py b/gestion/views.py index c49854e..f87f020 100644 --- a/gestion/views.py +++ b/gestion/views.py @@ -13,7 +13,7 @@ import simplejson as json from dal import autocomplete from decimal import * -from .forms import ReloadForm, RefundForm, ProductForm, KegForm, MenuForm, GestionForm, SearchMenuForm, SearchProductForm, SelectPositiveKegForm, SelectActiveKegForm +from .forms import ReloadForm, RefundForm, ProductForm, KegForm, MenuForm, GestionForm, SearchMenuForm, SearchProductForm, SelectPositiveKegForm, SelectActiveKegForm, CreatePinteForm from .models import Product, Menu, Keg, ConsumptionHistory, KegHistory, Consumption, MenuHistory, Pinte from preferences.models import PaymentMethod @@ -912,4 +912,25 @@ def allocate(pinte_pk, user): pinte.save() return True except Pinte.DoesNotExist: - return False \ No newline at end of file + return False + +@active_required +@login_required +@permission_required('gestion.add_pinte') +def create_pintes(request): + form = CreatePinteForm(request.POST or None) + if form.is_valid(): + ids = form.cleaned_data['ids'] + if ids != "": + ids = ids.split(" ") + else: + ids = range(form.cleaned_data['begin'], form.cleaned_data['end'] + 1) + i = 0 + for id in ids: + if not Pinte.objects.filter(pk=id).exists(): + new_pinte = Pinte(pk=int(id)) + new_pinte.save() + i += 1 + messages.success(request, str(i) + " pinte(s) a(ont) été ajoutée(s)") + return redirect(reverse('gestion:productsIndex')) + return render(request, "form.html", {"form": form, "form_title": "Ajouter des pintes", "form_button": "Ajouter"}) \ No newline at end of file