diff --git a/greenmine/projects/wiki/admin.py b/greenmine/projects/wiki/admin.py index d2e26545..c3bc73ba 100644 --- a/greenmine/projects/wiki/admin.py +++ b/greenmine/projects/wiki/admin.py @@ -2,16 +2,10 @@ from django.contrib import admin -from greenmine.projects.wiki.models import WikiPage, WikiPageAttachment +from greenmine.projects.wiki.models import WikiPage class WikiPageAdmin(admin.ModelAdmin): list_display = ["slug", "project", "owner"] admin.site.register(WikiPage, WikiPageAdmin) - - -class WikiPageAttachmentAdmin(admin.ModelAdmin): - list_display = ["id", "wikipage", "owner"] - -admin.site.register(WikiPageAttachment, WikiPageAttachmentAdmin) diff --git a/greenmine/projects/wiki/api.py b/greenmine/projects/wiki/api.py index d5ac7cb5..eab8b1d5 100644 --- a/greenmine/projects/wiki/api.py +++ b/greenmine/projects/wiki/api.py @@ -5,38 +5,28 @@ 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 greenmine.base.api import ModelCrudViewSet +from greenmine.base import api as api_views +from greenmine.base import filters from . import models from . import serializers from . import permissions -class WikiViewSet(ModelCrudViewSet): +class WikiViewSet(api_views.ModelCrudViewSet): model = models.WikiPage serializer_class = serializers.WikiPageSerializer permission_classes = (IsAuthenticated,) - filter_fields = ["project"] + filter_backends = (filters.IsProjectMemberFilterBackend,) + 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): - obj.owner = self.request.user - - def get_object(self, queryset=None): - if queryset is None: - queryset = self.get_queryset() - - queryset = queryset.filter(project=self.kwargs["projectid"], - slug=self.kwargs["slug"]) - try: - # Get the single item from the filtered queryset - obj = queryset.get() - except ObjectDoesNotExist: - raise Http404(_("No {verbose_name} found matching the query").format( - verbose_name=queryset.model._meta.verbose_name)) - return obj + if not obj.owner: + obj.owner = self.request.user diff --git a/greenmine/projects/wiki/models.py b/greenmine/projects/wiki/models.py index 658db2cd..43880173 100644 --- a/greenmine/projects/wiki/models.py +++ b/greenmine/projects/wiki/models.py @@ -33,30 +33,5 @@ class WikiPage(models.Model): ('change_owned_wikipage', 'Can modify owned wiki pages'), ) - def __unicode__(self): - return u'project {0} - {1}'.format(self.project_id, self.subject) - - -class WikiPageAttachment(models.Model): - wikipage = models.ForeignKey('WikiPage', null=False, blank=False, - related_name='attachments', - verbose_name=_('wiki page')) - owner = models.ForeignKey(settings.AUTH_USER_MODEL, null=False, blank=False, - related_name='owned_wiki_attachments', - verbose_name=_('owner')) - created_date = models.DateTimeField(auto_now_add=True, null=False, blank=False, - verbose_name=_('created date')) - modified_date = models.DateTimeField(auto_now=True, null=False, blank=False, - verbose_name=_('modified date')) - attached_file = models.FileField(max_length=500, null=True, blank=True, - upload_to='files/wiki', - verbose_name=_('attached file')) - - class Meta: - verbose_name = u'wiki page attachment' - verbose_name_plural = u'wiki page attachments' - ordering = ['wikipage', 'created_date'] - - def __unicode__(self): - return u'project {0} - page {1} - attachment {2}'.format(self.wikipage.project_id, - self.wikipage.subject, self.id) + def __str__(self): + return u'project {0} - {1}'.format(self.project_id, self.slug) diff --git a/greenmine/projects/wiki/serializers.py b/greenmine/projects/wiki/serializers.py index 73a30196..4bd9d6d8 100644 --- a/greenmine/projects/wiki/serializers.py +++ b/greenmine/projects/wiki/serializers.py @@ -8,8 +8,3 @@ from . import models class WikiPageSerializer(serializers.ModelSerializer): class Meta: model = models.WikiPage - - -class WikiPageAttachmentSerializer(serializers.ModelSerializer): - class Meta: - model = models.WikiPageAttachment