Fix Multiple Fields Inputs & check being override in base Models class

This commit is contained in:
Julien Constant 2023-05-10 14:03:58 +02:00
parent b7d9dbf3d0
commit 8f5dec53c7
5 changed files with 31 additions and 14 deletions

View File

@ -13,3 +13,23 @@
# OR WITHIN THE LOCAL FILE "LICENSE" # OR WITHIN THE LOCAL FILE "LICENSE"
# #
# #
from django import forms
class MultipleFileInput(forms.ClearableFileInput):
allow_multiple_selected = True
class MultipleFileField(forms.FileField):
def __init__(self, *args, **kwargs):
kwargs.setdefault("widget", MultipleFileInput())
super().__init__(*args, **kwargs)
def clean(self, data, initial=None):
single_file_clean = super().clean
if isinstance(data, (list, tuple)):
result = [single_file_clean(d, initial) for d in data]
else:
result = single_file_clean(data, initial)
return result

View File

@ -33,6 +33,7 @@ import os
from ajax_select import make_ajax_field from ajax_select import make_ajax_field
from core import MultipleFileField
from core.models import SithFile, RealGroup, Notification from core.models import SithFile, RealGroup, Notification
from core.views import ( from core.views import (
CanViewMixin, CanViewMixin,
@ -83,8 +84,7 @@ class AddFilesForm(forms.Form):
folder_name = forms.CharField( folder_name = forms.CharField(
label=_("Add a new folder"), max_length=30, required=False label=_("Add a new folder"), max_length=30, required=False
) )
file_field = forms.FileField( file_field = MultipleFileField(
widget=forms.ClearableFileInput(attrs={"multiple": True}),
label=_("Files"), label=_("Files"),
required=False, required=False,
) )

View File

@ -990,7 +990,7 @@ class CashRegisterSummaryItem(models.Model):
) )
value = CurrencyField(_("value")) value = CurrencyField(_("value"))
quantity = models.IntegerField(_("quantity"), default=0) quantity = models.IntegerField(_("quantity"), default=0)
check = models.BooleanField(_("check"), default=False) checked = models.BooleanField(_("check"), default=False)
class Meta: class Meta:
verbose_name = _("cash register summary item") verbose_name = _("cash register summary item")
@ -998,7 +998,7 @@ class CashRegisterSummaryItem(models.Model):
class Eticket(models.Model): class Eticket(models.Model):
""" """
Eticket can be linked to a product an allows PDF generation Eticket can be linked to a product and allows PDF generation
""" """
product = models.OneToOneField( product = models.OneToOneField(

View File

@ -1199,35 +1199,35 @@ class CashRegisterSummaryForm(forms.Form):
cash_summary=summary, cash_summary=summary,
value=cd["check_1_value"], value=cd["check_1_value"],
quantity=cd["check_1_quantity"], quantity=cd["check_1_quantity"],
check=True, checked=True,
).save() ).save()
if cd["check_2_quantity"]: if cd["check_2_quantity"]:
CashRegisterSummaryItem( CashRegisterSummaryItem(
cash_summary=summary, cash_summary=summary,
value=cd["check_2_value"], value=cd["check_2_value"],
quantity=cd["check_2_quantity"], quantity=cd["check_2_quantity"],
check=True, checked=True,
).save() ).save()
if cd["check_3_quantity"]: if cd["check_3_quantity"]:
CashRegisterSummaryItem( CashRegisterSummaryItem(
cash_summary=summary, cash_summary=summary,
value=cd["check_3_value"], value=cd["check_3_value"],
quantity=cd["check_3_quantity"], quantity=cd["check_3_quantity"],
check=True, checked=True,
).save() ).save()
if cd["check_4_quantity"]: if cd["check_4_quantity"]:
CashRegisterSummaryItem( CashRegisterSummaryItem(
cash_summary=summary, cash_summary=summary,
value=cd["check_4_value"], value=cd["check_4_value"],
quantity=cd["check_4_quantity"], quantity=cd["check_4_quantity"],
check=True, checked=True,
).save() ).save()
if cd["check_5_quantity"]: if cd["check_5_quantity"]:
CashRegisterSummaryItem( CashRegisterSummaryItem(
cash_summary=summary, cash_summary=summary,
value=cd["check_5_value"], value=cd["check_5_value"],
quantity=cd["check_5_quantity"], quantity=cd["check_5_quantity"],
check=True, checked=True,
).save() ).save()
if summary.items.count() < 1: if summary.items.count() < 1:
summary.delete() summary.delete()

View File

@ -17,6 +17,7 @@
from django.shortcuts import redirect from django.shortcuts import redirect
from django.http import HttpResponse, Http404 from django.http import HttpResponse, Http404
from django.urls import reverse_lazy, reverse from django.urls import reverse_lazy, reverse
from core import MultipleFileField
from core.views.forms import SelectDate from core.views.forms import SelectDate
from django.views.generic import DetailView, TemplateView from django.views.generic import DetailView, TemplateView
from django.views.generic.edit import UpdateView, FormMixin, FormView from django.views.generic.edit import UpdateView, FormMixin, FormView
@ -40,11 +41,7 @@ class SASForm(forms.Form):
album_name = forms.CharField( album_name = forms.CharField(
label=_("Add a new album"), max_length=30, required=False label=_("Add a new album"), max_length=30, required=False
) )
images = forms.ImageField( images = MultipleFileField(label=_("Upload images"), required=False)
widget=forms.ClearableFileInput(attrs={"multiple": True}),
label=_("Upload images"),
required=False,
)
def process(self, parent, owner, files, automodere=False): def process(self, parent, owner, files, automodere=False):
try: try: