Skip to content
Snippets Groups Projects
Verified Commit afef60e5 authored by Jonathan Weth's avatar Jonathan Weth :keyboard:
Browse files

Update forms

- Add ExtensibleForm
- Allow strings for layout nodes
- Add layouts
parent b1ba6d1a
No related branches found
No related tags found
1 merge request!206Update forms
Pipeline #1217 failed
...@@ -55,7 +55,25 @@ PersonsAccountsFormSet = forms.modelformset_factory( ...@@ -55,7 +55,25 @@ PersonsAccountsFormSet = forms.modelformset_factory(
) )
class EditPersonForm(forms.ModelForm): class EditPersonForm(ExtensibleForm):
layout = Layout(
Fieldset(
_("Base data"),
"short_name",
Row("user", "primary_group"),
"is_active",
Row("first_name", "additional_name", "last_name"),
),
Fieldset(_("Address"), Row("street", "housenumber"), Row("postal_code", "place")),
Fieldset(_("Contact data"), "email", Row("phone_number", "mobile_number")),
Fieldset(
_("Advanced personal data"),
Row("sex", "date_of_birth"),
Row("photo", "photo_cropping"),
"guardians",
),
)
class Meta: class Meta:
model = Person model = Person
fields = [ fields = [
...@@ -76,6 +94,8 @@ class EditPersonForm(forms.ModelForm): ...@@ -76,6 +94,8 @@ class EditPersonForm(forms.ModelForm):
"sex", "sex",
"photo", "photo",
"photo_cropping", "photo_cropping",
"guardians",
"primary_group",
] ]
widgets = {"user": Select2Widget} widgets = {"user": Select2Widget}
...@@ -105,10 +125,15 @@ class EditPersonForm(forms.ModelForm): ...@@ -105,10 +125,15 @@ class EditPersonForm(forms.ModelForm):
self.cleaned_data["user"] = new_user_obj self.cleaned_data["user"] = new_user_obj
class EditGroupForm(forms.ModelForm): class EditGroupForm(ExtensibleForm):
layout = Layout(
Fieldset(_("Common data"), "name", "short_name"),
Fieldset(_("Persons"), "members", "owners", "parent_groups"),
)
class Meta: class Meta:
model = Group model = Group
fields = ["name", "short_name", "members", "owners", "parent_groups"] exclude = []
widgets = { widgets = {
"members": ModelSelect2MultipleWidget( "members": ModelSelect2MultipleWidget(
search_fields=[ search_fields=[
...@@ -130,13 +155,20 @@ class EditGroupForm(forms.ModelForm): ...@@ -130,13 +155,20 @@ class EditGroupForm(forms.ModelForm):
} }
class EditSchoolForm(forms.ModelForm): class EditSchoolForm(ExtensibleForm):
layout = Layout(
Fieldset(_("School name"), "name", "name_official"),
Fieldset(_("School logo"), Row("logo", "logo_cropping")),
)
class Meta: class Meta:
model = School model = School
fields = ["name", "name_official", "logo", "logo_cropping"] fields = ["name", "name_official", "logo", "logo_cropping"]
class EditTermForm(forms.ModelForm): class EditTermForm(ExtensibleForm):
layout = Layout("caption", Row("date_start", "date_end"))
class Meta: class Meta:
model = SchoolTerm model = SchoolTerm
fields = ["caption", "date_start", "date_end"] fields = ["caption", "date_start", "date_end"]
...@@ -152,7 +184,9 @@ class AnnouncementForm(ExtensibleForm): ...@@ -152,7 +184,9 @@ class AnnouncementForm(ExtensibleForm):
valid_until_date = forms.DateField(label=_("Date")) valid_until_date = forms.DateField(label=_("Date"))
valid_until_time = forms.TimeField(label=_("Time")) valid_until_time = forms.TimeField(label=_("Time"))
persons = forms.ModelMultipleChoiceField(Person.objects.all(), label=_("Persons"), required=False) persons = forms.ModelMultipleChoiceField(
Person.objects.all(), label=_("Persons"), required=False
)
groups = forms.ModelMultipleChoiceField(Group.objects.all(), label=_("Groups"), required=False) groups = forms.ModelMultipleChoiceField(Group.objects.all(), label=_("Groups"), required=False)
layout = Layout( layout = Layout(
......
from datetime import datetime from datetime import datetime
from typing import Any, Callable, Optional from typing import Any, Callable, Optional, Union
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
from django.db import models from django.db import models
...@@ -216,7 +216,7 @@ class ExtensibleForm(ModelForm, metaclass=_ExtensibleFormMetaclass): ...@@ -216,7 +216,7 @@ class ExtensibleForm(ModelForm, metaclass=_ExtensibleFormMetaclass):
""" """
@classmethod @classmethod
def add_node_to_layout(cls, node: LayoutNode): def add_node_to_layout(cls, node: Union[LayoutNode, str]):
""" """
Add a node to `layout` attribute Add a node to `layout` attribute
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment