|
1 | 1 | import asgiref.sync
|
2 | 2 | import django.contrib.auth.mixins
|
| 3 | +import django.contrib.messages |
3 | 4 | import django.db
|
| 5 | +import django.http |
4 | 6 | import django.urls
|
5 | 7 | import django.views.generic.edit
|
6 | 8 |
|
@@ -32,6 +34,27 @@ def setup(self, request, *args, **kwargs):
|
32 | 34 | self.object.access.role.service.category.name, self.object.access.role.service.name
|
33 | 35 | )
|
34 | 36 |
|
| 37 | + def request_already_actioned(self, request): |
| 38 | + """Generate a response for the case where the request has already been actioned.""" |
| 39 | + django.contrib.messages.add_message( |
| 40 | + request, django.contrib.messages.INFO, "The request has already been approved." |
| 41 | + ) |
| 42 | + return django.http.HttpResponseRedirect( |
| 43 | + f"/services/{self.service.category.name}/{self.service.name}/requests/" |
| 44 | + ) |
| 45 | + |
| 46 | + def get(self, request, *args, **kwargs): |
| 47 | + """Override get to deal with case where request has been actioned already.""" |
| 48 | + if self.object.state != "PENDING": |
| 49 | + return self.request_already_actioned(request) |
| 50 | + return super().get(request, *args, **kwargs) |
| 51 | + |
| 52 | + def post(self, request, *args, **kwargs): |
| 53 | + """Override post to deal with case where request has been actioned already.""" |
| 54 | + if self.object.state != "PENDING": |
| 55 | + return self.request_already_actioned(request) |
| 56 | + return super().post(request, *args, **kwargs) |
| 57 | + |
35 | 58 | def test_func(self):
|
36 | 59 | """Define the test for the UserPassesTestMixin.
|
37 | 60 |
|
|
0 commit comments