Source code for request_form.views.views
from django.urls import reverse_lazy
from django.views.generic.base import TemplateView
from django.views.generic.edit import FormView
from ..forms import RequestForm
from ..models import RequestModel
from ..utils.network import get_user_ip_address
[docs]
class RequestFormView(FormView):
"""
The Request form view.
When a request submit succeed, response is a redirection to ``RequestSuccessView``.
"""
template_name = "request_form/request/form.html"
model = RequestModel
form_class = RequestForm
success_url = reverse_lazy("request_form:request-success")
[docs]
def form_valid(self, form):
# NOTE: May not be the best place, get_user_ip_address may be part of form
# instead
form.instance.ip_address = get_user_ip_address(request=self.request)
form.save()
return super().form_valid(form)
[docs]
def post(self, request, *args, **kwargs):
form = self.get_form()
if not form.is_valid():
return self.form_invalid(form)
return self.form_valid(form)
[docs]
class RequestSuccessView(TemplateView):
"""
Basic template view to respond to form submit success.
"""
template_name = "request_form/request/form_success.html"