aboutsummaryrefslogtreecommitdiff
path: root/middleware
diff options
context:
space:
mode:
authorBobby <[email protected]>2023-05-31 18:53:08 -0400
committerBobby <[email protected]>2023-05-31 18:53:08 -0400
commit45c8cb187666ca8f3d1bb1d097971f96fb8310cf (patch)
tree1bc531c1728291a4fed8eec5c2b7e8f1e1b8cef5 /middleware
parent7f97aec8917109a3e7f357e98507dde197f2968d (diff)
downloadthatcomputerscientist-45c8cb187666ca8f3d1bb1d097971f96fb8310cf.tar.xz
thatcomputerscientist-45c8cb187666ca8f3d1bb1d097971f96fb8310cf.zip
Fix: Online Users Broken
Diffstat (limited to 'middleware')
-rw-r--r--middleware/uuidmiddleware.py64
1 files changed, 35 insertions, 29 deletions
diff --git a/middleware/uuidmiddleware.py b/middleware/uuidmiddleware.py
index 626f0a4b..59e6d4d4 100644
--- a/middleware/uuidmiddleware.py
+++ b/middleware/uuidmiddleware.py
@@ -26,39 +26,45 @@ def userTrackingContextProcessor(request):
# get the user's uuid from the cookie
user_uuid = request.COOKIES.get('user_uuid')
- # get the user's permissions
- is_authenticated = request.user.is_authenticated
- is_staff = request.user.is_staff
+ if user_uuid:
+ # get the user's permissions
+ is_authenticated = request.user.is_authenticated
+ is_staff = request.user.is_staff
- # refresh online users every 300 seconds, with auto deleting expired keys
- cache.set(f"presence_{user_uuid}", {
- 'is_authenticated': is_authenticated,
- 'is_staff': is_staff,
- }, 300)
+ # refresh online users every 300 seconds, with auto deleting expired keys
+ cache.set(f"presence_{user_uuid}", {
+ 'is_authenticated': is_authenticated,
+ 'is_staff': is_staff,
+ }, 300)
- # get all online users
- online_now = cache.keys('presence_*')
+ # get all online users
+ online_now = cache.keys('presence_*')
- # separate online users into anonymous, logged in, and admin users
- anonymous_users = []
- logged_in_users = []
- admin_users = []
+ # separate online users into anonymous, logged in, and admin users
+ anonymous_users = []
+ logged_in_users = []
+ admin_users = []
- for user in online_now:
- user_data = cache.get(user)
- if user_data['is_authenticated'] == False and user_data['is_staff'] == False:
- anonymous_users.append(user_data)
- elif user_data['is_authenticated'] == True and user_data['is_staff'] == False:
- logged_in_users.append(user_data)
- if user_data['is_staff'] == True:
- admin_users.append(user_data)
-
- # it looks like in production, the anonymous users is 1 more than expected
- if not settings.DEBUG:
- anonymous_users = anonymous_users[:-1]
+ for user in online_now:
+ user_data = cache.get(user)
+ if user_data['is_authenticated'] == False and user_data['is_staff'] == False:
+ anonymous_users.append(user_data)
+ elif user_data['is_authenticated'] == True and user_data['is_staff'] == False:
+ logged_in_users.append(user_data)
+ if user_data['is_staff'] == True:
+ admin_users.append(user_data)
+
+ # it looks like in production, the anonymous users is 1 more than expected
+ if not settings.DEBUG:
+ anonymous_users = anonymous_users[:-1]
+ return {
+ 'anonymous_users': len(anonymous_users) or 0,
+ 'logged_in_users': len(logged_in_users) or 0,
+ 'admin_users': len(admin_users) or 0,
+ }
return {
- 'anonymous_users': len(anonymous_users) or 0,
- 'logged_in_users': len(logged_in_users) or 0,
- 'admin_users': len(admin_users) or 0,
+ 'anonymous_users': 0,
+ 'logged_in_users': 0,
+ 'admin_users': 0,
}