You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

68 lines
2.7 KiB

from django.shortcuts import render, redirect
from django.views import View
from django.contrib.auth.mixins import LoginRequiredMixin
from .models import Survey
from django.contrib import messages
from .tips import TIPS_MAPPING # Assuming this is where you store your tips
class SurveyView(View):
template_name = 'survey/survey_form.html'
success_template = 'survey/survey_tips.html'
def get(self, request):
"""
Render the survey form. No login required for viewing the form.
"""
return render(request, self.template_name)
def post(self, request):
"""
Process the survey form and generate tips. Login is required for submitting the form.
"""
if not request.user.is_authenticated:
messages.error(request, "You must be logged in to submit the survey.")
return render(request, self.template_name)
# Extract data from the form
data = {
'user': request.user,
'water_usage': request.POST.get('dailyWaterUsage'),
'daily_consumption_awareness': request.POST.get('householdWater'),
'dripping_tap_wastage': request.POST.get('drippingTap'),
'brushing_habits': request.POST.get('tapWhileBrushing'),
'fix_leaks': request.POST.get('fixLeaks'),
'reuse_water': request.POST.get('reuseWater'),
'water_saving_appliances': request.POST.get('waterAppliances'),
'biggest_cause_of_wastage': request.POST.get('waterWastageCause'),
'resources_needed': request.POST.get('conservationResources'),
'additional_suggestions': request.POST.get('conservationSuggestions'),
}
try:
# Generate tips
tips = [
TIPS_MAPPING['water_usage'].get(data['water_usage'], ""),
TIPS_MAPPING['dripping_tap_wastage'].get(data['dripping_tap_wastage'], ""),
TIPS_MAPPING['reuse_water'].get(data['reuse_water'], ""),
TIPS_MAPPING['water_saving_appliances'].get(data['water_saving_appliances'], ""),
]
# Remove empty tips
tips = [tip for tip in tips if tip]
# Save survey
survey = Survey.objects.create(**data)
# Render success template with tips
context = {'survey': survey, 'tips': tips}
return render(request, self.success_template, context)
except Exception as e:
messages.error(request, f"Error: {str(e)}")
return render(request, self.template_name, {'data': data})
def index(request):
context = {
}
return render(request, 'survey/index.html', context)