BaseInlineFormset   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 44
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 6
c 1
b 0
f 0
dl 0
loc 44
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A get_factory_kwargs() 0 19 3
A construct_formset() 0 12 3
1
from django.forms.models import inlineformset_factory
2
3
from crudbuilder.exceptions import NotModelException
4
5
6
class BaseInlineFormset(object):
7
    extra = 3
8
    can_delete = True
9
    inline_model = None
10
    parent_model = None
11
    exclude = []
12
    fields = None
13
    formfield_callback = None
14
    fk_name = None
15
    formset_class = None
16
    child_form = None
17
18
    def construct_formset(self):
19
        """
20
        Returns an instance of the inline formset
21
        """
22
        if not self.inline_model or not self.parent_model:
23
            msg = "Parent and Inline models are required in {}".format(self.__class__.__name__)
24
            raise NotModelException(msg)
25
26
        return inlineformset_factory(
27
            self.parent_model,
28
            self.inline_model,
29
            **self.get_factory_kwargs())
30
31
    def get_factory_kwargs(self):
32
        """
33
        Returns the keyword arguments for calling the formset factory
34
        """
35
        kwargs = {}
36
        kwargs.update({
37
            'can_delete': self.can_delete,
38
            'extra': self.extra,
39
            'exclude': self.exclude,
40
            'fields': self.fields,
41
            'formfield_callback': self.formfield_callback,
42
            'fk_name': self.fk_name,
43
        })
44
        if self.formset_class:
45
            kwargs['formset'] = self.formset_class
46
47
        if self.child_form:
48
            kwargs['form'] = self.child_form
49
        return kwargs
50