Skip to content

Commit fe36a46

Browse files
authored
Fixed user_id field for patch annotations events (cvat-ai#5834)
1 parent 73e138d commit fe36a46

File tree

2 files changed

+35
-18
lines changed

2 files changed

+35
-18
lines changed

cvat/apps/engine/utils.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ def get_rq_job_meta(request, db_obj):
161161
return {
162162
'user': {
163163
'id': getattr(request.user, "id", None),
164-
'name': getattr(request.user, "username", None),
164+
'username': getattr(request.user, "username", None),
165165
'email': getattr(request.user, "email", None),
166166
},
167167
'org_id': oid,

cvat/apps/events/handlers.py

+34-17
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from copy import deepcopy
66
from datetime import datetime, timezone
77
import traceback
8+
import rq
89

910
from rest_framework.renderers import JSONRenderer
1011
from rest_framework.views import exception_handler
@@ -64,26 +65,45 @@ def job_id(instance):
6465
except Exception:
6566
return None
6667

67-
def _get_current_user(instance):
68+
def _get_current_user(instance=None):
69+
# Try to get current user from request
70+
user = get_current_user()
71+
if user is not None:
72+
return user
73+
74+
# Try to get user from rq_job
75+
if isinstance(instance, rq.job.Job):
76+
return instance.meta.get("user", None)
77+
else:
78+
rq_job = rq.get_current_job()
79+
if rq_job:
80+
return rq_job.meta.get("user", None)
81+
6882
if isinstance(instance, User):
6983
return instance
7084

71-
if isinstance(instance, Job):
72-
return instance.segment.task.owner
73-
74-
return get_current_user()
85+
return None
7586

76-
def user_id(instance):
87+
def user_id(instance=None):
7788
current_user = _get_current_user(instance)
78-
return getattr(current_user, "id", None)
89+
if current_user is not None:
90+
return getattr(current_user, "id", None)
91+
92+
return None
7993

80-
def user_name(instance):
94+
def user_name(instance=None):
8195
current_user = _get_current_user(instance)
82-
return getattr(current_user, "username", None)
96+
if current_user is not None:
97+
return getattr(current_user, "username", None)
98+
99+
return None
83100

84-
def user_email(instance):
101+
def user_email(instance=None):
85102
current_user = _get_current_user(instance)
86-
return getattr(current_user, "email", None)
103+
if current_user is not None:
104+
return getattr(current_user, "email", None)
105+
106+
return None
87107

88108
def organization_slug(instance):
89109
if isinstance(instance, Organization):
@@ -404,12 +424,9 @@ def handle_rq_exception(rq_job, exc_type, exc_value, tb):
404424
pid = rq_job.meta.get("project_id", None)
405425
tid = rq_job.meta.get("task_id", None)
406426
jid = rq_job.meta.get("job_id", None)
407-
user_info = rq_job.meta.get("user", None)
408-
if user_info:
409-
uid = user_info.get("id", None)
410-
uname = user_info.get("name", None)
411-
uemail = user_info.get("email", None)
412-
427+
uid = user_id(rq_job)
428+
uname = user_name(rq_job)
429+
uemail = user_email(rq_job)
413430
tb_strings = traceback.format_exception(exc_type, exc_value, tb)
414431

415432
payload = {

0 commit comments

Comments
 (0)