b536d2d35e1d — Adam Taylor a month ago
Fixing the handling of user models that have a UUID primary key
1 files changed, 5 insertions(+), 1 deletions(-)

M impersonate/views.py
M impersonate/views.py +5 -1
@@ 1,6 1,7 @@ 
 # -*- coding: utf-8 -*-
 import logging
 from datetime import datetime, timezone
+from uuid import UUID
 
 from django.db.models import Q
 from django.http import Http404

          
@@ 40,7 41,10 @@ def impersonate(request, uid):
         logger.error(f'views/impersonate: Invalid value for uid given: {uid}')
         raise Http404('Invalid value given.')
     if check_allow_for_user(request, new_user):
-        request.session['_impersonate'] = new_user.pk
+        if isinstance(new_user.pk, UUID):
+            request.session['_impersonate'] = str(new_user.pk)
+        else:
+            request.session['_impersonate'] = new_user.pk
         request.session['_impersonate_start'] = datetime.now(
             tz=timezone.utc
         ).timestamp()