|
4 | 4 | from django.shortcuts import redirect |
5 | 5 | from django.template.response import TemplateResponse |
6 | 6 | from django.urls import reverse |
7 | | -from django.views.generic import FormView |
| 7 | +from django.views.generic import FormView, TemplateView |
8 | 8 |
|
9 | 9 | from benefits.core.models.transit import TransitAgency |
10 | 10 | from benefits.core import models, session |
@@ -126,15 +126,20 @@ def get_origin_url(self): |
126 | 126 | return reverse(routes.ADMIN_INDEX) |
127 | 127 |
|
128 | 128 |
|
129 | | -def server_error(request): |
| 129 | +class ServerErrorView(mixins.CommonContextMixin, AgencySessionRequiredMixin, TemplateView): |
130 | 130 | """View handler for errors caused by a misconfiguration or bad request.""" |
131 | | - agency = session.agency(request) |
132 | | - context = { |
133 | | - **admin_site.each_context(request), |
134 | | - "title": f"{agency.long_name} | In-person enrollment | {admin_site.site_title}", |
135 | | - } |
136 | 131 |
|
137 | | - return TemplateResponse(request, "in_person/enrollment/server_error.html", context) |
| 132 | + template_name = "in_person/enrollment/server_error.html" |
| 133 | + |
| 134 | + def get(self, request, *args, **kwargs): |
| 135 | + return super().get(request, *args, **kwargs) |
| 136 | + |
| 137 | + def post(self, request, *args, **kwargs): |
| 138 | + # the Javascript in in_person/index_littlepay.html sends a form POST to this view |
| 139 | + # rather than implementing this view as a FormView, which requires instantiating the |
| 140 | + # enrollment.forms.CardTokenizeFailForm, we implement post() to simply return the template via get() |
| 141 | + # we thus avoid interfering with the view's lifecycle and dispatch() method |
| 142 | + return super().get(request, *args, **kwargs) |
138 | 143 |
|
139 | 144 |
|
140 | 145 | def success(request): |
|
0 commit comments