Completed
Push — master ( 790cb0...7d18a2 )
by Asif
59s
created

check_permission_required()   A

Complexity

Conditions 2

Size

Total Lines 3

Duplication

Lines 0
Ratio 0 %
Metric Value
cc 2
dl 0
loc 3
rs 10
1
import crudbuilder
2
from six import with_metaclass
3
from crudbuilder.exceptions import NotModelException
4
from django.contrib.contenttypes.models import ContentType
5
6
7
class BaseBuilder(object):
8
    def __init__(
9
        self,
10
        app,
11
        model,
12
        crud
13
    ):
14
15
        self.model = model
16
        self.app = app
17
        self.crud = crud
18
19
        self.custom_modelform = self._has_crud_attr('custom_modelform')
20
        self.modelform_excludes = self._has_crud_attr('modelform_excludes')
21
        self.createupdate_forms = self._has_crud_attr('createupdate_forms')
22
23
        # django tables2
24
        self.custom_table2 = self._has_crud_attr('custom_table2')
25
        self.tables2_fields = self._has_crud_attr('tables2_fields')
26
        self.tables2_css_class = self._has_crud_attr('tables2_css_class')
27
        self.tables2_pagination = self._has_crud_attr('tables2_pagination')
28
29
        self.permission_required = self._has_crud_attr('permission_required')
30
        self.permissions = self._has_crud_attr('permissions')
31
        self.login_required = self._has_crud_attr('login_required')
32
33
        self.custom_templates = self._has_crud_attr('custom_templates')
34
35
    @property
36
    def get_model_class(self):
37
        """Returns model class"""
38
        c = ContentType.objects.get(app_label=self.app, model=self.model)
39
        return c.model_class()
40
41
    def _has_crud_attr(self, attr):
42
        return getattr(self.crud, attr, None)
43
44
    def view_permission(self, view_type):
45
        if self.permissions:
46
            return self.permissions.get(view_type, None)
47
        else:
48
            return '{}.{}_{}'.format(self.app, self.model, view_type)
49
50
    @property
51
    def check_login_required(self):
52
        return True if self.login_required else False
53
54
    @property
55
    def check_permission_required(self):
56
        return True if self.permission_required else False
57
58
59
class MetaCrudRegister(type):
60
    def __new__(cls, clsname, bases, attrs):
61
        newclass = super(
62
            MetaCrudRegister, cls
63
            ).__new__(cls, clsname, bases, attrs)
64
65
        if bases:
66
            if newclass.model:
67
                crudbuilder.register(newclass.model, newclass)
68
            else:
69
                msg = "No model defined in {} class".format(newclass)
70
                raise NotModelException(msg)
71
        return newclass
72
73
74
class BaseCrudBuilder(with_metaclass(MetaCrudRegister)):
75
    model = None
76