From ba896877881f67bb7af7d81e6253ca263d07846b Mon Sep 17 00:00:00 2001 From: Charlie Denton Date: Sun, 16 Oct 2022 01:02:43 +0100 Subject: [PATCH 1/2] Add preliminary dump of Django 4.1 --- cbv/fixtures/4.1.json | 6813 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 6813 insertions(+) create mode 100644 cbv/fixtures/4.1.json diff --git a/cbv/fixtures/4.1.json b/cbv/fixtures/4.1.json new file mode 100644 index 00000000..bc275858 --- /dev/null +++ b/cbv/fixtures/4.1.json @@ -0,0 +1,6813 @@ +[ +{ + "model": "cbv.projectversion", + "fields": { + "project": [ + "Django" + ], + "version_number": "4.1", + "sortable_version_number": "0401" + } +}, +{ + "model": "cbv.module", + "fields": { + "project_version": [ + "Django", + "4.1" + ], + "name": "django.contrib.auth.mixins", + "docstring": "", + "filename": "/django/contrib/auth/mixins.py" + } +}, +{ + "model": "cbv.module", + "fields": { + "project_version": [ + "Django", + "4.1" + ], + "name": "django.contrib.auth.views", + "docstring": "", + "filename": "/django/contrib/auth/views.py" + } +}, +{ + "model": "cbv.module", + "fields": { + "project_version": [ + "Django", + "4.1" + ], + "name": "django.views.generic", + "docstring": "", + "filename": "/django/views/generic/__init__.py" + } +}, +{ + "model": "cbv.module", + "fields": { + "project_version": [ + "Django", + "4.1" + ], + "name": "django.views.generic.base", + "docstring": "", + "filename": "/django/views/generic/base.py" + } +}, +{ + "model": "cbv.module", + "fields": { + "project_version": [ + "Django", + "4.1" + ], + "name": "django.views.generic.dates", + "docstring": "", + "filename": "/django/views/generic/dates.py" + } +}, +{ + "model": "cbv.module", + "fields": { + "project_version": [ + "Django", + "4.1" + ], + "name": "django.views.generic.detail", + "docstring": "", + "filename": "/django/views/generic/detail.py" + } +}, +{ + "model": "cbv.module", + "fields": { + "project_version": [ + "Django", + "4.1" + ], + "name": "django.views.generic.edit", + "docstring": "", + "filename": "/django/views/generic/edit.py" + } +}, +{ + "model": "cbv.module", + "fields": { + "project_version": [ + "Django", + "4.1" + ], + "name": "django.views.generic.list", + "docstring": "", + "filename": "/django/views/generic/list.py" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.contrib.auth.mixins", + "Django", + "4.1" + ], + "name": "AccessMixin", + "docstring": "Abstract CBV mixin that gives access mixins the same customizable\nfunctionality.", + "line_number": 10, + "import_path": "django.contrib.auth.mixins", + "docs_url": "https://docs.djangoproject.com/en/4.1/topics/auth/default/#django.contrib.auth.mixins.AccessMixin" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.contrib.auth.mixins", + "Django", + "4.1" + ], + "name": "LoginRequiredMixin", + "docstring": "Verify that the current user is authenticated.", + "line_number": 67, + "import_path": "django.contrib.auth.mixins", + "docs_url": "https://docs.djangoproject.com/en/4.1/topics/auth/default/#django.contrib.auth.mixins.LoginRequiredMixin" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.contrib.auth.mixins", + "Django", + "4.1" + ], + "name": "PermissionRequiredMixin", + "docstring": "Verify that the current user has all specified permissions.", + "line_number": 76, + "import_path": "django.contrib.auth.mixins", + "docs_url": "https://docs.djangoproject.com/en/4.1/topics/auth/default/#django.contrib.auth.mixins.PermissionRequiredMixin" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.contrib.auth.mixins", + "Django", + "4.1" + ], + "name": "UserPassesTestMixin", + "docstring": "Deny a request with a permission error if the test_func() method returns\nFalse.", + "line_number": 112, + "import_path": "django.contrib.auth.mixins", + "docs_url": "https://docs.djangoproject.com/en/4.1/topics/auth/default/#django.contrib.auth.mixins.UserPassesTestMixin" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "LoginView", + "docstring": "Display the login form and handle the login action.", + "line_number": 67, + "import_path": "django.contrib.auth.views", + "docs_url": "https://docs.djangoproject.com/en/4.1/topics/auth/default/#django.contrib.auth.views.LoginView" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "LogoutView", + "docstring": "Log out the user and display the 'You are logged out' message.", + "line_number": 126, + "import_path": "django.contrib.auth.views", + "docs_url": "https://docs.djangoproject.com/en/4.1/topics/auth/default/#django.contrib.auth.views.LogoutView" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "PasswordChangeDoneView", + "docstring": "Render a template. Pass keyword arguments from the URLconf to the context.", + "line_number": 388, + "import_path": "django.contrib.auth.views", + "docs_url": "https://docs.djangoproject.com/en/4.1/topics/auth/default/#django.contrib.auth.views.PasswordChangeDoneView" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "PasswordChangeView", + "docstring": "A view for displaying a form and rendering a template response.", + "line_number": 363, + "import_path": "django.contrib.auth.views", + "docs_url": "https://docs.djangoproject.com/en/4.1/topics/auth/default/#django.contrib.auth.views.PasswordChangeView" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "PasswordContextMixin", + "docstring": "", + "line_number": 217, + "import_path": "django.contrib.auth.views", + "docs_url": "" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "PasswordResetCompleteView", + "docstring": "Render a template. Pass keyword arguments from the URLconf to the context.", + "line_number": 353, + "import_path": "django.contrib.auth.views", + "docs_url": "https://docs.djangoproject.com/en/4.1/topics/auth/default/#django.contrib.auth.views.PasswordResetCompleteView" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "PasswordResetConfirmView", + "docstring": "A view for displaying a form and rendering a template response.", + "line_number": 267, + "import_path": "django.contrib.auth.views", + "docs_url": "https://docs.djangoproject.com/en/4.1/topics/auth/default/#django.contrib.auth.views.PasswordResetConfirmView" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "PasswordResetDoneView", + "docstring": "Render a template. Pass keyword arguments from the URLconf to the context.", + "line_number": 262, + "import_path": "django.contrib.auth.views", + "docs_url": "https://docs.djangoproject.com/en/4.1/topics/auth/default/#django.contrib.auth.views.PasswordResetDoneView" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "PasswordResetView", + "docstring": "A view for displaying a form and rendering a template response.", + "line_number": 228, + "import_path": "django.contrib.auth.views", + "docs_url": "https://docs.djangoproject.com/en/4.1/topics/auth/default/#django.contrib.auth.views.PasswordResetView" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "RedirectURLMixin", + "docstring": "", + "line_number": 37, + "import_path": "django.contrib.auth.views", + "docs_url": "" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.base", + "Django", + "4.1" + ], + "name": "ContextMixin", + "docstring": "A default context mixin that passes the keyword arguments received by\nget_context_data() as the template context.", + "line_number": 20, + "import_path": "django.views.generic.base", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/mixins-simple/#django.views.generic.base.ContextMixin" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.base", + "Django", + "4.1" + ], + "name": "RedirectView", + "docstring": "Provide a redirect on any GET request.", + "line_number": 220, + "import_path": "django.views.generic", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/base/#django.views.generic.base.RedirectView" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.base", + "Django", + "4.1" + ], + "name": "TemplateResponseMixin", + "docstring": "A mixin that can be used to render a template.", + "line_number": 172, + "import_path": "django.views.generic.base", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/mixins-simple/#django.views.generic.base.TemplateResponseMixin" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.base", + "Django", + "4.1" + ], + "name": "TemplateView", + "docstring": "Render a template. Pass keyword arguments from the URLconf to the context.", + "line_number": 210, + "import_path": "django.views.generic", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/base/#django.views.generic.base.TemplateView" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.base", + "Django", + "4.1" + ], + "name": "View", + "docstring": "Intentionally simple parent class for all views. Only implements\ndispatch-by-method and simple sanity checking.", + "line_number": 35, + "import_path": "django.views", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/base/#django.views.generic.base.View" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "ArchiveIndexView", + "docstring": "Top-level archive of date-based items.", + "line_number": 407, + "import_path": "django.views.generic", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/generic-date-based/#django.views.generic.dates.ArchiveIndexView" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "BaseArchiveIndexView", + "docstring": "Base class for archives of date-based items. Requires a response mixin.", + "line_number": 389, + "import_path": "django.views.generic.dates", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/generic-date-based/#django.views.generic.dates.BaseArchiveIndexView" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "BaseDateDetailView", + "docstring": "Detail view of a single object on a single date; this differs from the\nstandard DetailView by accepting a year/month/day in the URL.", + "line_number": 626, + "import_path": "django.views.generic.dates", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/generic-date-based/#django.views.generic.dates.BaseDateDetailView" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "BaseDateListView", + "docstring": "Abstract base class for date-based views displaying a list of objects.", + "line_number": 302, + "import_path": "django.views.generic.dates", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/mixins-date-based/#django.views.generic.dates.BaseDateListView" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "BaseDayArchiveView", + "docstring": "List of objects published on a given day.", + "line_number": 565, + "import_path": "django.views.generic.dates", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/generic-date-based/#django.views.generic.dates.BaseDayArchiveView" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "BaseMonthArchiveView", + "docstring": "List of objects published in a given month.", + "line_number": 465, + "import_path": "django.views.generic.dates", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/generic-date-based/#django.views.generic.dates.BaseMonthArchiveView" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "BaseTodayArchiveView", + "docstring": "List of objects published today.", + "line_number": 612, + "import_path": "django.views.generic.dates", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/generic-date-based/#django.views.generic.dates.BaseTodayArchiveView" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "BaseWeekArchiveView", + "docstring": "List of objects published in a given week.", + "line_number": 507, + "import_path": "django.views.generic.dates", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/generic-date-based/#django.views.generic.dates.BaseWeekArchiveView" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "BaseYearArchiveView", + "docstring": "List of objects published in a given year.", + "line_number": 413, + "import_path": "django.views.generic.dates", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/generic-date-based/#django.views.generic.dates.BaseYearArchiveView" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "DateDetailView", + "docstring": "Detail view of a single object on a single date; this differs from the\nstandard DetailView by accepting a year/month/day in the URL.", + "line_number": 670, + "import_path": "django.views.generic", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/generic-date-based/#django.views.generic.dates.DateDetailView" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "DateMixin", + "docstring": "Mixin class for views manipulating date-based data.", + "line_number": 235, + "import_path": "django.views.generic.dates", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/mixins-date-based/#django.views.generic.dates.DateMixin" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "DayArchiveView", + "docstring": "List of objects published on a given day.", + "line_number": 606, + "import_path": "django.views.generic", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/generic-date-based/#django.views.generic.dates.DayArchiveView" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "DayMixin", + "docstring": "Mixin for views manipulating day-based data.", + "line_number": 124, + "import_path": "django.views.generic.dates", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/mixins-date-based/#django.views.generic.dates.DayMixin" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "MonthArchiveView", + "docstring": "List of objects published in a given month.", + "line_number": 501, + "import_path": "django.views.generic", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/generic-date-based/#django.views.generic.dates.MonthArchiveView" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "MonthMixin", + "docstring": "Mixin for views manipulating month-based data.", + "line_number": 71, + "import_path": "django.views.generic.dates", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/mixins-date-based/#django.views.generic.dates.MonthMixin" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "TodayArchiveView", + "docstring": "List of objects published today.", + "line_number": 620, + "import_path": "django.views.generic", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/generic-date-based/#django.views.generic.dates.TodayArchiveView" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "WeekArchiveView", + "docstring": "List of objects published in a given week.", + "line_number": 559, + "import_path": "django.views.generic", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/generic-date-based/#django.views.generic.dates.WeekArchiveView" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "WeekMixin", + "docstring": "Mixin for views manipulating week-based data.", + "line_number": 171, + "import_path": "django.views.generic.dates", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/mixins-date-based/#django.views.generic.dates.WeekMixin" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "YearArchiveView", + "docstring": "List of objects published in a given year.", + "line_number": 459, + "import_path": "django.views.generic", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/generic-date-based/#django.views.generic.dates.YearArchiveView" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "YearMixin", + "docstring": "Mixin for views manipulating year-based data.", + "line_number": 21, + "import_path": "django.views.generic.dates", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/mixins-date-based/#django.views.generic.dates.YearMixin" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.detail", + "Django", + "4.1" + ], + "name": "BaseDetailView", + "docstring": "A base view for displaying a single object.", + "line_number": 104, + "import_path": "django.views.generic.detail", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/generic-display/#django.views.generic.detail.BaseDetailView" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.detail", + "Django", + "4.1" + ], + "name": "DetailView", + "docstring": "Render a \"detail\" view of an object.\n\nBy default this is a model instance looked up from `self.queryset`, but the\nview will support display of *any* object by overriding `self.get_object()`.", + "line_number": 174, + "import_path": "django.views.generic", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/generic-display/#django.views.generic.detail.DetailView" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.detail", + "Django", + "4.1" + ], + "name": "SingleObjectMixin", + "docstring": "Provide the ability to retrieve a single object for further manipulation.", + "line_number": 8, + "import_path": "django.views.generic.detail", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectMixin" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.detail", + "Django", + "4.1" + ], + "name": "SingleObjectTemplateResponseMixin", + "docstring": "A mixin that can be used to render a template.", + "line_number": 113, + "import_path": "django.views.generic.detail", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectTemplateResponseMixin" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "BaseCreateView", + "docstring": "Base view for creating a new object instance.\n\nUsing this base class requires subclassing to provide a response mixin.", + "line_number": 171, + "import_path": "django.views.generic.edit", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/generic-editing/#django.views.generic.edit.BaseCreateView" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "BaseDeleteView", + "docstring": "Base view for deleting an object.\n\nUsing this base class requires subclassing to provide a response mixin.", + "line_number": 248, + "import_path": "django.views.generic.edit", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/generic-editing/#django.views.generic.edit.BaseDeleteView" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "BaseFormView", + "docstring": "A base view for displaying a form.", + "line_number": 163, + "import_path": "django.views.generic.edit", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/generic-editing/#django.views.generic.edit.BaseFormView" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "BaseUpdateView", + "docstring": "Base view for updating an existing object.\n\nUsing this base class requires subclassing to provide a response mixin.", + "line_number": 195, + "import_path": "django.views.generic.edit", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/generic-editing/#django.views.generic.edit.BaseUpdateView" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "CreateView", + "docstring": "View for creating a new object, with a response rendered by a template.", + "line_number": 187, + "import_path": "django.views.generic", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/generic-editing/#django.views.generic.edit.CreateView" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "DeleteView", + "docstring": "View for deleting an object retrieved with self.get_object(), with a\nresponse rendered by a template.", + "line_number": 288, + "import_path": "django.views.generic", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/generic-editing/#django.views.generic.edit.DeleteView" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "DeletionMixin", + "docstring": "Provide the ability to delete objects.", + "line_number": 217, + "import_path": "django.views.generic.edit", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/mixins-editing/#django.views.generic.edit.DeletionMixin" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "FormMixin", + "docstring": "Provide a way to show and handle a form in a request.", + "line_number": 15, + "import_path": "django.views.generic.edit", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/mixins-editing/#django.views.generic.edit.FormMixin" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "FormView", + "docstring": "A view for displaying a form and rendering a template response.", + "line_number": 167, + "import_path": "django.views.generic", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/generic-editing/#django.views.generic.edit.FormView" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "ModelFormMixin", + "docstring": "Provide a way to show and handle a ModelForm in a request.", + "line_number": 78, + "import_path": "django.views.generic.edit", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/mixins-editing/#django.views.generic.edit.ModelFormMixin" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "ProcessFormView", + "docstring": "Render a form on GET and processes it on POST.", + "line_number": 139, + "import_path": "django.views.generic.edit", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/mixins-editing/#django.views.generic.edit.ProcessFormView" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "UpdateView", + "docstring": "View for updating an object, with a response rendered by a template.", + "line_number": 211, + "import_path": "django.views.generic", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/generic-editing/#django.views.generic.edit.UpdateView" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.list", + "Django", + "4.1" + ], + "name": "BaseListView", + "docstring": "A base view for displaying a list of objects.", + "line_number": 150, + "import_path": "django.views.generic.list", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/generic-display/#django.views.generic.list.BaseListView" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.list", + "Django", + "4.1" + ], + "name": "ListView", + "docstring": "Render some list of objects, set by `self.model` or `self.queryset`.\n`self.queryset` can actually be any iterable of items, not just a queryset.", + "line_number": 216, + "import_path": "django.views.generic", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/generic-display/#django.views.generic.list.ListView" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.list", + "Django", + "4.1" + ], + "name": "MultipleObjectMixin", + "docstring": "A mixin for views manipulating multiple objects.", + "line_number": 9, + "import_path": "django.views.generic.list", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/mixins-multiple-object/#django.views.generic.list.MultipleObjectMixin" + } +}, +{ + "model": "cbv.klass", + "fields": { + "module": [ + "django.views.generic.list", + "Django", + "4.1" + ], + "name": "MultipleObjectTemplateResponseMixin", + "docstring": "Mixin for responding with a template and list of objects.", + "line_number": 178, + "import_path": "django.views.generic.list", + "docs_url": "https://docs.djangoproject.com/en/4.1/ref/class-based-views/mixins-multiple-object/#django.views.generic.list.MultipleObjectTemplateResponseMixin" + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "AccessMixin", + "django.contrib.auth.mixins", + "Django", + "4.1" + ], + "name": "login_url", + "value": "None", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "AccessMixin", + "django.contrib.auth.mixins", + "Django", + "4.1" + ], + "name": "permission_denied_message", + "value": "''", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "AccessMixin", + "django.contrib.auth.mixins", + "Django", + "4.1" + ], + "name": "raise_exception", + "value": "False", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "AccessMixin", + "django.contrib.auth.mixins", + "Django", + "4.1" + ], + "name": "redirect_field_name", + "value": "'next'", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "PermissionRequiredMixin", + "django.contrib.auth.mixins", + "Django", + "4.1" + ], + "name": "permission_required", + "value": "None", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "LoginView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "authentication_form", + "value": "None", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "LoginView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "form_class", + "value": "", + "line_number": 174 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "LoginView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "redirect_authenticated_user", + "value": "False", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "LoginView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "template_name", + "value": "'registration/login.html'", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "LogoutView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "http_method_names", + "value": "['get', 'head', 'post', 'options']", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "LogoutView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "template_name", + "value": "'registration/logged_out.html'", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "PasswordChangeDoneView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "template_name", + "value": "'registration/password_change_done.html'", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "PasswordChangeDoneView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "title", + "value": "gettext_lazy('Password change successful')", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "PasswordChangeView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "form_class", + "value": "", + "line_number": 398 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "PasswordChangeView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "success_url", + "value": "reverse_lazy('password_change_done')", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "PasswordChangeView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "template_name", + "value": "'registration/password_change_form.html'", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "PasswordChangeView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "title", + "value": "gettext_lazy('Password change')", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "PasswordContextMixin", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "extra_context", + "value": "None", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "PasswordResetCompleteView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "template_name", + "value": "'registration/password_reset_complete.html'", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "PasswordResetCompleteView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "title", + "value": "gettext_lazy('Password reset complete')", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "PasswordResetConfirmView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "form_class", + "value": "", + "line_number": 353 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "PasswordResetConfirmView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "post_reset_login", + "value": "False", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "PasswordResetConfirmView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "post_reset_login_backend", + "value": "None", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "PasswordResetConfirmView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "reset_url_token", + "value": "'set-password'", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "PasswordResetConfirmView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "success_url", + "value": "reverse_lazy('password_reset_complete')", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "PasswordResetConfirmView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "template_name", + "value": "'registration/password_reset_confirm.html'", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "PasswordResetConfirmView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "title", + "value": "gettext_lazy('Enter new password')", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "PasswordResetConfirmView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "token_generator", + "value": "", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "PasswordResetDoneView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "template_name", + "value": "'registration/password_reset_done.html'", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "PasswordResetDoneView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "title", + "value": "gettext_lazy('Password reset sent')", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "PasswordResetView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "email_template_name", + "value": "'registration/password_reset_email.html'", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "PasswordResetView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "extra_email_context", + "value": "None", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "PasswordResetView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "form_class", + "value": "", + "line_number": 255 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "PasswordResetView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "from_email", + "value": "None", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "PasswordResetView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "html_email_template_name", + "value": "None", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "PasswordResetView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "subject_template_name", + "value": "'registration/password_reset_subject.txt'", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "PasswordResetView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "success_url", + "value": "reverse_lazy('password_reset_done')", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "PasswordResetView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "template_name", + "value": "'registration/password_reset_form.html'", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "PasswordResetView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "title", + "value": "gettext_lazy('Password reset')", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "PasswordResetView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "token_generator", + "value": "", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "RedirectURLMixin", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "next_page", + "value": "None", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "RedirectURLMixin", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "redirect_field_name", + "value": "'next'", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "RedirectURLMixin", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "success_url_allowed_hosts", + "value": "set()", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "ContextMixin", + "django.views.generic.base", + "Django", + "4.1" + ], + "name": "extra_context", + "value": "None", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "RedirectView", + "django.views.generic.base", + "Django", + "4.1" + ], + "name": "pattern_name", + "value": "None", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "RedirectView", + "django.views.generic.base", + "Django", + "4.1" + ], + "name": "permanent", + "value": "False", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "RedirectView", + "django.views.generic.base", + "Django", + "4.1" + ], + "name": "query_string", + "value": "False", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "RedirectView", + "django.views.generic.base", + "Django", + "4.1" + ], + "name": "url", + "value": "None", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "TemplateResponseMixin", + "django.views.generic.base", + "Django", + "4.1" + ], + "name": "content_type", + "value": "None", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "TemplateResponseMixin", + "django.views.generic.base", + "Django", + "4.1" + ], + "name": "response_class", + "value": "", + "line_number": 147 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "TemplateResponseMixin", + "django.views.generic.base", + "Django", + "4.1" + ], + "name": "template_engine", + "value": "None", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "TemplateResponseMixin", + "django.views.generic.base", + "Django", + "4.1" + ], + "name": "template_name", + "value": "None", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "View", + "django.views.generic.base", + "Django", + "4.1" + ], + "name": "http_method_names", + "value": "['get', 'post', 'put', 'patch', 'delete', 'head', 'options', 'trace']", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "View", + "django.views.generic.base", + "Django", + "4.1" + ], + "name": "view_is_async", + "value": "False", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "ArchiveIndexView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "template_name_suffix", + "value": "'_archive'", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "BaseArchiveIndexView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "context_object_name", + "value": "'latest'", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "BaseDateListView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "allow_empty", + "value": "False", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "BaseDateListView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "date_list_period", + "value": "'year'", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "BaseMonthArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "date_list_period", + "value": "'day'", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "BaseYearArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "date_list_period", + "value": "'month'", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "BaseYearArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "make_object_list", + "value": "False", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "DateMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "allow_future", + "value": "False", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "DateMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "date_field", + "value": "None", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "DateMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "uses_datetime_field", + "value": "", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "DayArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "template_name_suffix", + "value": "'_archive_day'", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "DayMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "day", + "value": "None", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "DayMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "day_format", + "value": "'%d'", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "MonthArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "template_name_suffix", + "value": "'_archive_month'", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "MonthMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "month", + "value": "None", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "MonthMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "month_format", + "value": "'%b'", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "TodayArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "template_name_suffix", + "value": "'_archive_day'", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "WeekArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "template_name_suffix", + "value": "'_archive_week'", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "WeekMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "week", + "value": "None", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "WeekMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "week_format", + "value": "'%U'", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "YearArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "template_name_suffix", + "value": "'_archive_year'", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "YearMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "year", + "value": "None", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "YearMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "year_format", + "value": "'%Y'", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "SingleObjectMixin", + "django.views.generic.detail", + "Django", + "4.1" + ], + "name": "context_object_name", + "value": "None", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "SingleObjectMixin", + "django.views.generic.detail", + "Django", + "4.1" + ], + "name": "model", + "value": "None", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "SingleObjectMixin", + "django.views.generic.detail", + "Django", + "4.1" + ], + "name": "pk_url_kwarg", + "value": "'pk'", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "SingleObjectMixin", + "django.views.generic.detail", + "Django", + "4.1" + ], + "name": "query_pk_and_slug", + "value": "False", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "SingleObjectMixin", + "django.views.generic.detail", + "Django", + "4.1" + ], + "name": "queryset", + "value": "None", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "SingleObjectMixin", + "django.views.generic.detail", + "Django", + "4.1" + ], + "name": "slug_field", + "value": "'slug'", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "SingleObjectMixin", + "django.views.generic.detail", + "Django", + "4.1" + ], + "name": "slug_url_kwarg", + "value": "'slug'", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "SingleObjectTemplateResponseMixin", + "django.views.generic.detail", + "Django", + "4.1" + ], + "name": "template_name_field", + "value": "None", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "SingleObjectTemplateResponseMixin", + "django.views.generic.detail", + "Django", + "4.1" + ], + "name": "template_name_suffix", + "value": "'_detail'", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "BaseDeleteView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "form_class", + "value": "", + "line_number": 537 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "CreateView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "template_name_suffix", + "value": "'_form'", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "DeleteView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "template_name_suffix", + "value": "'_confirm_delete'", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "DeletionMixin", + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "success_url", + "value": "None", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "FormMixin", + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "form_class", + "value": "None", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "FormMixin", + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "initial", + "value": "{}", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "FormMixin", + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "prefix", + "value": "None", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "FormMixin", + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "success_url", + "value": "None", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "ModelFormMixin", + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "fields", + "value": "None", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "UpdateView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "template_name_suffix", + "value": "'_form'", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "MultipleObjectMixin", + "django.views.generic.list", + "Django", + "4.1" + ], + "name": "allow_empty", + "value": "True", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "MultipleObjectMixin", + "django.views.generic.list", + "Django", + "4.1" + ], + "name": "context_object_name", + "value": "None", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "MultipleObjectMixin", + "django.views.generic.list", + "Django", + "4.1" + ], + "name": "model", + "value": "None", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "MultipleObjectMixin", + "django.views.generic.list", + "Django", + "4.1" + ], + "name": "ordering", + "value": "None", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "MultipleObjectMixin", + "django.views.generic.list", + "Django", + "4.1" + ], + "name": "page_kwarg", + "value": "'page'", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "MultipleObjectMixin", + "django.views.generic.list", + "Django", + "4.1" + ], + "name": "paginate_by", + "value": "None", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "MultipleObjectMixin", + "django.views.generic.list", + "Django", + "4.1" + ], + "name": "paginate_orphans", + "value": "0", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "MultipleObjectMixin", + "django.views.generic.list", + "Django", + "4.1" + ], + "name": "paginator_class", + "value": "", + "line_number": 27 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "MultipleObjectMixin", + "django.views.generic.list", + "Django", + "4.1" + ], + "name": "queryset", + "value": "None", + "line_number": -1 + } +}, +{ + "model": "cbv.klassattribute", + "pk": null, + "fields": { + "klass": [ + "MultipleObjectTemplateResponseMixin", + "django.views.generic.list", + "Django", + "4.1" + ], + "name": "template_name_suffix", + "value": "'_list'", + "line_number": -1 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "AccessMixin", + "django.contrib.auth.mixins", + "Django", + "4.1" + ], + "name": "get_login_url", + "docstring": "Override this method to override the login_url attribute.", + "code": "def get_login_url(self):\n \"\"\"\n Override this method to override the login_url attribute.\n \"\"\"\n login_url = self.login_url or settings.LOGIN_URL\n if not login_url:\n raise ImproperlyConfigured(\n f\"{self.__class__.__name__} is missing the login_url attribute. Define \"\n f\"{self.__class__.__name__}.login_url, settings.LOGIN_URL, or override \"\n f\"{self.__class__.__name__}.get_login_url().\"\n )\n return str(login_url)\n", + "kwargs": "self", + "line_number": 21 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "AccessMixin", + "django.contrib.auth.mixins", + "Django", + "4.1" + ], + "name": "get_permission_denied_message", + "docstring": "Override this method to override the permission_denied_message attribute.", + "code": "def get_permission_denied_message(self):\n \"\"\"\n Override this method to override the permission_denied_message attribute.\n \"\"\"\n return self.permission_denied_message\n", + "kwargs": "self", + "line_number": 34 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "AccessMixin", + "django.contrib.auth.mixins", + "Django", + "4.1" + ], + "name": "get_redirect_field_name", + "docstring": "Override this method to override the redirect_field_name attribute.", + "code": "def get_redirect_field_name(self):\n \"\"\"\n Override this method to override the redirect_field_name attribute.\n \"\"\"\n return self.redirect_field_name\n", + "kwargs": "self", + "line_number": 40 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "AccessMixin", + "django.contrib.auth.mixins", + "Django", + "4.1" + ], + "name": "handle_no_permission", + "docstring": "", + "code": "def handle_no_permission(self):\n if self.raise_exception or self.request.user.is_authenticated:\n raise PermissionDenied(self.get_permission_denied_message())\n path = self.request.build_absolute_uri()\n resolved_login_url = resolve_url(self.get_login_url())\n # If the login url is the same scheme and net location then use the\n # path as the \"next\" url.\n login_scheme, login_netloc = urlparse(resolved_login_url)[:2]\n current_scheme, current_netloc = urlparse(path)[:2]\n if (not login_scheme or login_scheme == current_scheme) and (\n not login_netloc or login_netloc == current_netloc\n ):\n path = self.request.get_full_path()\n return redirect_to_login(\n path,\n resolved_login_url,\n self.get_redirect_field_name(),\n )\n", + "kwargs": "self", + "line_number": 46 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "LoginRequiredMixin", + "django.contrib.auth.mixins", + "Django", + "4.1" + ], + "name": "dispatch", + "docstring": "", + "code": "def dispatch(self, request, *args, **kwargs):\n if not request.user.is_authenticated:\n return self.handle_no_permission()\n return super().dispatch(request, *args, **kwargs)\n", + "kwargs": "self, request, *args, **kwargs", + "line_number": 70 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "PermissionRequiredMixin", + "django.contrib.auth.mixins", + "Django", + "4.1" + ], + "name": "dispatch", + "docstring": "", + "code": "def dispatch(self, request, *args, **kwargs):\n if not self.has_permission():\n return self.handle_no_permission()\n return super().dispatch(request, *args, **kwargs)\n", + "kwargs": "self, request, *args, **kwargs", + "line_number": 106 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "PermissionRequiredMixin", + "django.contrib.auth.mixins", + "Django", + "4.1" + ], + "name": "get_permission_required", + "docstring": "Override this method to override the permission_required attribute.\nMust return an iterable.", + "code": "def get_permission_required(self):\n \"\"\"\n Override this method to override the permission_required attribute.\n Must return an iterable.\n \"\"\"\n if self.permission_required is None:\n raise ImproperlyConfigured(\n f\"{self.__class__.__name__} is missing the \"\n f\"permission_required attribute. Define \"\n f\"{self.__class__.__name__}.permission_required, or override \"\n f\"{self.__class__.__name__}.get_permission_required().\"\n )\n if isinstance(self.permission_required, str):\n perms = (self.permission_required,)\n else:\n perms = self.permission_required\n return perms\n", + "kwargs": "self", + "line_number": 81 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "PermissionRequiredMixin", + "django.contrib.auth.mixins", + "Django", + "4.1" + ], + "name": "has_permission", + "docstring": "Override this method to customize the way permissions are checked.", + "code": "def has_permission(self):\n \"\"\"\n Override this method to customize the way permissions are checked.\n \"\"\"\n perms = self.get_permission_required()\n return self.request.user.has_perms(perms)\n", + "kwargs": "self", + "line_number": 99 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "UserPassesTestMixin", + "django.contrib.auth.mixins", + "Django", + "4.1" + ], + "name": "dispatch", + "docstring": "", + "code": "def dispatch(self, request, *args, **kwargs):\n user_test_result = self.get_test_func()()\n if not user_test_result:\n return self.handle_no_permission()\n return super().dispatch(request, *args, **kwargs)\n", + "kwargs": "self, request, *args, **kwargs", + "line_number": 131 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "UserPassesTestMixin", + "django.contrib.auth.mixins", + "Django", + "4.1" + ], + "name": "get_test_func", + "docstring": "Override this method to use a different test_func method.", + "code": "def get_test_func(self):\n \"\"\"\n Override this method to use a different test_func method.\n \"\"\"\n return self.test_func\n", + "kwargs": "self", + "line_number": 125 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "UserPassesTestMixin", + "django.contrib.auth.mixins", + "Django", + "4.1" + ], + "name": "test_func", + "docstring": "", + "code": "def test_func(self):\n raise NotImplementedError(\n \"{} is missing the implementation of the test_func() method.\".format(\n self.__class__.__name__\n )\n )\n", + "kwargs": "self", + "line_number": 118 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "LoginView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "dispatch", + "docstring": "", + "code": "@method_decorator(sensitive_post_parameters())\n@method_decorator(csrf_protect)\n@method_decorator(never_cache)\ndef dispatch(self, request, *args, **kwargs):\n if self.redirect_authenticated_user and self.request.user.is_authenticated:\n redirect_to = self.get_success_url()\n if redirect_to == self.request.path:\n raise ValueError(\n \"Redirection loop for authenticated user detected. Check that \"\n \"your LOGIN_REDIRECT_URL doesn't point to a login page.\"\n )\n return HttpResponseRedirect(redirect_to)\n return super().dispatch(request, *args, **kwargs)\n", + "kwargs": "self, request, *args, **kwargs", + "line_number": 78 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "LoginView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "form_valid", + "docstring": "Security check complete. Log the user in.", + "code": "def form_valid(self, form):\n \"\"\"Security check complete. Log the user in.\"\"\"\n auth_login(self.request, form.get_user())\n return HttpResponseRedirect(self.get_success_url())\n", + "kwargs": "self, form", + "line_number": 107 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "LoginView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "get_context_data", + "docstring": "Insert the form into the context dict.", + "code": "def get_context_data(self, **kwargs):\n context = super().get_context_data(**kwargs)\n current_site = get_current_site(self.request)\n context.update(\n {\n self.redirect_field_name: self.get_redirect_url(),\n \"site\": current_site,\n \"site_name\": current_site.name,\n **(self.extra_context or {}),\n }\n )\n return context\n", + "kwargs": "self, **kwargs", + "line_number": 112 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "LoginView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "get_default_redirect_url", + "docstring": "Return the default redirect URL.", + "code": "def get_default_redirect_url(self):\n \"\"\"Return the default redirect URL.\"\"\"\n if self.next_page:\n return resolve_url(self.next_page)\n else:\n return resolve_url(settings.LOGIN_REDIRECT_URL)\n", + "kwargs": "self", + "line_number": 92 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "LoginView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "get_form_class", + "docstring": "Return the form class to use.", + "code": "def get_form_class(self):\n return self.authentication_form or self.form_class\n", + "kwargs": "self", + "line_number": 99 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "LoginView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "get_form_kwargs", + "docstring": "Return the keyword arguments for instantiating the form.", + "code": "def get_form_kwargs(self):\n kwargs = super().get_form_kwargs()\n kwargs[\"request\"] = self.request\n return kwargs\n", + "kwargs": "self", + "line_number": 102 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "LogoutView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "dispatch", + "docstring": "", + "code": "@method_decorator(never_cache)\ndef dispatch(self, request, *args, **kwargs):\n if request.method.lower() == \"get\":\n warnings.warn(\n \"Log out via GET requests is deprecated and will be removed in Django \"\n \"5.0. Use POST requests for logging out.\",\n RemovedInDjango50Warning,\n )\n return super().dispatch(request, *args, **kwargs)\n", + "kwargs": "self, request, *args, **kwargs", + "line_number": 139 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "LogoutView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "get", + "docstring": "Logout may be done via POST.", + "code": "@method_decorator(csrf_protect)\ndef post(self, request, *args, **kwargs):\n \"\"\"Logout may be done via POST.\"\"\"\n auth_logout(request)\n redirect_to = self.get_success_url()\n if redirect_to != request.get_full_path():\n # Redirect to target page once the session has been cleared.\n return HttpResponseRedirect(redirect_to)\n return super().get(request, *args, **kwargs)\n", + "kwargs": "self, request, *args, **kwargs", + "line_number": 149 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "LogoutView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "get_context_data", + "docstring": "", + "code": "def get_context_data(self, **kwargs):\n context = super().get_context_data(**kwargs)\n current_site = get_current_site(self.request)\n context.update(\n {\n \"site\": current_site,\n \"site_name\": current_site.name,\n \"title\": _(\"Logged out\"),\n \"subtitle\": None,\n **(self.extra_context or {}),\n }\n )\n return context\n", + "kwargs": "self, **kwargs", + "line_number": 171 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "LogoutView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "get_default_redirect_url", + "docstring": "Return the default redirect URL.", + "code": "def get_default_redirect_url(self):\n \"\"\"Return the default redirect URL.\"\"\"\n if self.next_page:\n return resolve_url(self.next_page)\n elif settings.LOGOUT_REDIRECT_URL:\n return resolve_url(settings.LOGOUT_REDIRECT_URL)\n else:\n return self.request.path\n", + "kwargs": "self", + "line_number": 162 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "LogoutView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "post", + "docstring": "Logout may be done via POST.", + "code": "@method_decorator(csrf_protect)\ndef post(self, request, *args, **kwargs):\n \"\"\"Logout may be done via POST.\"\"\"\n auth_logout(request)\n redirect_to = self.get_success_url()\n if redirect_to != request.get_full_path():\n # Redirect to target page once the session has been cleared.\n return HttpResponseRedirect(redirect_to)\n return super().get(request, *args, **kwargs)\n", + "kwargs": "self, request, *args, **kwargs", + "line_number": 149 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "PasswordChangeDoneView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "dispatch", + "docstring": "", + "code": "@method_decorator(login_required)\ndef dispatch(self, *args, **kwargs):\n return super().dispatch(*args, **kwargs)\n", + "kwargs": "self, *args, **kwargs", + "line_number": 392 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "PasswordChangeView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "dispatch", + "docstring": "", + "code": "@method_decorator(sensitive_post_parameters())\n@method_decorator(csrf_protect)\n@method_decorator(login_required)\ndef dispatch(self, *args, **kwargs):\n return super().dispatch(*args, **kwargs)\n", + "kwargs": "self, *args, **kwargs", + "line_number": 369 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "PasswordChangeView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "form_valid", + "docstring": "If the form is valid, redirect to the supplied URL.", + "code": "def form_valid(self, form):\n form.save()\n # Updating the password logs out all other sessions for the user\n # except the current one.\n update_session_auth_hash(self.request, form.user)\n return super().form_valid(form)\n", + "kwargs": "self, form", + "line_number": 380 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "PasswordChangeView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "get_form_kwargs", + "docstring": "Return the keyword arguments for instantiating the form.", + "code": "def get_form_kwargs(self):\n kwargs = super().get_form_kwargs()\n kwargs[\"user\"] = self.request.user\n return kwargs\n", + "kwargs": "self", + "line_number": 375 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "PasswordContextMixin", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "get_context_data", + "docstring": "", + "code": "def get_context_data(self, **kwargs):\n context = super().get_context_data(**kwargs)\n context.update(\n {\"title\": self.title, \"subtitle\": None, **(self.extra_context or {})}\n )\n return context\n", + "kwargs": "self, **kwargs", + "line_number": 220 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "PasswordResetCompleteView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "get_context_data", + "docstring": "", + "code": "def get_context_data(self, **kwargs):\n context = super().get_context_data(**kwargs)\n context[\"login_url\"] = resolve_url(settings.LOGIN_URL)\n return context\n", + "kwargs": "self, **kwargs", + "line_number": 357 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "PasswordResetConfirmView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "dispatch", + "docstring": "", + "code": "@method_decorator(sensitive_post_parameters())\n@method_decorator(never_cache)\ndef dispatch(self, *args, **kwargs):\n if \"uidb64\" not in kwargs or \"token\" not in kwargs:\n raise ImproperlyConfigured(\n \"The URL path must contain 'uidb64' and 'token' parameters.\"\n )\n self.validlink = False\n self.user = self.get_user(kwargs[\"uidb64\"])\n if self.user is not None:\n token = kwargs[\"token\"]\n if token == self.reset_url_token:\n session_token = self.request.session.get(INTERNAL_RESET_SESSION_TOKEN)\n if self.token_generator.check_token(self.user, session_token):\n # If the token is valid, display the password reset form.\n self.validlink = True\n return super().dispatch(*args, **kwargs)\n else:\n if self.token_generator.check_token(self.user, token):\n # Store the token in the session and redirect to the\n # password reset form at a URL without the token. That\n # avoids the possibility of leaking the token in the\n # HTTP Referer header.\n self.request.session[INTERNAL_RESET_SESSION_TOKEN] = token\n redirect_url = self.request.path.replace(\n token, self.reset_url_token\n )\n return HttpResponseRedirect(redirect_url)\n # Display the \"Password reset unsuccessful\" page.\n return self.render_to_response(self.get_context_data())\n", + "kwargs": "self, *args, **kwargs", + "line_number": 277 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "PasswordResetConfirmView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "form_valid", + "docstring": "If the form is valid, redirect to the supplied URL.", + "code": "def form_valid(self, form):\n user = form.save()\n del self.request.session[INTERNAL_RESET_SESSION_TOKEN]\n if self.post_reset_login:\n auth_login(self.request, user, self.post_reset_login_backend)\n return super().form_valid(form)\n", + "kwargs": "self, form", + "line_number": 331 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "PasswordResetConfirmView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "get_context_data", + "docstring": "Insert the form into the context dict.", + "code": "def get_context_data(self, **kwargs):\n context = super().get_context_data(**kwargs)\n if self.validlink:\n context[\"validlink\"] = True\n else:\n context.update(\n {\n \"form\": None,\n \"title\": _(\"Password reset unsuccessful\"),\n \"validlink\": False,\n }\n )\n return context\n", + "kwargs": "self, **kwargs", + "line_number": 338 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "PasswordResetConfirmView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "get_form_kwargs", + "docstring": "Return the keyword arguments for instantiating the form.", + "code": "def get_form_kwargs(self):\n kwargs = super().get_form_kwargs()\n kwargs[\"user\"] = self.user\n return kwargs\n", + "kwargs": "self", + "line_number": 326 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "PasswordResetConfirmView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "get_user", + "docstring": "", + "code": "def get_user(self, uidb64):\n try:\n # urlsafe_base64_decode() decodes to bytestring\n uid = urlsafe_base64_decode(uidb64).decode()\n user = UserModel._default_manager.get(pk=uid)\n except (\n TypeError,\n ValueError,\n OverflowError,\n UserModel.DoesNotExist,\n ValidationError,\n ):\n user = None\n return user\n", + "kwargs": "self, uidb64", + "line_number": 311 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "PasswordResetView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "dispatch", + "docstring": "", + "code": "@method_decorator(csrf_protect)\ndef dispatch(self, *args, **kwargs):\n return super().dispatch(*args, **kwargs)\n", + "kwargs": "self, *args, **kwargs", + "line_number": 240 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "PasswordResetView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "form_valid", + "docstring": "If the form is valid, redirect to the supplied URL.", + "code": "def form_valid(self, form):\n opts = {\n \"use_https\": self.request.is_secure(),\n \"token_generator\": self.token_generator,\n \"from_email\": self.from_email,\n \"email_template_name\": self.email_template_name,\n \"subject_template_name\": self.subject_template_name,\n \"request\": self.request,\n \"html_email_template_name\": self.html_email_template_name,\n \"extra_email_context\": self.extra_email_context,\n }\n form.save(**opts)\n return super().form_valid(form)\n", + "kwargs": "self, form", + "line_number": 244 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "RedirectURLMixin", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "get_default_redirect_url", + "docstring": "Return the default redirect URL.", + "code": "def get_default_redirect_url(self):\n \"\"\"Return the default redirect URL.\"\"\"\n if self.next_page:\n return resolve_url(self.next_page)\n raise ImproperlyConfigured(\"No URL to redirect to. Provide a next_page.\")\n", + "kwargs": "self", + "line_number": 60 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "RedirectURLMixin", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "get_redirect_url", + "docstring": "Return the user-originating redirect URL if it's safe.", + "code": "def get_redirect_url(self):\n \"\"\"Return the user-originating redirect URL if it's safe.\"\"\"\n redirect_to = self.request.POST.get(\n self.redirect_field_name, self.request.GET.get(self.redirect_field_name)\n )\n url_is_safe = url_has_allowed_host_and_scheme(\n url=redirect_to,\n allowed_hosts=self.get_success_url_allowed_hosts(),\n require_https=self.request.is_secure(),\n )\n return redirect_to if url_is_safe else \"\"\n", + "kwargs": "self", + "line_number": 45 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "RedirectURLMixin", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "get_success_url", + "docstring": "", + "code": "def get_success_url(self):\n return self.get_redirect_url() or self.get_default_redirect_url()\n", + "kwargs": "self", + "line_number": 42 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "RedirectURLMixin", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "name": "get_success_url_allowed_hosts", + "docstring": "", + "code": "def get_success_url_allowed_hosts(self):\n return {self.request.get_host(), *self.success_url_allowed_hosts}\n", + "kwargs": "self", + "line_number": 57 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "ContextMixin", + "django.views.generic.base", + "Django", + "4.1" + ], + "name": "get_context_data", + "docstring": "", + "code": "def get_context_data(self, **kwargs):\n kwargs.setdefault(\"view\", self)\n if self.extra_context is not None:\n kwargs.update(self.extra_context)\n return kwargs\n", + "kwargs": "self, **kwargs", + "line_number": 28 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "RedirectView", + "django.views.generic.base", + "Django", + "4.1" + ], + "name": "delete", + "docstring": "", + "code": "def delete(self, request, *args, **kwargs):\n return self.get(request, *args, **kwargs)\n", + "kwargs": "self, request, *args, **kwargs", + "line_number": 268 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "RedirectView", + "django.views.generic.base", + "Django", + "4.1" + ], + "name": "get", + "docstring": "", + "code": "def get(self, request, *args, **kwargs):\n url = self.get_redirect_url(*args, **kwargs)\n if url:\n if self.permanent:\n return HttpResponsePermanentRedirect(url)\n else:\n return HttpResponseRedirect(url)\n else:\n logger.warning(\n \"Gone: %s\", request.path, extra={\"status_code\": 410, \"request\": request}\n )\n return HttpResponseGone()\n", + "kwargs": "self, request, *args, **kwargs", + "line_number": 246 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "RedirectView", + "django.views.generic.base", + "Django", + "4.1" + ], + "name": "get_redirect_url", + "docstring": "Return the URL redirect to. Keyword arguments from the URL pattern\nmatch generating the redirect request are provided as kwargs to this\nmethod.", + "code": "def get_redirect_url(self, *args, **kwargs):\n \"\"\"\n Return the URL redirect to. Keyword arguments from the URL pattern\n match generating the redirect request are provided as kwargs to this\n method.\n \"\"\"\n if self.url:\n url = self.url % kwargs\n elif self.pattern_name:\n url = reverse(self.pattern_name, args=args, kwargs=kwargs)\n else:\n return None\n args = self.request.META.get(\"QUERY_STRING\", \"\")\n if args and self.query_string:\n url = \"%s?%s\" % (url, args)\n return url\n", + "kwargs": "self, *args, **kwargs", + "line_number": 228 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "RedirectView", + "django.views.generic.base", + "Django", + "4.1" + ], + "name": "head", + "docstring": "", + "code": "def head(self, request, *args, **kwargs):\n return self.get(request, *args, **kwargs)\n", + "kwargs": "self, request, *args, **kwargs", + "line_number": 259 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "RedirectView", + "django.views.generic.base", + "Django", + "4.1" + ], + "name": "options", + "docstring": "Handle responding to requests for the OPTIONS HTTP verb.", + "code": "def options(self, request, *args, **kwargs):\n return self.get(request, *args, **kwargs)\n", + "kwargs": "self, request, *args, **kwargs", + "line_number": 265 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "RedirectView", + "django.views.generic.base", + "Django", + "4.1" + ], + "name": "patch", + "docstring": "", + "code": "def patch(self, request, *args, **kwargs):\n return self.get(request, *args, **kwargs)\n", + "kwargs": "self, request, *args, **kwargs", + "line_number": 274 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "RedirectView", + "django.views.generic.base", + "Django", + "4.1" + ], + "name": "post", + "docstring": "", + "code": "def post(self, request, *args, **kwargs):\n return self.get(request, *args, **kwargs)\n", + "kwargs": "self, request, *args, **kwargs", + "line_number": 262 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "RedirectView", + "django.views.generic.base", + "Django", + "4.1" + ], + "name": "put", + "docstring": "", + "code": "def put(self, request, *args, **kwargs):\n return self.get(request, *args, **kwargs)\n", + "kwargs": "self, request, *args, **kwargs", + "line_number": 271 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "TemplateResponseMixin", + "django.views.generic.base", + "Django", + "4.1" + ], + "name": "get_template_names", + "docstring": "Return a list of template names to be used for the request. Must return\na list. May not be called if render_to_response() is overridden.", + "code": "def get_template_names(self):\n \"\"\"\n Return a list of template names to be used for the request. Must return\n a list. May not be called if render_to_response() is overridden.\n \"\"\"\n if self.template_name is None:\n raise ImproperlyConfigured(\n \"TemplateResponseMixin requires either a definition of \"\n \"'template_name' or an implementation of 'get_template_names()'\"\n )\n else:\n return [self.template_name]\n", + "kwargs": "self", + "line_number": 196 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "TemplateResponseMixin", + "django.views.generic.base", + "Django", + "4.1" + ], + "name": "render_to_response", + "docstring": "Return a response, using the `response_class` for this view, with a\ntemplate rendered with the given context.\n\nPass response_kwargs to the constructor of the response class.", + "code": "def render_to_response(self, context, **response_kwargs):\n \"\"\"\n Return a response, using the `response_class` for this view, with a\n template rendered with the given context.\n Pass response_kwargs to the constructor of the response class.\n \"\"\"\n response_kwargs.setdefault(\"content_type\", self.content_type)\n return self.response_class(\n request=self.request,\n template=self.get_template_names(),\n context=context,\n using=self.template_engine,\n **response_kwargs,\n )\n", + "kwargs": "self, context, **response_kwargs", + "line_number": 180 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "TemplateView", + "django.views.generic.base", + "Django", + "4.1" + ], + "name": "get", + "docstring": "", + "code": "def get(self, request, *args, **kwargs):\n context = self.get_context_data(**kwargs)\n return self.render_to_response(context)\n", + "kwargs": "self, request, *args, **kwargs", + "line_number": 215 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "View", + "django.views.generic.base", + "Django", + "4.1" + ], + "name": "_allowed_methods", + "docstring": "", + "code": "def _allowed_methods(self):\n return [m.upper() for m in self.http_method_names if hasattr(self, m)]\n", + "kwargs": "self", + "line_number": 168 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "View", + "django.views.generic.base", + "Django", + "4.1" + ], + "name": "as_view", + "docstring": "Main entry point for a request-response process.", + "code": "@classonlymethod\ndef as_view(cls, **initkwargs):\n \"\"\"Main entry point for a request-response process.\"\"\"\n for key in initkwargs:\n if key in cls.http_method_names:\n raise TypeError(\n \"The method name %s is not accepted as a keyword argument \"\n \"to %s().\" % (key, cls.__name__)\n )\n if not hasattr(cls, key):\n raise TypeError(\n \"%s() received an invalid keyword %r. as_view \"\n \"only accepts arguments that are already \"\n \"attributes of the class.\" % (cls.__name__, key)\n )\n def view(request, *args, **kwargs):\n self = cls(**initkwargs)\n self.setup(request, *args, **kwargs)\n if not hasattr(self, \"request\"):\n raise AttributeError(\n \"%s instance has no 'request' attribute. Did you override \"\n \"setup() and forget to call super()?\" % cls.__name__\n )\n return self.dispatch(request, *args, **kwargs)\n view.view_class = cls\n view.view_initkwargs = initkwargs\n # __name__ and __qualname__ are intentionally left unchanged as\n # view_class should be used to robustly determine the name of the view\n # instead.\n view.__doc__ = cls.__doc__\n view.__module__ = cls.__module__\n view.__annotations__ = cls.dispatch.__annotations__\n # Copy possible attributes set by decorators, e.g. @csrf_exempt, from\n # the dispatch method.\n view.__dict__.update(cls.dispatch.__dict__)\n # Mark the callback if the view class is async.\n if cls.view_is_async:\n view._is_coroutine = asyncio.coroutines._is_coroutine\n return view\n", + "kwargs": "cls, **initkwargs", + "line_number": 79 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "View", + "django.views.generic.base", + "Django", + "4.1" + ], + "name": "dispatch", + "docstring": "", + "code": "def dispatch(self, request, *args, **kwargs):\n # Try to dispatch to the right method; if a method doesn't exist,\n # defer to the error handler. Also defer to the error handler if the\n # request method isn't on the approved list.\n if request.method.lower() in self.http_method_names:\n handler = getattr(\n self, request.method.lower(), self.http_method_not_allowed\n )\n else:\n handler = self.http_method_not_allowed\n return handler(request, *args, **kwargs)\n", + "kwargs": "self, request, *args, **kwargs", + "line_number": 132 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "View", + "django.views.generic.base", + "Django", + "4.1" + ], + "name": "http_method_not_allowed", + "docstring": "", + "code": "def http_method_not_allowed(self, request, *args, **kwargs):\n logger.warning(\n \"Method Not Allowed (%s): %s\",\n request.method,\n request.path,\n extra={\"status_code\": 405, \"request\": request},\n )\n return HttpResponseNotAllowed(self._allowed_methods())\n", + "kwargs": "self, request, *args, **kwargs", + "line_number": 144 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "View", + "django.views.generic.base", + "Django", + "4.1" + ], + "name": "__init__", + "docstring": "Constructor. Called in the URLconf; can contain helpful extra\nkeyword arguments, and other things.", + "code": "def __init__(self, **kwargs):\n \"\"\"\n Constructor. Called in the URLconf; can contain helpful extra\n keyword arguments, and other things.\n \"\"\"\n # Go through keyword arguments, and either save their values to our\n # instance, or raise an error.\n for key, value in kwargs.items():\n setattr(self, key, value)\n", + "kwargs": "self, **kwargs", + "line_number": 52 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "View", + "django.views.generic.base", + "Django", + "4.1" + ], + "name": "options", + "docstring": "Handle responding to requests for the OPTIONS HTTP verb.", + "code": "def options(self, request, *args, **kwargs):\n \"\"\"Handle responding to requests for the OPTIONS HTTP verb.\"\"\"\n response = HttpResponse()\n response.headers[\"Allow\"] = \", \".join(self._allowed_methods())\n response.headers[\"Content-Length\"] = \"0\"\n if self.view_is_async:\n async def func():\n return response\n return func()\n else:\n return response\n", + "kwargs": "self, request, *args, **kwargs", + "line_number": 153 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "View", + "django.views.generic.base", + "Django", + "4.1" + ], + "name": "setup", + "docstring": "Initialize attributes shared by all view methods.", + "code": "def setup(self, request, *args, **kwargs):\n \"\"\"Initialize attributes shared by all view methods.\"\"\"\n if hasattr(self, \"get\") and not hasattr(self, \"head\"):\n self.head = self.get\n self.request = request\n self.args = args\n self.kwargs = kwargs\n", + "kwargs": "self, request, *args, **kwargs", + "line_number": 124 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "BaseArchiveIndexView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "get_dated_items", + "docstring": "Return (date_list, items, extra_context) for this request.", + "code": "def get_dated_items(self):\n \"\"\"Return (date_list, items, extra_context) for this request.\"\"\"\n qs = self.get_dated_queryset()\n date_list = self.get_date_list(qs, ordering=\"DESC\")\n if not date_list:\n qs = qs.none()\n return (date_list, qs, {})\n", + "kwargs": "self", + "line_number": 396 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "BaseDateDetailView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "get_object", + "docstring": "Get the object this request displays.", + "code": "def get_object(self, queryset=None):\n \"\"\"Get the object this request displays.\"\"\"\n year = self.get_year()\n month = self.get_month()\n day = self.get_day()\n date = _date_from_string(\n year,\n self.get_year_format(),\n month,\n self.get_month_format(),\n day,\n self.get_day_format(),\n )\n # Use a custom queryset if provided\n qs = self.get_queryset() if queryset is None else queryset\n if not self.get_allow_future() and date > datetime.date.today():\n raise Http404(\n _(\n \"Future %(verbose_name_plural)s not available because \"\n \"%(class_name)s.allow_future is False.\"\n )\n % {\n \"verbose_name_plural\": qs.model._meta.verbose_name_plural,\n \"class_name\": self.__class__.__name__,\n }\n )\n # Filter down a queryset from self.queryset using the date from the\n # URL. This'll get passed as the queryset to DetailView.get_object,\n # which'll handle the 404\n lookup_kwargs = self._make_single_date_lookup(date)\n qs = qs.filter(**lookup_kwargs)\n return super().get_object(queryset=qs)\n", + "kwargs": "self, queryset=None", + "line_number": 632 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "BaseDateListView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "get", + "docstring": "", + "code": "def get(self, request, *args, **kwargs):\n self.date_list, self.object_list, extra_context = self.get_dated_items()\n context = self.get_context_data(\n object_list=self.object_list, date_list=self.date_list, **extra_context\n )\n return self.render_to_response(context)\n", + "kwargs": "self, request, *args, **kwargs", + "line_number": 308 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "BaseDateListView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "get_dated_items", + "docstring": "Obtain the list of dates and items.", + "code": "def get_dated_items(self):\n \"\"\"Obtain the list of dates and items.\"\"\"\n raise NotImplementedError(\n \"A DateView must provide an implementation of get_dated_items()\"\n )\n", + "kwargs": "self", + "line_number": 315 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "BaseDateListView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "get_dated_queryset", + "docstring": "Get a queryset properly filtered according to `allow_future` and any\nextra lookup kwargs.", + "code": "def get_dated_queryset(self, **lookup):\n \"\"\"\n Get a queryset properly filtered according to `allow_future` and any\n extra lookup kwargs.\n \"\"\"\n qs = self.get_queryset().filter(**lookup)\n date_field = self.get_date_field()\n allow_future = self.get_allow_future()\n allow_empty = self.get_allow_empty()\n paginate_by = self.get_paginate_by(qs)\n if not allow_future:\n now = timezone.now() if self.uses_datetime_field else timezone_today()\n qs = qs.filter(**{\"%s__lte\" % date_field: now})\n if not allow_empty:\n # When pagination is enabled, it's better to do a cheap query\n # than to load the unpaginated queryset in memory.\n is_empty = not qs if paginate_by is None else not qs.exists()\n if is_empty:\n raise Http404(\n _(\"No %(verbose_name_plural)s available\")\n % {\n \"verbose_name_plural\": qs.model._meta.verbose_name_plural,\n }\n )\n return qs\n", + "kwargs": "self, **lookup", + "line_number": 328 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "BaseDateListView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "get_date_list", + "docstring": "Get a date list by calling `queryset.dates/datetimes()`, checking\nalong the way for empty lists that aren't allowed.", + "code": "def get_date_list(self, queryset, date_type=None, ordering=\"ASC\"):\n \"\"\"\n Get a date list by calling `queryset.dates/datetimes()`, checking\n along the way for empty lists that aren't allowed.\n \"\"\"\n date_field = self.get_date_field()\n allow_empty = self.get_allow_empty()\n if date_type is None:\n date_type = self.get_date_list_period()\n if self.uses_datetime_field:\n date_list = queryset.datetimes(date_field, date_type, ordering)\n else:\n date_list = queryset.dates(date_field, date_type, ordering)\n if date_list is not None and not date_list and not allow_empty:\n raise Http404(\n _(\"No %(verbose_name_plural)s available\")\n % {\n \"verbose_name_plural\": queryset.model._meta.verbose_name_plural,\n }\n )\n return date_list\n", + "kwargs": "self, queryset, date_type=None, ordering='ASC'", + "line_number": 364 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "BaseDateListView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "get_date_list_period", + "docstring": "Get the aggregation period for the list of dates: 'year', 'month', or\n'day'.", + "code": "def get_date_list_period(self):\n \"\"\"\n Get the aggregation period for the list of dates: 'year', 'month', or\n 'day'.\n \"\"\"\n return self.date_list_period\n", + "kwargs": "self", + "line_number": 357 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "BaseDateListView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "get_ordering", + "docstring": "Return the field or fields to use for ordering the queryset; use the\ndate field by default.", + "code": "def get_ordering(self):\n \"\"\"\n Return the field or fields to use for ordering the queryset; use the\n date field by default.\n \"\"\"\n return \"-%s\" % self.get_date_field() if self.ordering is None else self.ordering\n", + "kwargs": "self", + "line_number": 321 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "BaseDayArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "_get_dated_items", + "docstring": "Do the actual heavy lifting of getting the dated items; this accepts a\ndate object so that TodayArchiveView can be trivial.", + "code": "def _get_dated_items(self, date):\n \"\"\"\n Do the actual heavy lifting of getting the dated items; this accepts a\n date object so that TodayArchiveView can be trivial.\n \"\"\"\n lookup_kwargs = self._make_single_date_lookup(date)\n qs = self.get_dated_queryset(**lookup_kwargs)\n return (\n None,\n qs,\n {\n \"day\": date,\n \"previous_day\": self.get_previous_day(date),\n \"next_day\": self.get_next_day(date),\n \"previous_month\": self.get_previous_month(date),\n \"next_month\": self.get_next_month(date),\n },\n )\n", + "kwargs": "self, date", + "line_number": 585 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "BaseDayArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "get_dated_items", + "docstring": "Return (date_list, items, extra_context) for this request.", + "code": "def get_dated_items(self):\n \"\"\"Return (date_list, items, extra_context) for this request.\"\"\"\n year = self.get_year()\n month = self.get_month()\n day = self.get_day()\n date = _date_from_string(\n year,\n self.get_year_format(),\n month,\n self.get_month_format(),\n day,\n self.get_day_format(),\n )\n return self._get_dated_items(date)\n", + "kwargs": "self", + "line_number": 568 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "BaseMonthArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "get_dated_items", + "docstring": "Return (date_list, items, extra_context) for this request.", + "code": "def get_dated_items(self):\n \"\"\"Return (date_list, items, extra_context) for this request.\"\"\"\n year = self.get_year()\n month = self.get_month()\n date_field = self.get_date_field()\n date = _date_from_string(\n year, self.get_year_format(), month, self.get_month_format()\n )\n since = self._make_date_lookup_arg(date)\n until = self._make_date_lookup_arg(self._get_next_month(date))\n lookup_kwargs = {\n \"%s__gte\" % date_field: since,\n \"%s__lt\" % date_field: until,\n }\n qs = self.get_dated_queryset(**lookup_kwargs)\n date_list = self.get_date_list(qs)\n return (\n date_list,\n qs,\n {\n \"month\": date,\n \"next_month\": self.get_next_month(date),\n \"previous_month\": self.get_previous_month(date),\n },\n )\n", + "kwargs": "self", + "line_number": 470 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "BaseTodayArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "get_dated_items", + "docstring": "Return (date_list, items, extra_context) for this request.", + "code": "def get_dated_items(self):\n \"\"\"Return (date_list, items, extra_context) for this request.\"\"\"\n return self._get_dated_items(datetime.date.today())\n", + "kwargs": "self", + "line_number": 615 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "BaseWeekArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "get_dated_items", + "docstring": "Return (date_list, items, extra_context) for this request.", + "code": "def get_dated_items(self):\n \"\"\"Return (date_list, items, extra_context) for this request.\"\"\"\n year = self.get_year()\n week = self.get_week()\n date_field = self.get_date_field()\n week_format = self.get_week_format()\n week_choices = {\"%W\": \"1\", \"%U\": \"0\", \"%V\": \"1\"}\n try:\n week_start = week_choices[week_format]\n except KeyError:\n raise ValueError(\n \"Unknown week format %r. Choices are: %s\"\n % (\n week_format,\n \", \".join(sorted(week_choices)),\n )\n )\n year_format = self.get_year_format()\n if week_format == \"%V\" and year_format != \"%G\":\n raise ValueError(\n \"ISO week directive '%s' is incompatible with the year \"\n \"directive '%s'. Use the ISO year '%%G' instead.\"\n % (\n week_format,\n year_format,\n )\n )\n date = _date_from_string(year, year_format, week_start, \"%w\", week, week_format)\n since = self._make_date_lookup_arg(date)\n until = self._make_date_lookup_arg(self._get_next_week(date))\n lookup_kwargs = {\n \"%s__gte\" % date_field: since,\n \"%s__lt\" % date_field: until,\n }\n qs = self.get_dated_queryset(**lookup_kwargs)\n return (\n None,\n qs,\n {\n \"week\": date,\n \"next_week\": self.get_next_week(date),\n \"previous_week\": self.get_previous_week(date),\n },\n )\n", + "kwargs": "self", + "line_number": 510 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "BaseYearArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "get_dated_items", + "docstring": "Return (date_list, items, extra_context) for this request.", + "code": "def get_dated_items(self):\n \"\"\"Return (date_list, items, extra_context) for this request.\"\"\"\n year = self.get_year()\n date_field = self.get_date_field()\n date = _date_from_string(year, self.get_year_format())\n since = self._make_date_lookup_arg(date)\n until = self._make_date_lookup_arg(self._get_next_year(date))\n lookup_kwargs = {\n \"%s__gte\" % date_field: since,\n \"%s__lt\" % date_field: until,\n }\n qs = self.get_dated_queryset(**lookup_kwargs)\n date_list = self.get_date_list(qs)\n if not self.get_make_object_list():\n # We need this to be a queryset since parent classes introspect it\n # to find information about the model.\n qs = qs.none()\n return (\n date_list,\n qs,\n {\n \"year\": date,\n \"next_year\": self.get_next_year(date),\n \"previous_year\": self.get_previous_year(date),\n },\n )\n", + "kwargs": "self", + "line_number": 419 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "BaseYearArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "get_make_object_list", + "docstring": "Return `True` if this view should contain the full list of objects in\nthe given year.", + "code": "def get_make_object_list(self):\n \"\"\"\n Return `True` if this view should contain the full list of objects in\n the given year.\n \"\"\"\n return self.make_object_list\n", + "kwargs": "self", + "line_number": 451 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "DateMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "get_allow_future", + "docstring": "Return `True` if the view should be allowed to display objects from\nthe future.", + "code": "def get_allow_future(self):\n \"\"\"\n Return `True` if the view should be allowed to display objects from\n the future.\n \"\"\"\n return self.allow_future\n", + "kwargs": "self", + "line_number": 249 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "DateMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "get_date_field", + "docstring": "Get the name of the date field to be used to filter by.", + "code": "def get_date_field(self):\n \"\"\"Get the name of the date field to be used to filter by.\"\"\"\n if self.date_field is None:\n raise ImproperlyConfigured(\n \"%s.date_field is required.\" % self.__class__.__name__\n )\n return self.date_field\n", + "kwargs": "self", + "line_number": 241 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "DateMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "_make_date_lookup_arg", + "docstring": "Convert a date into a datetime when the date field is a DateTimeField.\n\nWhen time zone support is enabled, `date` is assumed to be in the\ncurrent time zone, so that displayed items are consistent with the URL.", + "code": "def _make_date_lookup_arg(self, value):\n \"\"\"\n Convert a date into a datetime when the date field is a DateTimeField.\n When time zone support is enabled, `date` is assumed to be in the\n current time zone, so that displayed items are consistent with the URL.\n \"\"\"\n if self.uses_datetime_field:\n value = datetime.datetime.combine(value, datetime.time.min)\n if settings.USE_TZ:\n value = timezone.make_aware(value)\n return value\n", + "kwargs": "self, value", + "line_number": 269 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "DateMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "_make_single_date_lookup", + "docstring": "Get the lookup kwargs for filtering on a single date.\n\nIf the date field is a DateTimeField, we can't just filter on\ndate_field=date because that doesn't take the time into account.", + "code": "def _make_single_date_lookup(self, date):\n \"\"\"\n Get the lookup kwargs for filtering on a single date.\n If the date field is a DateTimeField, we can't just filter on\n date_field=date because that doesn't take the time into account.\n \"\"\"\n date_field = self.get_date_field()\n if self.uses_datetime_field:\n since = self._make_date_lookup_arg(date)\n until = self._make_date_lookup_arg(date + datetime.timedelta(days=1))\n return {\n \"%s__gte\" % date_field: since,\n \"%s__lt\" % date_field: until,\n }\n else:\n # Skip self._make_date_lookup_arg, it's a no-op in this branch.\n return {date_field: date}\n", + "kwargs": "self, date", + "line_number": 282 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "DayMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "_get_current_day", + "docstring": "Return the start date of the current interval.", + "code": "def _get_current_day(self, date):\n \"\"\"Return the start date of the current interval.\"\"\"\n return date\n", + "kwargs": "self, date", + "line_number": 166 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "DayMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "get_day", + "docstring": "Return the day for which this view should display data.", + "code": "def get_day(self):\n \"\"\"Return the day for which this view should display data.\"\"\"\n day = self.day\n if day is None:\n try:\n day = self.kwargs[\"day\"]\n except KeyError:\n try:\n day = self.request.GET[\"day\"]\n except KeyError:\n raise Http404(_(\"No day specified\"))\n return day\n", + "kwargs": "self", + "line_number": 137 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "DayMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "get_day_format", + "docstring": "Get a day format string in strptime syntax to be used to parse the day\nfrom url variables.", + "code": "def get_day_format(self):\n \"\"\"\n Get a day format string in strptime syntax to be used to parse the day\n from url variables.\n \"\"\"\n return self.day_format\n", + "kwargs": "self", + "line_number": 130 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "DayMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "_get_next_day", + "docstring": "Return the start date of the next interval.\n\nThe interval is defined by start date <= item date < next start date.", + "code": "def _get_next_day(self, date):\n \"\"\"\n Return the start date of the next interval.\n The interval is defined by start date <= item date < next start date.\n \"\"\"\n return date + datetime.timedelta(days=1)\n", + "kwargs": "self, date", + "line_number": 158 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "DayMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "get_next_day", + "docstring": "Get the next valid day.", + "code": "def get_next_day(self, date):\n \"\"\"Get the next valid day.\"\"\"\n return _get_next_prev(self, date, is_previous=False, period=\"day\")\n", + "kwargs": "self, date", + "line_number": 150 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "DayMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "get_previous_day", + "docstring": "Get the previous valid day.", + "code": "def get_previous_day(self, date):\n \"\"\"Get the previous valid day.\"\"\"\n return _get_next_prev(self, date, is_previous=True, period=\"day\")\n", + "kwargs": "self, date", + "line_number": 154 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "MonthMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "_get_current_month", + "docstring": "Return the start date of the previous interval.", + "code": "def _get_current_month(self, date):\n \"\"\"Return the start date of the previous interval.\"\"\"\n return date.replace(day=1)\n", + "kwargs": "self, date", + "line_number": 119 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "MonthMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "get_month", + "docstring": "Return the month for which this view should display data.", + "code": "def get_month(self):\n \"\"\"Return the month for which this view should display data.\"\"\"\n month = self.month\n if month is None:\n try:\n month = self.kwargs[\"month\"]\n except KeyError:\n try:\n month = self.request.GET[\"month\"]\n except KeyError:\n raise Http404(_(\"No month specified\"))\n return month\n", + "kwargs": "self", + "line_number": 84 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "MonthMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "get_month_format", + "docstring": "Get a month format string in strptime syntax to be used to parse the\nmonth from url variables.", + "code": "def get_month_format(self):\n \"\"\"\n Get a month format string in strptime syntax to be used to parse the\n month from url variables.\n \"\"\"\n return self.month_format\n", + "kwargs": "self", + "line_number": 77 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "MonthMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "_get_next_month", + "docstring": "Return the start date of the next interval.\n\nThe interval is defined by start date <= item date < next start date.", + "code": "def _get_next_month(self, date):\n \"\"\"\n Return the start date of the next interval.\n The interval is defined by start date <= item date < next start date.\n \"\"\"\n if date.month == 12:\n try:\n return date.replace(year=date.year + 1, month=1, day=1)\n except ValueError:\n raise Http404(_(\"Date out of range\"))\n else:\n return date.replace(month=date.month + 1, day=1)\n", + "kwargs": "self, date", + "line_number": 105 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "MonthMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "get_next_month", + "docstring": "Get the next valid month.", + "code": "def get_next_month(self, date):\n \"\"\"Get the next valid month.\"\"\"\n return _get_next_prev(self, date, is_previous=False, period=\"month\")\n", + "kwargs": "self, date", + "line_number": 97 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "MonthMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "get_previous_month", + "docstring": "Get the previous valid month.", + "code": "def get_previous_month(self, date):\n \"\"\"Get the previous valid month.\"\"\"\n return _get_next_prev(self, date, is_previous=True, period=\"month\")\n", + "kwargs": "self, date", + "line_number": 101 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "WeekMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "_get_current_week", + "docstring": "Return the start date of the current interval.", + "code": "def _get_current_week(self, date):\n \"\"\"Return the start date of the current interval.\"\"\"\n return date - datetime.timedelta(self._get_weekday(date))\n", + "kwargs": "self, date", + "line_number": 216 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "WeekMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "_get_next_week", + "docstring": "Return the start date of the next interval.\n\nThe interval is defined by start date <= item date < next start date.", + "code": "def _get_next_week(self, date):\n \"\"\"\n Return the start date of the next interval.\n The interval is defined by start date <= item date < next start date.\n \"\"\"\n try:\n return date + datetime.timedelta(days=7 - self._get_weekday(date))\n except OverflowError:\n raise Http404(_(\"Date out of range\"))\n", + "kwargs": "self, date", + "line_number": 205 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "WeekMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "get_next_week", + "docstring": "Get the next valid week.", + "code": "def get_next_week(self, date):\n \"\"\"Get the next valid week.\"\"\"\n return _get_next_prev(self, date, is_previous=False, period=\"week\")\n", + "kwargs": "self, date", + "line_number": 197 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "WeekMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "get_previous_week", + "docstring": "Get the previous valid week.", + "code": "def get_previous_week(self, date):\n \"\"\"Get the previous valid week.\"\"\"\n return _get_next_prev(self, date, is_previous=True, period=\"week\")\n", + "kwargs": "self, date", + "line_number": 201 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "WeekMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "get_week", + "docstring": "Return the week for which this view should display data.", + "code": "def get_week(self):\n \"\"\"Return the week for which this view should display data.\"\"\"\n week = self.week\n if week is None:\n try:\n week = self.kwargs[\"week\"]\n except KeyError:\n try:\n week = self.request.GET[\"week\"]\n except KeyError:\n raise Http404(_(\"No week specified\"))\n return week\n", + "kwargs": "self", + "line_number": 184 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "WeekMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "_get_weekday", + "docstring": "Return the weekday for a given date.\n\nThe first day according to the week format is 0 and the last day is 6.", + "code": "def _get_weekday(self, date):\n \"\"\"\n Return the weekday for a given date.\n The first day according to the week format is 0 and the last day is 6.\n \"\"\"\n week_format = self.get_week_format()\n if week_format in {\"%W\", \"%V\"}: # week starts on Monday\n return date.weekday()\n elif week_format == \"%U\": # week starts on Sunday\n return (date.weekday() + 1) % 7\n else:\n raise ValueError(\"unknown week format: %s\" % week_format)\n", + "kwargs": "self, date", + "line_number": 220 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "WeekMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "get_week_format", + "docstring": "Get a week format string in strptime syntax to be used to parse the\nweek from url variables.", + "code": "def get_week_format(self):\n \"\"\"\n Get a week format string in strptime syntax to be used to parse the\n week from url variables.\n \"\"\"\n return self.week_format\n", + "kwargs": "self", + "line_number": 177 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "YearMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "_get_current_year", + "docstring": "Return the start date of the current interval.", + "code": "def _get_current_year(self, date):\n \"\"\"Return the start date of the current interval.\"\"\"\n return date.replace(month=1, day=1)\n", + "kwargs": "self, date", + "line_number": 66 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "YearMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "_get_next_year", + "docstring": "Return the start date of the next interval.\n\nThe interval is defined by start date <= item date < next start date.", + "code": "def _get_next_year(self, date):\n \"\"\"\n Return the start date of the next interval.\n The interval is defined by start date <= item date < next start date.\n \"\"\"\n try:\n return date.replace(year=date.year + 1, month=1, day=1)\n except ValueError:\n raise Http404(_(\"Date out of range\"))\n", + "kwargs": "self, date", + "line_number": 55 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "YearMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "get_next_year", + "docstring": "Get the next valid year.", + "code": "def get_next_year(self, date):\n \"\"\"Get the next valid year.\"\"\"\n return _get_next_prev(self, date, is_previous=False, period=\"year\")\n", + "kwargs": "self, date", + "line_number": 47 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "YearMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "get_previous_year", + "docstring": "Get the previous valid year.", + "code": "def get_previous_year(self, date):\n \"\"\"Get the previous valid year.\"\"\"\n return _get_next_prev(self, date, is_previous=True, period=\"year\")\n", + "kwargs": "self, date", + "line_number": 51 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "YearMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "get_year", + "docstring": "Return the year for which this view should display data.", + "code": "def get_year(self):\n \"\"\"Return the year for which this view should display data.\"\"\"\n year = self.year\n if year is None:\n try:\n year = self.kwargs[\"year\"]\n except KeyError:\n try:\n year = self.request.GET[\"year\"]\n except KeyError:\n raise Http404(_(\"No year specified\"))\n return year\n", + "kwargs": "self", + "line_number": 34 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "YearMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "name": "get_year_format", + "docstring": "Get a year format string in strptime syntax to be used to parse the\nyear from url variables.", + "code": "def get_year_format(self):\n \"\"\"\n Get a year format string in strptime syntax to be used to parse the\n year from url variables.\n \"\"\"\n return self.year_format\n", + "kwargs": "self", + "line_number": 27 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "BaseDetailView", + "django.views.generic.detail", + "Django", + "4.1" + ], + "name": "get", + "docstring": "", + "code": "def get(self, request, *args, **kwargs):\n self.object = self.get_object()\n context = self.get_context_data(object=self.object)\n return self.render_to_response(context)\n", + "kwargs": "self, request, *args, **kwargs", + "line_number": 107 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "SingleObjectMixin", + "django.views.generic.detail", + "Django", + "4.1" + ], + "name": "get_context_data", + "docstring": "Insert the single object into the context dict.", + "code": "def get_context_data(self, **kwargs):\n \"\"\"Insert the single object into the context dict.\"\"\"\n context = {}\n if self.object:\n context[\"object\"] = self.object\n context_object_name = self.get_context_object_name(self.object)\n if context_object_name:\n context[context_object_name] = self.object\n context.update(kwargs)\n return super().get_context_data(**context)\n", + "kwargs": "self, **kwargs", + "line_number": 92 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "SingleObjectMixin", + "django.views.generic.detail", + "Django", + "4.1" + ], + "name": "get_context_object_name", + "docstring": "Get the name to use for the object.", + "code": "def get_context_object_name(self, obj):\n \"\"\"Get the name to use for the object.\"\"\"\n if self.context_object_name:\n return self.context_object_name\n elif isinstance(obj, models.Model):\n return obj._meta.model_name\n else:\n return None\n", + "kwargs": "self, obj", + "line_number": 83 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "SingleObjectMixin", + "django.views.generic.detail", + "Django", + "4.1" + ], + "name": "get_object", + "docstring": "Return the object the view is displaying.\n\nRequire `self.queryset` and a `pk` or `slug` argument in the URLconf.\nSubclasses can override this to return any object.", + "code": "def get_object(self, queryset=None):\n \"\"\"\n Return the object the view is displaying.\n Require `self.queryset` and a `pk` or `slug` argument in the URLconf.\n Subclasses can override this to return any object.\n \"\"\"\n # Use a custom queryset if provided; this is required for subclasses\n # like DateDetailView\n if queryset is None:\n queryset = self.get_queryset()\n # Next, try looking up by primary key.\n pk = self.kwargs.get(self.pk_url_kwarg)\n slug = self.kwargs.get(self.slug_url_kwarg)\n if pk is not None:\n queryset = queryset.filter(pk=pk)\n # Next, try looking up by slug.\n if slug is not None and (pk is None or self.query_pk_and_slug):\n slug_field = self.get_slug_field()\n queryset = queryset.filter(**{slug_field: slug})\n # If none of those are defined, it's an error.\n if pk is None and slug is None:\n raise AttributeError(\n \"Generic detail view %s must be called with either an object \"\n \"pk or a slug in the URLconf.\" % self.__class__.__name__\n )\n try:\n # Get the single item from the filtered queryset\n obj = queryset.get()\n except queryset.model.DoesNotExist:\n raise Http404(\n _(\"No %(verbose_name)s found matching the query\")\n % {\"verbose_name\": queryset.model._meta.verbose_name}\n )\n return obj\n", + "kwargs": "self, queryset=None", + "line_number": 21 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "SingleObjectMixin", + "django.views.generic.detail", + "Django", + "4.1" + ], + "name": "get_queryset", + "docstring": "Return the `QuerySet` that will be used to look up the object.\n\nThis method is called by the default implementation of get_object() and\nmay not be called if get_object() is overridden.", + "code": "def get_queryset(self):\n \"\"\"\n Return the `QuerySet` that will be used to look up the object.\n This method is called by the default implementation of get_object() and\n may not be called if get_object() is overridden.\n \"\"\"\n if self.queryset is None:\n if self.model:\n return self.model._default_manager.all()\n else:\n raise ImproperlyConfigured(\n \"%(cls)s is missing a QuerySet. Define \"\n \"%(cls)s.model, %(cls)s.queryset, or override \"\n \"%(cls)s.get_queryset().\" % {\"cls\": self.__class__.__name__}\n )\n return self.queryset.all()\n", + "kwargs": "self", + "line_number": 61 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "SingleObjectMixin", + "django.views.generic.detail", + "Django", + "4.1" + ], + "name": "get_slug_field", + "docstring": "Get the name of a slug field to be used to look up by slug.", + "code": "def get_slug_field(self):\n \"\"\"Get the name of a slug field to be used to look up by slug.\"\"\"\n return self.slug_field\n", + "kwargs": "self", + "line_number": 79 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "SingleObjectTemplateResponseMixin", + "django.views.generic.detail", + "Django", + "4.1" + ], + "name": "get_template_names", + "docstring": "Return a list of template names to be used for the request. May not be\ncalled if render_to_response() is overridden. Return the following list:\n\n* the value of ``template_name`` on the view (if provided)\n* the contents of the ``template_name_field`` field on the\n object instance that the view is operating upon (if available)\n* ``/.html``", + "code": "def get_template_names(self):\n \"\"\"\n Return a list of template names to be used for the request. May not be\n called if render_to_response() is overridden. Return the following list:\n * the value of ``template_name`` on the view (if provided)\n * the contents of the ``template_name_field`` field on the\n object instance that the view is operating upon (if available)\n * ``/.html``\n \"\"\"\n try:\n names = super().get_template_names()\n except ImproperlyConfigured:\n # If template_name isn't specified, it's not a problem --\n # we just start with an empty list.\n names = []\n # If self.template_name_field is set, grab the value of the field\n # of that name from the object; this is the most specific template\n # name, if given.\n if self.object and self.template_name_field:\n name = getattr(self.object, self.template_name_field, None)\n if name:\n names.insert(0, name)\n # The least-specific option is the default /_detail.html;\n # only use this if the object in question is a model.\n if isinstance(self.object, models.Model):\n object_meta = self.object._meta\n names.append(\n \"%s/%s%s.html\"\n % (\n object_meta.app_label,\n object_meta.model_name,\n self.template_name_suffix,\n )\n )\n elif getattr(self, \"model\", None) is not None and issubclass(\n self.model, models.Model\n ):\n names.append(\n \"%s/%s%s.html\"\n % (\n self.model._meta.app_label,\n self.model._meta.model_name,\n self.template_name_suffix,\n )\n )\n # If we still haven't managed to find any template names, we should\n # re-raise the ImproperlyConfigured to alert the user.\n if not names:\n raise\n return names\n", + "kwargs": "self", + "line_number": 117 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "BaseCreateView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "get", + "docstring": "Handle GET requests: instantiate a blank version of the form.", + "code": "def get(self, request, *args, **kwargs):\n self.object = None\n return super().get(request, *args, **kwargs)\n", + "kwargs": "self, request, *args, **kwargs", + "line_number": 178 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "BaseCreateView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "post", + "docstring": "Handle POST requests: instantiate a form instance with the passed\nPOST variables and then check if it's valid.", + "code": "def post(self, request, *args, **kwargs):\n self.object = None\n return super().post(request, *args, **kwargs)\n", + "kwargs": "self, request, *args, **kwargs", + "line_number": 182 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "BaseDeleteView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "form_valid", + "docstring": "If the form is valid, redirect to the supplied URL.", + "code": "def form_valid(self, form):\n success_url = self.get_success_url()\n self.object.delete()\n return HttpResponseRedirect(success_url)\n", + "kwargs": "self, form", + "line_number": 282 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "BaseDeleteView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "__init__", + "docstring": "Initialize self. See help(type(self)) for accurate signature.", + "code": "def __init__(self, *args, **kwargs):\n # RemovedInDjango50Warning.\n if self.__class__.delete is not DeletionMixin.delete:\n warnings.warn(\n f\"DeleteView uses FormMixin to handle POST requests. As a \"\n f\"consequence, any custom deletion logic in \"\n f\"{self.__class__.__name__}.delete() handler should be moved \"\n f\"to form_valid().\",\n DeleteViewCustomDeleteWarning,\n stacklevel=2,\n )\n super().__init__(*args, **kwargs)\n", + "kwargs": "self, *args, **kwargs", + "line_number": 257 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "BaseDeleteView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "post", + "docstring": "", + "code": "def post(self, request, *args, **kwargs):\n # Set self.object before the usual form processing flow.\n # Inlined because having DeletionMixin as the first base, for\n # get_success_url(), makes leveraging super() with ProcessFormView\n # overly complex.\n self.object = self.get_object()\n form = self.get_form()\n if form.is_valid():\n return self.form_valid(form)\n else:\n return self.form_invalid(form)\n", + "kwargs": "self, request, *args, **kwargs", + "line_number": 270 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "BaseUpdateView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "get", + "docstring": "Handle GET requests: instantiate a blank version of the form.", + "code": "def get(self, request, *args, **kwargs):\n self.object = self.get_object()\n return super().get(request, *args, **kwargs)\n", + "kwargs": "self, request, *args, **kwargs", + "line_number": 202 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "BaseUpdateView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "post", + "docstring": "Handle POST requests: instantiate a form instance with the passed\nPOST variables and then check if it's valid.", + "code": "def post(self, request, *args, **kwargs):\n self.object = self.get_object()\n return super().post(request, *args, **kwargs)\n", + "kwargs": "self, request, *args, **kwargs", + "line_number": 206 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "DeletionMixin", + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "delete", + "docstring": "Call the delete() method on the fetched object and then redirect to the\nsuccess URL.", + "code": "def delete(self, request, *args, **kwargs):\n \"\"\"\n Call the delete() method on the fetched object and then redirect to the\n success URL.\n \"\"\"\n self.object = self.get_object()\n success_url = self.get_success_url()\n self.object.delete()\n return HttpResponseRedirect(success_url)\n", + "kwargs": "self, request, *args, **kwargs", + "line_number": 222 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "DeletionMixin", + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "get_success_url", + "docstring": "", + "code": "def get_success_url(self):\n if self.success_url:\n return self.success_url.format(**self.object.__dict__)\n else:\n raise ImproperlyConfigured(\"No URL to redirect to. Provide a success_url.\")\n", + "kwargs": "self", + "line_number": 236 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "DeletionMixin", + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "post", + "docstring": "", + "code": "def post(self, request, *args, **kwargs):\n return self.delete(request, *args, **kwargs)\n", + "kwargs": "self, request, *args, **kwargs", + "line_number": 233 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "FormMixin", + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "form_invalid", + "docstring": "If the form is invalid, render the invalid form.", + "code": "def form_invalid(self, form):\n \"\"\"If the form is invalid, render the invalid form.\"\"\"\n return self.render_to_response(self.get_context_data(form=form))\n", + "kwargs": "self, form", + "line_number": 67 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "FormMixin", + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "form_valid", + "docstring": "If the form is valid, redirect to the supplied URL.", + "code": "def form_valid(self, form):\n \"\"\"If the form is valid, redirect to the supplied URL.\"\"\"\n return HttpResponseRedirect(self.get_success_url())\n", + "kwargs": "self, form", + "line_number": 63 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "FormMixin", + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "get_context_data", + "docstring": "Insert the form into the context dict.", + "code": "def get_context_data(self, **kwargs):\n \"\"\"Insert the form into the context dict.\"\"\"\n if \"form\" not in kwargs:\n kwargs[\"form\"] = self.get_form()\n return super().get_context_data(**kwargs)\n", + "kwargs": "self, **kwargs", + "line_number": 71 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "FormMixin", + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "get_form", + "docstring": "Return an instance of the form to be used in this view.", + "code": "def get_form(self, form_class=None):\n \"\"\"Return an instance of the form to be used in this view.\"\"\"\n if form_class is None:\n form_class = self.get_form_class()\n return form_class(**self.get_form_kwargs())\n", + "kwargs": "self, form_class=None", + "line_number": 35 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "FormMixin", + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "get_form_class", + "docstring": "Return the form class to use.", + "code": "def get_form_class(self):\n \"\"\"Return the form class to use.\"\"\"\n return self.form_class\n", + "kwargs": "self", + "line_number": 31 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "FormMixin", + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "get_form_kwargs", + "docstring": "Return the keyword arguments for instantiating the form.", + "code": "def get_form_kwargs(self):\n \"\"\"Return the keyword arguments for instantiating the form.\"\"\"\n kwargs = {\n \"initial\": self.get_initial(),\n \"prefix\": self.get_prefix(),\n }\n if self.request.method in (\"POST\", \"PUT\"):\n kwargs.update(\n {\n \"data\": self.request.POST,\n \"files\": self.request.FILES,\n }\n )\n return kwargs\n", + "kwargs": "self", + "line_number": 41 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "FormMixin", + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "get_initial", + "docstring": "Return the initial data to use for forms on this view.", + "code": "def get_initial(self):\n \"\"\"Return the initial data to use for forms on this view.\"\"\"\n return self.initial.copy()\n", + "kwargs": "self", + "line_number": 23 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "FormMixin", + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "get_prefix", + "docstring": "Return the prefix to use for forms.", + "code": "def get_prefix(self):\n \"\"\"Return the prefix to use for forms.\"\"\"\n return self.prefix\n", + "kwargs": "self", + "line_number": 27 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "FormMixin", + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "get_success_url", + "docstring": "Return the URL to redirect to after processing a valid form.", + "code": "def get_success_url(self):\n \"\"\"Return the URL to redirect to after processing a valid form.\"\"\"\n if not self.success_url:\n raise ImproperlyConfigured(\"No URL to redirect to. Provide a success_url.\")\n return str(self.success_url) # success_url may be lazy\n", + "kwargs": "self", + "line_number": 57 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "ModelFormMixin", + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "form_valid", + "docstring": "If the form is valid, save the associated model.", + "code": "def form_valid(self, form):\n \"\"\"If the form is valid, save the associated model.\"\"\"\n self.object = form.save()\n return super().form_valid(form)\n", + "kwargs": "self, form", + "line_number": 133 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "ModelFormMixin", + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "get_form_class", + "docstring": "Return the form class to use in this view.", + "code": "def get_form_class(self):\n \"\"\"Return the form class to use in this view.\"\"\"\n if self.fields is not None and self.form_class:\n raise ImproperlyConfigured(\n \"Specifying both 'fields' and 'form_class' is not permitted.\"\n )\n if self.form_class:\n return self.form_class\n else:\n if self.model is not None:\n # If a model has been explicitly provided, use it\n model = self.model\n elif getattr(self, \"object\", None) is not None:\n # If this view is operating on a single object, use\n # the class of that object\n model = self.object.__class__\n else:\n # Try to get a queryset and extract the model class\n # from that\n model = self.get_queryset().model\n if self.fields is None:\n raise ImproperlyConfigured(\n \"Using ModelFormMixin (base class of %s) without \"\n \"the 'fields' attribute is prohibited.\" % self.__class__.__name__\n )\n return model_forms.modelform_factory(model, fields=self.fields)\n", + "kwargs": "self", + "line_number": 83 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "ModelFormMixin", + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "get_form_kwargs", + "docstring": "Return the keyword arguments for instantiating the form.", + "code": "def get_form_kwargs(self):\n \"\"\"Return the keyword arguments for instantiating the form.\"\"\"\n kwargs = super().get_form_kwargs()\n if hasattr(self, \"object\"):\n kwargs.update({\"instance\": self.object})\n return kwargs\n", + "kwargs": "self", + "line_number": 112 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "ModelFormMixin", + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "get_success_url", + "docstring": "Return the URL to redirect to after processing a valid form.", + "code": "def get_success_url(self):\n \"\"\"Return the URL to redirect to after processing a valid form.\"\"\"\n if self.success_url:\n url = self.success_url.format(**self.object.__dict__)\n else:\n try:\n url = self.object.get_absolute_url()\n except AttributeError:\n raise ImproperlyConfigured(\n \"No URL to redirect to. Either provide a url or define\"\n \" a get_absolute_url method on the Model.\"\n )\n return url\n", + "kwargs": "self", + "line_number": 119 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "ProcessFormView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "get", + "docstring": "Handle GET requests: instantiate a blank version of the form.", + "code": "def get(self, request, *args, **kwargs):\n \"\"\"Handle GET requests: instantiate a blank version of the form.\"\"\"\n return self.render_to_response(self.get_context_data())\n", + "kwargs": "self, request, *args, **kwargs", + "line_number": 142 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "ProcessFormView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "post", + "docstring": "Handle POST requests: instantiate a form instance with the passed\nPOST variables and then check if it's valid.", + "code": "def post(self, request, *args, **kwargs):\n \"\"\"\n Handle POST requests: instantiate a form instance with the passed\n POST variables and then check if it's valid.\n \"\"\"\n form = self.get_form()\n if form.is_valid():\n return self.form_valid(form)\n else:\n return self.form_invalid(form)\n", + "kwargs": "self, request, *args, **kwargs", + "line_number": 146 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "ProcessFormView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "name": "put", + "docstring": "", + "code": "def put(self, *args, **kwargs):\n return self.post(*args, **kwargs)\n", + "kwargs": "self, *args, **kwargs", + "line_number": 159 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "BaseListView", + "django.views.generic.list", + "Django", + "4.1" + ], + "name": "get", + "docstring": "", + "code": "def get(self, request, *args, **kwargs):\n self.object_list = self.get_queryset()\n allow_empty = self.get_allow_empty()\n if not allow_empty:\n # When pagination is enabled and object_list is a queryset,\n # it's better to do a cheap query than to load the unpaginated\n # queryset in memory.\n if self.get_paginate_by(self.object_list) is not None and hasattr(\n self.object_list, \"exists\"\n ):\n is_empty = not self.object_list.exists()\n else:\n is_empty = not self.object_list\n if is_empty:\n raise Http404(\n _(\"Empty list and “%(class_name)s.allow_empty” is False.\")\n % {\n \"class_name\": self.__class__.__name__,\n }\n )\n context = self.get_context_data()\n return self.render_to_response(context)\n", + "kwargs": "self, request, *args, **kwargs", + "line_number": 153 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "MultipleObjectMixin", + "django.views.generic.list", + "Django", + "4.1" + ], + "name": "get_allow_empty", + "docstring": "Return ``True`` if the view should display empty lists and ``False``\nif a 404 should be raised instead.", + "code": "def get_allow_empty(self):\n \"\"\"\n Return ``True`` if the view should display empty lists and ``False``\n if a 404 should be raised instead.\n \"\"\"\n return self.allow_empty\n", + "kwargs": "self", + "line_number": 106 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "MultipleObjectMixin", + "django.views.generic.list", + "Django", + "4.1" + ], + "name": "get_context_data", + "docstring": "Get the context for this view.", + "code": "def get_context_data(self, *, object_list=None, **kwargs):\n \"\"\"Get the context for this view.\"\"\"\n queryset = object_list if object_list is not None else self.object_list\n page_size = self.get_paginate_by(queryset)\n context_object_name = self.get_context_object_name(queryset)\n if page_size:\n paginator, page, queryset, is_paginated = self.paginate_queryset(\n queryset, page_size\n )\n context = {\n \"paginator\": paginator,\n \"page_obj\": page,\n \"is_paginated\": is_paginated,\n \"object_list\": queryset,\n }\n else:\n context = {\n \"paginator\": None,\n \"page_obj\": None,\n \"is_paginated\": False,\n \"object_list\": queryset,\n }\n if context_object_name is not None:\n context[context_object_name] = queryset\n context.update(kwargs)\n return super().get_context_data(**context)\n", + "kwargs": "self, *, object_list=None, **kwargs", + "line_number": 122 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "MultipleObjectMixin", + "django.views.generic.list", + "Django", + "4.1" + ], + "name": "get_context_object_name", + "docstring": "Get the name of the item to be used in the context.", + "code": "def get_context_object_name(self, object_list):\n \"\"\"Get the name of the item to be used in the context.\"\"\"\n if self.context_object_name:\n return self.context_object_name\n elif hasattr(object_list, \"model\"):\n return \"%s_list\" % object_list.model._meta.model_name\n else:\n return None\n", + "kwargs": "self, object_list", + "line_number": 113 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "MultipleObjectMixin", + "django.views.generic.list", + "Django", + "4.1" + ], + "name": "get_ordering", + "docstring": "Return the field or fields to use for ordering the queryset.", + "code": "def get_ordering(self):\n \"\"\"Return the field or fields to use for ordering the queryset.\"\"\"\n return self.ordering\n", + "kwargs": "self", + "line_number": 49 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "MultipleObjectMixin", + "django.views.generic.list", + "Django", + "4.1" + ], + "name": "get_paginate_by", + "docstring": "Get the number of items to paginate by, or ``None`` for no pagination.", + "code": "def get_paginate_by(self, queryset):\n \"\"\"\n Get the number of items to paginate by, or ``None`` for no pagination.\n \"\"\"\n return self.paginate_by\n", + "kwargs": "self, queryset", + "line_number": 81 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "MultipleObjectMixin", + "django.views.generic.list", + "Django", + "4.1" + ], + "name": "get_paginate_orphans", + "docstring": "Return the maximum number of orphans extend the last page by when\npaginating.", + "code": "def get_paginate_orphans(self):\n \"\"\"\n Return the maximum number of orphans extend the last page by when\n paginating.\n \"\"\"\n return self.paginate_orphans\n", + "kwargs": "self", + "line_number": 99 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "MultipleObjectMixin", + "django.views.generic.list", + "Django", + "4.1" + ], + "name": "get_paginator", + "docstring": "Return an instance of the paginator for this view.", + "code": "def get_paginator(\n self, queryset, per_page, orphans=0, allow_empty_first_page=True, **kwargs\n):\n \"\"\"Return an instance of the paginator for this view.\"\"\"\n return self.paginator_class(\n queryset,\n per_page,\n orphans=orphans,\n allow_empty_first_page=allow_empty_first_page,\n **kwargs,\n )\n", + "kwargs": "self, queryset, per_page, orphans=0, allow_empty_first_page=True, **kwargs", + "line_number": 87 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "MultipleObjectMixin", + "django.views.generic.list", + "Django", + "4.1" + ], + "name": "get_queryset", + "docstring": "Return the list of items for this view.\n\nThe return value must be an iterable and may be an instance of\n`QuerySet` in which case `QuerySet` specific behavior will be enabled.", + "code": "def get_queryset(self):\n \"\"\"\n Return the list of items for this view.\n The return value must be an iterable and may be an instance of\n `QuerySet` in which case `QuerySet` specific behavior will be enabled.\n \"\"\"\n if self.queryset is not None:\n queryset = self.queryset\n if isinstance(queryset, QuerySet):\n queryset = queryset.all()\n elif self.model is not None:\n queryset = self.model._default_manager.all()\n else:\n raise ImproperlyConfigured(\n \"%(cls)s is missing a QuerySet. Define \"\n \"%(cls)s.model, %(cls)s.queryset, or override \"\n \"%(cls)s.get_queryset().\" % {\"cls\": self.__class__.__name__}\n )\n ordering = self.get_ordering()\n if ordering:\n if isinstance(ordering, str):\n ordering = (ordering,)\n queryset = queryset.order_by(*ordering)\n return queryset\n", + "kwargs": "self", + "line_number": 22 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "MultipleObjectMixin", + "django.views.generic.list", + "Django", + "4.1" + ], + "name": "paginate_queryset", + "docstring": "Paginate the queryset, if needed.", + "code": "def paginate_queryset(self, queryset, page_size):\n \"\"\"Paginate the queryset, if needed.\"\"\"\n paginator = self.get_paginator(\n queryset,\n page_size,\n orphans=self.get_paginate_orphans(),\n allow_empty_first_page=self.get_allow_empty(),\n )\n page_kwarg = self.page_kwarg\n page = self.kwargs.get(page_kwarg) or self.request.GET.get(page_kwarg) or 1\n try:\n page_number = int(page)\n except ValueError:\n if page == \"last\":\n page_number = paginator.num_pages\n else:\n raise Http404(\n _(\"Page is not “last”, nor can it be converted to an int.\")\n )\n try:\n page = paginator.page(page_number)\n return (paginator, page, page.object_list, page.has_other_pages())\n except InvalidPage as e:\n raise Http404(\n _(\"Invalid page (%(page_number)s): %(message)s\")\n % {\"page_number\": page_number, \"message\": str(e)}\n )\n", + "kwargs": "self, queryset, page_size", + "line_number": 53 + } +}, +{ + "model": "cbv.method", + "pk": null, + "fields": { + "klass": [ + "MultipleObjectTemplateResponseMixin", + "django.views.generic.list", + "Django", + "4.1" + ], + "name": "get_template_names", + "docstring": "Return a list of template names to be used for the request. Must return\na list. May not be called if render_to_response is overridden.", + "code": "def get_template_names(self):\n \"\"\"\n Return a list of template names to be used for the request. Must return\n a list. May not be called if render_to_response is overridden.\n \"\"\"\n try:\n names = super().get_template_names()\n except ImproperlyConfigured:\n # If template_name isn't specified, it's not a problem --\n # we just start with an empty list.\n names = []\n # If the list is a queryset, we'll invent a template name based on the\n # app and model name. This name gets put at the end of the template\n # name list so that user-supplied names override the automatically-\n # generated ones.\n if hasattr(self.object_list, \"model\"):\n opts = self.object_list.model._meta\n names.append(\n \"%s/%s%s.html\"\n % (opts.app_label, opts.model_name, self.template_name_suffix)\n )\n elif not names:\n raise ImproperlyConfigured(\n \"%(cls)s requires either a 'template_name' attribute \"\n \"or a get_queryset() method that returns a QuerySet.\"\n % {\n \"cls\": self.__class__.__name__,\n }\n )\n return names\n", + "kwargs": "self", + "line_number": 183 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "AccessMixin", + "django.contrib.auth.mixins", + "Django", + "4.1" + ], + "child": [ + "LoginRequiredMixin", + "django.contrib.auth.mixins", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "AccessMixin", + "django.contrib.auth.mixins", + "Django", + "4.1" + ], + "child": [ + "PermissionRequiredMixin", + "django.contrib.auth.mixins", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "AccessMixin", + "django.contrib.auth.mixins", + "Django", + "4.1" + ], + "child": [ + "UserPassesTestMixin", + "django.contrib.auth.mixins", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "RedirectURLMixin", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "child": [ + "LoginView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "FormView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "child": [ + "LoginView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "order": 1 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "RedirectURLMixin", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "child": [ + "LogoutView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "TemplateView", + "django.views.generic.base", + "Django", + "4.1" + ], + "child": [ + "LogoutView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "order": 1 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "PasswordContextMixin", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "child": [ + "PasswordChangeDoneView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "TemplateView", + "django.views.generic.base", + "Django", + "4.1" + ], + "child": [ + "PasswordChangeDoneView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "order": 1 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "PasswordContextMixin", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "child": [ + "PasswordChangeView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "FormView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "child": [ + "PasswordChangeView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "order": 1 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "PasswordContextMixin", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "child": [ + "PasswordResetCompleteView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "TemplateView", + "django.views.generic.base", + "Django", + "4.1" + ], + "child": [ + "PasswordResetCompleteView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "order": 1 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "PasswordContextMixin", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "child": [ + "PasswordResetConfirmView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "FormView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "child": [ + "PasswordResetConfirmView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "order": 1 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "PasswordContextMixin", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "child": [ + "PasswordResetDoneView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "TemplateView", + "django.views.generic.base", + "Django", + "4.1" + ], + "child": [ + "PasswordResetDoneView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "order": 1 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "PasswordContextMixin", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "child": [ + "PasswordResetView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "FormView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "child": [ + "PasswordResetView", + "django.contrib.auth.views", + "Django", + "4.1" + ], + "order": 1 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "View", + "django.views.generic.base", + "Django", + "4.1" + ], + "child": [ + "RedirectView", + "django.views.generic.base", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "TemplateResponseMixin", + "django.views.generic.base", + "Django", + "4.1" + ], + "child": [ + "TemplateView", + "django.views.generic.base", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "ContextMixin", + "django.views.generic.base", + "Django", + "4.1" + ], + "child": [ + "TemplateView", + "django.views.generic.base", + "Django", + "4.1" + ], + "order": 1 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "View", + "django.views.generic.base", + "Django", + "4.1" + ], + "child": [ + "TemplateView", + "django.views.generic.base", + "Django", + "4.1" + ], + "order": 2 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "MultipleObjectTemplateResponseMixin", + "django.views.generic.list", + "Django", + "4.1" + ], + "child": [ + "ArchiveIndexView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "BaseArchiveIndexView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "child": [ + "ArchiveIndexView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "order": 1 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "BaseDateListView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "child": [ + "BaseArchiveIndexView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "YearMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "child": [ + "BaseDateDetailView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "MonthMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "child": [ + "BaseDateDetailView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "order": 1 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "DayMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "child": [ + "BaseDateDetailView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "order": 2 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "DateMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "child": [ + "BaseDateDetailView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "order": 3 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "BaseDetailView", + "django.views.generic.detail", + "Django", + "4.1" + ], + "child": [ + "BaseDateDetailView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "order": 4 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "MultipleObjectMixin", + "django.views.generic.list", + "Django", + "4.1" + ], + "child": [ + "BaseDateListView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "DateMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "child": [ + "BaseDateListView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "order": 1 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "View", + "django.views.generic.base", + "Django", + "4.1" + ], + "child": [ + "BaseDateListView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "order": 2 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "YearMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "child": [ + "BaseDayArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "MonthMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "child": [ + "BaseDayArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "order": 1 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "DayMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "child": [ + "BaseDayArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "order": 2 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "BaseDateListView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "child": [ + "BaseDayArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "order": 3 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "YearMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "child": [ + "BaseMonthArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "MonthMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "child": [ + "BaseMonthArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "order": 1 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "BaseDateListView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "child": [ + "BaseMonthArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "order": 2 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "BaseDayArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "child": [ + "BaseTodayArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "YearMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "child": [ + "BaseWeekArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "WeekMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "child": [ + "BaseWeekArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "order": 1 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "BaseDateListView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "child": [ + "BaseWeekArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "order": 2 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "YearMixin", + "django.views.generic.dates", + "Django", + "4.1" + ], + "child": [ + "BaseYearArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "BaseDateListView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "child": [ + "BaseYearArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "order": 1 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "SingleObjectTemplateResponseMixin", + "django.views.generic.detail", + "Django", + "4.1" + ], + "child": [ + "DateDetailView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "BaseDateDetailView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "child": [ + "DateDetailView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "order": 1 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "MultipleObjectTemplateResponseMixin", + "django.views.generic.list", + "Django", + "4.1" + ], + "child": [ + "DayArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "BaseDayArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "child": [ + "DayArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "order": 1 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "MultipleObjectTemplateResponseMixin", + "django.views.generic.list", + "Django", + "4.1" + ], + "child": [ + "MonthArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "BaseMonthArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "child": [ + "MonthArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "order": 1 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "MultipleObjectTemplateResponseMixin", + "django.views.generic.list", + "Django", + "4.1" + ], + "child": [ + "TodayArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "BaseTodayArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "child": [ + "TodayArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "order": 1 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "MultipleObjectTemplateResponseMixin", + "django.views.generic.list", + "Django", + "4.1" + ], + "child": [ + "WeekArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "BaseWeekArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "child": [ + "WeekArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "order": 1 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "MultipleObjectTemplateResponseMixin", + "django.views.generic.list", + "Django", + "4.1" + ], + "child": [ + "YearArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "BaseYearArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "child": [ + "YearArchiveView", + "django.views.generic.dates", + "Django", + "4.1" + ], + "order": 1 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "SingleObjectMixin", + "django.views.generic.detail", + "Django", + "4.1" + ], + "child": [ + "BaseDetailView", + "django.views.generic.detail", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "View", + "django.views.generic.base", + "Django", + "4.1" + ], + "child": [ + "BaseDetailView", + "django.views.generic.detail", + "Django", + "4.1" + ], + "order": 1 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "SingleObjectTemplateResponseMixin", + "django.views.generic.detail", + "Django", + "4.1" + ], + "child": [ + "DetailView", + "django.views.generic.detail", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "BaseDetailView", + "django.views.generic.detail", + "Django", + "4.1" + ], + "child": [ + "DetailView", + "django.views.generic.detail", + "Django", + "4.1" + ], + "order": 1 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "ContextMixin", + "django.views.generic.base", + "Django", + "4.1" + ], + "child": [ + "SingleObjectMixin", + "django.views.generic.detail", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "TemplateResponseMixin", + "django.views.generic.base", + "Django", + "4.1" + ], + "child": [ + "SingleObjectTemplateResponseMixin", + "django.views.generic.detail", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "ModelFormMixin", + "django.views.generic.edit", + "Django", + "4.1" + ], + "child": [ + "BaseCreateView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "ProcessFormView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "child": [ + "BaseCreateView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "order": 1 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "DeletionMixin", + "django.views.generic.edit", + "Django", + "4.1" + ], + "child": [ + "BaseDeleteView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "FormMixin", + "django.views.generic.edit", + "Django", + "4.1" + ], + "child": [ + "BaseDeleteView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "order": 1 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "BaseDetailView", + "django.views.generic.detail", + "Django", + "4.1" + ], + "child": [ + "BaseDeleteView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "order": 2 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "FormMixin", + "django.views.generic.edit", + "Django", + "4.1" + ], + "child": [ + "BaseFormView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "ProcessFormView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "child": [ + "BaseFormView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "order": 1 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "ModelFormMixin", + "django.views.generic.edit", + "Django", + "4.1" + ], + "child": [ + "BaseUpdateView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "ProcessFormView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "child": [ + "BaseUpdateView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "order": 1 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "SingleObjectTemplateResponseMixin", + "django.views.generic.detail", + "Django", + "4.1" + ], + "child": [ + "CreateView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "BaseCreateView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "child": [ + "CreateView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "order": 1 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "SingleObjectTemplateResponseMixin", + "django.views.generic.detail", + "Django", + "4.1" + ], + "child": [ + "DeleteView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "BaseDeleteView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "child": [ + "DeleteView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "order": 1 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "ContextMixin", + "django.views.generic.base", + "Django", + "4.1" + ], + "child": [ + "FormMixin", + "django.views.generic.edit", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "TemplateResponseMixin", + "django.views.generic.base", + "Django", + "4.1" + ], + "child": [ + "FormView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "BaseFormView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "child": [ + "FormView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "order": 1 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "FormMixin", + "django.views.generic.edit", + "Django", + "4.1" + ], + "child": [ + "ModelFormMixin", + "django.views.generic.edit", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "SingleObjectMixin", + "django.views.generic.detail", + "Django", + "4.1" + ], + "child": [ + "ModelFormMixin", + "django.views.generic.edit", + "Django", + "4.1" + ], + "order": 1 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "View", + "django.views.generic.base", + "Django", + "4.1" + ], + "child": [ + "ProcessFormView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "SingleObjectTemplateResponseMixin", + "django.views.generic.detail", + "Django", + "4.1" + ], + "child": [ + "UpdateView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "BaseUpdateView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "child": [ + "UpdateView", + "django.views.generic.edit", + "Django", + "4.1" + ], + "order": 1 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "MultipleObjectMixin", + "django.views.generic.list", + "Django", + "4.1" + ], + "child": [ + "BaseListView", + "django.views.generic.list", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "View", + "django.views.generic.base", + "Django", + "4.1" + ], + "child": [ + "BaseListView", + "django.views.generic.list", + "Django", + "4.1" + ], + "order": 1 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "MultipleObjectTemplateResponseMixin", + "django.views.generic.list", + "Django", + "4.1" + ], + "child": [ + "ListView", + "django.views.generic.list", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "BaseListView", + "django.views.generic.list", + "Django", + "4.1" + ], + "child": [ + "ListView", + "django.views.generic.list", + "Django", + "4.1" + ], + "order": 1 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "ContextMixin", + "django.views.generic.base", + "Django", + "4.1" + ], + "child": [ + "MultipleObjectMixin", + "django.views.generic.list", + "Django", + "4.1" + ], + "order": 0 + } +}, +{ + "model": "cbv.inheritance", + "pk": null, + "fields": { + "parent": [ + "TemplateResponseMixin", + "django.views.generic.base", + "Django", + "4.1" + ], + "child": [ + "MultipleObjectTemplateResponseMixin", + "django.views.generic.list", + "Django", + "4.1" + ], + "order": 0 + } +} +] From 4d5bab07cbee9532a65e2d878108e1910c4fa130 Mon Sep 17 00:00:00 2001 From: Charlie Denton Date: Sun, 16 Oct 2022 01:06:55 +0100 Subject: [PATCH 2/2] Manually remove empty generic module --- cbv/fixtures/4.1.json | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/cbv/fixtures/4.1.json b/cbv/fixtures/4.1.json index bc275858..4eddd019 100644 --- a/cbv/fixtures/4.1.json +++ b/cbv/fixtures/4.1.json @@ -33,18 +33,6 @@ "filename": "/django/contrib/auth/views.py" } }, -{ - "model": "cbv.module", - "fields": { - "project_version": [ - "Django", - "4.1" - ], - "name": "django.views.generic", - "docstring": "", - "filename": "/django/views/generic/__init__.py" - } -}, { "model": "cbv.module", "fields": {