Improved get_queryset methods on project api resources.

Attaching stars count to querysets.
remotes/origin/enhancement/email-actions
Andrey Antukh 2014-05-28 18:28:29 +02:00
parent 1531dcea02
commit 4a4fb30779
1 changed files with 10 additions and 9 deletions

View File

@ -44,13 +44,14 @@ from . import stars
class ProjectAdminViewSet(ModelCrudViewSet):
model = models.Project
serializer_class = serializers.ProjectDetailSerializer
list_serializer_class = serializers.ProjectSerializer
permission_classes = (IsAuthenticated, permissions.ProjectAdminPermission)
def get_queryset(self):
return models.Project.objects.all()
qs = models.Project.objects.all()
qs = stars.attach_startscount_to_queryset(qs)
return qs
def pre_save(self, obj):
if not obj.id:
@ -64,11 +65,17 @@ class ProjectAdminViewSet(ModelCrudViewSet):
class ProjectViewSet(ModelCrudViewSet):
model = models.Project
serializer_class = serializers.ProjectDetailSerializer
list_serializer_class = serializers.ProjectSerializer
permission_classes = (IsAuthenticated, permissions.ProjectPermission)
def get_queryset(self):
qs = models.Project.objects.all()
qs = stars.attach_startscount_to_queryset(qs)
qs = qs.filter(Q(owner=self.request.user) |
Q(members=self.request.user))
return qs.distinct()
@detail_route(methods=['get'])
def stats(self, request, pk=None):
project = self.get_object()
@ -101,12 +108,6 @@ class ProjectViewSet(ModelCrudViewSet):
project = self.get_object()
return Response(services.get_all_tags(project))
def get_queryset(self):
qs = super().get_queryset()
qs = qs.filter(Q(owner=self.request.user) |
Q(members=self.request.user))
return qs.distinct()
def pre_save(self, obj):
if not obj.id:
obj.owner = self.request.user