Coverage for /Users/davegaeddert/Development/dropseed/plain/plain-staff/plain/staff/impersonate/views.py: 53%

15 statements  

« prev     ^ index     » next       coverage.py v7.6.1, created at 2024-10-16 22:04 -0500

1from plain.http import ResponseForbidden, ResponseRedirect 

2from plain.views import View 

3 

4from .permissions import can_be_impersonator 

5 

6IMPERSONATE_KEY = "impersonate" 

7 

8 

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", "/")) 

16 

17 return ResponseForbidden() 

18 

19 

20class ImpersonateStopView(View): 

21 def get(self): 

22 self.request.session.pop(IMPERSONATE_KEY) 

23 return ResponseRedirect(self.request.GET.get("next", "/"))