File: views.py

package info (click to toggle)
django-guardian 2.0.0-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 1,664 kB
  • sloc: python: 5,509; makefile: 89; sh: 38
file content (42 lines) | stat: -rw-r--r-- 1,472 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
from django.urls import reverse_lazy
from django.views.generic import (CreateView, DeleteView, DetailView, ListView,
                                  UpdateView)
from guardian.mixins import PermissionRequiredMixin, PermissionListMixin
from guardian.shortcuts import assign_perm
from articles.models import Article


class ArticleListView(PermissionListMixin, ListView):
    model = Article
    permission_required = ['view_article', ]


class ArticleDetailView(PermissionRequiredMixin, DetailView):
    model = Article
    permission_required = ['view_article']


class ArticleCreateView(PermissionRequiredMixin, CreateView):
    model = Article
    permission_object = None
    permission_required = ['articles.add_article']
    fields = ['title', 'slug', 'content']

    def form_valid(self, *args, **kwargs):
        resp = super().form_valid(*args, **kwargs)
        assign_perm('view_article', self.request.user, self.object)
        assign_perm('change_article', self.request.user, self.object)
        assign_perm('delete_article', self.request.user, self.object)
        return resp


class ArticleUpdateView(PermissionRequiredMixin, UpdateView):
    model = Article
    permission_required = ['view_article', 'change_article']
    fields = ['title', 'slug', 'content']


class ArticleDeleteView(PermissionRequiredMixin, DeleteView):
    model = Article
    success_url = reverse_lazy('articles:list')
    permission_required = ['view_article', 'delete_article']