Smallfixes in the attachment of the objects
parent
de28c23403
commit
7af3f25596
|
@ -49,7 +49,7 @@ class IssueStatusViewSet(ModelListViewSet):
|
||||||
filter_fields = ("project",)
|
filter_fields = ("project",)
|
||||||
|
|
||||||
|
|
||||||
class IssuesAttachmentViewSet(ModelCrudViewSet):
|
class IssueAttachmentViewSet(ModelCrudViewSet):
|
||||||
model = Attachment
|
model = Attachment
|
||||||
serializer_class = AttachmentSerializer
|
serializer_class = AttachmentSerializer
|
||||||
permission_classes = (IsAuthenticated, AttachmentPermission)
|
permission_classes = (IsAuthenticated, AttachmentPermission)
|
||||||
|
@ -58,14 +58,14 @@ class IssuesAttachmentViewSet(ModelCrudViewSet):
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
ct = ContentType.objects.get_for_model(models.Issue)
|
ct = ContentType.objects.get_for_model(models.Issue)
|
||||||
qs = super(IssuesAttachmentViewSet, self).get_queryset()
|
qs = super(IssueAttachmentViewSet, self).get_queryset()
|
||||||
qs = qs.filter(content_type=ct)
|
qs = qs.filter(content_type=ct)
|
||||||
return qs.distinct()
|
return qs.distinct()
|
||||||
|
|
||||||
def pre_save(self, obj):
|
def pre_save(self, obj):
|
||||||
super(IssuesAttachmentViewSet, self).pre_save(obj)
|
super(IssueAttachmentViewSet, self).pre_save(obj)
|
||||||
if not obj.id:
|
if not obj.id:
|
||||||
obj.content_type = ContentType.objects.get_for_model(Issue)
|
obj.content_type = ContentType.objects.get_for_model(models.Issue)
|
||||||
obj.owner = self.request.user
|
obj.owner = self.request.user
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@ class QuestionStatusViewSet(ModelListViewSet):
|
||||||
filter_fields = ("project",)
|
filter_fields = ("project",)
|
||||||
|
|
||||||
|
|
||||||
class QuestionsAttachmentViewSet(ModelCrudViewSet):
|
class QuestionAttachmentViewSet(ModelCrudViewSet):
|
||||||
model = Attachment
|
model = Attachment
|
||||||
serializer_class = AttachmentSerializer
|
serializer_class = AttachmentSerializer
|
||||||
permission_classes = (IsAuthenticated, AttachmentPermission)
|
permission_classes = (IsAuthenticated, AttachmentPermission)
|
||||||
|
@ -35,14 +35,14 @@ class QuestionsAttachmentViewSet(ModelCrudViewSet):
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
ct = ContentType.objects.get_for_model(models.Question)
|
ct = ContentType.objects.get_for_model(models.Question)
|
||||||
qs = super(QuestionsAttachmentViewSet, self).get_queryset()
|
qs = super(QuestionAttachmentViewSet, self).get_queryset()
|
||||||
qs = qs.filter(content_type=ct)
|
qs = qs.filter(content_type=ct)
|
||||||
return qs.distinct()
|
return qs.distinct()
|
||||||
|
|
||||||
def pre_save(self, obj):
|
def pre_save(self, obj):
|
||||||
super(QuestionsAttachmentViewSet, self).pre_save(obj)
|
super(QuestionAttachmentViewSet, self).pre_save(obj)
|
||||||
if not obj.id:
|
if not obj.id:
|
||||||
obj.content_type = ContentType.objects.get_for_model(Question)
|
obj.content_type = ContentType.objects.get_for_model(models.Question)
|
||||||
obj.owner = self.request.user
|
obj.owner = self.request.user
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@ class TaskStatusViewSet(ModelListViewSet):
|
||||||
filter_fields = ("project",)
|
filter_fields = ("project",)
|
||||||
|
|
||||||
|
|
||||||
class TasksAttachmentViewSet(ModelCrudViewSet):
|
class TaskAttachmentViewSet(ModelCrudViewSet):
|
||||||
model = Attachment
|
model = Attachment
|
||||||
serializer_class = AttachmentSerializer
|
serializer_class = AttachmentSerializer
|
||||||
permission_classes = (IsAuthenticated, AttachmentPermission,)
|
permission_classes = (IsAuthenticated, AttachmentPermission,)
|
||||||
|
@ -33,14 +33,14 @@ class TasksAttachmentViewSet(ModelCrudViewSet):
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
ct = ContentType.objects.get_for_model(models.Task)
|
ct = ContentType.objects.get_for_model(models.Task)
|
||||||
qs = super(TasksAttachmentViewSet, self).get_queryset()
|
qs = super(TaskAttachmentViewSet, self).get_queryset()
|
||||||
qs = qs.filter(content_type=ct)
|
qs = qs.filter(content_type=ct)
|
||||||
return qs.distinct()
|
return qs.distinct()
|
||||||
|
|
||||||
def pre_save(self, obj):
|
def pre_save(self, obj):
|
||||||
super(TasksAttachmentViewSet, self).pre_save(obj)
|
super(TaskAttachmentViewSet, self).pre_save(obj)
|
||||||
if not obj.id:
|
if not obj.id:
|
||||||
obj.content_type = ContentType.objects.get_for_model(Task)
|
obj.content_type = ContentType.objects.get_for_model(models.Task)
|
||||||
obj.owner = self.request.user
|
obj.owner = self.request.user
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,17 +1,22 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
from rest_framework.permissions import IsAuthenticated
|
from django.contrib.contenttypes.models import ContentType
|
||||||
|
|
||||||
import reversion
|
from rest_framework.permissions import IsAuthenticated
|
||||||
|
|
||||||
from greenmine.base import filters
|
from greenmine.base import filters
|
||||||
from greenmine.base.api import ModelCrudViewSet, ModelListViewSet
|
from greenmine.base.api import ModelCrudViewSet, ModelListViewSet
|
||||||
from greenmine.base.notifications.api import NotificationSenderMixin
|
from greenmine.base.notifications.api import NotificationSenderMixin
|
||||||
|
from greenmine.projects.permissions import AttachmentPermission
|
||||||
|
from greenmine.projects.serializers import AttachmentSerializer
|
||||||
|
from greenmine.projects.models import Attachment
|
||||||
|
|
||||||
from . import serializers
|
from . import serializers
|
||||||
from . import models
|
from . import models
|
||||||
from . import permissions
|
from . import permissions
|
||||||
|
|
||||||
|
import reversion
|
||||||
|
|
||||||
|
|
||||||
class PointsViewSet(ModelListViewSet):
|
class PointsViewSet(ModelListViewSet):
|
||||||
model = models.Points
|
model = models.Points
|
||||||
|
@ -29,6 +34,26 @@ class UserStoryStatusViewSet(ModelListViewSet):
|
||||||
filter_fields = ('project',)
|
filter_fields = ('project',)
|
||||||
|
|
||||||
|
|
||||||
|
class UserStoryAttachmentViewSet(ModelCrudViewSet):
|
||||||
|
model = Attachment
|
||||||
|
serializer_class = AttachmentSerializer
|
||||||
|
permission_classes = (IsAuthenticated, AttachmentPermission,)
|
||||||
|
filter_backends = (filters.IsProjectMemberFilterBackend,)
|
||||||
|
filter_fields = ["project", "object_id"]
|
||||||
|
|
||||||
|
def get_queryset(self):
|
||||||
|
ct = ContentType.objects.get_for_model(models.UserStory)
|
||||||
|
qs = super(UserStoryAttachmentViewSet, self).get_queryset()
|
||||||
|
qs = qs.filter(content_type=ct)
|
||||||
|
return qs.distinct()
|
||||||
|
|
||||||
|
def pre_save(self, obj):
|
||||||
|
super(UserStoryAttachmentViewSet, self).pre_save(obj)
|
||||||
|
if not obj.id:
|
||||||
|
obj.content_type = ContentType.objects.get_for_model(models.UserStory)
|
||||||
|
obj.owner = self.request.user
|
||||||
|
|
||||||
|
|
||||||
class UserStoryViewSet(NotificationSenderMixin, ModelCrudViewSet):
|
class UserStoryViewSet(NotificationSenderMixin, ModelCrudViewSet):
|
||||||
model = models.UserStory
|
model = models.UserStory
|
||||||
serializer_class = serializers.UserStorySerializer
|
serializer_class = serializers.UserStorySerializer
|
||||||
|
|
|
@ -1,32 +1,48 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
from django.core.exceptions import ImproperlyConfigured, ObjectDoesNotExist
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from django.utils.translation import ugettext as _
|
|
||||||
from django.http import Http404
|
|
||||||
|
|
||||||
from rest_framework import generics
|
|
||||||
from rest_framework import filters
|
|
||||||
from rest_framework.permissions import IsAuthenticated
|
from rest_framework.permissions import IsAuthenticated
|
||||||
|
|
||||||
from greenmine.base import api as api_views
|
|
||||||
from greenmine.base import filters
|
from greenmine.base import filters
|
||||||
|
from greenmine.base.api import ModelCrudViewSet, ModelListViewSet
|
||||||
|
from greenmine.base.notifications.api import NotificationSenderMixin
|
||||||
|
from greenmine.projects.permissions import AttachmentPermission
|
||||||
|
from greenmine.projects.serializers import AttachmentSerializer
|
||||||
|
from greenmine.projects.models import Attachment
|
||||||
|
|
||||||
from . import models
|
from . import models
|
||||||
from . import serializers
|
|
||||||
from . import permissions
|
from . import permissions
|
||||||
|
from . import serializers
|
||||||
|
|
||||||
|
|
||||||
class WikiViewSet(api_views.ModelCrudViewSet):
|
class WikiAttachmentViewSet(ModelCrudViewSet):
|
||||||
|
model = Attachment
|
||||||
|
serializer_class = AttachmentSerializer
|
||||||
|
permission_classes = (IsAuthenticated, AttachmentPermission)
|
||||||
|
filter_backends = (filters.IsProjectMemberFilterBackend,)
|
||||||
|
filter_fields = ["project", "object_id"]
|
||||||
|
|
||||||
|
def get_queryset(self):
|
||||||
|
ct = ContentType.objects.get_for_model(models.Wiki)
|
||||||
|
qs = super(WikiAttachmentViewSet, self).get_queryset()
|
||||||
|
qs = qs.filter(content_type=ct)
|
||||||
|
return qs.distinct()
|
||||||
|
|
||||||
|
def pre_save(self, obj):
|
||||||
|
super(WikiAttachmentViewSet, self).pre_save(obj)
|
||||||
|
if not obj.id:
|
||||||
|
obj.content_type = ContentType.objects.get_for_model(models.Wiki)
|
||||||
|
obj.owner = self.request.user
|
||||||
|
|
||||||
|
|
||||||
|
class WikiViewSet(ModelCrudViewSet):
|
||||||
model = models.WikiPage
|
model = models.WikiPage
|
||||||
serializer_class = serializers.WikiPageSerializer
|
serializer_class = serializers.WikiPageSerializer
|
||||||
permission_classes = (IsAuthenticated,)
|
permission_classes = (IsAuthenticated,)
|
||||||
filter_backends = (filters.IsProjectMemberFilterBackend,)
|
filter_backends = (filters.IsProjectMemberFilterBackend,)
|
||||||
filter_fields = ["project", "slug"]
|
filter_fields = ["project", "slug"]
|
||||||
|
|
||||||
def get_queryset(self):
|
|
||||||
qs = super(WikiViewSet, self).get_queryset()
|
|
||||||
return qs.filter(project__members=self.request.user)
|
|
||||||
|
|
||||||
def pre_save(self, obj):
|
def pre_save(self, obj):
|
||||||
if not obj.owner:
|
if not obj.owner:
|
||||||
obj.owner = self.request.user
|
obj.owner = self.request.user
|
||||||
|
|
|
@ -6,14 +6,14 @@ from greenmine.base.searches.api import SearchViewSet
|
||||||
from greenmine.projects.api import ProjectViewSet
|
from greenmine.projects.api import ProjectViewSet
|
||||||
from greenmine.projects.milestones.api import MilestoneViewSet
|
from greenmine.projects.milestones.api import MilestoneViewSet
|
||||||
from greenmine.projects.userstories.api import (PointsViewSet, UserStoryStatusViewSet,
|
from greenmine.projects.userstories.api import (PointsViewSet, UserStoryStatusViewSet,
|
||||||
UserStoryViewSet,)
|
UserStoryAttachmentViewSet, UserStoryViewSet,)
|
||||||
from greenmine.projects.tasks.api import TaskStatusViewSet, TaskViewSet, TasksAttachmentViewSet
|
from greenmine.projects.tasks.api import TaskStatusViewSet, TaskViewSet, TaskAttachmentViewSet
|
||||||
from greenmine.projects.issues.api import (PriorityViewSet, SeverityViewSet,
|
from greenmine.projects.issues.api import (PriorityViewSet, SeverityViewSet,
|
||||||
IssueStatusViewSet, IssueTypeViewSet,
|
IssueStatusViewSet, IssueTypeViewSet,
|
||||||
IssueViewSet, IssuesAttachmentViewSet,)
|
IssueViewSet, IssueAttachmentViewSet,)
|
||||||
from greenmine.projects.questions.api import (QuestionStatusViewSet, QuestionViewSet,
|
from greenmine.projects.questions.api import (QuestionStatusViewSet, QuestionViewSet,
|
||||||
QuestionsAttachmentViewSet,)
|
QuestionAttachmentViewSet,)
|
||||||
from greenmine.projects.wiki.api import WikiViewSet
|
from greenmine.projects.wiki.api import (WikiViewSet, WikiAttachmentViewSet,)
|
||||||
|
|
||||||
|
|
||||||
router = routers.DefaultRouter(trailing_slash=False)
|
router = routers.DefaultRouter(trailing_slash=False)
|
||||||
|
@ -35,11 +35,12 @@ router.register(r"milestones", MilestoneViewSet, base_name="milestones")
|
||||||
# greenmine.projects.userstories
|
# greenmine.projects.userstories
|
||||||
router.register(r"points", PointsViewSet, base_name="points")
|
router.register(r"points", PointsViewSet, base_name="points")
|
||||||
router.register(r"userstory-statuses", UserStoryStatusViewSet, base_name="userstory-statuses")
|
router.register(r"userstory-statuses", UserStoryStatusViewSet, base_name="userstory-statuses")
|
||||||
|
router.register(r"userstory-attachments", UserStoryAttachmentViewSet, base_name="userstory-attachments")
|
||||||
router.register(r"userstories", UserStoryViewSet, base_name="userstories")
|
router.register(r"userstories", UserStoryViewSet, base_name="userstories")
|
||||||
|
|
||||||
# greenmine.projects.tasks
|
# greenmine.projects.tasks
|
||||||
router.register(r"task-statuses", TaskStatusViewSet, base_name="task-statuses")
|
router.register(r"task-statuses", TaskStatusViewSet, base_name="task-statuses")
|
||||||
router.register(r"task-attachments", TasksAttachmentViewSet, base_name="task-attachments")
|
router.register(r"task-attachments", TaskAttachmentViewSet, base_name="task-attachments")
|
||||||
router.register(r"tasks", TaskViewSet, base_name="tasks")
|
router.register(r"tasks", TaskViewSet, base_name="tasks")
|
||||||
|
|
||||||
# greenmine.projects.issues
|
# greenmine.projects.issues
|
||||||
|
@ -47,12 +48,12 @@ router.register(r"severities", SeverityViewSet, base_name="severities")
|
||||||
router.register(r"priorities", PriorityViewSet, base_name="priorities")
|
router.register(r"priorities", PriorityViewSet, base_name="priorities")
|
||||||
router.register(r"issue-statuses", IssueStatusViewSet, base_name="issue-statuses")
|
router.register(r"issue-statuses", IssueStatusViewSet, base_name="issue-statuses")
|
||||||
router.register(r"issue-types", IssueTypeViewSet, base_name="issue-types")
|
router.register(r"issue-types", IssueTypeViewSet, base_name="issue-types")
|
||||||
router.register(r"issue-attachments", IssuesAttachmentViewSet, base_name="issue-attachments")
|
router.register(r"issue-attachments", IssueAttachmentViewSet, base_name="issue-attachments")
|
||||||
router.register(r"issues", IssueViewSet, base_name="issues")
|
router.register(r"issues", IssueViewSet, base_name="issues")
|
||||||
|
|
||||||
#greenmine.projects.questions
|
#greenmine.projects.questions
|
||||||
router.register(r"question-statuses", QuestionStatusViewSet, base_name="question-statuses")
|
router.register(r"question-statuses", QuestionStatusViewSet, base_name="question-statuses")
|
||||||
router.register(r"question-attachments", QuestionsAttachmentViewSet,
|
router.register(r"question-attachments", QuestionAttachmentViewSet,
|
||||||
base_name="question-attachments")
|
base_name="question-attachments")
|
||||||
router.register(r"questions", QuestionViewSet, base_name="questions")
|
router.register(r"questions", QuestionViewSet, base_name="questions")
|
||||||
|
|
||||||
|
@ -61,4 +62,5 @@ router.register(r"questions", QuestionViewSet, base_name="questions")
|
||||||
|
|
||||||
# greenmine.projects.wiki
|
# greenmine.projects.wiki
|
||||||
router.register(r"wiki", WikiViewSet, base_name="wiki")
|
router.register(r"wiki", WikiViewSet, base_name="wiki")
|
||||||
|
router.register(r"wiki-attachments", WikiAttachmentViewSet, base_name="wiki-attachments")
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue