Skip to content

Commit af7e3c8

Browse files
committed
fix bug in subscription_id
1 parent 28071b9 commit af7e3c8

File tree

3 files changed

+44
-21
lines changed

3 files changed

+44
-21
lines changed

Diff for: apps/forum/serializers/post_serializers.py

+17-7
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,14 @@ class Meta:
135135
"created_at",
136136
"updated_at",
137137
)
138-
read_only_fields = ("view_count", "answer_count", "is_answered", "is_closed", "asked_by", "slug")
138+
read_only_fields = (
139+
"view_count",
140+
"answer_count",
141+
"is_answered",
142+
"is_closed",
143+
"asked_by",
144+
"slug",
145+
)
139146

140147
def get_asked_by(self, obj) -> str:
141148
return obj.post.user.username
@@ -201,12 +208,15 @@ class Meta(BaseQuestionSerializer.Meta):
201208
fields = "__all__"
202209

203210
def get_subscription_id(self, obj) -> str:
204-
user = self.context["request"].user
205-
content_type = ContentType.objects.get(model="question")
206-
subscription = Subscription.objects.filter(
207-
user=user, target_content_type=content_type, target_object_id=obj.id
208-
).first()
209-
return subscription.id if subscription else ""
211+
request = self.context.get("request")
212+
if request and hasattr(request, "user"):
213+
user = self.context["request"].user
214+
content_type = ContentType.objects.get(model="question")
215+
subscription = Subscription.objects.filter(
216+
user=user, target_content_type=content_type, target_object_id=obj.id
217+
).first()
218+
return subscription.id if subscription else ""
219+
return ""
210220

211221

212222
class BookmarkedPostSerializer(BaseQuestionSerializer):

Diff for: apps/notifications/serializers/notification_serializers.py

+13-7
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ class SubscriptionSerializer(serializers.ModelSerializer):
1313
"""
1414

1515
target_content_type = serializers.SlugRelatedField(
16-
slug_field="model", queryset=ContentType.objects.filter(model__in=("question", "answer", "resource"))
16+
slug_field="model",
17+
queryset=ContentType.objects.filter(model__in=("question", "answer", "resource")),
1718
)
1819
target_object_id = serializers.UUIDField()
1920
target = serializers.SerializerMethodField()
@@ -99,9 +100,14 @@ def get_subscription_id(self, obj) -> str:
99100
"""
100101
Returns the subscription ID for the notification.
101102
"""
102-
user = self.context["request"].user
103-
target_content_type = ContentType.objects.get_for_model(obj.target)
104-
subscription = Subscription.objects.filter(
105-
user=user, target_content_type=target_content_type, target_object_id=obj.target_object_id
106-
).first()
107-
return subscription.id if subscription else ""
103+
request = self.context.get("request")
104+
if request and hasattr(request, "user"):
105+
user = self.context["request"].user
106+
target_content_type = ContentType.objects.get_for_model(obj.target)
107+
subscription = Subscription.objects.filter(
108+
user=user,
109+
target_content_type=target_content_type,
110+
target_object_id=obj.target_object_id,
111+
).first()
112+
return subscription.id if subscription else ""
113+
return ""

Diff for: apps/resources/serializers/resource_serializers.py

+14-7
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,11 @@
77
from apps.forum.models import Tag
88
from apps.notifications.models.notification_models import Subscription
99
from apps.resources.constants import ResourceConstants
10-
from apps.resources.models.resource_models import Resource, ResourceCategory, ResourceFile
10+
from apps.resources.models.resource_models import (
11+
Resource,
12+
ResourceCategory,
13+
ResourceFile,
14+
)
1115

1216

1317
class ResourceFileSerializer(serializers.ModelSerializer):
@@ -79,12 +83,15 @@ def get_is_bookmarked(self, obj) -> bool:
7983
return False
8084

8185
def get_subscription_id(self, obj) -> str:
82-
user = self.context["request"].user
83-
content_type = ContentType.objects.get(model="resource")
84-
subscription = Subscription.objects.filter(
85-
user=user, target_content_type=content_type, target_object_id=obj.id
86-
).first()
87-
return subscription.id if subscription else ""
86+
request = self.context.get("request")
87+
if request and hasattr(request, "user"):
88+
user = self.context["request"].user
89+
content_type = ContentType.objects.get(model="resource")
90+
subscription = Subscription.objects.filter(
91+
user=user, target_content_type=content_type, target_object_id=obj.id
92+
).first()
93+
return subscription.id if subscription else ""
94+
return ""
8895

8996
def create(self, validated_data):
9097
tags_data = validated_data.pop("tags")

0 commit comments

Comments
 (0)