Fix user_data context setting in StoreService

This commit is contained in:
Gabriel Luiz Freitas Almeida 2023-11-13 14:58:24 -03:00
commit bc9f3f20d8

View file

@ -30,15 +30,14 @@ user_data_var: ContextVar[Optional[Dict[str, Any]]] = ContextVar(
def user_data_context(store_service: "StoreService", api_key: Optional[str] = None): def user_data_context(store_service: "StoreService", api_key: Optional[str] = None):
# Fetch and set user data to the context variable # Fetch and set user data to the context variable
if api_key: if api_key:
user_data = None
try: try:
user_data = store_service._get( user_data = store_service._get(
f"{store_service.base_url}/users/me", api_key, params={"fields": "id"} f"{store_service.base_url}/users/me", api_key, params={"fields": "id"}
) )
user_data_var.set(user_data)
except HTTPStatusError as exc: except HTTPStatusError as exc:
if exc.response.status_code == 403: if exc.response.status_code == 403:
raise ValueError("Invalid API key") raise ValueError("Invalid API key")
user_data_var.set(user_data)
try: try:
yield yield
finally: finally:
@ -268,6 +267,8 @@ class StoreService(Service):
if filter_by_user and api_key: if filter_by_user and api_key:
user_data = user_data_var.get() user_data = user_data_var.get()
# params["filter"] = json.dumps({"user_created": {"_eq": user_data["id"]}}) # params["filter"] = json.dumps({"user_created": {"_eq": user_data["id"]}})
if not user_data:
raise ValueError("No user data")
filter_conditions.append({"user_created": {"_eq": user_data["id"]}}) filter_conditions.append({"user_created": {"_eq": user_data["id"]}})
else: else:
filter_conditions.append({"status": {"_in": ["public", "Public"]}}) filter_conditions.append({"status": {"_in": ["public", "Public"]}})
@ -290,6 +291,8 @@ class StoreService(Service):
# filter should be "id is in component_ids AND liked_by directus_users_id token is api_key" # filter should be "id is in component_ids AND liked_by directus_users_id token is api_key"
# return the ids # return the ids
user_data = user_data_var.get() user_data = user_data_var.get()
if not user_data:
raise ValueError("No user data")
params = { params = {
"fields": "id", "fields": "id",
"filter": json.dumps( "filter": json.dumps(
@ -309,6 +312,8 @@ class StoreService(Service):
self, component_ids: List[UUID], api_key: str self, component_ids: List[UUID], api_key: str
): ):
user_data = user_data_var.get() user_data = user_data_var.get()
if not user_data:
raise ValueError("No user data")
params = { params = {
"fields": "id", "fields": "id",
"filter": json.dumps( "filter": json.dumps(