Skip to content

Commit 34ba902

Browse files
committed
fixing user.projcts.[role] at /auth/user/{id} route
1 parent ea4c86e commit 34ba902

3 files changed

Lines changed: 19 additions & 9 deletions

File tree

projects/managers.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,16 @@
44
User = get_user_model()
55

66

7+
class CollaboratorManager(Manager):
8+
def get_draft_projects_for_user(self):
9+
return (
10+
super()
11+
.get_queryset()
12+
.select_related("project")
13+
.filter(project__is_draft=True)
14+
)
15+
16+
717
class ProjectManager(Manager):
818
def get_projects_for_list_view(self):
919
return self.get_queryset().filter(draft=False)

projects/models.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from files.models import UserFile
1010
from industries.models import Industry
1111
from projects.constants import VERBOSE_STEPS
12-
from projects.managers import AchievementManager, ProjectManager
12+
from projects.managers import AchievementManager, CollaboratorManager, ProjectManager
1313
from users.models import CustomUser
1414

1515
User = get_user_model()
@@ -215,6 +215,8 @@ class Collaborator(models.Model):
215215
verbose_name="Дата изменения", null=False, auto_now=True
216216
)
217217

218+
objects = CollaboratorManager()
219+
218220
class Meta:
219221
verbose_name = "Коллаборатор"
220222
verbose_name_plural = "Коллабораторы"

users/serializers.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
from core.services import get_views_count
66
from core.utils import get_user_online_cache_key
77
from projects.models import Project
8-
from projects.serializers import CollaboratorSerializer
98
from .models import CustomUser, Expert, Investor, Member, Mentor, UserAchievement
109

1110

@@ -90,17 +89,13 @@ class UserDetailSerializer(serializers.ModelSerializer):
9089
is_online = serializers.SerializerMethodField()
9190
projects = serializers.SerializerMethodField()
9291

93-
@classmethod
94-
def get_projects(cls, user: CustomUser):
92+
def get_projects(self, user: CustomUser):
9593
return UserProjectsSerializer(
9694
[
9795
collab.project
98-
for collab in user.collaborations.select_related("project").filter(
99-
project__is_draft=False
100-
)
101-
# TODO: put this in user collaborations manager or something
96+
for collab in user.collaborations.filter(project__draft=False)
10297
],
103-
context={"request": cls.context.get("request")},
98+
context={"request": self.context.get("request")},
10499
many=True,
105100
).data
106101

@@ -222,6 +217,9 @@ class UserProjectsSerializer(serializers.ModelSerializer):
222217

223218
@classmethod
224219
def get_collaborator(cls, project):
220+
# TODO: fix me, import in a functon
221+
from projects.serializers import CollaboratorSerializer
222+
225223
user = cls.context.get("request").user
226224

227225
return CollaboratorSerializer(

0 commit comments

Comments
 (0)