Skip to content

Commit

Permalink
Merge pull request #56 from PROCOLLAB-github/dev
Browse files Browse the repository at this point in the history
Add /auth/users/drafts/ route
  • Loading branch information
Yakser authored Nov 19, 2022
2 parents 54fc7dc + b76f964 commit 5c9a0f6
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 1 deletion.
1 change: 1 addition & 0 deletions projects/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ class ProjectAdmin(admin.ModelAdmin):
list_display = (
"id",
"name",
"draft",
)
list_display_links = (
"id",
Expand Down
17 changes: 17 additions & 0 deletions projects/managers.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,23 @@ def get_projects_for_list_view(self):
)
)

def get_projects_for_user_drafts_view(self):
return (
self.get_queryset()
.filter(draft=True)
.prefetch_related(
Prefetch(
"industry",
queryset=Industry.objects.only("name").all(),
),
Prefetch(
"leader",
queryset=CustomUser.objects.only("id").all(),
),
Prefetch("collaborator_set"),
)
)

def get_projects_for_detail_view(self):
return (
self.get_queryset().prefetch_related("achievements", "collaborator_set").all()
Expand Down
1 change: 0 additions & 1 deletion users/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,6 @@ class CustomUser(AbstractUser):
city = models.CharField(max_length=255, null=True, blank=True)
organization = models.CharField(max_length=255, null=True, blank=True)
speciality = models.CharField(max_length=255, null=True, blank=True)

datetime_updated = models.DateTimeField(null=False, auto_now=True)
datetime_created = models.DateTimeField(null=False, auto_now_add=True)

Expand Down
2 changes: 2 additions & 0 deletions users/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
SpecialistsList,
UserAdditionalRolesView,
UserDetail,
UserDraftsList,
UserList,
UserTypesView,
VerifyEmail,
Expand All @@ -21,6 +22,7 @@
"specialists/", SpecialistsList.as_view()
), # this url actually returns mentors, experts and investors
path("users/", UserList.as_view()),
path("users/drafts/", UserDraftsList.as_view()),
path("users/roles/", UserAdditionalRolesView.as_view()),
path("users/types/", UserTypesView.as_view()),
path("users/<int:pk>/", UserDetail.as_view()),
Expand Down
17 changes: 17 additions & 0 deletions users/views.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from datetime import datetime

import jwt
from django.apps import apps
from django.conf import settings
from django.contrib.auth import get_user_model
from django.contrib.sites.shortcuts import get_current_site
Expand All @@ -23,6 +24,7 @@

from core.permissions import IsOwnerOrReadOnly
from core.utils import Email
from projects.serializers import ProjectListSerializer
from users.helpers import VERBOSE_ROLE_TYPES, VERBOSE_USER_TYPES
from users.models import UserAchievement
from users.permissions import IsAchievementOwnerOrReadOnly
Expand All @@ -35,9 +37,11 @@
UserListSerializer,
VerifyEmailSerializer,
)

from .filters import UserFilter

User = get_user_model()
Project = apps.get_model("projects", "Project")


class UserList(ListCreateAPIView):
Expand Down Expand Up @@ -309,3 +313,16 @@ class AchievementDetail(RetrieveUpdateDestroyAPIView):
queryset = UserAchievement.objects.get_achievements_for_detail_view()
serializer_class = AchievementDetailSerializer
permission_classes = [IsAchievementOwnerOrReadOnly]


class UserDraftsList(APIView):
permission_classes = [IsAuthenticated]

def get(self, request):
serializer = ProjectListSerializer(
Project.objects.get_projects_for_user_drafts_view().filter(
leader=self.request.user
),
many=True,
)
return Response(serializer.data, status=status.HTTP_200_OK)

0 comments on commit 5c9a0f6

Please sign in to comment.