Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Re-add diaper change color and amount fields #800

Merged
merged 2 commits into from
Apr 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
230 changes: 113 additions & 117 deletions core/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ def hydrated_fielsets(self):

for fieldset in self.fieldsets:
hyrdrated_fieldset = {
"layout": fieldset["layout"],
"layout": fieldset.get("layout", "default"),
"layout_attrs": fieldset.get("layout_attrs", {}),
"fields": [],
}
Expand All @@ -133,6 +133,61 @@ def hydrated_fielsets(self):
return hydrated_fieldsets


class TaggableModelForm(forms.ModelForm):
tags = TagField(
widget=TagsEditor,
required=False,
strip=True,
help_text=_(
"Click on the tags to add (+) or remove (-) tags or use the text editor to create new tags."
),
)


class BMIForm(CoreModelForm, TaggableModelForm):
fieldsets = [
{
"fields": ["child", "bmi", "date"],
"layout": "required",
},
{"fields": ["notes", "tags"], "layout": "advanced"},
]

class Meta:
model = models.BMI
fields = ["child", "bmi", "date", "notes", "tags"]
widgets = {
"child": ChildRadioSelect,
"date": DateInput(),
"notes": forms.Textarea(attrs={"rows": 5}),
}


class BottleFeedingForm(CoreModelForm, TaggableModelForm):
fieldsets = [
{"fields": ["child", "type", "start", "amount"], "layout": "required"},
{"fields": ["amount"]},
{"fields": ["notes", "tags"], "layout": "advanced"},
]

def save(self):
instance = super(BottleFeedingForm, self).save(commit=False)
instance.method = "bottle"
instance.end = instance.start
instance.save()
return instance

class Meta:
model = models.Feeding
fields = ["child", "start", "type", "amount", "notes", "tags"]
widgets = {
"child": ChildRadioSelect,
"start": DateTimeInput(),
"type": PillRadioSelect(),
"notes": forms.Textarea(attrs={"rows": 5}),
}


class ChildForm(forms.ModelForm):
class Meta:
model = models.Child
Expand Down Expand Up @@ -166,42 +221,15 @@ def save(self, commit=True):
return instance


class TaggableModelForm(forms.ModelForm):
tags = TagField(
widget=TagsEditor,
required=False,
strip=True,
help_text=_(
"Click on the tags to add (+) or remove (-) tags or use the text editor to create new tags."
),
)


class PumpingForm(CoreModelForm, TaggableModelForm):
fieldsets = [
{"fields": ["child", "start", "end", "amount"], "layout": "required"},
{"layout": "advanced", "fields": ["notes", "tags"]},
]

class Meta:
model = models.Pumping
fields = ["child", "start", "end", "amount", "notes", "tags"]
widgets = {
"child": ChildRadioSelect,
"start": DateTimeInput(),
"end": DateTimeInput(),
"notes": forms.Textarea(attrs={"rows": 5}),
}


class DiaperChangeForm(CoreModelForm, TaggableModelForm):
fieldsets = [
{"fields": ["child", "time"], "layout": "required"},
{
"fields": ["wet", "solid"],
"layout": "choices",
"layout_attrs": {"label": "Contents"},
},
{"fields": ["child", "time"], "layout": "required"},
{"fields": ["color", "amount"]},
{"layout": "advanced", "fields": ["notes", "tags"]},
]

Expand All @@ -217,11 +245,9 @@ class Meta:

class FeedingForm(CoreModelForm, TaggableModelForm):
fieldsets = [
{
"fields": ["child", "start", "end", "type", "method", "amount"],
"layout": "required",
},
{"layout": "advanced", "fields": ["notes", "tags"]},
{"fields": ["child", "start", "end", "type", "method"], "layout": "required"},
{"fields": ["amount"]},
{"fields": ["notes", "tags"], "layout": "advanced"},
]

class Meta:
Expand All @@ -237,29 +263,58 @@ class Meta:
}


class BottleFeedingForm(CoreModelForm, TaggableModelForm):
class HeadCircumferenceForm(CoreModelForm, TaggableModelForm):
fieldsets = [
{
"fields": ["child", "type", "start", "amount"],
"fields": ["child", "head_circumference", "date"],
"layout": "required",
},
{"layout": "advanced", "fields": ["notes", "tags"]},
{"fields": ["notes", "tags"], "layout": "advanced"},
]

def save(self):
instance = super(BottleFeedingForm, self).save(commit=False)
instance.method = "bottle"
instance.end = instance.start
instance.save()
return instance
class Meta:
model = models.HeadCircumference
fields = ["child", "head_circumference", "date", "notes", "tags"]
widgets = {
"child": ChildRadioSelect,
"date": DateInput(),
"notes": forms.Textarea(attrs={"rows": 5}),
}


