Skip to content

Commit

Permalink
Added self vars so we can adjust them
Browse files Browse the repository at this point in the history
  • Loading branch information
pescheck-bram committed Dec 12, 2023
1 parent bb90307 commit 1408839
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 17 deletions.
21 changes: 11 additions & 10 deletions src/customersatisfactionmetrics/forms/survey_form.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,27 +20,28 @@ class SurveyForm(forms.Form):
"""

def __init__(self, *args, **kwargs):
survey_id = kwargs.pop('survey_id', None)
slug = kwargs.pop('slug', None)
self.survey_id = kwargs.pop('survey_id', None)
self.slug = kwargs.pop('slug', None)
super().__init__(*args, **kwargs) # Updated to Python 3 style super()
self.survey = None

# Fetch the survey by ID or slug
if survey_id is not None:
survey = Survey.objects.get(pk=survey_id) # pylint: disable=no-member
elif slug is not None:
survey = Survey.objects.get(slug=slug) # pylint: disable=no-member
if self.survey_id is not None:
self.survey = Survey.objects.get(pk=self.survey_id) # pylint: disable=no-member
elif self.slug is not None:
self.survey = Survey.objects.get(slug=self.slug) # pylint: disable=no-member
else:
raise ValueError("Either survey_id or slug must be provided")

for question in survey.questions.order_by('order').all():
for question in self.survey.questions.order_by('order').all():
field_name = f'question_{question.id}'
field_required = question.is_required

if survey.survey_type == 'NPS':
if self.survey.survey_type == 'NPS':
self.fields[field_name] = self.create_generic_choice_field(question)
elif survey.survey_type in ['CSAT', 'CES']:
elif self.survey.survey_type in ['CSAT', 'CES']:
self.fields[field_name] = self.create_generic_choice_field(question)
elif survey.survey_type == 'GENERIC':
elif self.survey.survey_type == 'GENERIC':
if question.response_type == 'INT':
if getattr(settings, 'SURVEY_USE_INTEGER_FIELD', True):
self.fields[field_name] = forms.IntegerField(
Expand Down
24 changes: 17 additions & 7 deletions src/customersatisfactionmetrics/templatetags/survey_tags.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,23 @@ def insert_survey_by_id(survey_id):
Template tag for inserting a survey form by its ID.
Retrieves a survey by its ID and generates a corresponding SurveyForm.
Includes error handling for cases where
a survey with the given ID does not exist.
Args:
survey_id (int): The ID of the survey to be retrieved and displayed.
Returns:
dict: A dictionary containing the survey and its form.
Returns None for both survey and form if survey is not found.
"""
survey = Survey.objects.get(pk=survey_id)
form = SurveyForm(survey_id=survey_id)
return {'form': form, 'survey': survey}
try:
survey = Survey.objects.get(pk=survey_id)
form = SurveyForm(survey_id=survey_id)
return {'form': form, 'survey': survey}
except Survey.DoesNotExist:
# Handle the case where the survey does not exist
return {'form': None, 'survey': None}


@register.inclusion_tag('survey_form.html')
Expand All @@ -44,6 +51,9 @@ def insert_survey_by_slug(slug):
Returns:
dict: A dictionary containing the survey and its form.
"""
survey = Survey.objects.get(slug=slug)
form = SurveyForm(slug=slug)
return {'form': form, 'survey': survey}
try:
survey = Survey.objects.get(slug=slug)
form = SurveyForm(slug=slug)
return {'form': form, 'survey': survey}
except Survey.DoesNotExist:
return {'form': None, 'survey': None}

0 comments on commit 1408839

Please sign in to comment.