Total Complexity | 6 |
Total Lines | 44 |
Duplicated Lines | 0 % |
Changes | 1 | ||
Bugs | 0 | Features | 0 |
1 | from django.forms.models import inlineformset_factory |
||
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 |