Skip to content

Commit

Permalink
validate alcohol_tobacco_form
Browse files Browse the repository at this point in the history
  • Loading branch information
frdrckaman committed Jul 2, 2023
1 parent 2ae571c commit b1614e6
Showing 1 changed file with 120 additions and 9 deletions.
129 changes: 120 additions & 9 deletions edcs_subject/forms/alcohol_tobacco_form.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,30 @@ def __init__(self, **kwargs):
self.tobacco_product = self.cleaned_data.get("tobacco_products")
self.date_start_smoking = self.cleaned_data.get("date_start_smoking")
self.smoking_frequency = self.cleaned_data.get("smoking_frequency")

self.smoking_frequency_cigarettes = self.cleaned_data.get(
"smoking_frequency_cigarettes"
)
self.smoking_frequency_other_cigarettes = self.cleaned_data.get(
"smoking_frequency_other_cigarettes"
)
self.smoking_frequency_cigars = self.cleaned_data.get("smoking_frequency_cigars")
self.smoking_frequency_other_cigars = self.cleaned_data.get(
"smoking_frequency_other_cigars"
)
self.smoking_frequency_shisha = self.cleaned_data.get("smoking_frequency_shisha")
self.smoking_frequency_other_shisha = self.cleaned_data.get(
"smoking_frequency_other_shisha"
)
self.smoking_frequency_pipes = self.cleaned_data.get("smoking_frequency_pipes")
self.smoking_frequency_other_pipes = self.cleaned_data.get(
"smoking_frequency_other_pipes"
)
self.no_cigarettes_smoked = self.cleaned_data.get("no_cigarettes_smoked")
self.no_cigars_smoked = self.cleaned_data.get("no_cigars_smoked")
self.no_shisha_smoked = self.cleaned_data.get("no_shisha_smoked")
self.no_pipe_smoked = self.cleaned_data.get("no_pipe_smoked")

self.smoking_frequency_other = self.cleaned_data.get("smoking_frequency_other")
self.age_start_smoking = self.cleaned_data.get("age_start_smoking")
self.age_stop_smoking = self.cleaned_data.get("age_stop_smoking")
Expand All @@ -42,6 +66,18 @@ def __init__(self, **kwargs):
self.past_smoker = (
self.cleaned_data.get("smoke_chew_tobacco").filter(name=YES_PAST_SMOKER).exists()
)
self.cigarettes_smoker = (
self.cleaned_data.get("tobacco_products").filter(name="yes_cigarettes").exists()
)
self.cigars_smoker = (
self.cleaned_data.get("tobacco_products").filter(name="yes_cigars").exists()
)
self.shisha_smoker = (
self.cleaned_data.get("tobacco_products").filter(name="yes_shisha").exists()
)
self.pipe_smoker = (
self.cleaned_data.get("tobacco_products").filter(name="yes_pipes").exists()
)

self.current_smoker = (
self.cleaned_data.get("smoke_chew_tobacco")
Expand Down Expand Up @@ -69,25 +105,22 @@ def __init__(self, **kwargs):
def clean(self):

self.validate_smoke_chew_tobacco()

self.validate_date_start_smoking()

self.validate_no_tobacco_product_smoked()
# self.validate_no_tobacco_product_smoked()

self.validate_tobacco_products()

self.validate_tobacco_products_na()

self.m2m_other_specify(
OTHER, m2m_field="tobacco_products", field_other="tobacco_products_other"
)

self.not_applicable_if(
NEVER, field="smoke_chew_tobacco", field_applicable="smoking_frequency"
)
self.required_if(
OTHER, field="smoking_frequency", field_required="smoking_frequency_other"
)
# self.required_if(
# OTHER, field="smoking_frequency", field_required="smoking_frequency_other"
# )
self.applicable_if(
YES, field="someone_else_smoke", field_applicable="smoke_inside_house"
)
Expand All @@ -104,11 +137,41 @@ def clean(self):
field="alcohol_consumption_frequency",
field_required="alcohol_consumption_frequency_other",
)

