Smallfixes in the attachment of the objects

remotes/origin/enhancement/email-actions
David Barragán Merino 2013-10-04 10:28:42 +02:00
parent de28c23403
commit 7af3f25596
6 changed files with 77 additions and 34 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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")