Skip to content

Commit 5c9a0f6

Browse files
authored
Merge pull request #56 from PROCOLLAB-github/dev
Add /auth/users/drafts/ route
2 parents 54fc7dc + b76f964 commit 5c9a0f6

5 files changed

Lines changed: 37 additions & 1 deletion

File tree

projects/admin.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ class ProjectAdmin(admin.ModelAdmin):
88
list_display = (
99
"id",
1010
"name",
11+
"draft",
1112
)
1213
list_display_links = (
1314
"id",

projects/managers.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,23 @@ def get_projects_for_list_view(self):
4141
)
4242
)
4343

44+
def get_projects_for_user_drafts_view(self):
45+
return (
46+
self.get_queryset()
47+
.filter(draft=True)
48+
.prefetch_related(
49+
Prefetch(
50+
"industry",
51+
queryset=Industry.objects.only("name").all(),
52+
),
53+
Prefetch(
54+
"leader",
55+
queryset=CustomUser.objects.only("id").all(),
56+
),
57+
Prefetch("collaborator_set"),
58+
)
59+
)
60+
4461
def get_projects_for_detail_view(self):
4562
return (
4663
self.get_queryset().prefetch_related("achievements", "collaborator_set").all()

users/models.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@ class CustomUser(AbstractUser):
7474
city = models.CharField(max_length=255, null=True, blank=True)
7575
organization = models.CharField(max_length=255, null=True, blank=True)
7676
speciality = models.CharField(max_length=255, null=True, blank=True)
77-
7877
datetime_updated = models.DateTimeField(null=False, auto_now=True)
7978
datetime_created = models.DateTimeField(null=False, auto_now_add=True)
8079

users/urls.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
SpecialistsList,
1010
UserAdditionalRolesView,
1111
UserDetail,
12+
UserDraftsList,
1213
UserList,
1314
UserTypesView,
1415
VerifyEmail,
@@ -21,6 +22,7 @@
2122
"specialists/", SpecialistsList.as_view()
2223
), # this url actually returns mentors, experts and investors
2324
path("users/", UserList.as_view()),
25+
path("users/drafts/", UserDraftsList.as_view()),
2426
path("users/roles/", UserAdditionalRolesView.as_view()),
2527
path("users/types/", UserTypesView.as_view()),
2628
path("users/<int:pk>/", UserDetail.as_view()),

users/views.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from datetime import datetime
22

33
import jwt
4+
from django.apps import apps
45
from django.conf import settings
56
from django.contrib.auth import get_user_model
67
from django.contrib.sites.shortcuts import get_current_site
@@ -23,6 +24,7 @@
2324

2425
from core.permissions import IsOwnerOrReadOnly
2526
from core.utils import Email
27+
from projects.serializers import ProjectListSerializer
2628
from users.helpers import VERBOSE_ROLE_TYPES, VERBOSE_USER_TYPES
2729
from users.models import UserAchievement
2830
from users.permissions import IsAchievementOwnerOrReadOnly
@@ -35,9 +37,11 @@
3537
UserListSerializer,
3638
VerifyEmailSerializer,
3739
)
40+
3841
from .filters import UserFilter
3942

4043
User = get_user_model()
44+
Project = apps.get_model("projects", "Project")
4145

4246

4347
class UserList(ListCreateAPIView):
@@ -309,3 +313,16 @@ class AchievementDetail(RetrieveUpdateDestroyAPIView):
309313
queryset = UserAchievement.objects.get_achievements_for_detail_view()
310314
serializer_class = AchievementDetailSerializer
311315
permission_classes = [IsAchievementOwnerOrReadOnly]
316+
317+
318+
class UserDraftsList(APIView):
319+
permission_classes = [IsAuthenticated]
320+
321+
def get(self, request):
322+
serializer = ProjectListSerializer(
323+
Project.objects.get_projects_for_user_drafts_view().filter(
324+
leader=self.request.user
325+
),
326+
many=True,
327+
)
328+
return Response(serializer.data, status=status.HTTP_200_OK)

0 commit comments

Comments
 (0)