Skip to content

Commit 8a8548c

Browse files
authored
Merge pull request #210 from PROCOLLAB-github/dev
Dev
2 parents aa75744 + 358599d commit 8a8548c

4 files changed

Lines changed: 11 additions & 74 deletions

File tree

projects/managers.py

Lines changed: 2 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,15 @@
11
from django.contrib.auth import get_user_model
22
from django.db.models import Manager
3-
from django.db.models import Prefetch
4-
5-
from industries.models import Industry
6-
from users.models import CustomUser
73

84
User = get_user_model()
95

106

117
class ProjectManager(Manager):
128
def get_projects_for_list_view(self):
13-
return (
14-
self.get_queryset()
15-
.filter(draft=False)
16-
.prefetch_related(
17-
Prefetch(
18-
"industry",
19-
queryset=Industry.objects.only("name").all(),
20-
),
21-
Prefetch(
22-
"leader",
23-
queryset=CustomUser.objects.only("id").all(),
24-
),
25-
"partner_program_profiles",
26-
)
27-
)
9+
return self.get_queryset().filter(draft=False)
2810

2911
def get_user_projects_for_list_view(self):
30-
return (
31-
self.get_queryset()
32-
.prefetch_related(
33-
Prefetch(
34-
"industry",
35-
queryset=Industry.objects.only("name").all(),
36-
),
37-
Prefetch(
38-
"leader",
39-
queryset=CustomUser.objects.only("id").all(),
40-
),
41-
Prefetch("collaborator_set"),
42-
)
43-
.distinct()
44-
)
12+
return self.get_queryset().distinct()
4513

4614
def get_projects_for_detail_view(self):
4715
return (
@@ -58,10 +26,6 @@ def get_projects_for_detail_view(self):
5826
def get_projects_for_count_view(self):
5927
return self.get_queryset().only("id", "leader_id")
6028

61-
def check_if_owns_any_projects(self, user) -> bool:
62-
# I don't think this should work but the function has no usages, so I'll let it be
63-
return user.leader_projects.exists()
64-
6529
def get_projects_from_list_of_ids(self, ids):
6630
return self.get_queryset().filter(id__in=ids)
6731

projects/models.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,11 @@ class Project(models.Model):
117117
objects = ProjectManager()
118118

119119
def get_short_description(self) -> Optional[str]:
120-
return self.description[:90] if self.description else None
120+
return (
121+
self.description[:90] + ("..." if len(self.description) > 90 else "")
122+
if self.description
123+
else None
124+
)
121125

122126
def get_collaborators_user_list(self) -> list[User]:
123127
return [collaborator.user for collaborator in self.collaborator_set.all()]

projects/serializers.py

Lines changed: 2 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,6 @@ class ProjectDetailSerializer(serializers.ModelSerializer):
7171
vacancies = ProjectVacancyListSerializer(many=True, read_only=True)
7272
short_description = serializers.SerializerMethodField()
7373
industry_id = serializers.IntegerField(required=False)
74-
likes_count = serializers.SerializerMethodField(method_name="count_likes")
7574
views_count = serializers.SerializerMethodField(method_name="count_views")
7675
links = serializers.SerializerMethodField()
7776
partner_programs_tags = serializers.SerializerMethodField()
@@ -95,9 +94,6 @@ def validate(self, data):
9594
def get_short_description(cls, project):
9695
return project.get_short_description()
9796

98-
def count_likes(self, project):
99-
return get_likes_count(project)
100-
10197
def count_views(self, project):
10298
return get_views_count(project)
10399

@@ -128,7 +124,6 @@ class Meta:
128124
"datetime_created",
129125
"datetime_updated",
130126
"views_count",
131-
"likes_count",
132127
"cover",
133128
"partner_programs_tags",
134129
]
@@ -141,57 +136,30 @@ class Meta:
141136

142137

143138
class ProjectListSerializer(serializers.ModelSerializer):
144-
likes_count = serializers.SerializerMethodField(method_name="count_likes")
145139
views_count = serializers.SerializerMethodField(method_name="count_views")
146-
collaborator_count = serializers.SerializerMethodField(
147-
method_name="get_collaborator_count"
148-
)
149-
vacancies = ProjectVacancyListSerializer(many=True, read_only=True)
150140
short_description = serializers.SerializerMethodField()
151-
partner_programs_tags = serializers.SerializerMethodField()
152141

153142
@classmethod
154-
def get_partner_programs_tags(cls, project):
155-
profiles_qs = project.partner_program_profiles.select_related(
156-
"partner_program"
157-
).only("partner_program__tag")
158-
return [profile.partner_program.tag for profile in profiles_qs]
159-
160-
def count_views(self, project):
143+
def count_views(cls, project):
161144
return get_views_count(project)
162145

163146
@classmethod
164147
def get_short_description(cls, project):
165148
return project.get_short_description()
166149

167-
@classmethod
168-
def get_collaborator_count(cls, obj):
169-
return len(obj.collaborator_set.all())
170-
171-
def count_likes(self, obj):
172-
return get_likes_count(obj)
173-
174150
class Meta:
175151
model = Project
176152
fields = [
177153
"id",
178154
"name",
179155
"leader",
180-
"description",
181156
"short_description",
182-
"step",
183157
"image_address",
184-
"draft",
185158
"industry",
186-
"collaborator_count",
187-
"vacancies",
188-
"datetime_created",
189-
"likes_count",
190159
"views_count",
191-
"partner_programs_tags",
192160
]
193161

194-
read_only_fields = ["leader", "views_count", "likes_count"]
162+
read_only_fields = ["leader", "views_count"]
195163

196164
def is_valid(self, *, raise_exception=False):
197165
return super().is_valid(raise_exception=raise_exception)

projects/tests.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,9 @@ def test_project_creation(self):
3030
response = self.project_list_view(request)
3131
self.assertEqual(response.status_code, 201)
3232
self.assertEqual(response.data["name"], "Test")
33-
self.assertEqual(response.data["description"], "Test")
33+
self.assertEqual(response.data["leader"], user.pk)
3434
self.assertEqual(response.data["industry"], 1)
35+
# self.assertEqual(response.data["description"], "Test")
3536

3637
def test_project_creation_with_wrong_data(self):
3738
user = self.user_create()

0 commit comments

Comments
 (0)