Coverage for /Users/davegaeddert/Developer/dropseed/plain/plain-staff/plain/staff/impersonate/views.py: 53%
15 statements
« prev ^ index » next coverage.py v7.6.9, created at 2024-12-23 11:16 -0600
« prev ^ index » next coverage.py v7.6.9, created at 2024-12-23 11:16 -0600
1from plain.http import ResponseForbidden, ResponseRedirect
2from plain.views import View
4from .permissions import can_be_impersonator
6IMPERSONATE_KEY = "impersonate"
9class ImpersonateStartView(View):
10 def get(self):
11 # We *could* already be impersonating, so need to consider that
12 impersonator = getattr(self.request, "impersonator", self.request.user)
13 if impersonator and can_be_impersonator(impersonator):
14 self.request.session[IMPERSONATE_KEY] = self.url_kwargs["pk"]
15 return ResponseRedirect(self.request.GET.get("next", "/"))
17 return ResponseForbidden()
20class ImpersonateStopView(View):
21 def get(self):
22 self.request.session.pop(IMPERSONATE_KEY)
23 return ResponseRedirect(self.request.GET.get("next", "/"))