aboutsummaryrefslogtreecommitdiff
path: root/middleware
diff options
context:
space:
mode:
authorBobby <[email protected]>2023-06-02 15:17:30 -0400
committerBobby <[email protected]>2023-06-02 15:17:30 -0400
commit1ac450ad7db8d75b77037158ef4e80bc810a8573 (patch)
treeed70bb68417ac7e38029ab06d5320b4d1b97a60b /middleware
parentf3c455d198ef5aaed09efd7b197bc815f183f7b9 (diff)
downloadthatcomputerscientist-1ac450ad7db8d75b77037158ef4e80bc810a8573.tar.xz
thatcomputerscientist-1ac450ad7db8d75b77037158ef4e80bc810a8573.zip
Try Fix: User information
Diffstat (limited to 'middleware')
-rw-r--r--middleware/uuidmiddleware.py77
1 files changed, 41 insertions, 36 deletions
diff --git a/middleware/uuidmiddleware.py b/middleware/uuidmiddleware.py
index 3348f95d..84e29722 100644
--- a/middleware/uuidmiddleware.py
+++ b/middleware/uuidmiddleware.py
@@ -1,7 +1,7 @@
import uuid
-
-from django.conf import settings
-from django.core.cache import cache
+import redis
+import json
+redis_instance = redis.StrictRedis(host='localhost', port=6379, db=0)
class UserUUIDMiddleware:
@@ -25,45 +25,50 @@ def userTrackingContextProcessor(request):
# get the user's uuid from the cookie
user_uuid = request.COOKIES.get('user_uuid')
-
- print(user_uuid)
-
- return {
- 'anonymous_users': 0,
+ invalid_response = {
+ 'anonymous_users': 1,
'logged_in_users':0,
'admin_users': 0,
}
- # if user_uuid:
- # # get the user's permissions
- # is_authenticated = request.user.is_authenticated
- # is_staff = request.user.is_staff
+ if not user_uuid:
+ return invalid_response
+
+ # see if we can connect to redis
+ try:
+ redis_instance.ping()
+ print('connected to redis')
+ except redis.exceptions.ConnectionError:
+ return invalid_response
+
+ user_data = {
+ '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
+ redis_instance.set(f"presence_{user_uuid}", json.dumps(user_data), ex=300)
- # # get all online users
- # online_now = cache.keys('presence_*')
+ # get all online users
+ online_now = redis_instance.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)
+ for user in online_now:
+ user_data = redis_instance.get(user)
+ user_data = json.loads(user_data)
+ 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)
- # return {
- # 'anonymous_users': len(anonymous_users),
- # 'logged_in_users': len(logged_in_users),
- # 'admin_users': len(admin_users),
- # }
+ return {
+ 'anonymous_users': len(anonymous_users),
+ 'logged_in_users': len(logged_in_users),
+ 'admin_users': len(admin_users),
+ }