class HeightForm(CoreModelForm, TaggableModelForm):
fieldsets = [
{
"fields": ["child", "height", "date"],
"layout": "required",
},
{"fields": ["notes", "tags"], "layout": "advanced"},
]

class Meta:
model = models.Feeding
fields = ["child", "start", "type", "amount", "notes", "tags"]
model = models.Height
fields = ["child", "height", "date", "notes", "tags"]
widgets = {
"child": ChildRadioSelect,
"date": DateInput(),
"notes": forms.Textarea(attrs={"rows": 5}),
}


class PumpingForm(CoreModelForm, TaggableModelForm):
fieldsets = [
{"fields": ["child", "start", "end"], "layout": "required"},
{"fields": ["amount"]},
{"fields": ["notes", "tags"], "layout": "advanced"},
]

class Meta:
model = models.Pumping
fields = ["child", "start", "end", "amount", "notes", "tags"]
widgets = {
"child": ChildRadioSelect,
"start": DateTimeInput(),
"type": PillRadioSelect(),
"end": DateTimeInput(),
"notes": forms.Textarea(attrs={"rows": 5}),
}

Expand All @@ -282,7 +337,7 @@ class SleepForm(CoreModelForm, TaggableModelForm):
"fields": ["child", "start", "end", "nap"],
"layout": "required",
},
{"layout": "advanced", "fields": ["notes", "tags"]},
{"fields": ["notes", "tags"], "layout": "advanced"},
]

class Meta:
Expand All @@ -296,13 +351,18 @@ class Meta:
}


class TagAdminForm(forms.ModelForm):
class Meta:
widgets = {"color": widgets.TextInput(attrs={"type": "color"})}


class TemperatureForm(CoreModelForm, TaggableModelForm):
fieldsets = [
{
"fields": ["child", "temperature", "time"],
"layout": "required",
},
{"layout": "advanced", "fields": ["notes", "tags"]},
{"fields": ["notes", "tags"], "layout": "advanced"},
]

class Meta:
Expand Down Expand Up @@ -337,11 +397,9 @@ def save(self, commit=True):

class TummyTimeForm(CoreModelForm, TaggableModelForm):
fieldsets = [
{
"fields": ["child", "start", "end", "milestone"],
"layout": "required",
},
{"layout": "advanced", "fields": ["tags"]},
{"fields": ["child", "start", "end"], "layout": "required"},
{"fields": ["milestone"]},
{"fields": ["tags"], "layout": "advanced"},
]

class Meta:
Expand All @@ -360,7 +418,7 @@ class WeightForm(CoreModelForm, TaggableModelForm):
"fields": ["child", "weight", "date"],
"layout": "required",
},
{"layout": "advanced", "fields": ["notes", "tags"]},
{"fields": ["notes", "tags"], "layout": "advanced"},
]

class Meta:
Expand All @@ -371,65 +429,3 @@ class Meta:
"date": DateInput(),
"notes": forms.Textarea(attrs={"rows": 5}),
}


class HeightForm(CoreModelForm, TaggableModelForm):
fieldsets = [
{
"fields": ["child", "height", "date"],
"layout": "required",
},
{"layout": "advanced", "fields": ["notes", "tags"]},
]

class Meta:
model = models.Height
fields = ["child", "height", "date", "notes", "tags"]
widgets = {
"child": ChildRadioSelect,
"date": DateInput(),
"notes": forms.Textarea(attrs={"rows": 5}),
}


class HeadCircumferenceForm(CoreModelForm, TaggableModelForm):
fieldsets = [
{
"fields": ["child", "head_circumference", "date"],
"layout": "required",
},
{"layout": "advanced", "fields": ["notes", "tags"]},
]

class Meta:
model = models.HeadCircumference
fields = ["child", "head_circumference", "date", "notes", "tags"]
widgets = {
"child": ChildRadioSelect,
"date": DateInput(),
"notes": forms.Textarea(attrs={"rows": 5}),
}


class BMIForm(CoreModelForm, TaggableModelForm):
fieldsets = [
{
"fields": ["child", "bmi", "date"],
"layout": "required",
},
{"layout": "advanced", "fields": ["notes", "tags"]},
]

class Meta:
model = models.BMI
fields = ["child", "bmi", "date", "notes", "tags"]
widgets = {
"child": ChildRadioSelect,
"date": DateInput(),
"notes": forms.Textarea(attrs={"rows": 5}),
}


class TagAdminForm(forms.ModelForm):
class Meta:
widgets = {"color": widgets.TextInput(attrs={"type": "color"})}
3 changes: 3 additions & 0 deletions core/templates/forms/layouts/default.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{% for field in fieldset.fields %}
<div class="row">{% include "babybuddy/form_field.html" %}</div>
{% endfor %}