On applique à la main les changements de catégorie

This commit is contained in:
Jean-Marie Favreau
2024-04-16 11:49:35 +02:00
parent 96143c03a4
commit 6bcc72884d
5 changed files with 176 additions and 16 deletions

View File

@@ -1,4 +1,4 @@
from django.forms import ModelForm, ValidationError, TextInput, Form, URLField, MultipleHiddenInput, Textarea, CharField, ChoiceField, RadioSelect, MultipleChoiceField
from django.forms import ModelForm, ValidationError, TextInput, Form, URLField, MultipleHiddenInput, Textarea, CharField, ChoiceField, RadioSelect, MultipleChoiceField, BooleanField, HiddenInput
from datetime import date
from django_better_admin_arrayfield.forms.widgets import DynamicArrayWidget
@@ -270,3 +270,27 @@ class ModerateForm(ModelForm):
if a.question == q and a.valid_event(self.instance):
self.fields[q.complete_id()].initial = a.pk
break
class CategorisationForm(Form):
def __init__(self, *args, **kwargs):
if "events" in kwargs:
events = kwargs.pop('events', None)
else:
events = []
for f in args[0]:
logger.warning('fff: ' + f)
if '_' not in f:
if f + '_cat' in args[0]:
events.append((Event.objects.get(pk=int(f)), args[0][f + '_cat']))
# TODO
super().__init__(*args, **kwargs)
for e, c in events:
self.fields[str(e.pk)] = BooleanField(initial=False, label=_('Apply category {} to the event {}').format(c, e.title), required=False)
self.fields[str(e.pk) + "_cat"] = CharField(initial=c, widget=HiddenInput())
def get_validated(self):
return [(e, self.cleaned_data.get(e + '_cat')) for e in self.fields if '_' not in e and self.cleaned_data.get(e)]