2017-06-15 18:34:51 +00:00
|
|
|
from guardian.shortcuts import get_perms
|
2016-11-07 17:10:01 +00:00
|
|
|
from rest_framework import serializers, viewsets
|
2016-11-01 19:11:36 +00:00
|
|
|
|
2016-10-12 22:18:37 +00:00
|
|
|
from app import models
|
2016-11-01 19:11:36 +00:00
|
|
|
from .tasks import TaskIDsSerializer
|
|
|
|
|
2016-10-04 17:07:17 +00:00
|
|
|
|
2016-10-12 22:18:37 +00:00
|
|
|
class ProjectSerializer(serializers.ModelSerializer):
|
2016-11-14 21:32:05 +00:00
|
|
|
tasks = TaskIDsSerializer(many=True, read_only=True)
|
|
|
|
owner = serializers.HiddenField(
|
|
|
|
default=serializers.CurrentUserDefault()
|
|
|
|
)
|
|
|
|
created_at = serializers.ReadOnlyField()
|
2017-06-15 18:34:51 +00:00
|
|
|
permissions = serializers.SerializerMethodField()
|
|
|
|
|
|
|
|
def get_permissions(self, obj):
|
|
|
|
return list(map(lambda p: p.replace("_project", ""), get_perms(self.context['request'].user, obj)))
|
|
|
|
|
2016-10-04 17:07:17 +00:00
|
|
|
|
|
|
|
class Meta:
|
|
|
|
model = models.Project
|
2016-11-15 16:51:19 +00:00
|
|
|
exclude = ('deleting', )
|
2016-10-04 17:07:17 +00:00
|
|
|
|
|
|
|
|
|
|
|
class ProjectViewSet(viewsets.ModelViewSet):
|
|
|
|
"""
|
2016-11-17 23:51:07 +00:00
|
|
|
Project get/add/delete/update
|
|
|
|
Projects are the building blocks
|
2016-10-12 22:18:37 +00:00
|
|
|
of processing. Each project can have zero or more tasks associated with it.
|
|
|
|
Users can fine tune the permissions on projects, including whether users/groups have
|
2016-11-17 23:51:07 +00:00
|
|
|
access to view, add, change or delete them.
|
2016-10-04 17:07:17 +00:00
|
|
|
"""
|
2016-11-14 21:32:05 +00:00
|
|
|
filter_fields = ('id', 'name', 'description', 'created_at')
|
2016-10-07 23:07:47 +00:00
|
|
|
serializer_class = ProjectSerializer
|
2017-06-15 17:51:10 +00:00
|
|
|
queryset = models.Project.objects.prefetch_related('task_set').filter(deleting=False).order_by('-created_at')
|
2016-11-15 20:55:48 +00:00
|
|
|
ordering_fields = '__all__'
|