self.required_if(
OTHER,
field="smoking_frequency_cigarettes",
field_required="smoking_frequency_other_cigarettes",
)
self.required_if(
OTHER,
field="smoking_frequency_cigars",
field_required="smoking_frequency_other_cigars",
)
self.required_if(
OTHER,
field="smoking_frequency_shisha",
field_required="smoking_frequency_other_shisha",
)
self.required_if(
OTHER,
field="smoking_frequency_pipes",
field_required="smoking_frequency_other_pipes",
)
self.validate_age_start_smoking()

self.validate_age_stop_smoking()

self.validate_frequency_cigarettes()
self.validate_no_cigarettes_smoked()

self.validate_smoking_frequency_cigars()
self.validate_no_cigars_smoked()

self.validate_smoking_frequency_shisha()
self.validate_no_shisha_smoked()

self.validate_smoking_frequency_pipes()
self.validate_no_pipe_smoked()

def validate_smoke_chew_tobacco(self):
if self.tobacco_user and self.never_use_tobacco:
raise forms.ValidationError({"smoke_chew_tobacco": "NEVER is not Applicable "})
Expand Down Expand Up @@ -153,6 +216,54 @@ def validate_age_stop_smoking(self):
if self.past_smoker and self.age_stop_smoking is None:
raise forms.ValidationError({"age_stop_smoking": "This field is required "})

def validate_frequency_cigarettes(self):
if self.cigarettes_smoker and self.smoking_frequency_cigarettes == NOT_APPLICABLE:
raise forms.ValidationError(
{"smoking_frequency_cigarettes": "This field is required "}
)

def validate_no_cigarettes_smoked(self):
if self.cigarettes_smoker and self.no_cigarettes_smoked is None:
raise forms.ValidationError({"no_cigarettes_smoked": "This field is required "})
elif not self.cigarettes_smoker and self.no_cigarettes_smoked is not None:
raise forms.ValidationError(
{"no_cigarettes_smoked": "This field is not required "}
)

def validate_smoking_frequency_cigars(self):
if self.cigars_smoker and self.smoking_frequency_cigars == NOT_APPLICABLE:
raise forms.ValidationError(
{"smoking_frequency_cigars": "This field is required "}
)

def validate_no_cigars_smoked(self):
if self.cigars_smoker and self.no_cigars_smoked is None:
raise forms.ValidationError({"no_cigars_smoked": "This field is required "})
elif not self.cigars_smoker and self.no_cigars_smoked is not None:
raise forms.ValidationError({"no_cigars_smoked": "This field is not required "})

def validate_smoking_frequency_shisha(self):
if self.shisha_smoker and self.smoking_frequency_shisha == NOT_APPLICABLE:
raise forms.ValidationError(
{"smoking_frequency_shisha": "This field is required "}
)

def validate_no_shisha_smoked(self):
if self.shisha_smoker and self.no_shisha_smoked is None:
raise forms.ValidationError({"no_shisha_smoked": "This field is required "})
elif not self.shisha_smoker and self.no_shisha_smoked is not None:
raise forms.ValidationError({"no_shisha_smoked": "This field is not required "})

def validate_smoking_frequency_pipes(self):
if self.pipe_smoker and self.smoking_frequency_pipes == NOT_APPLICABLE:
raise forms.ValidationError({"smoking_frequency_pipes": "This field is required "})

def validate_no_pipe_smoked(self):
if self.pipe_smoker and self.no_pipe_smoked is None:
raise forms.ValidationError({"no_pipe_smoked": "This field is required "})
elif not self.pipe_smoker and self.no_pipe_smoked is not None:
raise forms.ValidationError({"no_pipe_smoked": "This field is not required "})


class AlcoholTobaccoUseForm(FormValidatorMixin, forms.ModelForm):
form_validator_cls = AlcoholTobaccoUseFormValidator
Expand Down

0 comments on commit b1614e6

Please sign in to comment.