remove test, queryset on /project ok

This commit is contained in:
yann 2025-06-06 15:52:44 +02:00
parent b8ad1961d1
commit e8c62e9a83
2 changed files with 22 additions and 26 deletions

View File

@ -57,6 +57,12 @@ class ProjectDetailSerializer(ModelSerializer):
return serializer.data return serializer.data
class IssueListSerializer(ModelSerializer):
class Meta:
model = Issue
fields = ['id', 'title']
class IssueSerializer(ModelSerializer): class IssueSerializer(ModelSerializer):
author = StringRelatedField(many=False) author = StringRelatedField(many=False)
@ -84,15 +90,16 @@ class IssueDetailSerializer(ModelSerializer):
class CommentListSerializer(ModelSerializer): class CommentListSerializer(ModelSerializer):
issue = IssueListSerializer(many=False)
issue = IssueSerializer(many=False) author = StringRelatedField(many=False)
class Meta: class Meta:
model = Comment model = Comment
fields = ['title', 'date_created', 'author', 'issue'] fields = ['id', 'title', 'date_created', 'author', 'issue']
class CommentDetailSerializer(ModelSerializer): class CommentDetailSerializer(ModelSerializer):
author = StringRelatedField(many=False)
class Meta: class Meta:
model = Comment model = Comment

View File

@ -7,6 +7,7 @@ from support.serializers import (ProjectSerializer,
ContributorListSerializer, ContributorListSerializer,
IssueSerializer, IssueSerializer,
IssueDetailSerializer, IssueDetailSerializer,
IssueListSerializer,
CommentListSerializer, CommentListSerializer,
CommentDetailSerializer) CommentDetailSerializer)
from authentication.serializers import UserListSerializer from authentication.serializers import UserListSerializer
@ -16,14 +17,13 @@ from rest_framework.permissions import (IsAuthenticated,
IsAuthenticatedOrReadOnly) IsAuthenticatedOrReadOnly)
from support.permissions import IsAuthor, IsContributor from support.permissions import IsAuthor, IsContributor
from rest_framework.decorators import action from rest_framework.decorators import action
from django.core.exceptions import PermissionDenied from django.core.exceptions import PermissionDenied, ObjectDoesNotExist
class ProjectViewSet(ModelViewSet): class ProjectViewSet(ModelViewSet):
permission_classes = [IsAuthenticatedOrReadOnly] permission_classes = [IsAuthenticatedOrReadOnly]
serializer_class = ProjectSerializer serializer_class = ProjectSerializer
detail_serializer_class = ProjectDetailSerializer detail_serializer_class = ProjectDetailSerializer
queryset = Project.objects.filter(active=True)
def get_queryset(self): def get_queryset(self):
@ -35,17 +35,17 @@ class ProjectViewSet(ModelViewSet):
try: try:
user = User.objects.get(username=requested_contributor) user = User.objects.get(username=requested_contributor)
return Project.objects.filter(contributors=user) return Project.objects.filter(contributors=user)
except User.DoesNotExist: except:
return Response(f"{requested_contributor} doesn't exist", return User.objects.filter(username=requested_contributor)
status=status.HTTP_404_NOT_FOUND)
if self.request.GET.get('author'): if self.request.GET.get('author'):
requested_author = self.request.GET.get('author') requested_author = self.request.GET.get('author')
try: try:
user = User.objects.get(username=requested_author) user = User.objects.get(username=requested_author)
return Project.objects.filter(author=user) return Project.objects.filter(author=user)
except User.DoesNotExist: except:
return Response(f"{requested_author} doesn't exist", return User.objects.filter(username=requested_author)
status=status.HTTP_404_NOT_FOUND) return Project.objects.filter(active=True)
def retrieve(self, request, *args, **kwargs): def retrieve(self, request, *args, **kwargs):
""" """
@ -78,16 +78,6 @@ class ProjectViewSet(ModelViewSet):
if contributor_serializer.is_valid(): if contributor_serializer.is_valid():
contributor_serializer.save() contributor_serializer.save()
@action(detail=False, methods=['get'])
def test(self, request):
requested_user = self.request.GET.get('author')
try:
user = User.objects.get(username=requested_user)
return Response(UserListSerializer(user).data)
except:
return Response(f"{requested_user} isn't a valid user")
@action(detail=True, methods=['patch'], permission_classes=[IsContributor]) @action(detail=True, methods=['patch'], permission_classes=[IsContributor])
def contributor(self, request, pk): def contributor(self, request, pk):
"""Add a contributor to a project """Add a contributor to a project
@ -109,7 +99,8 @@ class ProjectViewSet(ModelViewSet):
return Response(f"User {contributor} " return Response(f"User {contributor} "
f"added to project {project}", f"added to project {project}",
status=status.HTTP_202_ACCEPTED) status=status.HTTP_202_ACCEPTED)
return Response("This user is already contributing", response = {'message': 'This user is already contributing'}
return Response(response,
status=status.HTTP_226_IM_USED) status=status.HTTP_226_IM_USED)
@ -203,7 +194,6 @@ class CommentViewSet(ModelViewSet):
return Comment.objects.filter(issue=issue_id) return Comment.objects.filter(issue=issue_id)
#or returns those from projects where requestor is contributing #or returns those from projects where requestor is contributing
projects = Project.objects.filter(contributors=self.request.user).values('id') projects = Project.objects.filter(contributors=self.request.user).values('id')
print(projects)
issues = Issue.objects.filter(project__in=projects) issues = Issue.objects.filter(project__in=projects)
return Comment.objects.filter(issue__in=issues) return Comment.objects.filter(issue__in=issues)
@ -213,14 +203,13 @@ class CommentViewSet(ModelViewSet):
return super().get_serializer_class() return super().get_serializer_class()
def create(self, request, *args, **kwargs): def create(self, request, *args, **kwargs):
user = request.user user = User.objects.get(username=request.user)
issue = Issue.objects.get(id=request.data['issue']) issue = Issue.objects.get(id=request.data['issue'])
project = issue.project project = issue.project
if issue.project.contributors.filter(username=request.user.username): if issue.project.contributors.filter(username=request.user.username):
serializer = CommentDetailSerializer(data=request.data) serializer = CommentDetailSerializer(data=request.data)
if serializer.is_valid(raise_exception=True): if serializer.is_valid(raise_exception=True):
#serializer.author = request.user.username serializer.save(author=user)
serializer.save(author=request.user.username)
response = {"message": "comment created", response = {"message": "comment created",
"data": serializer.data} "data": serializer.data}
return Response(response, status=status.HTTP_201_CREATED) return Response(response, status=status.HTTP_201_CREATED)