| 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 |