File: generic.py

package info (click to toggle)
python-django-extra-views 0.14.0-4
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 468 kB
  • sloc: python: 1,591; makefile: 142; sh: 6
file content (62 lines) | stat: -rw-r--r-- 1,851 bytes parent folder | download | duplicates (2)
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
from django.contrib.contenttypes.forms import generic_inlineformset_factory

from extra_views.formsets import (
    BaseInlineFormSetFactory,
    BaseInlineFormSetView,
    InlineFormSetMixin,
    InlineFormSetView,
)


class BaseGenericInlineFormSetFactory(BaseInlineFormSetFactory):
    """
    Base class for constructing a GenericInlineFormSet from
    `generic_inlineformset_factory` in a view.
    """

    def get_formset(self):
        """
        Returns the final formset class from generic_inlineformset_factory.
        """
        result = generic_inlineformset_factory(
            self.inline_model, **self.get_factory_kwargs()
        )
        return result


class GenericInlineFormSetFactory(BaseGenericInlineFormSetFactory):
    """
    Class used to create a `GenericInlineFormSet` from `generic_inlineformset_factory`
    as one of multiple `GenericInlineFormSet`s within a single view.

    Subclasses `BaseGenericInlineFormSetFactory` and passes in the necessary view
    arguments.
    """

    def __init__(self, parent_model, request, instance, view_kwargs=None, view=None):
        self.inline_model = self.model
        self.model = parent_model
        self.request = request
        self.object = instance
        self.kwargs = view_kwargs
        self.view = view


class GenericInlineFormSetMixin(BaseGenericInlineFormSetFactory, InlineFormSetMixin):
    """
    A mixin that provides a way to show and handle a generic inline formset in a
    request.
    """


class BaseGenericInlineFormSetView(GenericInlineFormSetMixin, BaseInlineFormSetView):
    """
    A base view for displaying a generic inline formset
    """


class GenericInlineFormSetView(BaseGenericInlineFormSetView, InlineFormSetView):
    """
    A view for displaying a generic inline formset for a queryset belonging to a
    parent model
    """