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
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)
|
|
|