mirror of
https://github.com/jazzband/django-categories.git
synced 2026-03-16 22:30:24 +00:00
deploy: 3db5f8ae40
This commit is contained in:
commit
c3b07a4851
261 changed files with 92045 additions and 0 deletions
4
.buildinfo
Normal file
4
.buildinfo
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
# Sphinx build info version 1
|
||||
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
|
||||
config: f1e97c9a958e74d2c3610edf3ceaa470
|
||||
tags: 645f666f9bcd5a90fca523b33c5a78b7
|
||||
0
.nojekyll
Normal file
0
.nojekyll
Normal file
578
_modules/categories/admin.html
Normal file
578
_modules/categories/admin.html
Normal file
|
|
@ -0,0 +1,578 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
|
||||
<html lang="en" data-content_root="../../" >
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>categories.admin — Django Categories 2.0.0 documentation</title>
|
||||
|
||||
|
||||
|
||||
<script data-cfasync="false">
|
||||
document.documentElement.dataset.mode = localStorage.getItem("mode") || "";
|
||||
document.documentElement.dataset.theme = localStorage.getItem("theme") || "light";
|
||||
</script>
|
||||
|
||||
<!-- Loaded before other Sphinx assets -->
|
||||
<link href="../../_static/styles/theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link href="../../_static/styles/bootstrap.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link href="../../_static/styles/pydata-sphinx-theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
|
||||
|
||||
<link href="../../_static/vendor/fontawesome/6.5.1/css/all.min.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-solid-900.woff2" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-brands-400.woff2" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-regular-400.woff2" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/css/custom.css?v=ea07567a" />
|
||||
|
||||
<!-- Pre-loaded scripts that we'll load fully later -->
|
||||
<link rel="preload" as="script" href="../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae" />
|
||||
<link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae" />
|
||||
<script src="../../_static/vendor/fontawesome/6.5.1/js/all.min.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
|
||||
<script src="../../_static/documentation_options.js?v=51b770b3"></script>
|
||||
<script src="../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
<script>DOCUMENTATION_OPTIONS.pagename = '_modules/categories/admin';</script>
|
||||
<link rel="index" title="Index" href="../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../search.html" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<meta name="docsearch:language" content="en"/>
|
||||
</head>
|
||||
|
||||
|
||||
<body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode="">
|
||||
|
||||
|
||||
|
||||
<a id="pst-skip-link" class="skip-link" href="#main-content">Skip to main content</a>
|
||||
|
||||
<div id="pst-scroll-pixel-helper"></div>
|
||||
|
||||
<button type="button" class="btn rounded-pill" id="pst-back-to-top">
|
||||
<i class="fa-solid fa-arrow-up"></i>
|
||||
Back to top
|
||||
</button>
|
||||
|
||||
|
||||
<input type="checkbox"
|
||||
class="sidebar-toggle"
|
||||
name="__primary"
|
||||
id="__primary"/>
|
||||
<label class="overlay overlay-primary" for="__primary"></label>
|
||||
|
||||
<input type="checkbox"
|
||||
class="sidebar-toggle"
|
||||
name="__secondary"
|
||||
id="__secondary"/>
|
||||
<label class="overlay overlay-secondary" for="__secondary"></label>
|
||||
|
||||
<div class="search-button__wrapper">
|
||||
<div class="search-button__overlay"></div>
|
||||
<div class="search-button__search-container">
|
||||
<form class="bd-search d-flex align-items-center"
|
||||
action="../../search.html"
|
||||
method="get">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<input type="search"
|
||||
class="form-control"
|
||||
name="q"
|
||||
id="search-input"
|
||||
placeholder="Search the docs ..."
|
||||
aria-label="Search the docs ..."
|
||||
autocomplete="off"
|
||||
autocorrect="off"
|
||||
autocapitalize="off"
|
||||
spellcheck="false"/>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span>
|
||||
</form></div>
|
||||
</div>
|
||||
|
||||
<header class="bd-header navbar navbar-expand-lg bd-navbar">
|
||||
<div class="bd-header__inner bd-page-width">
|
||||
<label class="sidebar-toggle primary-toggle" for="__primary">
|
||||
<span class="fa-solid fa-bars"></span>
|
||||
</label>
|
||||
|
||||
|
||||
<div class="col-lg-3 navbar-header-items__start">
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
|
||||
|
||||
<a class="navbar-brand logo" href="../../index.html">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="title logo__title">Django Categories 2.0.0 documentation</p>
|
||||
|
||||
</a></div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col-lg-9 navbar-header-items">
|
||||
|
||||
<div class="me-auto navbar-header-items__center">
|
||||
|
||||
<div class="navbar-item">
|
||||
<nav class="navbar-nav">
|
||||
<ul class="bd-navbar-elements navbar-nav">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../installation.html">
|
||||
Installation
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../getting_started.html">
|
||||
Getting Started
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../user_guide/index.html">
|
||||
User Guide
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../reference/index.html">
|
||||
Reference
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../api/index.html">
|
||||
API
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item dropdown">
|
||||
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links">
|
||||
More
|
||||
</button>
|
||||
<ul id="pst-nav-more-links" class="dropdown-menu">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link dropdown-item nav-internal" href="../../changelog.html">
|
||||
Changelog
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-header-items__end">
|
||||
|
||||
<div class="navbar-item navbar-persistent--container">
|
||||
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<span class="search-button__default-text">Search</span>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
|
||||
</button>
|
||||
`);
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
|
||||
</button>
|
||||
`);
|
||||
</script></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-persistent--mobile">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<span class="search-button__default-text">Search</span>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
|
||||
</button>
|
||||
`);
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</header>
|
||||
|
||||
|
||||
<div class="bd-container">
|
||||
<div class="bd-container__inner bd-page-width">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="bd-sidebar-primary bd-sidebar hide-on-wide">
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-header-items sidebar-primary__section">
|
||||
|
||||
|
||||
<div class="sidebar-header-items__center">
|
||||
|
||||
<div class="navbar-item">
|
||||
<nav class="navbar-nav">
|
||||
<ul class="bd-navbar-elements navbar-nav">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../installation.html">
|
||||
Installation
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../getting_started.html">
|
||||
Getting Started
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../user_guide/index.html">
|
||||
User Guide
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../reference/index.html">
|
||||
Reference
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../api/index.html">
|
||||
API
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item dropdown">
|
||||
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links-2">
|
||||
More
|
||||
</button>
|
||||
<ul id="pst-nav-more-links-2" class="dropdown-menu">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link dropdown-item nav-internal" href="../../changelog.html">
|
||||
Changelog
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-header-items__end">
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
|
||||
</button>
|
||||
`);
|
||||
</script></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="sidebar-primary-items__end sidebar-primary__section">
|
||||
</div>
|
||||
|
||||
<div id="rtd-footer-container"></div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<main id="main-content" class="bd-main">
|
||||
|
||||
|
||||
<div class="bd-content">
|
||||
<div class="bd-article-container">
|
||||
|
||||
<div class="bd-header-article">
|
||||
<div class="header-article-items header-article__inner">
|
||||
|
||||
<div class="header-article-items__start">
|
||||
|
||||
<div class="header-article-item">
|
||||
|
||||
|
||||
|
||||
<nav aria-label="Breadcrumb">
|
||||
<ul class="bd-breadcrumbs">
|
||||
|
||||
<li class="breadcrumb-item breadcrumb-home">
|
||||
<a href="../../index.html" class="nav-link" aria-label="Home">
|
||||
<i class="fa-solid fa-home"></i>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="breadcrumb-item"><a href="../index.html" class="nav-link">Module code</a></li>
|
||||
|
||||
<li class="breadcrumb-item active" aria-current="page">categories.admin</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div id="searchbox"></div>
|
||||
<article class="bd-article">
|
||||
|
||||
<h1>Source code for categories.admin</h1><div class="highlight"><pre>
|
||||
<span></span><span class="sd">"""Admin interface classes."""</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">django</span> <span class="kn">import</span> <span class="n">forms</span>
|
||||
<span class="kn">from</span> <span class="nn">django.contrib</span> <span class="kn">import</span> <span class="n">admin</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.translation</span> <span class="kn">import</span> <span class="n">gettext_lazy</span> <span class="k">as</span> <span class="n">_</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">.base</span> <span class="kn">import</span> <span class="n">CategoryBaseAdmin</span><span class="p">,</span> <span class="n">CategoryBaseAdminForm</span>
|
||||
<span class="kn">from</span> <span class="nn">.genericcollection</span> <span class="kn">import</span> <span class="n">GenericCollectionTabularInline</span>
|
||||
<span class="kn">from</span> <span class="nn">.models</span> <span class="kn">import</span> <span class="n">Category</span>
|
||||
<span class="kn">from</span> <span class="nn">.settings</span> <span class="kn">import</span> <span class="n">JAVASCRIPT_URL</span><span class="p">,</span> <span class="n">MODEL_REGISTRY</span><span class="p">,</span> <span class="n">REGISTER_ADMIN</span><span class="p">,</span> <span class="n">RELATION_MODELS</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="NullTreeNodeChoiceField">
|
||||
<a class="viewcode-back" href="../../api/categories.admin.NullTreeNodeChoiceField.html#categories.admin.NullTreeNodeChoiceField">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">NullTreeNodeChoiceField</span><span class="p">(</span><span class="n">forms</span><span class="o">.</span><span class="n">ModelChoiceField</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""A ModelChoiceField for tree nodes."""</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">level_indicator</span><span class="o">=</span><span class="s2">"---"</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">level_indicator</span> <span class="o">=</span> <span class="n">level_indicator</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">NullTreeNodeChoiceField</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">label_from_instance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Creates labels which represent the tree level of each node when generating option labels.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="s2">"</span><span class="si">%s</span><span class="s2"> </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">level_indicator</span> <span class="o">*</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="n">obj</span><span class="o">.</span><span class="n">_mptt_meta</span><span class="o">.</span><span class="n">level_attr</span><span class="p">),</span> <span class="n">obj</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
|
||||
<span class="k">if</span> <span class="n">RELATION_MODELS</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">.models</span> <span class="kn">import</span> <span class="n">CategoryRelation</span>
|
||||
|
||||
<div class="viewcode-block" id="InlineCategoryRelation">
|
||||
<a class="viewcode-back" href="../../api/categories.admin.InlineCategoryRelation.html#categories.admin.InlineCategoryRelation">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">InlineCategoryRelation</span><span class="p">(</span><span class="n">GenericCollectionTabularInline</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""The inline admin panel for category relations."""</span>
|
||||
|
||||
<span class="n">model</span> <span class="o">=</span> <span class="n">CategoryRelation</span></div>
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="CategoryAdminForm">
|
||||
<a class="viewcode-back" href="../../api/categories.admin.CategoryAdminForm.html#categories.admin.CategoryAdminForm">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">CategoryAdminForm</span><span class="p">(</span><span class="n">CategoryBaseAdminForm</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""The form for a category in the admin."""</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">Meta</span><span class="p">:</span>
|
||||
<span class="n">model</span> <span class="o">=</span> <span class="n">Category</span>
|
||||
<span class="n">fields</span> <span class="o">=</span> <span class="s2">"__all__"</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">clean_alternate_title</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="sd">"""Return either the name or alternate title for the category."""</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">instance</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s2">"alternate_title"</span><span class="p">]:</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s2">"name"</span><span class="p">]</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s2">"alternate_title"</span><span class="p">]</span></div>
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="CategoryAdmin">
|
||||
<a class="viewcode-back" href="../../api/categories.admin.CategoryAdmin.html#categories.admin.CategoryAdmin">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">CategoryAdmin</span><span class="p">(</span><span class="n">CategoryBaseAdmin</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Admin for categories."""</span>
|
||||
|
||||
<span class="n">form</span> <span class="o">=</span> <span class="n">CategoryAdminForm</span>
|
||||
<span class="n">list_display</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"name"</span><span class="p">,</span> <span class="s2">"alternate_title"</span><span class="p">,</span> <span class="s2">"active"</span><span class="p">)</span>
|
||||
<span class="n">fieldsets</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="p">{</span><span class="s2">"fields"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"parent"</span><span class="p">,</span> <span class="s2">"name"</span><span class="p">,</span> <span class="s2">"thumbnail"</span><span class="p">,</span> <span class="s2">"active"</span><span class="p">)}),</span>
|
||||
<span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"Meta Data"</span><span class="p">),</span>
|
||||
<span class="p">{</span>
|
||||
<span class="s2">"fields"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"alternate_title"</span><span class="p">,</span> <span class="s2">"alternate_url"</span><span class="p">,</span> <span class="s2">"description"</span><span class="p">,</span> <span class="s2">"meta_keywords"</span><span class="p">,</span> <span class="s2">"meta_extra"</span><span class="p">),</span>
|
||||
<span class="s2">"classes"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"collapse"</span><span class="p">,),</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">),</span>
|
||||
<span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"Advanced"</span><span class="p">),</span>
|
||||
<span class="p">{</span>
|
||||
<span class="s2">"fields"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"order"</span><span class="p">,</span> <span class="s2">"slug"</span><span class="p">),</span>
|
||||
<span class="s2">"classes"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"collapse"</span><span class="p">,),</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">),</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">autocomplete_fields</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"parent"</span><span class="p">,)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">RELATION_MODELS</span><span class="p">:</span>
|
||||
<span class="n">inlines</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="n">InlineCategoryRelation</span><span class="p">,</span>
|
||||
<span class="p">]</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">Media</span><span class="p">:</span>
|
||||
<span class="n">js</span> <span class="o">=</span> <span class="p">(</span><span class="n">JAVASCRIPT_URL</span> <span class="o">+</span> <span class="s2">"genericcollections.js"</span><span class="p">,)</span></div>
|
||||
|
||||
|
||||
|
||||
<span class="k">if</span> <span class="n">REGISTER_ADMIN</span><span class="p">:</span>
|
||||
<span class="n">admin</span><span class="o">.</span><span class="n">site</span><span class="o">.</span><span class="n">register</span><span class="p">(</span><span class="n">Category</span><span class="p">,</span> <span class="n">CategoryAdmin</span><span class="p">)</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">model</span><span class="p">,</span> <span class="n">modeladmin</span> <span class="ow">in</span> <span class="nb">list</span><span class="p">(</span><span class="n">admin</span><span class="o">.</span><span class="n">site</span><span class="o">.</span><span class="n">_registry</span><span class="o">.</span><span class="n">items</span><span class="p">()):</span>
|
||||
<span class="k">if</span> <span class="n">model</span> <span class="ow">in</span> <span class="nb">list</span><span class="p">(</span><span class="n">MODEL_REGISTRY</span><span class="o">.</span><span class="n">values</span><span class="p">())</span> <span class="ow">and</span> <span class="n">modeladmin</span><span class="o">.</span><span class="n">fieldsets</span><span class="p">:</span>
|
||||
<span class="n">fieldsets</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">modeladmin</span><span class="p">,</span> <span class="s2">"fieldsets"</span><span class="p">,</span> <span class="p">())</span>
|
||||
<span class="n">fields</span> <span class="o">=</span> <span class="p">[</span><span class="n">cat</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"."</span><span class="p">)[</span><span class="mi">2</span><span class="p">]</span> <span class="k">for</span> <span class="n">cat</span> <span class="ow">in</span> <span class="n">MODEL_REGISTRY</span> <span class="k">if</span> <span class="n">MODEL_REGISTRY</span><span class="p">[</span><span class="n">cat</span><span class="p">]</span> <span class="o">==</span> <span class="n">model</span><span class="p">]</span>
|
||||
<span class="c1"># check each field to see if already defined</span>
|
||||
<span class="k">for</span> <span class="n">cat</span> <span class="ow">in</span> <span class="n">fields</span><span class="p">:</span>
|
||||
<span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">fieldsets</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">cat</span> <span class="ow">in</span> <span class="n">v</span><span class="p">[</span><span class="s2">"fields"</span><span class="p">]:</span>
|
||||
<span class="n">fields</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">cat</span><span class="p">)</span>
|
||||
<span class="c1"># if there are any fields left, add them under the categories fieldset</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">fields</span><span class="p">)</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="n">admin</span><span class="o">.</span><span class="n">site</span><span class="o">.</span><span class="n">unregister</span><span class="p">(</span><span class="n">model</span><span class="p">)</span>
|
||||
<span class="n">admin</span><span class="o">.</span><span class="n">site</span><span class="o">.</span><span class="n">register</span><span class="p">(</span>
|
||||
<span class="n">model</span><span class="p">,</span>
|
||||
<span class="nb">type</span><span class="p">(</span>
|
||||
<span class="s2">"newadmin"</span><span class="p">,</span>
|
||||
<span class="p">(</span><span class="n">modeladmin</span><span class="o">.</span><span class="vm">__class__</span><span class="p">,),</span>
|
||||
<span class="p">{</span><span class="s2">"fieldsets"</span><span class="p">:</span> <span class="n">fieldsets</span> <span class="o">+</span> <span class="p">((</span><span class="s2">"Categories"</span><span class="p">,</span> <span class="p">{</span><span class="s2">"fields"</span><span class="p">:</span> <span class="n">fields</span><span class="p">}),)},</span>
|
||||
<span class="p">),</span>
|
||||
<span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
</article>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<footer class="prev-next-footer">
|
||||
|
||||
<div class="prev-next-area">
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="bd-sidebar-secondary bd-toc"></div>
|
||||
|
||||
|
||||
</div>
|
||||
<footer class="bd-footer-content">
|
||||
|
||||
</footer>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Scripts loaded after <body> so the DOM is not blocked -->
|
||||
<script src="../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
<script src="../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
|
||||
<footer class="bd-footer">
|
||||
<div class="bd-footer__inner bd-page-width">
|
||||
|
||||
<div class="footer-items__start">
|
||||
|
||||
<div class="footer-item">
|
||||
|
||||
<p class="copyright">
|
||||
|
||||
© Copyright 2010-2024, Corey Oordt.
|
||||
<br/>
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="footer-item">
|
||||
|
||||
<p class="sphinx-version">
|
||||
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.3.7.
|
||||
<br/>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="footer-items__end">
|
||||
|
||||
<div class="footer-item">
|
||||
<p class="theme-version">
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.15.2.
|
||||
</p></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
511
_modules/categories/apps.html
Normal file
511
_modules/categories/apps.html
Normal file
|
|
@ -0,0 +1,511 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
|
||||
<html lang="en" data-content_root="../../" >
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>categories.apps — Django Categories 2.0.0 documentation</title>
|
||||
|
||||
|
||||
|
||||
<script data-cfasync="false">
|
||||
document.documentElement.dataset.mode = localStorage.getItem("mode") || "";
|
||||
document.documentElement.dataset.theme = localStorage.getItem("theme") || "light";
|
||||
</script>
|
||||
|
||||
<!-- Loaded before other Sphinx assets -->
|
||||
<link href="../../_static/styles/theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link href="../../_static/styles/bootstrap.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link href="../../_static/styles/pydata-sphinx-theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
|
||||
|
||||
<link href="../../_static/vendor/fontawesome/6.5.1/css/all.min.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-solid-900.woff2" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-brands-400.woff2" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-regular-400.woff2" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/css/custom.css?v=ea07567a" />
|
||||
|
||||
<!-- Pre-loaded scripts that we'll load fully later -->
|
||||
<link rel="preload" as="script" href="../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae" />
|
||||
<link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae" />
|
||||
<script src="../../_static/vendor/fontawesome/6.5.1/js/all.min.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
|
||||
<script src="../../_static/documentation_options.js?v=51b770b3"></script>
|
||||
<script src="../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
<script>DOCUMENTATION_OPTIONS.pagename = '_modules/categories/apps';</script>
|
||||
<link rel="index" title="Index" href="../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../search.html" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<meta name="docsearch:language" content="en"/>
|
||||
</head>
|
||||
|
||||
|
||||
<body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode="">
|
||||
|
||||
|
||||
|
||||
<a id="pst-skip-link" class="skip-link" href="#main-content">Skip to main content</a>
|
||||
|
||||
<div id="pst-scroll-pixel-helper"></div>
|
||||
|
||||
<button type="button" class="btn rounded-pill" id="pst-back-to-top">
|
||||
<i class="fa-solid fa-arrow-up"></i>
|
||||
Back to top
|
||||
</button>
|
||||
|
||||
|
||||
<input type="checkbox"
|
||||
class="sidebar-toggle"
|
||||
name="__primary"
|
||||
id="__primary"/>
|
||||
<label class="overlay overlay-primary" for="__primary"></label>
|
||||
|
||||
<input type="checkbox"
|
||||
class="sidebar-toggle"
|
||||
name="__secondary"
|
||||
id="__secondary"/>
|
||||
<label class="overlay overlay-secondary" for="__secondary"></label>
|
||||
|
||||
<div class="search-button__wrapper">
|
||||
<div class="search-button__overlay"></div>
|
||||
<div class="search-button__search-container">
|
||||
<form class="bd-search d-flex align-items-center"
|
||||
action="../../search.html"
|
||||
method="get">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<input type="search"
|
||||
class="form-control"
|
||||
name="q"
|
||||
id="search-input"
|
||||
placeholder="Search the docs ..."
|
||||
aria-label="Search the docs ..."
|
||||
autocomplete="off"
|
||||
autocorrect="off"
|
||||
autocapitalize="off"
|
||||
spellcheck="false"/>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span>
|
||||
</form></div>
|
||||
</div>
|
||||
|
||||
<header class="bd-header navbar navbar-expand-lg bd-navbar">
|
||||
<div class="bd-header__inner bd-page-width">
|
||||
<label class="sidebar-toggle primary-toggle" for="__primary">
|
||||
<span class="fa-solid fa-bars"></span>
|
||||
</label>
|
||||
|
||||
|
||||
<div class="col-lg-3 navbar-header-items__start">
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
|
||||
|
||||
<a class="navbar-brand logo" href="../../index.html">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="title logo__title">Django Categories 2.0.0 documentation</p>
|
||||
|
||||
</a></div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col-lg-9 navbar-header-items">
|
||||
|
||||
<div class="me-auto navbar-header-items__center">
|
||||
|
||||
<div class="navbar-item">
|
||||
<nav class="navbar-nav">
|
||||
<ul class="bd-navbar-elements navbar-nav">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../installation.html">
|
||||
Installation
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../getting_started.html">
|
||||
Getting Started
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../user_guide/index.html">
|
||||
User Guide
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../reference/index.html">
|
||||
Reference
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../api/index.html">
|
||||
API
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item dropdown">
|
||||
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links">
|
||||
More
|
||||
</button>
|
||||
<ul id="pst-nav-more-links" class="dropdown-menu">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link dropdown-item nav-internal" href="../../changelog.html">
|
||||
Changelog
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-header-items__end">
|
||||
|
||||
<div class="navbar-item navbar-persistent--container">
|
||||
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<span class="search-button__default-text">Search</span>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
|
||||
</button>
|
||||
`);
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
|
||||
</button>
|
||||
`);
|
||||
</script></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-persistent--mobile">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<span class="search-button__default-text">Search</span>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
|
||||
</button>
|
||||
`);
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</header>
|
||||
|
||||
|
||||
<div class="bd-container">
|
||||
<div class="bd-container__inner bd-page-width">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="bd-sidebar-primary bd-sidebar hide-on-wide">
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-header-items sidebar-primary__section">
|
||||
|
||||
|
||||
<div class="sidebar-header-items__center">
|
||||
|
||||
<div class="navbar-item">
|
||||
<nav class="navbar-nav">
|
||||
<ul class="bd-navbar-elements navbar-nav">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../installation.html">
|
||||
Installation
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../getting_started.html">
|
||||
Getting Started
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../user_guide/index.html">
|
||||
User Guide
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../reference/index.html">
|
||||
Reference
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../api/index.html">
|
||||
API
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item dropdown">
|
||||
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links-2">
|
||||
More
|
||||
</button>
|
||||
<ul id="pst-nav-more-links-2" class="dropdown-menu">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link dropdown-item nav-internal" href="../../changelog.html">
|
||||
Changelog
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-header-items__end">
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
|
||||
</button>
|
||||
`);
|
||||
</script></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="sidebar-primary-items__end sidebar-primary__section">
|
||||
</div>
|
||||
|
||||
<div id="rtd-footer-container"></div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<main id="main-content" class="bd-main">
|
||||
|
||||
|
||||
<div class="bd-content">
|
||||
<div class="bd-article-container">
|
||||
|
||||
<div class="bd-header-article">
|
||||
<div class="header-article-items header-article__inner">
|
||||
|
||||
<div class="header-article-items__start">
|
||||
|
||||
<div class="header-article-item">
|
||||
|
||||
|
||||
|
||||
<nav aria-label="Breadcrumb">
|
||||
<ul class="bd-breadcrumbs">
|
||||
|
||||
<li class="breadcrumb-item breadcrumb-home">
|
||||
<a href="../../index.html" class="nav-link" aria-label="Home">
|
||||
<i class="fa-solid fa-home"></i>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="breadcrumb-item"><a href="../index.html" class="nav-link">Module code</a></li>
|
||||
|
||||
<li class="breadcrumb-item active" aria-current="page">categories.apps</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div id="searchbox"></div>
|
||||
<article class="bd-article">
|
||||
|
||||
<h1>Source code for categories.apps</h1><div class="highlight"><pre>
|
||||
<span></span><span class="sd">"""Django application setup."""</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">django.apps</span> <span class="kn">import</span> <span class="n">AppConfig</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="CategoriesConfig">
|
||||
<a class="viewcode-back" href="../../api/categories.apps.CategoriesConfig.html#categories.apps.CategoriesConfig">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">CategoriesConfig</span><span class="p">(</span><span class="n">AppConfig</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Application configuration for categories."""</span>
|
||||
|
||||
<span class="n">name</span> <span class="o">=</span> <span class="s2">"categories"</span>
|
||||
<span class="n">verbose_name</span> <span class="o">=</span> <span class="s2">"Categories"</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">CategoriesConfig</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
<span class="kn">from</span> <span class="nn">django.db.models.signals</span> <span class="kn">import</span> <span class="n">class_prepared</span>
|
||||
|
||||
<span class="n">class_prepared</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">handle_class_prepared</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">ready</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Migrate the app after it is ready."""</span>
|
||||
<span class="kn">from</span> <span class="nn">django.db.models.signals</span> <span class="kn">import</span> <span class="n">post_migrate</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">.migration</span> <span class="kn">import</span> <span class="n">migrate_app</span>
|
||||
|
||||
<span class="n">post_migrate</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">migrate_app</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="handle_class_prepared">
|
||||
<a class="viewcode-back" href="../../api/categories.apps.handle_class_prepared.html#categories.apps.handle_class_prepared">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">handle_class_prepared</span><span class="p">(</span><span class="n">sender</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> See if this class needs registering of fields.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="kn">from</span> <span class="nn">.registration</span> <span class="kn">import</span> <span class="n">registry</span>
|
||||
<span class="kn">from</span> <span class="nn">.settings</span> <span class="kn">import</span> <span class="n">FK_REGISTRY</span><span class="p">,</span> <span class="n">M2M_REGISTRY</span>
|
||||
|
||||
<span class="n">sender_app</span> <span class="o">=</span> <span class="n">sender</span><span class="o">.</span><span class="n">_meta</span><span class="o">.</span><span class="n">app_label</span>
|
||||
<span class="n">sender_name</span> <span class="o">=</span> <span class="n">sender</span><span class="o">.</span><span class="n">_meta</span><span class="o">.</span><span class="n">model_name</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">val</span> <span class="ow">in</span> <span class="nb">list</span><span class="p">(</span><span class="n">FK_REGISTRY</span><span class="o">.</span><span class="n">items</span><span class="p">()):</span>
|
||||
<span class="n">app_name</span><span class="p">,</span> <span class="n">model_name</span> <span class="o">=</span> <span class="n">key</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"."</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">app_name</span> <span class="o">==</span> <span class="n">sender_app</span> <span class="ow">and</span> <span class="n">sender_name</span> <span class="o">==</span> <span class="n">model_name</span><span class="p">:</span>
|
||||
<span class="n">registry</span><span class="o">.</span><span class="n">register_model</span><span class="p">(</span><span class="n">app_name</span><span class="p">,</span> <span class="n">sender</span><span class="p">,</span> <span class="s2">"ForeignKey"</span><span class="p">,</span> <span class="n">val</span><span class="p">)</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">val</span> <span class="ow">in</span> <span class="nb">list</span><span class="p">(</span><span class="n">M2M_REGISTRY</span><span class="o">.</span><span class="n">items</span><span class="p">()):</span>
|
||||
<span class="n">app_name</span><span class="p">,</span> <span class="n">model_name</span> <span class="o">=</span> <span class="n">key</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"."</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">app_name</span> <span class="o">==</span> <span class="n">sender_app</span> <span class="ow">and</span> <span class="n">sender_name</span> <span class="o">==</span> <span class="n">model_name</span><span class="p">:</span>
|
||||
<span class="n">registry</span><span class="o">.</span><span class="n">register_model</span><span class="p">(</span><span class="n">app_name</span><span class="p">,</span> <span class="n">sender</span><span class="p">,</span> <span class="s2">"ManyToManyField"</span><span class="p">,</span> <span class="n">val</span><span class="p">)</span></div>
|
||||
|
||||
</pre></div>
|
||||
|
||||
</article>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<footer class="prev-next-footer">
|
||||
|
||||
<div class="prev-next-area">
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="bd-sidebar-secondary bd-toc"></div>
|
||||
|
||||
|
||||
</div>
|
||||
<footer class="bd-footer-content">
|
||||
|
||||
</footer>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Scripts loaded after <body> so the DOM is not blocked -->
|
||||
<script src="../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
<script src="../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
|
||||
<footer class="bd-footer">
|
||||
<div class="bd-footer__inner bd-page-width">
|
||||
|
||||
<div class="footer-items__start">
|
||||
|
||||
<div class="footer-item">
|
||||
|
||||
<p class="copyright">
|
||||
|
||||
© Copyright 2010-2024, Corey Oordt.
|
||||
<br/>
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="footer-item">
|
||||
|
||||
<p class="sphinx-version">
|
||||
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.3.7.
|
||||
<br/>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="footer-items__end">
|
||||
|
||||
<div class="footer-item">
|
||||
<p class="theme-version">
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.15.2.
|
||||
</p></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
658
_modules/categories/base.html
Normal file
658
_modules/categories/base.html
Normal file
|
|
@ -0,0 +1,658 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
|
||||
<html lang="en" data-content_root="../../" >
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>categories.base — Django Categories 2.0.0 documentation</title>
|
||||
|
||||
|
||||
|
||||
<script data-cfasync="false">
|
||||
document.documentElement.dataset.mode = localStorage.getItem("mode") || "";
|
||||
document.documentElement.dataset.theme = localStorage.getItem("theme") || "light";
|
||||
</script>
|
||||
|
||||
<!-- Loaded before other Sphinx assets -->
|
||||
<link href="../../_static/styles/theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link href="../../_static/styles/bootstrap.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link href="../../_static/styles/pydata-sphinx-theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
|
||||
|
||||
<link href="../../_static/vendor/fontawesome/6.5.1/css/all.min.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-solid-900.woff2" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-brands-400.woff2" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-regular-400.woff2" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/css/custom.css?v=ea07567a" />
|
||||
|
||||
<!-- Pre-loaded scripts that we'll load fully later -->
|
||||
<link rel="preload" as="script" href="../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae" />
|
||||
<link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae" />
|
||||
<script src="../../_static/vendor/fontawesome/6.5.1/js/all.min.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
|
||||
<script src="../../_static/documentation_options.js?v=51b770b3"></script>
|
||||
<script src="../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
<script>DOCUMENTATION_OPTIONS.pagename = '_modules/categories/base';</script>
|
||||
<link rel="index" title="Index" href="../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../search.html" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<meta name="docsearch:language" content="en"/>
|
||||
</head>
|
||||
|
||||
|
||||
<body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode="">
|
||||
|
||||
|
||||
|
||||
<a id="pst-skip-link" class="skip-link" href="#main-content">Skip to main content</a>
|
||||
|
||||
<div id="pst-scroll-pixel-helper"></div>
|
||||
|
||||
<button type="button" class="btn rounded-pill" id="pst-back-to-top">
|
||||
<i class="fa-solid fa-arrow-up"></i>
|
||||
Back to top
|
||||
</button>
|
||||
|
||||
|
||||
<input type="checkbox"
|
||||
class="sidebar-toggle"
|
||||
name="__primary"
|
||||
id="__primary"/>
|
||||
<label class="overlay overlay-primary" for="__primary"></label>
|
||||
|
||||
<input type="checkbox"
|
||||
class="sidebar-toggle"
|
||||
name="__secondary"
|
||||
id="__secondary"/>
|
||||
<label class="overlay overlay-secondary" for="__secondary"></label>
|
||||
|
||||
<div class="search-button__wrapper">
|
||||
<div class="search-button__overlay"></div>
|
||||
<div class="search-button__search-container">
|
||||
<form class="bd-search d-flex align-items-center"
|
||||
action="../../search.html"
|
||||
method="get">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<input type="search"
|
||||
class="form-control"
|
||||
name="q"
|
||||
id="search-input"
|
||||
placeholder="Search the docs ..."
|
||||
aria-label="Search the docs ..."
|
||||
autocomplete="off"
|
||||
autocorrect="off"
|
||||
autocapitalize="off"
|
||||
spellcheck="false"/>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span>
|
||||
</form></div>
|
||||
</div>
|
||||
|
||||
<header class="bd-header navbar navbar-expand-lg bd-navbar">
|
||||
<div class="bd-header__inner bd-page-width">
|
||||
<label class="sidebar-toggle primary-toggle" for="__primary">
|
||||
<span class="fa-solid fa-bars"></span>
|
||||
</label>
|
||||
|
||||
|
||||
<div class="col-lg-3 navbar-header-items__start">
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
|
||||
|
||||
<a class="navbar-brand logo" href="../../index.html">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="title logo__title">Django Categories 2.0.0 documentation</p>
|
||||
|
||||
</a></div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col-lg-9 navbar-header-items">
|
||||
|
||||
<div class="me-auto navbar-header-items__center">
|
||||
|
||||
<div class="navbar-item">
|
||||
<nav class="navbar-nav">
|
||||
<ul class="bd-navbar-elements navbar-nav">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../installation.html">
|
||||
Installation
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../getting_started.html">
|
||||
Getting Started
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../user_guide/index.html">
|
||||
User Guide
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../reference/index.html">
|
||||
Reference
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../api/index.html">
|
||||
API
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item dropdown">
|
||||
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links">
|
||||
More
|
||||
</button>
|
||||
<ul id="pst-nav-more-links" class="dropdown-menu">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link dropdown-item nav-internal" href="../../changelog.html">
|
||||
Changelog
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-header-items__end">
|
||||
|
||||
<div class="navbar-item navbar-persistent--container">
|
||||
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<span class="search-button__default-text">Search</span>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
|
||||
</button>
|
||||
`);
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
|
||||
</button>
|
||||
`);
|
||||
</script></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-persistent--mobile">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<span class="search-button__default-text">Search</span>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
|
||||
</button>
|
||||
`);
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</header>
|
||||
|
||||
|
||||
<div class="bd-container">
|
||||
<div class="bd-container__inner bd-page-width">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="bd-sidebar-primary bd-sidebar hide-on-wide">
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-header-items sidebar-primary__section">
|
||||
|
||||
|
||||
<div class="sidebar-header-items__center">
|
||||
|
||||
<div class="navbar-item">
|
||||
<nav class="navbar-nav">
|
||||
<ul class="bd-navbar-elements navbar-nav">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../installation.html">
|
||||
Installation
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../getting_started.html">
|
||||
Getting Started
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../user_guide/index.html">
|
||||
User Guide
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../reference/index.html">
|
||||
Reference
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../api/index.html">
|
||||
API
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item dropdown">
|
||||
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links-2">
|
||||
More
|
||||
</button>
|
||||
<ul id="pst-nav-more-links-2" class="dropdown-menu">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link dropdown-item nav-internal" href="../../changelog.html">
|
||||
Changelog
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-header-items__end">
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
|
||||
</button>
|
||||
`);
|
||||
</script></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="sidebar-primary-items__end sidebar-primary__section">
|
||||
</div>
|
||||
|
||||
<div id="rtd-footer-container"></div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<main id="main-content" class="bd-main">
|
||||
|
||||
|
||||
<div class="bd-content">
|
||||
<div class="bd-article-container">
|
||||
|
||||
<div class="bd-header-article">
|
||||
<div class="header-article-items header-article__inner">
|
||||
|
||||
<div class="header-article-items__start">
|
||||
|
||||
<div class="header-article-item">
|
||||
|
||||
|
||||
|
||||
<nav aria-label="Breadcrumb">
|
||||
<ul class="bd-breadcrumbs">
|
||||
|
||||
<li class="breadcrumb-item breadcrumb-home">
|
||||
<a href="../../index.html" class="nav-link" aria-label="Home">
|
||||
<i class="fa-solid fa-home"></i>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="breadcrumb-item"><a href="../index.html" class="nav-link">Module code</a></li>
|
||||
|
||||
<li class="breadcrumb-item active" aria-current="page">categories.base</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div id="searchbox"></div>
|
||||
<article class="bd-article">
|
||||
|
||||
<h1>Source code for categories.base</h1><div class="highlight"><pre>
|
||||
<span></span><span class="sd">"""</span>
|
||||
<span class="sd">This is the base class on which to build a hierarchical category-like model.</span>
|
||||
|
||||
<span class="sd">It provides customizable metadata and its own name space.</span>
|
||||
<span class="sd">"""</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">django</span> <span class="kn">import</span> <span class="n">forms</span>
|
||||
<span class="kn">from</span> <span class="nn">django.contrib</span> <span class="kn">import</span> <span class="n">admin</span>
|
||||
<span class="kn">from</span> <span class="nn">django.db</span> <span class="kn">import</span> <span class="n">models</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.encoding</span> <span class="kn">import</span> <span class="n">force_str</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.translation</span> <span class="kn">import</span> <span class="n">gettext_lazy</span> <span class="k">as</span> <span class="n">_</span>
|
||||
<span class="kn">from</span> <span class="nn">mptt.fields</span> <span class="kn">import</span> <span class="n">TreeForeignKey</span>
|
||||
<span class="kn">from</span> <span class="nn">mptt.managers</span> <span class="kn">import</span> <span class="n">TreeManager</span>
|
||||
<span class="kn">from</span> <span class="nn">mptt.models</span> <span class="kn">import</span> <span class="n">MPTTModel</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">.editor.tree_editor</span> <span class="kn">import</span> <span class="n">TreeEditor</span>
|
||||
<span class="kn">from</span> <span class="nn">.settings</span> <span class="kn">import</span> <span class="n">ALLOW_SLUG_CHANGE</span><span class="p">,</span> <span class="n">SLUG_TRANSLITERATOR</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils</span> <span class="kn">import</span> <span class="n">slugify</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="CategoryManager">
|
||||
<a class="viewcode-back" href="../../api/categories.base.CategoryManager.html#categories.base.CategoryManager">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">CategoryManager</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Manager</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> A manager that adds an "active()" method for all active categories.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">active</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Only categories that are active.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_queryset</span><span class="p">()</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">active</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="CategoryBase">
|
||||
<a class="viewcode-back" href="../../api/categories.base.CategoryBase.html#categories.base.CategoryBase">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">CategoryBase</span><span class="p">(</span><span class="n">MPTTModel</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> This base model includes the absolute bare-bones fields and methods.</span>
|
||||
|
||||
<span class="sd"> One could simply subclass this model, do nothing else, and it should work.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">parent</span> <span class="o">=</span> <span class="n">TreeForeignKey</span><span class="p">(</span>
|
||||
<span class="s2">"self"</span><span class="p">,</span>
|
||||
<span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span>
|
||||
<span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
<span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
<span class="n">related_name</span><span class="o">=</span><span class="s2">"children"</span><span class="p">,</span>
|
||||
<span class="n">verbose_name</span><span class="o">=</span><span class="n">_</span><span class="p">(</span><span class="s2">"parent"</span><span class="p">),</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">name</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="n">_</span><span class="p">(</span><span class="s2">"name"</span><span class="p">))</span>
|
||||
<span class="n">slug</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">SlugField</span><span class="p">(</span><span class="n">verbose_name</span><span class="o">=</span><span class="n">_</span><span class="p">(</span><span class="s2">"slug"</span><span class="p">),</span> <span class="n">unique</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">active</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="n">_</span><span class="p">(</span><span class="s2">"active"</span><span class="p">))</span>
|
||||
|
||||
<span class="n">objects</span> <span class="o">=</span> <span class="n">CategoryManager</span><span class="p">()</span>
|
||||
<span class="n">tree</span> <span class="o">=</span> <span class="n">TreeManager</span><span class="p">()</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">save</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Save the category.</span>
|
||||
|
||||
<span class="sd"> While you can activate an item without activating its descendants,</span>
|
||||
<span class="sd"> It doesn't make sense that you can deactivate an item and have its</span>
|
||||
<span class="sd"> decendants remain active.</span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> args: generic args</span>
|
||||
<span class="sd"> kwargs: generic keyword arguments</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">slug</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">slug</span> <span class="o">=</span> <span class="n">slugify</span><span class="p">(</span><span class="n">SLUG_TRANSLITERATOR</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">))[:</span><span class="mi">50</span><span class="p">]</span>
|
||||
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">CategoryBase</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">active</span><span class="p">:</span>
|
||||
<span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_descendants</span><span class="p">():</span>
|
||||
<span class="k">if</span> <span class="n">item</span><span class="o">.</span><span class="n">active</span> <span class="o">!=</span> <span class="bp">self</span><span class="o">.</span><span class="n">active</span><span class="p">:</span>
|
||||
<span class="n">item</span><span class="o">.</span><span class="n">active</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">item</span><span class="o">.</span><span class="n">save</span><span class="p">()</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="n">ancestors</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_ancestors</span><span class="p">()</span>
|
||||
<span class="k">return</span> <span class="s2">" > "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
<span class="p">[</span><span class="n">force_str</span><span class="p">(</span><span class="n">i</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">ancestors</span><span class="p">]</span>
|
||||
<span class="o">+</span> <span class="p">[</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span>
|
||||
<span class="p">]</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">Meta</span><span class="p">:</span>
|
||||
<span class="n">abstract</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
<span class="n">unique_together</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"parent"</span><span class="p">,</span> <span class="s2">"name"</span><span class="p">)</span>
|
||||
<span class="n">ordering</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"tree_id"</span><span class="p">,</span> <span class="s2">"lft"</span><span class="p">)</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">MPTTMeta</span><span class="p">:</span>
|
||||
<span class="n">order_insertion_by</span> <span class="o">=</span> <span class="s2">"name"</span></div>
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="CategoryBaseAdminForm">
|
||||
<a class="viewcode-back" href="../../api/categories.base.CategoryBaseAdminForm.html#categories.base.CategoryBaseAdminForm">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">CategoryBaseAdminForm</span><span class="p">(</span><span class="n">forms</span><span class="o">.</span><span class="n">ModelForm</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Base admin form for categories."""</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">clean_slug</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Prune and transliterate the slug."""</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">cleaned_data</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"slug"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">instance</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">ALLOW_SLUG_CHANGE</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s2">"slug"</span><span class="p">]</span> <span class="o">=</span> <span class="n">slugify</span><span class="p">(</span><span class="n">SLUG_TRANSLITERATOR</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s2">"name"</span><span class="p">]))</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s2">"slug"</span><span class="p">][:</span><span class="mi">50</span><span class="p">]</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">clean</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Clean the data passed from the admin interface."""</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">CategoryBaseAdminForm</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">clean</span><span class="p">()</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">cleaned_data</span>
|
||||
|
||||
<span class="n">opts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_meta</span>
|
||||
|
||||
<span class="c1"># Validate slug is valid in that level</span>
|
||||
<span class="n">kwargs</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">cleaned_data</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"parent"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">kwargs</span><span class="p">[</span><span class="s2">"parent__isnull"</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">kwargs</span><span class="p">[</span><span class="s2">"parent__pk"</span><span class="p">]</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s2">"parent"</span><span class="p">]</span><span class="o">.</span><span class="n">id</span><span class="p">)</span>
|
||||
<span class="n">this_level_slugs</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="n">c</span><span class="p">[</span><span class="s2">"slug"</span><span class="p">]</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">opts</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span><span class="o">.</span><span class="n">values</span><span class="p">(</span><span class="s2">"id"</span><span class="p">,</span> <span class="s2">"slug"</span><span class="p">)</span> <span class="k">if</span> <span class="n">c</span><span class="p">[</span><span class="s2">"id"</span><span class="p">]</span> <span class="o">!=</span> <span class="bp">self</span><span class="o">.</span><span class="n">instance</span><span class="o">.</span><span class="n">id</span>
|
||||
<span class="p">]</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s2">"slug"</span><span class="p">]</span> <span class="ow">in</span> <span class="n">this_level_slugs</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">forms</span><span class="o">.</span><span class="n">ValidationError</span><span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="s2">"The slug must be unique among "</span> <span class="s2">"the items at its level."</span><span class="p">))</span>
|
||||
|
||||
<span class="c1"># Validate Category Parent</span>
|
||||
<span class="c1"># Make sure the category doesn't set itself or any of its children as</span>
|
||||
<span class="c1"># its parent.</span>
|
||||
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">cleaned_data</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"parent"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">instance</span><span class="o">.</span><span class="n">id</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">cleaned_data</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">instance</span><span class="o">.</span><span class="n">pk</span><span class="p">:</span>
|
||||
<span class="n">decendant_ids</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">instance</span><span class="o">.</span><span class="n">get_descendants</span><span class="p">()</span><span class="o">.</span><span class="n">values_list</span><span class="p">(</span><span class="s2">"id"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">decendant_ids</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s2">"parent"</span><span class="p">]</span><span class="o">.</span><span class="n">id</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">instance</span><span class="o">.</span><span class="n">id</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">forms</span><span class="o">.</span><span class="n">ValidationError</span><span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="s2">"You can't set the parent of the "</span> <span class="s2">"item to itself."</span><span class="p">))</span>
|
||||
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s2">"parent"</span><span class="p">]</span><span class="o">.</span><span class="n">id</span> <span class="ow">in</span> <span class="n">decendant_ids</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">forms</span><span class="o">.</span><span class="n">ValidationError</span><span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="s2">"You can't set the parent of the "</span> <span class="s2">"item to a descendant."</span><span class="p">))</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">cleaned_data</span></div>
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="CategoryBaseAdmin">
|
||||
<a class="viewcode-back" href="../../api/categories.base.CategoryBaseAdmin.html#categories.base.CategoryBaseAdmin">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">CategoryBaseAdmin</span><span class="p">(</span><span class="n">TreeEditor</span><span class="p">,</span> <span class="n">admin</span><span class="o">.</span><span class="n">ModelAdmin</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Base admin class for categories."""</span>
|
||||
|
||||
<span class="n">form</span> <span class="o">=</span> <span class="n">CategoryBaseAdminForm</span>
|
||||
<span class="n">list_display</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"name"</span><span class="p">,</span> <span class="s2">"active"</span><span class="p">)</span>
|
||||
<span class="n">search_fields</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"name"</span><span class="p">,)</span>
|
||||
<span class="n">prepopulated_fields</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"slug"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"name"</span><span class="p">,)}</span>
|
||||
|
||||
<span class="n">actions</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"activate"</span><span class="p">,</span> <span class="s2">"deactivate"</span><span class="p">]</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_actions</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">request</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Get available actions for the admin interface."""</span>
|
||||
<span class="n">actions</span> <span class="o">=</span> <span class="nb">super</span><span class="p">(</span><span class="n">CategoryBaseAdmin</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">get_actions</span><span class="p">(</span><span class="n">request</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="s2">"delete_selected"</span> <span class="ow">in</span> <span class="n">actions</span><span class="p">:</span>
|
||||
<span class="k">del</span> <span class="n">actions</span><span class="p">[</span><span class="s2">"delete_selected"</span><span class="p">]</span>
|
||||
<span class="k">return</span> <span class="n">actions</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">deactivate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">request</span><span class="p">,</span> <span class="n">queryset</span><span class="p">):</span> <span class="c1"># NOQA: queryset is not used.</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Set active to False for selected items.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">selected_cats</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">pk__in</span><span class="o">=</span><span class="p">[</span><span class="nb">int</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="o">.</span><span class="n">getlist</span><span class="p">(</span><span class="s2">"_selected_action"</span><span class="p">)])</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">selected_cats</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">item</span><span class="o">.</span><span class="n">active</span><span class="p">:</span>
|
||||
<span class="n">item</span><span class="o">.</span><span class="n">active</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="n">item</span><span class="o">.</span><span class="n">save</span><span class="p">()</span>
|
||||
<span class="n">item</span><span class="o">.</span><span class="n">children</span><span class="o">.</span><span class="n">all</span><span class="p">()</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">active</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||||
|
||||
<span class="n">deactivate</span><span class="o">.</span><span class="n">short_description</span> <span class="o">=</span> <span class="n">_</span><span class="p">(</span><span class="s2">"Deactivate selected categories and their children"</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">activate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">request</span><span class="p">,</span> <span class="n">queryset</span><span class="p">):</span> <span class="c1"># NOQA: queryset is not used.</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Set active to True for selected items.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">selected_cats</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">pk__in</span><span class="o">=</span><span class="p">[</span><span class="nb">int</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="o">.</span><span class="n">getlist</span><span class="p">(</span><span class="s2">"_selected_action"</span><span class="p">)])</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">selected_cats</span><span class="p">:</span>
|
||||
<span class="n">item</span><span class="o">.</span><span class="n">active</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
<span class="n">item</span><span class="o">.</span><span class="n">save</span><span class="p">()</span>
|
||||
<span class="n">item</span><span class="o">.</span><span class="n">children</span><span class="o">.</span><span class="n">all</span><span class="p">()</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">active</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
|
||||
<span class="n">activate</span><span class="o">.</span><span class="n">short_description</span> <span class="o">=</span> <span class="n">_</span><span class="p">(</span><span class="s2">"Activate selected categories and their children"</span><span class="p">)</span></div>
|
||||
|
||||
</pre></div>
|
||||
|
||||
</article>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<footer class="prev-next-footer">
|
||||
|
||||
<div class="prev-next-area">
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="bd-sidebar-secondary bd-toc"></div>
|
||||
|
||||
|
||||
</div>
|
||||
<footer class="bd-footer-content">
|
||||
|
||||
</footer>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Scripts loaded after <body> so the DOM is not blocked -->
|
||||
<script src="../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
<script src="../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
|
||||
<footer class="bd-footer">
|
||||
<div class="bd-footer__inner bd-page-width">
|
||||
|
||||
<div class="footer-items__start">
|
||||
|
||||
<div class="footer-item">
|
||||
|
||||
<p class="copyright">
|
||||
|
||||
© Copyright 2010-2024, Corey Oordt.
|
||||
<br/>
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="footer-item">
|
||||
|
||||
<p class="sphinx-version">
|
||||
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.3.7.
|
||||
<br/>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="footer-items__end">
|
||||
|
||||
<div class="footer-item">
|
||||
<p class="theme-version">
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.15.2.
|
||||
</p></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,633 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
|
||||
<html lang="en" data-content_root="../../../../" >
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>categories.editor.templatetags.admin_tree_list_tags — Django Categories 2.0.0 documentation</title>
|
||||
|
||||
|
||||
|
||||
<script data-cfasync="false">
|
||||
document.documentElement.dataset.mode = localStorage.getItem("mode") || "";
|
||||
document.documentElement.dataset.theme = localStorage.getItem("theme") || "light";
|
||||
</script>
|
||||
|
||||
<!-- Loaded before other Sphinx assets -->
|
||||
<link href="../../../../_static/styles/theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link href="../../../../_static/styles/bootstrap.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
|
||||
|
||||
<link href="../../../../_static/vendor/fontawesome/6.5.1/css/all.min.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../_static/vendor/fontawesome/6.5.1/webfonts/fa-solid-900.woff2" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../_static/vendor/fontawesome/6.5.1/webfonts/fa-brands-400.woff2" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../_static/vendor/fontawesome/6.5.1/webfonts/fa-regular-400.woff2" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../../_static/css/custom.css?v=ea07567a" />
|
||||
|
||||
<!-- Pre-loaded scripts that we'll load fully later -->
|
||||
<link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae" />
|
||||
<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae" />
|
||||
<script src="../../../../_static/vendor/fontawesome/6.5.1/js/all.min.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
|
||||
<script src="../../../../_static/documentation_options.js?v=51b770b3"></script>
|
||||
<script src="../../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
<script>DOCUMENTATION_OPTIONS.pagename = '_modules/categories/editor/templatetags/admin_tree_list_tags';</script>
|
||||
<link rel="index" title="Index" href="../../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../../search.html" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<meta name="docsearch:language" content="en"/>
|
||||
</head>
|
||||
|
||||
|
||||
<body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode="">
|
||||
|
||||
|
||||
|
||||
<a id="pst-skip-link" class="skip-link" href="#main-content">Skip to main content</a>
|
||||
|
||||
<div id="pst-scroll-pixel-helper"></div>
|
||||
|
||||
<button type="button" class="btn rounded-pill" id="pst-back-to-top">
|
||||
<i class="fa-solid fa-arrow-up"></i>
|
||||
Back to top
|
||||
</button>
|
||||
|
||||
|
||||
<input type="checkbox"
|
||||
class="sidebar-toggle"
|
||||
name="__primary"
|
||||
id="__primary"/>
|
||||
<label class="overlay overlay-primary" for="__primary"></label>
|
||||
|
||||
<input type="checkbox"
|
||||
class="sidebar-toggle"
|
||||
name="__secondary"
|
||||
id="__secondary"/>
|
||||
<label class="overlay overlay-secondary" for="__secondary"></label>
|
||||
|
||||
<div class="search-button__wrapper">
|
||||
<div class="search-button__overlay"></div>
|
||||
<div class="search-button__search-container">
|
||||
<form class="bd-search d-flex align-items-center"
|
||||
action="../../../../search.html"
|
||||
method="get">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<input type="search"
|
||||
class="form-control"
|
||||
name="q"
|
||||
id="search-input"
|
||||
placeholder="Search the docs ..."
|
||||
aria-label="Search the docs ..."
|
||||
autocomplete="off"
|
||||
autocorrect="off"
|
||||
autocapitalize="off"
|
||||
spellcheck="false"/>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span>
|
||||
</form></div>
|
||||
</div>
|
||||
|
||||
<header class="bd-header navbar navbar-expand-lg bd-navbar">
|
||||
<div class="bd-header__inner bd-page-width">
|
||||
<label class="sidebar-toggle primary-toggle" for="__primary">
|
||||
<span class="fa-solid fa-bars"></span>
|
||||
</label>
|
||||
|
||||
|
||||
<div class="col-lg-3 navbar-header-items__start">
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
|
||||
|
||||
<a class="navbar-brand logo" href="../../../../index.html">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="title logo__title">Django Categories 2.0.0 documentation</p>
|
||||
|
||||
</a></div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col-lg-9 navbar-header-items">
|
||||
|
||||
<div class="me-auto navbar-header-items__center">
|
||||
|
||||
<div class="navbar-item">
|
||||
<nav class="navbar-nav">
|
||||
<ul class="bd-navbar-elements navbar-nav">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../../installation.html">
|
||||
Installation
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../../getting_started.html">
|
||||
Getting Started
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../../user_guide/index.html">
|
||||
User Guide
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../../reference/index.html">
|
||||
Reference
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../../api/index.html">
|
||||
API
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item dropdown">
|
||||
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links">
|
||||
More
|
||||
</button>
|
||||
<ul id="pst-nav-more-links" class="dropdown-menu">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link dropdown-item nav-internal" href="../../../../changelog.html">
|
||||
Changelog
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-header-items__end">
|
||||
|
||||
<div class="navbar-item navbar-persistent--container">
|
||||
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<span class="search-button__default-text">Search</span>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
|
||||
</button>
|
||||
`);
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
|
||||
</button>
|
||||
`);
|
||||
</script></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-persistent--mobile">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<span class="search-button__default-text">Search</span>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
|
||||
</button>
|
||||
`);
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</header>
|
||||
|
||||
|
||||
<div class="bd-container">
|
||||
<div class="bd-container__inner bd-page-width">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="bd-sidebar-primary bd-sidebar hide-on-wide">
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-header-items sidebar-primary__section">
|
||||
|
||||
|
||||
<div class="sidebar-header-items__center">
|
||||
|
||||
<div class="navbar-item">
|
||||
<nav class="navbar-nav">
|
||||
<ul class="bd-navbar-elements navbar-nav">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../../installation.html">
|
||||
Installation
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../../getting_started.html">
|
||||
Getting Started
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../../user_guide/index.html">
|
||||
User Guide
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../../reference/index.html">
|
||||
Reference
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../../api/index.html">
|
||||
API
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item dropdown">
|
||||
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links-2">
|
||||
More
|
||||
</button>
|
||||
<ul id="pst-nav-more-links-2" class="dropdown-menu">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link dropdown-item nav-internal" href="../../../../changelog.html">
|
||||
Changelog
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-header-items__end">
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
|
||||
</button>
|
||||
`);
|
||||
</script></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="sidebar-primary-items__end sidebar-primary__section">
|
||||
</div>
|
||||
|
||||
<div id="rtd-footer-container"></div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<main id="main-content" class="bd-main">
|
||||
|
||||
|
||||
<div class="bd-content">
|
||||
<div class="bd-article-container">
|
||||
|
||||
<div class="bd-header-article">
|
||||
<div class="header-article-items header-article__inner">
|
||||
|
||||
<div class="header-article-items__start">
|
||||
|
||||
<div class="header-article-item">
|
||||
|
||||
|
||||
|
||||
<nav aria-label="Breadcrumb">
|
||||
<ul class="bd-breadcrumbs">
|
||||
|
||||
<li class="breadcrumb-item breadcrumb-home">
|
||||
<a href="../../../../index.html" class="nav-link" aria-label="Home">
|
||||
<i class="fa-solid fa-home"></i>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">Module code</a></li>
|
||||
|
||||
<li class="breadcrumb-item active" aria-current="page">categories.e...</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div id="searchbox"></div>
|
||||
<article class="bd-article">
|
||||
|
||||
<h1>Source code for categories.editor.templatetags.admin_tree_list_tags</h1><div class="highlight"><pre>
|
||||
<span></span><span class="sd">"""Template tags used to render the tree editor."""</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">django.contrib.admin.templatetags.admin_list</span> <span class="kn">import</span> <span class="n">_boolean_icon</span><span class="p">,</span> <span class="n">result_headers</span>
|
||||
<span class="kn">from</span> <span class="nn">django.contrib.admin.utils</span> <span class="kn">import</span> <span class="n">lookup_field</span>
|
||||
<span class="kn">from</span> <span class="nn">django.core.exceptions</span> <span class="kn">import</span> <span class="n">ObjectDoesNotExist</span>
|
||||
<span class="kn">from</span> <span class="nn">django.db</span> <span class="kn">import</span> <span class="n">models</span>
|
||||
<span class="kn">from</span> <span class="nn">django.template</span> <span class="kn">import</span> <span class="n">Library</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.encoding</span> <span class="kn">import</span> <span class="n">force_str</span><span class="p">,</span> <span class="n">smart_str</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.html</span> <span class="kn">import</span> <span class="n">conditional_escape</span><span class="p">,</span> <span class="n">escape</span><span class="p">,</span> <span class="n">escapejs</span><span class="p">,</span> <span class="n">format_html</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.safestring</span> <span class="kn">import</span> <span class="n">mark_safe</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">categories.editor</span> <span class="kn">import</span> <span class="n">settings</span>
|
||||
<span class="kn">from</span> <span class="nn">categories.editor.utils</span> <span class="kn">import</span> <span class="n">display_for_field</span>
|
||||
|
||||
<span class="n">register</span> <span class="o">=</span> <span class="n">Library</span><span class="p">()</span>
|
||||
|
||||
<span class="n">TREE_LIST_RESULTS_TEMPLATE</span> <span class="o">=</span> <span class="s2">"admin/editor/tree_list_results.html"</span>
|
||||
<span class="k">if</span> <span class="n">settings</span><span class="o">.</span><span class="n">IS_GRAPPELLI_INSTALLED</span><span class="p">:</span>
|
||||
<span class="n">TREE_LIST_RESULTS_TEMPLATE</span> <span class="o">=</span> <span class="s2">"admin/editor/grappelli_tree_list_results.html"</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="get_empty_value_display">
|
||||
<a class="viewcode-back" href="../../../../api/categories.editor.templatetags.admin_tree_list_tags.get_empty_value_display.html#categories.editor.templatetags.admin_tree_list_tags.get_empty_value_display">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">get_empty_value_display</span><span class="p">(</span><span class="n">cl</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Get the value to display when empty."""</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">cl</span><span class="o">.</span><span class="n">model_admin</span><span class="p">,</span> <span class="s2">"get_empty_value_display"</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">cl</span><span class="o">.</span><span class="n">model_admin</span><span class="o">.</span><span class="n">get_empty_value_display</span><span class="p">()</span>
|
||||
|
||||
<span class="c1"># Django < 1.9</span>
|
||||
<span class="kn">from</span> <span class="nn">django.contrib.admin.views.main</span> <span class="kn">import</span> <span class="n">EMPTY_CHANGELIST_VALUE</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">EMPTY_CHANGELIST_VALUE</span></div>
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="items_for_tree_result">
|
||||
<a class="viewcode-back" href="../../../../api/categories.editor.templatetags.admin_tree_list_tags.items_for_tree_result.html#categories.editor.templatetags.admin_tree_list_tags.items_for_tree_result">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">items_for_tree_result</span><span class="p">(</span><span class="n">cl</span><span class="p">,</span> <span class="n">result</span><span class="p">,</span> <span class="n">form</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Generates the actual list of data.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">first</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
<span class="n">pk</span> <span class="o">=</span> <span class="n">cl</span><span class="o">.</span><span class="n">lookup_opts</span><span class="o">.</span><span class="n">pk</span><span class="o">.</span><span class="n">attname</span>
|
||||
<span class="k">for</span> <span class="n">field_name</span> <span class="ow">in</span> <span class="n">cl</span><span class="o">.</span><span class="n">list_display</span><span class="p">:</span>
|
||||
<span class="n">row_class</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">f</span><span class="p">,</span> <span class="n">attr</span><span class="p">,</span> <span class="n">value</span> <span class="o">=</span> <span class="n">lookup_field</span><span class="p">(</span><span class="n">field_name</span><span class="p">,</span> <span class="n">result</span><span class="p">,</span> <span class="n">cl</span><span class="o">.</span><span class="n">model_admin</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="p">(</span><span class="ne">AttributeError</span><span class="p">,</span> <span class="n">ObjectDoesNotExist</span><span class="p">):</span>
|
||||
<span class="n">result_repr</span> <span class="o">=</span> <span class="n">get_empty_value_display</span><span class="p">(</span><span class="n">cl</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">f</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">allow_tags</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">attr</span><span class="p">,</span> <span class="s2">"allow_tags"</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
|
||||
<span class="n">boolean</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">attr</span><span class="p">,</span> <span class="s2">"boolean"</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">boolean</span><span class="p">:</span>
|
||||
<span class="n">allow_tags</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
<span class="n">result_repr</span> <span class="o">=</span> <span class="n">_boolean_icon</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">result_repr</span> <span class="o">=</span> <span class="n">smart_str</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
||||
<span class="c1"># Strip HTML tags in the resulting text, except if the</span>
|
||||
<span class="c1"># function has an "allow_tags" attribute set to True.</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">allow_tags</span><span class="p">:</span>
|
||||
<span class="n">result_repr</span> <span class="o">=</span> <span class="n">escape</span><span class="p">(</span><span class="n">result_repr</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">result_repr</span> <span class="o">=</span> <span class="n">mark_safe</span><span class="p">(</span><span class="n">result_repr</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">value</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">result_repr</span> <span class="o">=</span> <span class="n">get_empty_value_display</span><span class="p">(</span><span class="n">cl</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="s2">"rel"</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">f</span><span class="o">.</span><span class="n">rel</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToOneRel</span><span class="p">):</span>
|
||||
<span class="n">result_repr</span> <span class="o">=</span> <span class="n">escape</span><span class="p">(</span><span class="nb">getattr</span><span class="p">(</span><span class="n">result</span><span class="p">,</span> <span class="n">f</span><span class="o">.</span><span class="n">name</span><span class="p">))</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">result_repr</span> <span class="o">=</span> <span class="n">display_for_field</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">f</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">DateField</span><span class="p">)</span> <span class="ow">or</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">TimeField</span><span class="p">):</span>
|
||||
<span class="n">row_class</span> <span class="o">=</span> <span class="s1">' class="nowrap"'</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">force_str</span><span class="p">(</span><span class="n">result_repr</span><span class="p">)</span> <span class="o">==</span> <span class="s2">""</span><span class="p">:</span>
|
||||
<span class="n">result_repr</span> <span class="o">=</span> <span class="n">mark_safe</span><span class="p">(</span><span class="s2">"&nbsp;"</span><span class="p">)</span>
|
||||
<span class="c1"># If list_display_links not defined, add the link tag to the first field</span>
|
||||
<span class="k">if</span> <span class="p">(</span><span class="n">first</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">cl</span><span class="o">.</span><span class="n">list_display_links</span><span class="p">)</span> <span class="ow">or</span> <span class="n">field_name</span> <span class="ow">in</span> <span class="n">cl</span><span class="o">.</span><span class="n">list_display_links</span><span class="p">:</span>
|
||||
<span class="n">table_tag</span> <span class="o">=</span> <span class="p">{</span><span class="kc">True</span><span class="p">:</span> <span class="s2">"th"</span><span class="p">,</span> <span class="kc">False</span><span class="p">:</span> <span class="s2">"td"</span><span class="p">}[</span><span class="n">first</span><span class="p">]</span>
|
||||
|
||||
<span class="n">url</span> <span class="o">=</span> <span class="n">cl</span><span class="o">.</span><span class="n">url_for_result</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
|
||||
<span class="c1"># Convert the pk to something that can be used in Javascript.</span>
|
||||
<span class="c1"># Problem cases are long ints (23L) and non-ASCII strings.</span>
|
||||
<span class="k">if</span> <span class="n">cl</span><span class="o">.</span><span class="n">to_field</span><span class="p">:</span>
|
||||
<span class="n">attr</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">cl</span><span class="o">.</span><span class="n">to_field</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">attr</span> <span class="o">=</span> <span class="n">pk</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">result</span><span class="o">.</span><span class="n">serializable_value</span><span class="p">(</span><span class="n">attr</span><span class="p">)</span>
|
||||
<span class="n">result_id</span> <span class="o">=</span> <span class="nb">repr</span><span class="p">(</span><span class="n">force_str</span><span class="p">(</span><span class="n">value</span><span class="p">))[</span><span class="mi">1</span><span class="p">:]</span>
|
||||
<span class="n">first</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="n">result_id</span> <span class="o">=</span> <span class="n">escapejs</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
||||
<span class="k">yield</span> <span class="n">mark_safe</span><span class="p">(</span>
|
||||
<span class="n">format_html</span><span class="p">(</span>
|
||||
<span class="n">smart_str</span><span class="p">(</span><span class="s1">'<</span><span class="si">{}{}</span><span class="s1">><a href="</span><span class="si">{}</span><span class="s1">"</span><span class="si">{}</span><span class="s1">></span><span class="si">{}</span><span class="s1"></a></</span><span class="si">{}</span><span class="s1">>'</span><span class="p">),</span>
|
||||
<span class="n">table_tag</span><span class="p">,</span>
|
||||
<span class="n">row_class</span><span class="p">,</span>
|
||||
<span class="n">url</span><span class="p">,</span>
|
||||
<span class="p">(</span>
|
||||
<span class="n">format_html</span><span class="p">(</span>
|
||||
<span class="s1">' onclick="opener.dismissRelatedLookupPopup(window, '</span> <span class="s1">'&#39;</span><span class="si">{}</span><span class="s1">&#39;); return false;"'</span><span class="p">,</span>
|
||||
<span class="n">result_id</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">cl</span><span class="o">.</span><span class="n">is_popup</span>
|
||||
<span class="k">else</span> <span class="s2">""</span>
|
||||
<span class="p">),</span>
|
||||
<span class="n">result_repr</span><span class="p">,</span>
|
||||
<span class="n">table_tag</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># By default the fields come from ModelAdmin.list_editable, but if we pull</span>
|
||||
<span class="c1"># the fields out of the form instead of list_editable custom admins</span>
|
||||
<span class="c1"># can provide fields on a per request basis</span>
|
||||
<span class="k">if</span> <span class="n">form</span> <span class="ow">and</span> <span class="n">field_name</span> <span class="ow">in</span> <span class="n">form</span><span class="o">.</span><span class="n">fields</span><span class="p">:</span>
|
||||
<span class="n">bf</span> <span class="o">=</span> <span class="n">form</span><span class="p">[</span><span class="n">field_name</span><span class="p">]</span>
|
||||
<span class="n">result_repr</span> <span class="o">=</span> <span class="n">mark_safe</span><span class="p">(</span><span class="n">force_str</span><span class="p">(</span><span class="n">bf</span><span class="o">.</span><span class="n">errors</span><span class="p">)</span> <span class="o">+</span> <span class="n">force_str</span><span class="p">(</span><span class="n">bf</span><span class="p">))</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">result_repr</span> <span class="o">=</span> <span class="n">conditional_escape</span><span class="p">(</span><span class="n">result_repr</span><span class="p">)</span>
|
||||
<span class="k">yield</span> <span class="n">mark_safe</span><span class="p">(</span><span class="n">smart_str</span><span class="p">(</span><span class="s2">"<td</span><span class="si">%s</span><span class="s2">></span><span class="si">%s</span><span class="s2"></td>"</span> <span class="o">%</span> <span class="p">(</span><span class="n">row_class</span><span class="p">,</span> <span class="n">result_repr</span><span class="p">)))</span>
|
||||
<span class="k">if</span> <span class="n">form</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">form</span><span class="p">[</span><span class="n">cl</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">_meta</span><span class="o">.</span><span class="n">pk</span><span class="o">.</span><span class="n">name</span><span class="p">]</span><span class="o">.</span><span class="n">is_hidden</span><span class="p">:</span>
|
||||
<span class="k">yield</span> <span class="n">mark_safe</span><span class="p">(</span><span class="n">smart_str</span><span class="p">(</span><span class="s2">"<td></span><span class="si">%s</span><span class="s2"></td>"</span> <span class="o">%</span> <span class="n">force_str</span><span class="p">(</span><span class="n">form</span><span class="p">[</span><span class="n">cl</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">_meta</span><span class="o">.</span><span class="n">pk</span><span class="o">.</span><span class="n">name</span><span class="p">])))</span></div>
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="TreeList">
|
||||
<a class="viewcode-back" href="../../../../api/categories.editor.templatetags.admin_tree_list_tags.TreeList.html#categories.editor.templatetags.admin_tree_list_tags.TreeList">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">TreeList</span><span class="p">(</span><span class="nb">list</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""A list subclass for tree result."""</span>
|
||||
|
||||
<span class="k">pass</span></div>
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="tree_results">
|
||||
<a class="viewcode-back" href="../../../../api/categories.editor.templatetags.admin_tree_list_tags.tree_results.html#categories.editor.templatetags.admin_tree_list_tags.tree_results">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">tree_results</span><span class="p">(</span><span class="n">cl</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Generates a list of results for the tree."""</span>
|
||||
<span class="k">if</span> <span class="n">cl</span><span class="o">.</span><span class="n">formset</span><span class="p">:</span>
|
||||
<span class="k">for</span> <span class="n">res</span><span class="p">,</span> <span class="n">form</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">cl</span><span class="o">.</span><span class="n">result_list</span><span class="p">,</span> <span class="n">cl</span><span class="o">.</span><span class="n">formset</span><span class="o">.</span><span class="n">forms</span><span class="p">):</span>
|
||||
<span class="n">result</span> <span class="o">=</span> <span class="n">TreeList</span><span class="p">(</span><span class="n">items_for_tree_result</span><span class="p">(</span><span class="n">cl</span><span class="p">,</span> <span class="n">res</span><span class="p">,</span> <span class="n">form</span><span class="p">))</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">res</span><span class="p">,</span> <span class="s2">"pk"</span><span class="p">):</span>
|
||||
<span class="n">result</span><span class="o">.</span><span class="n">pk</span> <span class="o">=</span> <span class="n">res</span><span class="o">.</span><span class="n">pk</span>
|
||||
<span class="k">if</span> <span class="n">res</span><span class="o">.</span><span class="n">parent</span><span class="p">:</span>
|
||||
<span class="n">result</span><span class="o">.</span><span class="n">parent_pk</span> <span class="o">=</span> <span class="n">res</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">pk</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">res</span><span class="o">.</span><span class="n">parent_pk</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="k">yield</span> <span class="n">result</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">for</span> <span class="n">res</span> <span class="ow">in</span> <span class="n">cl</span><span class="o">.</span><span class="n">result_list</span><span class="p">:</span>
|
||||
<span class="n">result</span> <span class="o">=</span> <span class="n">TreeList</span><span class="p">(</span><span class="n">items_for_tree_result</span><span class="p">(</span><span class="n">cl</span><span class="p">,</span> <span class="n">res</span><span class="p">,</span> <span class="kc">None</span><span class="p">))</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">res</span><span class="p">,</span> <span class="s2">"pk"</span><span class="p">):</span>
|
||||
<span class="n">result</span><span class="o">.</span><span class="n">pk</span> <span class="o">=</span> <span class="n">res</span><span class="o">.</span><span class="n">pk</span>
|
||||
<span class="k">if</span> <span class="n">res</span><span class="o">.</span><span class="n">parent</span><span class="p">:</span>
|
||||
<span class="n">result</span><span class="o">.</span><span class="n">parent_pk</span> <span class="o">=</span> <span class="n">res</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">pk</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">res</span><span class="o">.</span><span class="n">parent_pk</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="k">yield</span> <span class="n">result</span></div>
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="result_tree_list">
|
||||
<a class="viewcode-back" href="../../../../api/categories.editor.templatetags.admin_tree_list_tags.result_tree_list.html#categories.editor.templatetags.admin_tree_list_tags.result_tree_list">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">result_tree_list</span><span class="p">(</span><span class="n">cl</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Displays the headers and data list together.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">result</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"cl"</span><span class="p">:</span> <span class="n">cl</span><span class="p">,</span> <span class="s2">"result_headers"</span><span class="p">:</span> <span class="nb">list</span><span class="p">(</span><span class="n">result_headers</span><span class="p">(</span><span class="n">cl</span><span class="p">)),</span> <span class="s2">"results"</span><span class="p">:</span> <span class="nb">list</span><span class="p">(</span><span class="n">tree_results</span><span class="p">(</span><span class="n">cl</span><span class="p">))}</span>
|
||||
<span class="k">return</span> <span class="n">result</span></div>
|
||||
|
||||
|
||||
|
||||
<span class="n">result_tree_list</span> <span class="o">=</span> <span class="n">register</span><span class="o">.</span><span class="n">inclusion_tag</span><span class="p">(</span><span class="n">TREE_LIST_RESULTS_TEMPLATE</span><span class="p">)(</span><span class="n">result_tree_list</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
</article>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<footer class="prev-next-footer">
|
||||
|
||||
<div class="prev-next-area">
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="bd-sidebar-secondary bd-toc"></div>
|
||||
|
||||
|
||||
</div>
|
||||
<footer class="bd-footer-content">
|
||||
|
||||
</footer>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Scripts loaded after <body> so the DOM is not blocked -->
|
||||
<script src="../../../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
<script src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
|
||||
<footer class="bd-footer">
|
||||
<div class="bd-footer__inner bd-page-width">
|
||||
|
||||
<div class="footer-items__start">
|
||||
|
||||
<div class="footer-item">
|
||||
|
||||
<p class="copyright">
|
||||
|
||||
© Copyright 2010-2024, Corey Oordt.
|
||||
<br/>
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="footer-item">
|
||||
|
||||
<p class="sphinx-version">
|
||||
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.3.7.
|
||||
<br/>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="footer-items__end">
|
||||
|
||||
<div class="footer-item">
|
||||
<p class="theme-version">
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.15.2.
|
||||
</p></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
791
_modules/categories/editor/tree_editor.html
Normal file
791
_modules/categories/editor/tree_editor.html
Normal file
|
|
@ -0,0 +1,791 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
|
||||
<html lang="en" data-content_root="../../../" >
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>categories.editor.tree_editor — Django Categories 2.0.0 documentation</title>
|
||||
|
||||
|
||||
|
||||
<script data-cfasync="false">
|
||||
document.documentElement.dataset.mode = localStorage.getItem("mode") || "";
|
||||
document.documentElement.dataset.theme = localStorage.getItem("theme") || "light";
|
||||
</script>
|
||||
|
||||
<!-- Loaded before other Sphinx assets -->
|
||||
<link href="../../../_static/styles/theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link href="../../../_static/styles/bootstrap.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
|
||||
|
||||
<link href="../../../_static/vendor/fontawesome/6.5.1/css/all.min.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../_static/vendor/fontawesome/6.5.1/webfonts/fa-solid-900.woff2" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../_static/vendor/fontawesome/6.5.1/webfonts/fa-brands-400.woff2" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../_static/vendor/fontawesome/6.5.1/webfonts/fa-regular-400.woff2" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/custom.css?v=ea07567a" />
|
||||
|
||||
<!-- Pre-loaded scripts that we'll load fully later -->
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae" />
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae" />
|
||||
<script src="../../../_static/vendor/fontawesome/6.5.1/js/all.min.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=51b770b3"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
<script>DOCUMENTATION_OPTIONS.pagename = '_modules/categories/editor/tree_editor';</script>
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<meta name="docsearch:language" content="en"/>
|
||||
</head>
|
||||
|
||||
|
||||
<body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode="">
|
||||
|
||||
|
||||
|
||||
<a id="pst-skip-link" class="skip-link" href="#main-content">Skip to main content</a>
|
||||
|
||||
<div id="pst-scroll-pixel-helper"></div>
|
||||
|
||||
<button type="button" class="btn rounded-pill" id="pst-back-to-top">
|
||||
<i class="fa-solid fa-arrow-up"></i>
|
||||
Back to top
|
||||
</button>
|
||||
|
||||
|
||||
<input type="checkbox"
|
||||
class="sidebar-toggle"
|
||||
name="__primary"
|
||||
id="__primary"/>
|
||||
<label class="overlay overlay-primary" for="__primary"></label>
|
||||
|
||||
<input type="checkbox"
|
||||
class="sidebar-toggle"
|
||||
name="__secondary"
|
||||
id="__secondary"/>
|
||||
<label class="overlay overlay-secondary" for="__secondary"></label>
|
||||
|
||||
<div class="search-button__wrapper">
|
||||
<div class="search-button__overlay"></div>
|
||||
<div class="search-button__search-container">
|
||||
<form class="bd-search d-flex align-items-center"
|
||||
action="../../../search.html"
|
||||
method="get">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<input type="search"
|
||||
class="form-control"
|
||||
name="q"
|
||||
id="search-input"
|
||||
placeholder="Search the docs ..."
|
||||
aria-label="Search the docs ..."
|
||||
autocomplete="off"
|
||||
autocorrect="off"
|
||||
autocapitalize="off"
|
||||
spellcheck="false"/>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span>
|
||||
</form></div>
|
||||
</div>
|
||||
|
||||
<header class="bd-header navbar navbar-expand-lg bd-navbar">
|
||||
<div class="bd-header__inner bd-page-width">
|
||||
<label class="sidebar-toggle primary-toggle" for="__primary">
|
||||
<span class="fa-solid fa-bars"></span>
|
||||
</label>
|
||||
|
||||
|
||||
<div class="col-lg-3 navbar-header-items__start">
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
|
||||
|
||||
<a class="navbar-brand logo" href="../../../index.html">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="title logo__title">Django Categories 2.0.0 documentation</p>
|
||||
|
||||
</a></div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col-lg-9 navbar-header-items">
|
||||
|
||||
<div class="me-auto navbar-header-items__center">
|
||||
|
||||
<div class="navbar-item">
|
||||
<nav class="navbar-nav">
|
||||
<ul class="bd-navbar-elements navbar-nav">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../installation.html">
|
||||
Installation
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../getting_started.html">
|
||||
Getting Started
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../user_guide/index.html">
|
||||
User Guide
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../reference/index.html">
|
||||
Reference
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../api/index.html">
|
||||
API
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item dropdown">
|
||||
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links">
|
||||
More
|
||||
</button>
|
||||
<ul id="pst-nav-more-links" class="dropdown-menu">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link dropdown-item nav-internal" href="../../../changelog.html">
|
||||
Changelog
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-header-items__end">
|
||||
|
||||
<div class="navbar-item navbar-persistent--container">
|
||||
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<span class="search-button__default-text">Search</span>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
|
||||
</button>
|
||||
`);
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
|
||||
</button>
|
||||
`);
|
||||
</script></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-persistent--mobile">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<span class="search-button__default-text">Search</span>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
|
||||
</button>
|
||||
`);
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</header>
|
||||
|
||||
|
||||
<div class="bd-container">
|
||||
<div class="bd-container__inner bd-page-width">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="bd-sidebar-primary bd-sidebar hide-on-wide">
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-header-items sidebar-primary__section">
|
||||
|
||||
|
||||
<div class="sidebar-header-items__center">
|
||||
|
||||
<div class="navbar-item">
|
||||
<nav class="navbar-nav">
|
||||
<ul class="bd-navbar-elements navbar-nav">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../installation.html">
|
||||
Installation
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../getting_started.html">
|
||||
Getting Started
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../user_guide/index.html">
|
||||
User Guide
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../reference/index.html">
|
||||
Reference
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../api/index.html">
|
||||
API
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item dropdown">
|
||||
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links-2">
|
||||
More
|
||||
</button>
|
||||
<ul id="pst-nav-more-links-2" class="dropdown-menu">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link dropdown-item nav-internal" href="../../../changelog.html">
|
||||
Changelog
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-header-items__end">
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
|
||||
</button>
|
||||
`);
|
||||
</script></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="sidebar-primary-items__end sidebar-primary__section">
|
||||
</div>
|
||||
|
||||
<div id="rtd-footer-container"></div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<main id="main-content" class="bd-main">
|
||||
|
||||
|
||||
<div class="bd-content">
|
||||
<div class="bd-article-container">
|
||||
|
||||
<div class="bd-header-article">
|
||||
<div class="header-article-items header-article__inner">
|
||||
|
||||
<div class="header-article-items__start">
|
||||
|
||||
<div class="header-article-item">
|
||||
|
||||
|
||||
|
||||
<nav aria-label="Breadcrumb">
|
||||
<ul class="bd-breadcrumbs">
|
||||
|
||||
<li class="breadcrumb-item breadcrumb-home">
|
||||
<a href="../../../index.html" class="nav-link" aria-label="Home">
|
||||
<i class="fa-solid fa-home"></i>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li>
|
||||
|
||||
<li class="breadcrumb-item active" aria-current="page">categories.e...</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div id="searchbox"></div>
|
||||
<article class="bd-article">
|
||||
|
||||
<h1>Source code for categories.editor.tree_editor</h1><div class="highlight"><pre>
|
||||
<span></span><span class="sd">"""Classes for representing tree structures in Django's admin."""</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Any</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">django</span>
|
||||
<span class="kn">from</span> <span class="nn">django.contrib</span> <span class="kn">import</span> <span class="n">admin</span>
|
||||
<span class="kn">from</span> <span class="nn">django.contrib.admin.options</span> <span class="kn">import</span> <span class="n">IncorrectLookupParameters</span>
|
||||
<span class="kn">from</span> <span class="nn">django.contrib.admin.views.main</span> <span class="kn">import</span> <span class="n">ChangeList</span>
|
||||
<span class="kn">from</span> <span class="nn">django.db.models.query</span> <span class="kn">import</span> <span class="n">QuerySet</span>
|
||||
<span class="kn">from</span> <span class="nn">django.http</span> <span class="kn">import</span> <span class="n">HttpResponseRedirect</span>
|
||||
<span class="kn">from</span> <span class="nn">django.shortcuts</span> <span class="kn">import</span> <span class="n">render</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.translation</span> <span class="kn">import</span> <span class="n">gettext_lazy</span> <span class="k">as</span> <span class="n">_</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">settings</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="TreeEditorQuerySet">
|
||||
<a class="viewcode-back" href="../../../api/categories.editor.tree_editor.TreeEditorQuerySet.html#categories.editor.tree_editor.TreeEditorQuerySet">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">TreeEditorQuerySet</span><span class="p">(</span><span class="n">QuerySet</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> A special query set used only in the TreeEditor ChangeList page.</span>
|
||||
|
||||
<span class="sd"> The only difference to a regular QuerySet is that it will enforce:</span>
|
||||
|
||||
<span class="sd"> (a) The result is ordered in correct tree order so that</span>
|
||||
<span class="sd"> the TreeAdmin works all right.</span>
|
||||
|
||||
<span class="sd"> (b) It ensures that all ancestors of selected items are included</span>
|
||||
<span class="sd"> in the result set, so the resulting tree display actually</span>
|
||||
<span class="sd"> makes sense.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">iterator</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Iterates through the items in thee query set."""</span>
|
||||
<span class="n">qs</span> <span class="o">=</span> <span class="bp">self</span>
|
||||
<span class="c1"># Reaching into the bowels of query sets to find out whether the qs is</span>
|
||||
<span class="c1"># actually filtered and we need to do the INCLUDE_ANCESTORS dance at all.</span>
|
||||
<span class="c1"># INCLUDE_ANCESTORS is quite expensive, so don't do it if not needed.</span>
|
||||
<span class="n">is_filtered</span> <span class="o">=</span> <span class="nb">bool</span><span class="p">(</span><span class="n">qs</span><span class="o">.</span><span class="n">query</span><span class="o">.</span><span class="n">where</span><span class="o">.</span><span class="n">children</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">is_filtered</span><span class="p">:</span>
|
||||
<span class="n">include_pages</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span>
|
||||
<span class="c1"># Order by 'rght' will return the tree deepest nodes first;</span>
|
||||
<span class="c1"># this cuts down the number of queries considerably since all ancestors</span>
|
||||
<span class="c1"># will already be in include_pages when they are checked, thus not</span>
|
||||
<span class="c1"># trigger additional queries.</span>
|
||||
<span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="nb">super</span><span class="p">(</span><span class="n">TreeEditorQuerySet</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s2">"rght"</span><span class="p">))</span><span class="o">.</span><span class="n">iterator</span><span class="p">():</span>
|
||||
<span class="k">if</span> <span class="n">p</span><span class="o">.</span><span class="n">parent_id</span> <span class="ow">and</span> <span class="n">p</span><span class="o">.</span><span class="n">parent_id</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">include_pages</span> <span class="ow">and</span> <span class="n">p</span><span class="o">.</span><span class="n">id</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">include_pages</span><span class="p">:</span>
|
||||
<span class="n">ancestor_id_list</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">get_ancestors</span><span class="p">()</span><span class="o">.</span><span class="n">values_list</span><span class="p">(</span><span class="s2">"id"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">include_pages</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">ancestor_id_list</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">include_pages</span><span class="p">:</span>
|
||||
<span class="n">qs</span> <span class="o">=</span> <span class="n">qs</span> <span class="o">|</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">_default_manager</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">id__in</span><span class="o">=</span><span class="n">include_pages</span><span class="p">)</span>
|
||||
|
||||
<span class="n">qs</span> <span class="o">=</span> <span class="n">qs</span><span class="o">.</span><span class="n">distinct</span><span class="p">()</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">obj</span> <span class="ow">in</span> <span class="nb">super</span><span class="p">(</span><span class="n">TreeEditorQuerySet</span><span class="p">,</span> <span class="n">qs</span><span class="p">)</span><span class="o">.</span><span class="n">iterator</span><span class="p">():</span>
|
||||
<span class="k">yield</span> <span class="n">obj</span>
|
||||
|
||||
<span class="c1"># Although slicing isn't nice in a tree, it is used in the deletion action</span>
|
||||
<span class="c1"># in the admin changelist. This causes github issue #25</span>
|
||||
<span class="c1"># def __getitem__(self, index):</span>
|
||||
<span class="c1"># return self # Don't even try to slice</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">Any</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Quick and dirty hack to fix change_view and delete_view.</span>
|
||||
|
||||
<span class="sd"> They use ``self.queryset(request).get(...)`` to get the object they should work</span>
|
||||
<span class="sd"> with. Our modifications to the queryset when ``INCLUDE_ANCESTORS`` is enabled make ``get()``</span>
|
||||
<span class="sd"> fail often with a ``MultipleObjectsReturned`` exception.</span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> args: generic arguments</span>
|
||||
<span class="sd"> kwargs: generic keyword arguments</span>
|
||||
|
||||
<span class="sd"> Returns:</span>
|
||||
<span class="sd"> The object they should work with.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">_default_manager</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="TreeChangeList">
|
||||
<a class="viewcode-back" href="../../../api/categories.editor.tree_editor.TreeChangeList.html#categories.editor.tree_editor.TreeChangeList">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">TreeChangeList</span><span class="p">(</span><span class="n">ChangeList</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""A change list for a tree."""</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_get_default_ordering</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="p">[]</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_ordering</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">request</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">queryset</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Return ordering information for the change list.</span>
|
||||
|
||||
<span class="sd"> Always returns empty/default ordering.</span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> request: The incoming request.</span>
|
||||
<span class="sd"> queryset: The current queryset</span>
|
||||
|
||||
<span class="sd"> Returns:</span>
|
||||
<span class="sd"> Either a tuple of empty strings or an empty list.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="p">[]</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_queryset</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Return a queryset."""</span>
|
||||
<span class="k">return</span> <span class="nb">super</span><span class="p">(</span><span class="n">TreeChangeList</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">get_queryset</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s2">"tree_id"</span><span class="p">,</span> <span class="s2">"lft"</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="TreeEditor">
|
||||
<a class="viewcode-back" href="../../../api/categories.editor.tree_editor.TreeEditor.html#categories.editor.tree_editor.TreeEditor">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">TreeEditor</span><span class="p">(</span><span class="n">admin</span><span class="o">.</span><span class="n">ModelAdmin</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""A tree editor view for Django's admin."""</span>
|
||||
|
||||
<span class="n">list_per_page</span> <span class="o">=</span> <span class="mi">999999999</span> <span class="c1"># We can't have pagination</span>
|
||||
<span class="n">list_max_show_all</span> <span class="o">=</span> <span class="mi">200</span> <span class="c1"># new in django 1.4</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">Media</span><span class="p">:</span>
|
||||
<span class="n">css</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"all"</span><span class="p">:</span> <span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">MEDIA_PATH</span> <span class="o">+</span> <span class="s2">"jquery.treeTable.css"</span><span class="p">,)}</span>
|
||||
<span class="n">js</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
|
||||
<span class="n">js</span><span class="o">.</span><span class="n">extend</span><span class="p">((</span><span class="n">settings</span><span class="o">.</span><span class="n">MEDIA_PATH</span> <span class="o">+</span> <span class="s2">"jquery.treeTable.js"</span><span class="p">,))</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">TreeEditor</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">list_display</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">list_display</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="s2">"action_checkbox"</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_display</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">list_display</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="s2">"action_checkbox"</span><span class="p">)</span>
|
||||
|
||||
<span class="n">opts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">_meta</span>
|
||||
|
||||
<span class="n">grappelli_prefix</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
<span class="k">if</span> <span class="n">settings</span><span class="o">.</span><span class="n">IS_GRAPPELLI_INSTALLED</span><span class="p">:</span>
|
||||
<span class="n">grappelli_prefix</span> <span class="o">=</span> <span class="s2">"grappelli_"</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">change_list_template</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="s2">"admin/</span><span class="si">%s</span><span class="s2">/</span><span class="si">%s</span><span class="s2">/editor/</span><span class="si">%s</span><span class="s2">tree_editor.html"</span> <span class="o">%</span> <span class="p">(</span><span class="n">opts</span><span class="o">.</span><span class="n">app_label</span><span class="p">,</span> <span class="n">opts</span><span class="o">.</span><span class="n">object_name</span><span class="o">.</span><span class="n">lower</span><span class="p">(),</span> <span class="n">grappelli_prefix</span><span class="p">),</span>
|
||||
<span class="s2">"admin/</span><span class="si">%s</span><span class="s2">/editor/</span><span class="si">%s</span><span class="s2">tree_editor.html"</span> <span class="o">%</span> <span class="p">(</span><span class="n">opts</span><span class="o">.</span><span class="n">app_label</span><span class="p">,</span> <span class="n">grappelli_prefix</span><span class="p">),</span>
|
||||
<span class="s2">"admin/editor/</span><span class="si">%s</span><span class="s2">tree_editor.html"</span> <span class="o">%</span> <span class="n">grappelli_prefix</span><span class="p">,</span>
|
||||
<span class="p">]</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_changelist</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">request</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Returns the ChangeList class for use on the changelist page.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">TreeChangeList</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">old_changelist_view</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">request</span><span class="p">,</span> <span class="n">extra_context</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""The 'change list' admin view for this model."""</span>
|
||||
<span class="kn">from</span> <span class="nn">django.contrib.admin.views.main</span> <span class="kn">import</span> <span class="n">ERROR_FLAG</span>
|
||||
<span class="kn">from</span> <span class="nn">django.core.exceptions</span> <span class="kn">import</span> <span class="n">PermissionDenied</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.encoding</span> <span class="kn">import</span> <span class="n">force_str</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.translation</span> <span class="kn">import</span> <span class="n">ngettext</span>
|
||||
|
||||
<span class="n">opts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">_meta</span>
|
||||
<span class="n">app_label</span> <span class="o">=</span> <span class="n">opts</span><span class="o">.</span><span class="n">app_label</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">has_change_permission</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="n">PermissionDenied</span>
|
||||
|
||||
<span class="c1"># Check actions to see if any are available on this changelist</span>
|
||||
<span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_actions</span><span class="p">(</span><span class="n">request</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Remove action checkboxes if there aren't any actions available.</span>
|
||||
<span class="n">list_display</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">list_display</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">actions</span><span class="p">:</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">list_display</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="s2">"action_checkbox"</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
|
||||
<span class="k">pass</span>
|
||||
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">django</span><span class="o">.</span><span class="n">VERSION</span> <span class="o"><</span> <span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="mi">0</span><span class="p">):</span>
|
||||
<span class="n">params</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="n">request</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="p">,</span>
|
||||
<span class="n">list_display</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">list_display_links</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">list_filter</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">date_hierarchy</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">search_fields</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">list_select_related</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">list_per_page</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">list_max_show_all</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">list_editable</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">sortable_by</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">params</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="n">request</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="p">,</span>
|
||||
<span class="n">list_display</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">list_display_links</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">list_filter</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">date_hierarchy</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">search_fields</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">list_select_related</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">list_per_page</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">list_max_show_all</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">list_editable</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">sortable_by</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">search_help_text</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">cl</span> <span class="o">=</span> <span class="n">TreeChangeList</span><span class="p">(</span><span class="o">*</span><span class="n">params</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="n">IncorrectLookupParameters</span><span class="p">:</span>
|
||||
<span class="c1"># Wacky lookup parameters were given, so redirect to the main</span>
|
||||
<span class="c1"># changelist page, without parameters, and pass an 'invalid=1'</span>
|
||||
<span class="c1"># parameter via the query string. If wacky parameters were given and</span>
|
||||
<span class="c1"># the 'invalid=1' parameter was already in the query string, something</span>
|
||||
<span class="c1"># is screwed up with the database, so display an error page.</span>
|
||||
<span class="k">if</span> <span class="n">ERROR_FLAG</span> <span class="ow">in</span> <span class="nb">list</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">GET</span><span class="o">.</span><span class="n">keys</span><span class="p">()):</span>
|
||||
<span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s2">"admin/invalid_setup.html"</span><span class="p">,</span> <span class="p">{</span><span class="s2">"title"</span><span class="p">:</span> <span class="n">_</span><span class="p">(</span><span class="s2">"Database error"</span><span class="p">)})</span>
|
||||
<span class="k">return</span> <span class="n">HttpResponseRedirect</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">path</span> <span class="o">+</span> <span class="s2">"?"</span> <span class="o">+</span> <span class="n">ERROR_FLAG</span> <span class="o">+</span> <span class="s2">"=1"</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># If the request was POSTed, this might be a bulk action or a bulk edit.</span>
|
||||
<span class="c1"># Try to look up an action first, but if this isn't an action the POST</span>
|
||||
<span class="c1"># will fall through to the bulk edit check, below.</span>
|
||||
<span class="k">if</span> <span class="n">actions</span> <span class="ow">and</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s2">"POST"</span><span class="p">:</span>
|
||||
<span class="n">response</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">response_action</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">queryset</span><span class="o">=</span><span class="n">cl</span><span class="o">.</span><span class="n">get_queryset</span><span class="p">())</span>
|
||||
<span class="k">if</span> <span class="n">response</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">response</span>
|
||||
|
||||
<span class="c1"># If we're allowing changelist editing, we need to construct a formset</span>
|
||||
<span class="c1"># for the changelist given all the fields to be edited. Then we'll</span>
|
||||
<span class="c1"># use the formset to validate/process POSTed data.</span>
|
||||
<span class="n">formset</span> <span class="o">=</span> <span class="n">cl</span><span class="o">.</span><span class="n">formset</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
|
||||
<span class="c1"># Handle POSTed bulk-edit data.</span>
|
||||
<span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s2">"POST"</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_editable</span><span class="p">:</span>
|
||||
<span class="n">FormSet</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_changelist_formset</span><span class="p">(</span><span class="n">request</span><span class="p">)</span>
|
||||
<span class="n">formset</span> <span class="o">=</span> <span class="n">cl</span><span class="o">.</span><span class="n">formset</span> <span class="o">=</span> <span class="n">FormSet</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">,</span> <span class="n">request</span><span class="o">.</span><span class="n">FILES</span><span class="p">,</span> <span class="n">queryset</span><span class="o">=</span><span class="n">cl</span><span class="o">.</span><span class="n">result_list</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">formset</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span>
|
||||
<span class="n">changecount</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="k">for</span> <span class="n">form</span> <span class="ow">in</span> <span class="n">formset</span><span class="o">.</span><span class="n">forms</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">has_changed</span><span class="p">():</span>
|
||||
<span class="n">obj</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">save_form</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">form</span><span class="p">,</span> <span class="n">change</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">save_model</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">obj</span><span class="p">,</span> <span class="n">form</span><span class="p">,</span> <span class="n">change</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">form</span><span class="o">.</span><span class="n">save_m2m</span><span class="p">()</span>
|
||||
<span class="n">change_msg</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">construct_change_message</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">form</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">log_change</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">obj</span><span class="p">,</span> <span class="n">change_msg</span><span class="p">)</span>
|
||||
<span class="n">changecount</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">changecount</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">changecount</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="n">name</span> <span class="o">=</span> <span class="n">force_str</span><span class="p">(</span><span class="n">opts</span><span class="o">.</span><span class="n">verbose_name</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">name</span> <span class="o">=</span> <span class="n">force_str</span><span class="p">(</span><span class="n">opts</span><span class="o">.</span><span class="n">verbose_name_plural</span><span class="p">)</span>
|
||||
<span class="n">msg</span> <span class="o">=</span> <span class="n">ngettext</span><span class="p">(</span>
|
||||
<span class="s2">"</span><span class="si">%(count)s</span><span class="s2"> </span><span class="si">%(name)s</span><span class="s2"> was changed successfully."</span><span class="p">,</span>
|
||||
<span class="s2">"</span><span class="si">%(count)s</span><span class="s2"> </span><span class="si">%(name)s</span><span class="s2"> were changed successfully."</span><span class="p">,</span>
|
||||
<span class="n">changecount</span><span class="p">,</span>
|
||||
<span class="p">)</span> <span class="o">%</span> <span class="p">{</span><span class="s2">"count"</span><span class="p">:</span> <span class="n">changecount</span><span class="p">,</span> <span class="s2">"name"</span><span class="p">:</span> <span class="n">name</span><span class="p">,</span> <span class="s2">"obj"</span><span class="p">:</span> <span class="n">force_str</span><span class="p">(</span><span class="n">obj</span><span class="p">)}</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">message_user</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">msg</span><span class="p">)</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">HttpResponseRedirect</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">get_full_path</span><span class="p">())</span>
|
||||
|
||||
<span class="c1"># Handle GET -- construct a formset for display.</span>
|
||||
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_editable</span><span class="p">:</span>
|
||||
<span class="n">FormSet</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_changelist_formset</span><span class="p">(</span><span class="n">request</span><span class="p">)</span>
|
||||
<span class="n">formset</span> <span class="o">=</span> <span class="n">cl</span><span class="o">.</span><span class="n">formset</span> <span class="o">=</span> <span class="n">FormSet</span><span class="p">(</span><span class="n">queryset</span><span class="o">=</span><span class="n">cl</span><span class="o">.</span><span class="n">result_list</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Build the list of media to be used by the formset.</span>
|
||||
<span class="k">if</span> <span class="n">formset</span><span class="p">:</span>
|
||||
<span class="n">media</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">media</span> <span class="o">+</span> <span class="n">formset</span><span class="o">.</span><span class="n">media</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">media</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">media</span>
|
||||
|
||||
<span class="c1"># Build the action form and populate it with available actions.</span>
|
||||
<span class="k">if</span> <span class="n">actions</span><span class="p">:</span>
|
||||
<span class="n">action_form</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">action_form</span><span class="p">(</span><span class="n">auto_id</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
|
||||
<span class="n">action_form</span><span class="o">.</span><span class="n">fields</span><span class="p">[</span><span class="s2">"action"</span><span class="p">]</span><span class="o">.</span><span class="n">choices</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_action_choices</span><span class="p">(</span><span class="n">request</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">action_form</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
|
||||
<span class="n">context</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="s2">"title"</span><span class="p">:</span> <span class="n">cl</span><span class="o">.</span><span class="n">title</span><span class="p">,</span>
|
||||
<span class="s2">"is_popup"</span><span class="p">:</span> <span class="n">cl</span><span class="o">.</span><span class="n">is_popup</span><span class="p">,</span>
|
||||
<span class="s2">"cl"</span><span class="p">:</span> <span class="n">cl</span><span class="p">,</span>
|
||||
<span class="s2">"media"</span><span class="p">:</span> <span class="n">media</span><span class="p">,</span>
|
||||
<span class="s2">"has_add_permission"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">has_add_permission</span><span class="p">(</span><span class="n">request</span><span class="p">),</span>
|
||||
<span class="s2">"app_label"</span><span class="p">:</span> <span class="n">app_label</span><span class="p">,</span>
|
||||
<span class="s2">"action_form"</span><span class="p">:</span> <span class="n">action_form</span><span class="p">,</span>
|
||||
<span class="s2">"actions_on_top"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">actions_on_top</span><span class="p">,</span>
|
||||
<span class="s2">"actions_on_bottom"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">actions_on_bottom</span><span class="p">,</span>
|
||||
<span class="p">}</span>
|
||||
<span class="n">context</span><span class="p">[</span><span class="s2">"opts"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">_meta</span>
|
||||
|
||||
<span class="n">context</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">extra_context</span> <span class="ow">or</span> <span class="p">{})</span>
|
||||
<span class="k">return</span> <span class="n">render</span><span class="p">(</span>
|
||||
<span class="n">request</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">change_list_template</span>
|
||||
<span class="ow">or</span> <span class="p">[</span>
|
||||
<span class="s2">"admin/</span><span class="si">%s</span><span class="s2">/</span><span class="si">%s</span><span class="s2">/change_list.html"</span> <span class="o">%</span> <span class="p">(</span><span class="n">app_label</span><span class="p">,</span> <span class="n">opts</span><span class="o">.</span><span class="n">object_name</span><span class="o">.</span><span class="n">lower</span><span class="p">()),</span>
|
||||
<span class="s2">"admin/</span><span class="si">%s</span><span class="s2">/change_list.html"</span> <span class="o">%</span> <span class="n">app_label</span><span class="p">,</span>
|
||||
<span class="s2">"admin/change_list.html"</span><span class="p">,</span>
|
||||
<span class="p">],</span>
|
||||
<span class="n">context</span><span class="o">=</span><span class="n">context</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">changelist_view</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">request</span><span class="p">,</span> <span class="n">extra_context</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Handle the changelist view, the django view for the model instances change list/actions page.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">extra_context</span> <span class="o">=</span> <span class="n">extra_context</span> <span class="ow">or</span> <span class="p">{}</span>
|
||||
<span class="n">extra_context</span><span class="p">[</span><span class="s2">"EDITOR_MEDIA_PATH"</span><span class="p">]</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">MEDIA_PATH</span>
|
||||
<span class="n">extra_context</span><span class="p">[</span><span class="s2">"EDITOR_TREE_INITIAL_STATE"</span><span class="p">]</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">TREE_INITIAL_STATE</span>
|
||||
|
||||
<span class="c1"># FIXME</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">old_changelist_view</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">extra_context</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_queryset</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span> <span class="o">-></span> <span class="n">TreeEditorQuerySet</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Returns a QuerySet of all model instances that can be edited by the admin site.</span>
|
||||
|
||||
<span class="sd"> This is used by changelist_view.</span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> request: the incoming request.</span>
|
||||
|
||||
<span class="sd"> Returns:</span>
|
||||
<span class="sd"> A QuerySet of editable model instances</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">qs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">_default_manager</span><span class="o">.</span><span class="n">get_queryset</span><span class="p">()</span>
|
||||
<span class="n">qs</span><span class="o">.</span><span class="vm">__class__</span> <span class="o">=</span> <span class="n">TreeEditorQuerySet</span>
|
||||
<span class="k">return</span> <span class="n">qs</span></div>
|
||||
|
||||
</pre></div>
|
||||
|
||||
</article>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<footer class="prev-next-footer">
|
||||
|
||||
<div class="prev-next-area">
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="bd-sidebar-secondary bd-toc"></div>
|
||||
|
||||
|
||||
</div>
|
||||
<footer class="bd-footer-content">
|
||||
|
||||
</footer>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Scripts loaded after <body> so the DOM is not blocked -->
|
||||
<script src="../../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
<script src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
|
||||
<footer class="bd-footer">
|
||||
<div class="bd-footer__inner bd-page-width">
|
||||
|
||||
<div class="footer-items__start">
|
||||
|
||||
<div class="footer-item">
|
||||
|
||||
<p class="copyright">
|
||||
|
||||
© Copyright 2010-2024, Corey Oordt.
|
||||
<br/>
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="footer-item">
|
||||
|
||||
<p class="sphinx-version">
|
||||
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.3.7.
|
||||
<br/>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="footer-items__end">
|
||||
|
||||
<div class="footer-item">
|
||||
<p class="theme-version">
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.15.2.
|
||||
</p></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
476
_modules/categories/editor/utils.html
Normal file
476
_modules/categories/editor/utils.html
Normal file
|
|
@ -0,0 +1,476 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
|
||||
<html lang="en" data-content_root="../../../" >
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>categories.editor.utils — Django Categories 2.0.0 documentation</title>
|
||||
|
||||
|
||||
|
||||
<script data-cfasync="false">
|
||||
document.documentElement.dataset.mode = localStorage.getItem("mode") || "";
|
||||
document.documentElement.dataset.theme = localStorage.getItem("theme") || "light";
|
||||
</script>
|
||||
|
||||
<!-- Loaded before other Sphinx assets -->
|
||||
<link href="../../../_static/styles/theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link href="../../../_static/styles/bootstrap.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
|
||||
|
||||
<link href="../../../_static/vendor/fontawesome/6.5.1/css/all.min.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../_static/vendor/fontawesome/6.5.1/webfonts/fa-solid-900.woff2" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../_static/vendor/fontawesome/6.5.1/webfonts/fa-brands-400.woff2" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../_static/vendor/fontawesome/6.5.1/webfonts/fa-regular-400.woff2" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/custom.css?v=ea07567a" />
|
||||
|
||||
<!-- Pre-loaded scripts that we'll load fully later -->
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae" />
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae" />
|
||||
<script src="../../../_static/vendor/fontawesome/6.5.1/js/all.min.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=51b770b3"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
<script>DOCUMENTATION_OPTIONS.pagename = '_modules/categories/editor/utils';</script>
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<meta name="docsearch:language" content="en"/>
|
||||
</head>
|
||||
|
||||
|
||||
<body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode="">
|
||||
|
||||
|
||||
|
||||
<a id="pst-skip-link" class="skip-link" href="#main-content">Skip to main content</a>
|
||||
|
||||
<div id="pst-scroll-pixel-helper"></div>
|
||||
|
||||
<button type="button" class="btn rounded-pill" id="pst-back-to-top">
|
||||
<i class="fa-solid fa-arrow-up"></i>
|
||||
Back to top
|
||||
</button>
|
||||
|
||||
|
||||
<input type="checkbox"
|
||||
class="sidebar-toggle"
|
||||
name="__primary"
|
||||
id="__primary"/>
|
||||
<label class="overlay overlay-primary" for="__primary"></label>
|
||||
|
||||
<input type="checkbox"
|
||||
class="sidebar-toggle"
|
||||
name="__secondary"
|
||||
id="__secondary"/>
|
||||
<label class="overlay overlay-secondary" for="__secondary"></label>
|
||||
|
||||
<div class="search-button__wrapper">
|
||||
<div class="search-button__overlay"></div>
|
||||
<div class="search-button__search-container">
|
||||
<form class="bd-search d-flex align-items-center"
|
||||
action="../../../search.html"
|
||||
method="get">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<input type="search"
|
||||
class="form-control"
|
||||
name="q"
|
||||
id="search-input"
|
||||
placeholder="Search the docs ..."
|
||||
aria-label="Search the docs ..."
|
||||
autocomplete="off"
|
||||
autocorrect="off"
|
||||
autocapitalize="off"
|
||||
spellcheck="false"/>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span>
|
||||
</form></div>
|
||||
</div>
|
||||
|
||||
<header class="bd-header navbar navbar-expand-lg bd-navbar">
|
||||
<div class="bd-header__inner bd-page-width">
|
||||
<label class="sidebar-toggle primary-toggle" for="__primary">
|
||||
<span class="fa-solid fa-bars"></span>
|
||||
</label>
|
||||
|
||||
|
||||
<div class="col-lg-3 navbar-header-items__start">
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
|
||||
|
||||
<a class="navbar-brand logo" href="../../../index.html">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="title logo__title">Django Categories 2.0.0 documentation</p>
|
||||
|
||||
</a></div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col-lg-9 navbar-header-items">
|
||||
|
||||
<div class="me-auto navbar-header-items__center">
|
||||
|
||||
<div class="navbar-item">
|
||||
<nav class="navbar-nav">
|
||||
<ul class="bd-navbar-elements navbar-nav">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../installation.html">
|
||||
Installation
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../getting_started.html">
|
||||
Getting Started
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../user_guide/index.html">
|
||||
User Guide
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../reference/index.html">
|
||||
Reference
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../api/index.html">
|
||||
API
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item dropdown">
|
||||
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links">
|
||||
More
|
||||
</button>
|
||||
<ul id="pst-nav-more-links" class="dropdown-menu">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link dropdown-item nav-internal" href="../../../changelog.html">
|
||||
Changelog
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-header-items__end">
|
||||
|
||||
<div class="navbar-item navbar-persistent--container">
|
||||
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<span class="search-button__default-text">Search</span>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
|
||||
</button>
|
||||
`);
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
|
||||
</button>
|
||||
`);
|
||||
</script></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-persistent--mobile">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<span class="search-button__default-text">Search</span>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
|
||||
</button>
|
||||
`);
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</header>
|
||||
|
||||
|
||||
<div class="bd-container">
|
||||
<div class="bd-container__inner bd-page-width">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="bd-sidebar-primary bd-sidebar hide-on-wide">
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-header-items sidebar-primary__section">
|
||||
|
||||
|
||||
<div class="sidebar-header-items__center">
|
||||
|
||||
<div class="navbar-item">
|
||||
<nav class="navbar-nav">
|
||||
<ul class="bd-navbar-elements navbar-nav">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../installation.html">
|
||||
Installation
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../getting_started.html">
|
||||
Getting Started
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../user_guide/index.html">
|
||||
User Guide
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../reference/index.html">
|
||||
Reference
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../api/index.html">
|
||||
API
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item dropdown">
|
||||
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links-2">
|
||||
More
|
||||
</button>
|
||||
<ul id="pst-nav-more-links-2" class="dropdown-menu">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link dropdown-item nav-internal" href="../../../changelog.html">
|
||||
Changelog
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-header-items__end">
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
|
||||
</button>
|
||||
`);
|
||||
</script></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="sidebar-primary-items__end sidebar-primary__section">
|
||||
</div>
|
||||
|
||||
<div id="rtd-footer-container"></div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<main id="main-content" class="bd-main">
|
||||
|
||||
|
||||
<div class="bd-content">
|
||||
<div class="bd-article-container">
|
||||
|
||||
<div class="bd-header-article">
|
||||
<div class="header-article-items header-article__inner">
|
||||
|
||||
<div class="header-article-items__start">
|
||||
|
||||
<div class="header-article-item">
|
||||
|
||||
|
||||
|
||||
<nav aria-label="Breadcrumb">
|
||||
<ul class="bd-breadcrumbs">
|
||||
|
||||
<li class="breadcrumb-item breadcrumb-home">
|
||||
<a href="../../../index.html" class="nav-link" aria-label="Home">
|
||||
<i class="fa-solid fa-home"></i>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li>
|
||||
|
||||
<li class="breadcrumb-item active" aria-current="page">categories.e...</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div id="searchbox"></div>
|
||||
<article class="bd-article">
|
||||
|
||||
<h1>Source code for categories.editor.utils</h1><div class="highlight"><pre>
|
||||
<span></span><span class="sd">"""</span>
|
||||
<span class="sd">Provides compatibility with Django 1.8.</span>
|
||||
<span class="sd">"""</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">django.contrib.admin.utils</span> <span class="kn">import</span> <span class="n">display_for_field</span> <span class="k">as</span> <span class="n">_display_for_field</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="display_for_field">
|
||||
<a class="viewcode-back" href="../../../api/categories.editor.utils.display_for_field.html#categories.editor.utils.display_for_field">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">display_for_field</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">field</span><span class="p">,</span> <span class="n">empty_value_display</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Compatility for displaying a field in Django 1.8."""</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">_display_for_field</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">field</span><span class="p">,</span> <span class="n">empty_value_display</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">TypeError</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">_display_for_field</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">field</span><span class="p">)</span></div>
|
||||
|
||||
</pre></div>
|
||||
|
||||
</article>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<footer class="prev-next-footer">
|
||||
|
||||
<div class="prev-next-area">
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="bd-sidebar-secondary bd-toc"></div>
|
||||
|
||||
|
||||
</div>
|
||||
<footer class="bd-footer-content">
|
||||
|
||||
</footer>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Scripts loaded after <body> so the DOM is not blocked -->
|
||||
<script src="../../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
<script src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
|
||||
<footer class="bd-footer">
|
||||
<div class="bd-footer__inner bd-page-width">
|
||||
|
||||
<div class="footer-items__start">
|
||||
|
||||
<div class="footer-item">
|
||||
|
||||
<p class="copyright">
|
||||
|
||||
© Copyright 2010-2024, Corey Oordt.
|
||||
<br/>
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="footer-item">
|
||||
|
||||
<p class="sphinx-version">
|
||||
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.3.7.
|
||||
<br/>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="footer-items__end">
|
||||
|
||||
<div class="footer-item">
|
||||
<p class="theme-version">
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.15.2.
|
||||
</p></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
487
_modules/categories/fields.html
Normal file
487
_modules/categories/fields.html
Normal file
|
|
@ -0,0 +1,487 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
|
||||
<html lang="en" data-content_root="../../" >
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>categories.fields — Django Categories 2.0.0 documentation</title>
|
||||
|
||||
|
||||
|
||||
<script data-cfasync="false">
|
||||
document.documentElement.dataset.mode = localStorage.getItem("mode") || "";
|
||||
document.documentElement.dataset.theme = localStorage.getItem("theme") || "light";
|
||||
</script>
|
||||
|
||||
<!-- Loaded before other Sphinx assets -->
|
||||
<link href="../../_static/styles/theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link href="../../_static/styles/bootstrap.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link href="../../_static/styles/pydata-sphinx-theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
|
||||
|
||||
<link href="../../_static/vendor/fontawesome/6.5.1/css/all.min.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-solid-900.woff2" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-brands-400.woff2" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-regular-400.woff2" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/css/custom.css?v=ea07567a" />
|
||||
|
||||
<!-- Pre-loaded scripts that we'll load fully later -->
|
||||
<link rel="preload" as="script" href="../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae" />
|
||||
<link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae" />
|
||||
<script src="../../_static/vendor/fontawesome/6.5.1/js/all.min.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
|
||||
<script src="../../_static/documentation_options.js?v=51b770b3"></script>
|
||||
<script src="../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
<script>DOCUMENTATION_OPTIONS.pagename = '_modules/categories/fields';</script>
|
||||
<link rel="index" title="Index" href="../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../search.html" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<meta name="docsearch:language" content="en"/>
|
||||
</head>
|
||||
|
||||
|
||||
<body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode="">
|
||||
|
||||
|
||||
|
||||
<a id="pst-skip-link" class="skip-link" href="#main-content">Skip to main content</a>
|
||||
|
||||
<div id="pst-scroll-pixel-helper"></div>
|
||||
|
||||
<button type="button" class="btn rounded-pill" id="pst-back-to-top">
|
||||
<i class="fa-solid fa-arrow-up"></i>
|
||||
Back to top
|
||||
</button>
|
||||
|
||||
|
||||
<input type="checkbox"
|
||||
class="sidebar-toggle"
|
||||
name="__primary"
|
||||
id="__primary"/>
|
||||
<label class="overlay overlay-primary" for="__primary"></label>
|
||||
|
||||
<input type="checkbox"
|
||||
class="sidebar-toggle"
|
||||
name="__secondary"
|
||||
id="__secondary"/>
|
||||
<label class="overlay overlay-secondary" for="__secondary"></label>
|
||||
|
||||
<div class="search-button__wrapper">
|
||||
<div class="search-button__overlay"></div>
|
||||
<div class="search-button__search-container">
|
||||
<form class="bd-search d-flex align-items-center"
|
||||
action="../../search.html"
|
||||
method="get">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<input type="search"
|
||||
class="form-control"
|
||||
name="q"
|
||||
id="search-input"
|
||||
placeholder="Search the docs ..."
|
||||
aria-label="Search the docs ..."
|
||||
autocomplete="off"
|
||||
autocorrect="off"
|
||||
autocapitalize="off"
|
||||
spellcheck="false"/>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span>
|
||||
</form></div>
|
||||
</div>
|
||||
|
||||
<header class="bd-header navbar navbar-expand-lg bd-navbar">
|
||||
<div class="bd-header__inner bd-page-width">
|
||||
<label class="sidebar-toggle primary-toggle" for="__primary">
|
||||
<span class="fa-solid fa-bars"></span>
|
||||
</label>
|
||||
|
||||
|
||||
<div class="col-lg-3 navbar-header-items__start">
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
|
||||
|
||||
<a class="navbar-brand logo" href="../../index.html">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="title logo__title">Django Categories 2.0.0 documentation</p>
|
||||
|
||||
</a></div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col-lg-9 navbar-header-items">
|
||||
|
||||
<div class="me-auto navbar-header-items__center">
|
||||
|
||||
<div class="navbar-item">
|
||||
<nav class="navbar-nav">
|
||||
<ul class="bd-navbar-elements navbar-nav">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../installation.html">
|
||||
Installation
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../getting_started.html">
|
||||
Getting Started
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../user_guide/index.html">
|
||||
User Guide
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../reference/index.html">
|
||||
Reference
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../api/index.html">
|
||||
API
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item dropdown">
|
||||
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links">
|
||||
More
|
||||
</button>
|
||||
<ul id="pst-nav-more-links" class="dropdown-menu">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link dropdown-item nav-internal" href="../../changelog.html">
|
||||
Changelog
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-header-items__end">
|
||||
|
||||
<div class="navbar-item navbar-persistent--container">
|
||||
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<span class="search-button__default-text">Search</span>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
|
||||
</button>
|
||||
`);
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
|
||||
</button>
|
||||
`);
|
||||
</script></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-persistent--mobile">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<span class="search-button__default-text">Search</span>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
|
||||
</button>
|
||||
`);
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</header>
|
||||
|
||||
|
||||
<div class="bd-container">
|
||||
<div class="bd-container__inner bd-page-width">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="bd-sidebar-primary bd-sidebar hide-on-wide">
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-header-items sidebar-primary__section">
|
||||
|
||||
|
||||
<div class="sidebar-header-items__center">
|
||||
|
||||
<div class="navbar-item">
|
||||
<nav class="navbar-nav">
|
||||
<ul class="bd-navbar-elements navbar-nav">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../installation.html">
|
||||
Installation
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../getting_started.html">
|
||||
Getting Started
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../user_guide/index.html">
|
||||
User Guide
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../reference/index.html">
|
||||
Reference
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../api/index.html">
|
||||
API
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item dropdown">
|
||||
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links-2">
|
||||
More
|
||||
</button>
|
||||
<ul id="pst-nav-more-links-2" class="dropdown-menu">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link dropdown-item nav-internal" href="../../changelog.html">
|
||||
Changelog
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-header-items__end">
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
|
||||
</button>
|
||||
`);
|
||||
</script></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="sidebar-primary-items__end sidebar-primary__section">
|
||||
</div>
|
||||
|
||||
<div id="rtd-footer-container"></div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<main id="main-content" class="bd-main">
|
||||
|
||||
|
||||
<div class="bd-content">
|
||||
<div class="bd-article-container">
|
||||
|
||||
<div class="bd-header-article">
|
||||
<div class="header-article-items header-article__inner">
|
||||
|
||||
<div class="header-article-items__start">
|
||||
|
||||
<div class="header-article-item">
|
||||
|
||||
|
||||
|
||||
<nav aria-label="Breadcrumb">
|
||||
<ul class="bd-breadcrumbs">
|
||||
|
||||
<li class="breadcrumb-item breadcrumb-home">
|
||||
<a href="../../index.html" class="nav-link" aria-label="Home">
|
||||
<i class="fa-solid fa-home"></i>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="breadcrumb-item"><a href="../index.html" class="nav-link">Module code</a></li>
|
||||
|
||||
<li class="breadcrumb-item active" aria-current="page">categories.fields</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div id="searchbox"></div>
|
||||
<article class="bd-article">
|
||||
|
||||
<h1>Source code for categories.fields</h1><div class="highlight"><pre>
|
||||
<span></span><span class="sd">"""Custom category fields for other models."""</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">django.db.models</span> <span class="kn">import</span> <span class="n">ForeignKey</span><span class="p">,</span> <span class="n">ManyToManyField</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="CategoryM2MField">
|
||||
<a class="viewcode-back" href="../../api/categories.fields.CategoryM2MField.html#categories.fields.CategoryM2MField">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">CategoryM2MField</span><span class="p">(</span><span class="n">ManyToManyField</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""A many to many field to a Category model."""</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="s2">"to"</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
|
||||
<span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"to"</span><span class="p">)</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">CategoryM2MField</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">to</span><span class="o">=</span><span class="s2">"categories.Category"</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="CategoryFKField">
|
||||
<a class="viewcode-back" href="../../api/categories.fields.CategoryFKField.html#categories.fields.CategoryFKField">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">CategoryFKField</span><span class="p">(</span><span class="n">ForeignKey</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""A foreign key to the Category model."""</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="s2">"to"</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
|
||||
<span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"to"</span><span class="p">)</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">CategoryFKField</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">to</span><span class="o">=</span><span class="s2">"categories.Category"</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div>
|
||||
|
||||
</pre></div>
|
||||
|
||||
</article>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<footer class="prev-next-footer">
|
||||
|
||||
<div class="prev-next-area">
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="bd-sidebar-secondary bd-toc"></div>
|
||||
|
||||
|
||||
</div>
|
||||
<footer class="bd-footer-content">
|
||||
|
||||
</footer>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Scripts loaded after <body> so the DOM is not blocked -->
|
||||
<script src="../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
<script src="../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
|
||||
<footer class="bd-footer">
|
||||
<div class="bd-footer__inner bd-page-width">
|
||||
|
||||
<div class="footer-items__start">
|
||||
|
||||
<div class="footer-item">
|
||||
|
||||
<p class="copyright">
|
||||
|
||||
© Copyright 2010-2024, Corey Oordt.
|
||||
<br/>
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="footer-item">
|
||||
|
||||
<p class="sphinx-version">
|
||||
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.3.7.
|
||||
<br/>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="footer-items__end">
|
||||
|
||||
<div class="footer-item">
|
||||
<p class="theme-version">
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.15.2.
|
||||
</p></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
516
_modules/categories/genericcollection.html
Normal file
516
_modules/categories/genericcollection.html
Normal file
|
|
@ -0,0 +1,516 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
|
||||
<html lang="en" data-content_root="../../" >
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>categories.genericcollection — Django Categories 2.0.0 documentation</title>
|
||||
|
||||
|
||||
|
||||
<script data-cfasync="false">
|
||||
document.documentElement.dataset.mode = localStorage.getItem("mode") || "";
|
||||
document.documentElement.dataset.theme = localStorage.getItem("theme") || "light";
|
||||
</script>
|
||||
|
||||
<!-- Loaded before other Sphinx assets -->
|
||||
<link href="../../_static/styles/theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link href="../../_static/styles/bootstrap.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link href="../../_static/styles/pydata-sphinx-theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
|
||||
|
||||
<link href="../../_static/vendor/fontawesome/6.5.1/css/all.min.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-solid-900.woff2" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-brands-400.woff2" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-regular-400.woff2" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/css/custom.css?v=ea07567a" />
|
||||
|
||||
<!-- Pre-loaded scripts that we'll load fully later -->
|
||||
<link rel="preload" as="script" href="../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae" />
|
||||
<link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae" />
|
||||
<script src="../../_static/vendor/fontawesome/6.5.1/js/all.min.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
|
||||
<script src="../../_static/documentation_options.js?v=51b770b3"></script>
|
||||
<script src="../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
<script>DOCUMENTATION_OPTIONS.pagename = '_modules/categories/genericcollection';</script>
|
||||
<link rel="index" title="Index" href="../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../search.html" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<meta name="docsearch:language" content="en"/>
|
||||
</head>
|
||||
|
||||
|
||||
<body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode="">
|
||||
|
||||
|
||||
|
||||
<a id="pst-skip-link" class="skip-link" href="#main-content">Skip to main content</a>
|
||||
|
||||
<div id="pst-scroll-pixel-helper"></div>
|
||||
|
||||
<button type="button" class="btn rounded-pill" id="pst-back-to-top">
|
||||
<i class="fa-solid fa-arrow-up"></i>
|
||||
Back to top
|
||||
</button>
|
||||
|
||||
|
||||
<input type="checkbox"
|
||||
class="sidebar-toggle"
|
||||
name="__primary"
|
||||
id="__primary"/>
|
||||
<label class="overlay overlay-primary" for="__primary"></label>
|
||||
|
||||
<input type="checkbox"
|
||||
class="sidebar-toggle"
|
||||
name="__secondary"
|
||||
id="__secondary"/>
|
||||
<label class="overlay overlay-secondary" for="__secondary"></label>
|
||||
|
||||
<div class="search-button__wrapper">
|
||||
<div class="search-button__overlay"></div>
|
||||
<div class="search-button__search-container">
|
||||
<form class="bd-search d-flex align-items-center"
|
||||
action="../../search.html"
|
||||
method="get">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<input type="search"
|
||||
class="form-control"
|
||||
name="q"
|
||||
id="search-input"
|
||||
placeholder="Search the docs ..."
|
||||
aria-label="Search the docs ..."
|
||||
autocomplete="off"
|
||||
autocorrect="off"
|
||||
autocapitalize="off"
|
||||
spellcheck="false"/>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span>
|
||||
</form></div>
|
||||
</div>
|
||||
|
||||
<header class="bd-header navbar navbar-expand-lg bd-navbar">
|
||||
<div class="bd-header__inner bd-page-width">
|
||||
<label class="sidebar-toggle primary-toggle" for="__primary">
|
||||
<span class="fa-solid fa-bars"></span>
|
||||
</label>
|
||||
|
||||
|
||||
<div class="col-lg-3 navbar-header-items__start">
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
|
||||
|
||||
<a class="navbar-brand logo" href="../../index.html">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="title logo__title">Django Categories 2.0.0 documentation</p>
|
||||
|
||||
</a></div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col-lg-9 navbar-header-items">
|
||||
|
||||
<div class="me-auto navbar-header-items__center">
|
||||
|
||||
<div class="navbar-item">
|
||||
<nav class="navbar-nav">
|
||||
<ul class="bd-navbar-elements navbar-nav">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../installation.html">
|
||||
Installation
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../getting_started.html">
|
||||
Getting Started
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../user_guide/index.html">
|
||||
User Guide
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../reference/index.html">
|
||||
Reference
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../api/index.html">
|
||||
API
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item dropdown">
|
||||
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links">
|
||||
More
|
||||
</button>
|
||||
<ul id="pst-nav-more-links" class="dropdown-menu">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link dropdown-item nav-internal" href="../../changelog.html">
|
||||
Changelog
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-header-items__end">
|
||||
|
||||
<div class="navbar-item navbar-persistent--container">
|
||||
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<span class="search-button__default-text">Search</span>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
|
||||
</button>
|
||||
`);
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
|
||||
</button>
|
||||
`);
|
||||
</script></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-persistent--mobile">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<span class="search-button__default-text">Search</span>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
|
||||
</button>
|
||||
`);
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</header>
|
||||
|
||||
|
||||
<div class="bd-container">
|
||||
<div class="bd-container__inner bd-page-width">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="bd-sidebar-primary bd-sidebar hide-on-wide">
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-header-items sidebar-primary__section">
|
||||
|
||||
|
||||
<div class="sidebar-header-items__center">
|
||||
|
||||
<div class="navbar-item">
|
||||
<nav class="navbar-nav">
|
||||
<ul class="bd-navbar-elements navbar-nav">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../installation.html">
|
||||
Installation
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../getting_started.html">
|
||||
Getting Started
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../user_guide/index.html">
|
||||
User Guide
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../reference/index.html">
|
||||
Reference
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../api/index.html">
|
||||
API
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item dropdown">
|
||||
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links-2">
|
||||
More
|
||||
</button>
|
||||
<ul id="pst-nav-more-links-2" class="dropdown-menu">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link dropdown-item nav-internal" href="../../changelog.html">
|
||||
Changelog
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-header-items__end">
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
|
||||
</button>
|
||||
`);
|
||||
</script></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="sidebar-primary-items__end sidebar-primary__section">
|
||||
</div>
|
||||
|
||||
<div id="rtd-footer-container"></div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<main id="main-content" class="bd-main">
|
||||
|
||||
|
||||
<div class="bd-content">
|
||||
<div class="bd-article-container">
|
||||
|
||||
<div class="bd-header-article">
|
||||
<div class="header-article-items header-article__inner">
|
||||
|
||||
<div class="header-article-items__start">
|
||||
|
||||
<div class="header-article-item">
|
||||
|
||||
|
||||
|
||||
<nav aria-label="Breadcrumb">
|
||||
<ul class="bd-breadcrumbs">
|
||||
|
||||
<li class="breadcrumb-item breadcrumb-home">
|
||||
<a href="../../index.html" class="nav-link" aria-label="Home">
|
||||
<i class="fa-solid fa-home"></i>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="breadcrumb-item"><a href="../index.html" class="nav-link">Module code</a></li>
|
||||
|
||||
<li class="breadcrumb-item active" aria-current="page">categories.g...</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div id="searchbox"></div>
|
||||
<article class="bd-article">
|
||||
|
||||
<h1>Source code for categories.genericcollection</h1><div class="highlight"><pre>
|
||||
<span></span><span class="sd">"""Special helpers for generic collections."""</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">json</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">django.contrib</span> <span class="kn">import</span> <span class="n">admin</span>
|
||||
<span class="kn">from</span> <span class="nn">django.contrib.contenttypes.models</span> <span class="kn">import</span> <span class="n">ContentType</span>
|
||||
<span class="kn">from</span> <span class="nn">django.urls</span> <span class="kn">import</span> <span class="n">NoReverseMatch</span><span class="p">,</span> <span class="n">reverse</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="GenericCollectionInlineModelAdmin">
|
||||
<a class="viewcode-back" href="../../api/categories.genericcollection.GenericCollectionInlineModelAdmin.html#categories.genericcollection.GenericCollectionInlineModelAdmin">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">GenericCollectionInlineModelAdmin</span><span class="p">(</span><span class="n">admin</span><span class="o">.</span><span class="n">options</span><span class="o">.</span><span class="n">InlineModelAdmin</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Inline admin for generic model collections."""</span>
|
||||
|
||||
<span class="n">ct_field</span> <span class="o">=</span> <span class="s2">"content_type"</span>
|
||||
<span class="n">ct_fk_field</span> <span class="o">=</span> <span class="s2">"object_id"</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_content_types</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Get the content types supported by this collection."""</span>
|
||||
<span class="n">ctypes</span> <span class="o">=</span> <span class="n">ContentType</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">all</span><span class="p">()</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s2">"id"</span><span class="p">)</span><span class="o">.</span><span class="n">values_list</span><span class="p">(</span><span class="s2">"id"</span><span class="p">,</span> <span class="s2">"app_label"</span><span class="p">,</span> <span class="s2">"model"</span><span class="p">)</span>
|
||||
<span class="n">elements</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="k">for</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">z</span> <span class="ow">in</span> <span class="n">ctypes</span><span class="p">:</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">elements</span><span class="p">[</span><span class="n">x</span><span class="p">]</span> <span class="o">=</span> <span class="n">reverse</span><span class="p">(</span><span class="s2">"admin:</span><span class="si">%s</span><span class="s2">_</span><span class="si">%s</span><span class="s2">_changelist"</span> <span class="o">%</span> <span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">z</span><span class="p">))</span>
|
||||
<span class="k">except</span> <span class="n">NoReverseMatch</span><span class="p">:</span>
|
||||
<span class="k">continue</span>
|
||||
<span class="k">return</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">elements</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_formset</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">request</span><span class="p">,</span> <span class="n">obj</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Get the formset for the generic collection."""</span>
|
||||
<span class="n">result</span> <span class="o">=</span> <span class="nb">super</span><span class="p">(</span><span class="n">GenericCollectionInlineModelAdmin</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">get_formset</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">obj</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
<span class="n">result</span><span class="o">.</span><span class="n">content_types</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_types</span><span class="p">()</span>
|
||||
<span class="n">result</span><span class="o">.</span><span class="n">ct_fk_field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ct_fk_field</span>
|
||||
<span class="k">return</span> <span class="n">result</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">Media</span><span class="p">:</span>
|
||||
<span class="n">js</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"contentrelations/js/genericlookup.js"</span><span class="p">,)</span></div>
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="GenericCollectionTabularInline">
|
||||
<a class="viewcode-back" href="../../api/categories.genericcollection.GenericCollectionTabularInline.html#categories.genericcollection.GenericCollectionTabularInline">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">GenericCollectionTabularInline</span><span class="p">(</span><span class="n">GenericCollectionInlineModelAdmin</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Tabular model admin for a generic collection."""</span>
|
||||
|
||||
<span class="n">template</span> <span class="o">=</span> <span class="s2">"admin/edit_inline/gen_coll_tabular.html"</span></div>
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="GenericCollectionStackedInline">
|
||||
<a class="viewcode-back" href="../../api/categories.genericcollection.GenericCollectionStackedInline.html#categories.genericcollection.GenericCollectionStackedInline">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">GenericCollectionStackedInline</span><span class="p">(</span><span class="n">GenericCollectionInlineModelAdmin</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Stacked model admin for a generic collection."""</span>
|
||||
|
||||
<span class="n">template</span> <span class="o">=</span> <span class="s2">"admin/edit_inline/gen_coll_stacked.html"</span></div>
|
||||
|
||||
</pre></div>
|
||||
|
||||
</article>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<footer class="prev-next-footer">
|
||||
|
||||
<div class="prev-next-area">
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="bd-sidebar-secondary bd-toc"></div>
|
||||
|
||||
|
||||
</div>
|
||||
<footer class="bd-footer-content">
|
||||
|
||||
</footer>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Scripts loaded after <body> so the DOM is not blocked -->
|
||||
<script src="../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
<script src="../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
|
||||
<footer class="bd-footer">
|
||||
<div class="bd-footer__inner bd-page-width">
|
||||
|
||||
<div class="footer-items__start">
|
||||
|
||||
<div class="footer-item">
|
||||
|
||||
<p class="copyright">
|
||||
|
||||
© Copyright 2010-2024, Corey Oordt.
|
||||
<br/>
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="footer-item">
|
||||
|
||||
<p class="sphinx-version">
|
||||
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.3.7.
|
||||
<br/>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="footer-items__end">
|
||||
|
||||
<div class="footer-item">
|
||||
<p class="theme-version">
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.15.2.
|
||||
</p></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
495
_modules/categories/management/commands/add_category_fields.html
Normal file
495
_modules/categories/management/commands/add_category_fields.html
Normal file
|
|
@ -0,0 +1,495 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
|
||||
<html lang="en" data-content_root="../../../../" >
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>categories.management.commands.add_category_fields — Django Categories 2.0.0 documentation</title>
|
||||
|
||||
|
||||
|
||||
<script data-cfasync="false">
|
||||
document.documentElement.dataset.mode = localStorage.getItem("mode") || "";
|
||||
document.documentElement.dataset.theme = localStorage.getItem("theme") || "light";
|
||||
</script>
|
||||
|
||||
<!-- Loaded before other Sphinx assets -->
|
||||
<link href="../../../../_static/styles/theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link href="../../../../_static/styles/bootstrap.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
|
||||
|
||||
<link href="../../../../_static/vendor/fontawesome/6.5.1/css/all.min.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../_static/vendor/fontawesome/6.5.1/webfonts/fa-solid-900.woff2" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../_static/vendor/fontawesome/6.5.1/webfonts/fa-brands-400.woff2" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../_static/vendor/fontawesome/6.5.1/webfonts/fa-regular-400.woff2" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../../_static/css/custom.css?v=ea07567a" />
|
||||
|
||||
<!-- Pre-loaded scripts that we'll load fully later -->
|
||||
<link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae" />
|
||||
<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae" />
|
||||
<script src="../../../../_static/vendor/fontawesome/6.5.1/js/all.min.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
|
||||
<script src="../../../../_static/documentation_options.js?v=51b770b3"></script>
|
||||
<script src="../../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
<script>DOCUMENTATION_OPTIONS.pagename = '_modules/categories/management/commands/add_category_fields';</script>
|
||||
<link rel="index" title="Index" href="../../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../../search.html" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<meta name="docsearch:language" content="en"/>
|
||||
</head>
|
||||
|
||||
|
||||
<body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode="">
|
||||
|
||||
|
||||
|
||||
<a id="pst-skip-link" class="skip-link" href="#main-content">Skip to main content</a>
|
||||
|
||||
<div id="pst-scroll-pixel-helper"></div>
|
||||
|
||||
<button type="button" class="btn rounded-pill" id="pst-back-to-top">
|
||||
<i class="fa-solid fa-arrow-up"></i>
|
||||
Back to top
|
||||
</button>
|
||||
|
||||
|
||||
<input type="checkbox"
|
||||
class="sidebar-toggle"
|
||||
name="__primary"
|
||||
id="__primary"/>
|
||||
<label class="overlay overlay-primary" for="__primary"></label>
|
||||
|
||||
<input type="checkbox"
|
||||
class="sidebar-toggle"
|
||||
name="__secondary"
|
||||
id="__secondary"/>
|
||||
<label class="overlay overlay-secondary" for="__secondary"></label>
|
||||
|
||||
<div class="search-button__wrapper">
|
||||
<div class="search-button__overlay"></div>
|
||||
<div class="search-button__search-container">
|
||||
<form class="bd-search d-flex align-items-center"
|
||||
action="../../../../search.html"
|
||||
method="get">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<input type="search"
|
||||
class="form-control"
|
||||
name="q"
|
||||
id="search-input"
|
||||
placeholder="Search the docs ..."
|
||||
aria-label="Search the docs ..."
|
||||
autocomplete="off"
|
||||
autocorrect="off"
|
||||
autocapitalize="off"
|
||||
spellcheck="false"/>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span>
|
||||
</form></div>
|
||||
</div>
|
||||
|
||||
<header class="bd-header navbar navbar-expand-lg bd-navbar">
|
||||
<div class="bd-header__inner bd-page-width">
|
||||
<label class="sidebar-toggle primary-toggle" for="__primary">
|
||||
<span class="fa-solid fa-bars"></span>
|
||||
</label>
|
||||
|
||||
|
||||
<div class="col-lg-3 navbar-header-items__start">
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
|
||||
|
||||
<a class="navbar-brand logo" href="../../../../index.html">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="title logo__title">Django Categories 2.0.0 documentation</p>
|
||||
|
||||
</a></div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col-lg-9 navbar-header-items">
|
||||
|
||||
<div class="me-auto navbar-header-items__center">
|
||||
|
||||
<div class="navbar-item">
|
||||
<nav class="navbar-nav">
|
||||
<ul class="bd-navbar-elements navbar-nav">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../../installation.html">
|
||||
Installation
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../../getting_started.html">
|
||||
Getting Started
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../../user_guide/index.html">
|
||||
User Guide
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../../reference/index.html">
|
||||
Reference
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../../api/index.html">
|
||||
API
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item dropdown">
|
||||
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links">
|
||||
More
|
||||
</button>
|
||||
<ul id="pst-nav-more-links" class="dropdown-menu">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link dropdown-item nav-internal" href="../../../../changelog.html">
|
||||
Changelog
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-header-items__end">
|
||||
|
||||
<div class="navbar-item navbar-persistent--container">
|
||||
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<span class="search-button__default-text">Search</span>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
|
||||
</button>
|
||||
`);
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
|
||||
</button>
|
||||
`);
|
||||
</script></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-persistent--mobile">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<span class="search-button__default-text">Search</span>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
|
||||
</button>
|
||||
`);
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</header>
|
||||
|
||||
|
||||
<div class="bd-container">
|
||||
<div class="bd-container__inner bd-page-width">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="bd-sidebar-primary bd-sidebar hide-on-wide">
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-header-items sidebar-primary__section">
|
||||
|
||||
|
||||
<div class="sidebar-header-items__center">
|
||||
|
||||
<div class="navbar-item">
|
||||
<nav class="navbar-nav">
|
||||
<ul class="bd-navbar-elements navbar-nav">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../../installation.html">
|
||||
Installation
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../../getting_started.html">
|
||||
Getting Started
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../../user_guide/index.html">
|
||||
User Guide
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../../reference/index.html">
|
||||
Reference
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../../api/index.html">
|
||||
API
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item dropdown">
|
||||
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links-2">
|
||||
More
|
||||
</button>
|
||||
<ul id="pst-nav-more-links-2" class="dropdown-menu">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link dropdown-item nav-internal" href="../../../../changelog.html">
|
||||
Changelog
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-header-items__end">
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
|
||||
</button>
|
||||
`);
|
||||
</script></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="sidebar-primary-items__end sidebar-primary__section">
|
||||
</div>
|
||||
|
||||
<div id="rtd-footer-container"></div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<main id="main-content" class="bd-main">
|
||||
|
||||
|
||||
<div class="bd-content">
|
||||
<div class="bd-article-container">
|
||||
|
||||
<div class="bd-header-article">
|
||||
<div class="header-article-items header-article__inner">
|
||||
|
||||
<div class="header-article-items__start">
|
||||
|
||||
<div class="header-article-item">
|
||||
|
||||
|
||||
|
||||
<nav aria-label="Breadcrumb">
|
||||
<ul class="bd-breadcrumbs">
|
||||
|
||||
<li class="breadcrumb-item breadcrumb-home">
|
||||
<a href="../../../../index.html" class="nav-link" aria-label="Home">
|
||||
<i class="fa-solid fa-home"></i>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">Module code</a></li>
|
||||
|
||||
<li class="breadcrumb-item active" aria-current="page">categories.m...</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div id="searchbox"></div>
|
||||
<article class="bd-article">
|
||||
|
||||
<h1>Source code for categories.management.commands.add_category_fields</h1><div class="highlight"><pre>
|
||||
<span></span><span class="sd">"""The add_category_fields command."""</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">django.core.management.base</span> <span class="kn">import</span> <span class="n">BaseCommand</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="Command">
|
||||
<a class="viewcode-back" href="../../../../api/categories.management.commands.add_category_fields.Command.html#categories.management.commands.add_category_fields.Command">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">Command</span><span class="p">(</span><span class="n">BaseCommand</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Alter one or more models' tables with the registered attributes.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">help</span> <span class="o">=</span> <span class="s2">"Alter the tables for all registered models, or just specified models"</span>
|
||||
<span class="n">args</span> <span class="o">=</span> <span class="s2">"[appname ...]"</span>
|
||||
<span class="n">can_import_settings</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
<span class="n">requires_system_checks</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">add_arguments</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parser</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Add app_names argument to the command."""</span>
|
||||
<span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">"app_names"</span><span class="p">,</span> <span class="n">nargs</span><span class="o">=</span><span class="s2">"*"</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">handle</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">options</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Alter the tables.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="kn">from</span> <span class="nn">categories.migration</span> <span class="kn">import</span> <span class="n">migrate_app</span>
|
||||
<span class="kn">from</span> <span class="nn">categories.settings</span> <span class="kn">import</span> <span class="n">MODEL_REGISTRY</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">options</span><span class="p">[</span><span class="s2">"app_names"</span><span class="p">]:</span>
|
||||
<span class="k">for</span> <span class="n">app</span> <span class="ow">in</span> <span class="n">options</span><span class="p">[</span><span class="s2">"app_names"</span><span class="p">]:</span>
|
||||
<span class="n">migrate_app</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">app</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">for</span> <span class="n">app</span> <span class="ow">in</span> <span class="n">MODEL_REGISTRY</span><span class="p">:</span>
|
||||
<span class="n">migrate_app</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">app</span><span class="p">)</span></div>
|
||||
|
||||
</pre></div>
|
||||
|
||||
</article>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<footer class="prev-next-footer">
|
||||
|
||||
<div class="prev-next-area">
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="bd-sidebar-secondary bd-toc"></div>
|
||||
|
||||
|
||||
</div>
|
||||
<footer class="bd-footer-content">
|
||||
|
||||
</footer>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Scripts loaded after <body> so the DOM is not blocked -->
|
||||
<script src="../../../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
<script src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
|
||||
<footer class="bd-footer">
|
||||
<div class="bd-footer__inner bd-page-width">
|
||||
|
||||
<div class="footer-items__start">
|
||||
|
||||
<div class="footer-item">
|
||||
|
||||
<p class="copyright">
|
||||
|
||||
© Copyright 2010-2024, Corey Oordt.
|
||||
<br/>
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="footer-item">
|
||||
|
||||
<p class="sphinx-version">
|
||||
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.3.7.
|
||||
<br/>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="footer-items__end">
|
||||
|
||||
<div class="footer-item">
|
||||
<p class="theme-version">
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.15.2.
|
||||
</p></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
494
_modules/categories/management/commands/drop_category_field.html
Normal file
494
_modules/categories/management/commands/drop_category_field.html
Normal file
|
|
@ -0,0 +1,494 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
|
||||
<html lang="en" data-content_root="../../../../" >
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>categories.management.commands.drop_category_field — Django Categories 2.0.0 documentation</title>
|
||||
|
||||
|
||||
|
||||
<script data-cfasync="false">
|
||||
document.documentElement.dataset.mode = localStorage.getItem("mode") || "";
|
||||
document.documentElement.dataset.theme = localStorage.getItem("theme") || "light";
|
||||
</script>
|
||||
|
||||
<!-- Loaded before other Sphinx assets -->
|
||||
<link href="../../../../_static/styles/theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link href="../../../../_static/styles/bootstrap.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
|
||||
|
||||
<link href="../../../../_static/vendor/fontawesome/6.5.1/css/all.min.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../_static/vendor/fontawesome/6.5.1/webfonts/fa-solid-900.woff2" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../_static/vendor/fontawesome/6.5.1/webfonts/fa-brands-400.woff2" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../_static/vendor/fontawesome/6.5.1/webfonts/fa-regular-400.woff2" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../../_static/css/custom.css?v=ea07567a" />
|
||||
|
||||
<!-- Pre-loaded scripts that we'll load fully later -->
|
||||
<link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae" />
|
||||
<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae" />
|
||||
<script src="../../../../_static/vendor/fontawesome/6.5.1/js/all.min.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
|
||||
<script src="../../../../_static/documentation_options.js?v=51b770b3"></script>
|
||||
<script src="../../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
<script>DOCUMENTATION_OPTIONS.pagename = '_modules/categories/management/commands/drop_category_field';</script>
|
||||
<link rel="index" title="Index" href="../../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../../search.html" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<meta name="docsearch:language" content="en"/>
|
||||
</head>
|
||||
|
||||
|
||||
<body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode="">
|
||||
|
||||
|
||||
|
||||
<a id="pst-skip-link" class="skip-link" href="#main-content">Skip to main content</a>
|
||||
|
||||
<div id="pst-scroll-pixel-helper"></div>
|
||||
|
||||
<button type="button" class="btn rounded-pill" id="pst-back-to-top">
|
||||
<i class="fa-solid fa-arrow-up"></i>
|
||||
Back to top
|
||||
</button>
|
||||
|
||||
|
||||
<input type="checkbox"
|
||||
class="sidebar-toggle"
|
||||
name="__primary"
|
||||
id="__primary"/>
|
||||
<label class="overlay overlay-primary" for="__primary"></label>
|
||||
|
||||
<input type="checkbox"
|
||||
class="sidebar-toggle"
|
||||
name="__secondary"
|
||||
id="__secondary"/>
|
||||
<label class="overlay overlay-secondary" for="__secondary"></label>
|
||||
|
||||
<div class="search-button__wrapper">
|
||||
<div class="search-button__overlay"></div>
|
||||
<div class="search-button__search-container">
|
||||
<form class="bd-search d-flex align-items-center"
|
||||
action="../../../../search.html"
|
||||
method="get">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<input type="search"
|
||||
class="form-control"
|
||||
name="q"
|
||||
id="search-input"
|
||||
placeholder="Search the docs ..."
|
||||
aria-label="Search the docs ..."
|
||||
autocomplete="off"
|
||||
autocorrect="off"
|
||||
autocapitalize="off"
|
||||
spellcheck="false"/>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span>
|
||||
</form></div>
|
||||
</div>
|
||||
|
||||
<header class="bd-header navbar navbar-expand-lg bd-navbar">
|
||||
<div class="bd-header__inner bd-page-width">
|
||||
<label class="sidebar-toggle primary-toggle" for="__primary">
|
||||
<span class="fa-solid fa-bars"></span>
|
||||
</label>
|
||||
|
||||
|
||||
<div class="col-lg-3 navbar-header-items__start">
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
|
||||
|
||||
<a class="navbar-brand logo" href="../../../../index.html">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="title logo__title">Django Categories 2.0.0 documentation</p>
|
||||
|
||||
</a></div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col-lg-9 navbar-header-items">
|
||||
|
||||
<div class="me-auto navbar-header-items__center">
|
||||
|
||||
<div class="navbar-item">
|
||||
<nav class="navbar-nav">
|
||||
<ul class="bd-navbar-elements navbar-nav">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../../installation.html">
|
||||
Installation
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../../getting_started.html">
|
||||
Getting Started
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../../user_guide/index.html">
|
||||
User Guide
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../../reference/index.html">
|
||||
Reference
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../../api/index.html">
|
||||
API
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item dropdown">
|
||||
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links">
|
||||
More
|
||||
</button>
|
||||
<ul id="pst-nav-more-links" class="dropdown-menu">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link dropdown-item nav-internal" href="../../../../changelog.html">
|
||||
Changelog
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-header-items__end">
|
||||
|
||||
<div class="navbar-item navbar-persistent--container">
|
||||
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<span class="search-button__default-text">Search</span>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
|
||||
</button>
|
||||
`);
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
|
||||
</button>
|
||||
`);
|
||||
</script></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-persistent--mobile">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<span class="search-button__default-text">Search</span>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
|
||||
</button>
|
||||
`);
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</header>
|
||||
|
||||
|
||||
<div class="bd-container">
|
||||
<div class="bd-container__inner bd-page-width">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="bd-sidebar-primary bd-sidebar hide-on-wide">
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-header-items sidebar-primary__section">
|
||||
|
||||
|
||||
<div class="sidebar-header-items__center">
|
||||
|
||||
<div class="navbar-item">
|
||||
<nav class="navbar-nav">
|
||||
<ul class="bd-navbar-elements navbar-nav">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../../installation.html">
|
||||
Installation
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../../getting_started.html">
|
||||
Getting Started
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../../user_guide/index.html">
|
||||
User Guide
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../../reference/index.html">
|
||||
Reference
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../../api/index.html">
|
||||
API
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item dropdown">
|
||||
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links-2">
|
||||
More
|
||||
</button>
|
||||
<ul id="pst-nav-more-links-2" class="dropdown-menu">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link dropdown-item nav-internal" href="../../../../changelog.html">
|
||||
Changelog
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-header-items__end">
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
|
||||
</button>
|
||||
`);
|
||||
</script></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="sidebar-primary-items__end sidebar-primary__section">
|
||||
</div>
|
||||
|
||||
<div id="rtd-footer-container"></div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<main id="main-content" class="bd-main">
|
||||
|
||||
|
||||
<div class="bd-content">
|
||||
<div class="bd-article-container">
|
||||
|
||||
<div class="bd-header-article">
|
||||
<div class="header-article-items header-article__inner">
|
||||
|
||||
<div class="header-article-items__start">
|
||||
|
||||
<div class="header-article-item">
|
||||
|
||||
|
||||
|
||||
<nav aria-label="Breadcrumb">
|
||||
<ul class="bd-breadcrumbs">
|
||||
|
||||
<li class="breadcrumb-item breadcrumb-home">
|
||||
<a href="../../../../index.html" class="nav-link" aria-label="Home">
|
||||
<i class="fa-solid fa-home"></i>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">Module code</a></li>
|
||||
|
||||
<li class="breadcrumb-item active" aria-current="page">categories.m...</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div id="searchbox"></div>
|
||||
<article class="bd-article">
|
||||
|
||||
<h1>Source code for categories.management.commands.drop_category_field</h1><div class="highlight"><pre>
|
||||
<span></span><span class="sd">"""Alter one or more models' tables with the registered attributes."""</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">django.core.management.base</span> <span class="kn">import</span> <span class="n">BaseCommand</span><span class="p">,</span> <span class="n">CommandError</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="Command">
|
||||
<a class="viewcode-back" href="../../../../api/categories.management.commands.drop_category_field.Command.html#categories.management.commands.drop_category_field.Command">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">Command</span><span class="p">(</span><span class="n">BaseCommand</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Alter one or more models' tables with the registered attributes.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">help</span> <span class="o">=</span> <span class="s2">"Drop the given field from the given model's table"</span>
|
||||
<span class="n">args</span> <span class="o">=</span> <span class="s2">"appname modelname fieldname"</span>
|
||||
<span class="n">can_import_settings</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
<span class="n">requires_system_checks</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">add_arguments</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parser</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Add app_name, model_name, and field_name arguments to the command."""</span>
|
||||
<span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">"app_name"</span><span class="p">)</span>
|
||||
<span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">"model_name"</span><span class="p">)</span>
|
||||
<span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">"field_name"</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">handle</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">options</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Alter the tables.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="kn">from</span> <span class="nn">categories.migration</span> <span class="kn">import</span> <span class="n">drop_field</span>
|
||||
|
||||
<span class="k">if</span> <span class="s2">"app_name"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">options</span> <span class="ow">or</span> <span class="s2">"model_name"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">options</span> <span class="ow">or</span> <span class="s2">"field_name"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">options</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">CommandError</span><span class="p">(</span><span class="s2">"You must specify an Application name, a Model name and a Field name"</span><span class="p">)</span>
|
||||
|
||||
<span class="n">drop_field</span><span class="p">(</span><span class="n">options</span><span class="p">[</span><span class="s2">"app_name"</span><span class="p">],</span> <span class="n">options</span><span class="p">[</span><span class="s2">"model_name"</span><span class="p">],</span> <span class="n">options</span><span class="p">[</span><span class="s2">"field_name"</span><span class="p">])</span></div>
|
||||
|
||||
</pre></div>
|
||||
|
||||
</article>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<footer class="prev-next-footer">
|
||||
|
||||
<div class="prev-next-area">
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="bd-sidebar-secondary bd-toc"></div>
|
||||
|
||||
|
||||
</div>
|
||||
<footer class="bd-footer-content">
|
||||
|
||||
</footer>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Scripts loaded after <body> so the DOM is not blocked -->
|
||||
<script src="../../../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
<script src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
|
||||
<footer class="bd-footer">
|
||||
<div class="bd-footer__inner bd-page-width">
|
||||
|
||||
<div class="footer-items__start">
|
||||
|
||||
<div class="footer-item">
|
||||
|
||||
<p class="copyright">
|
||||
|
||||
© Copyright 2010-2024, Corey Oordt.
|
||||
<br/>
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="footer-item">
|
||||
|
||||
<p class="sphinx-version">
|
||||
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.3.7.
|
||||
<br/>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="footer-items__end">
|
||||
|
||||
<div class="footer-item">
|
||||
<p class="theme-version">
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.15.2.
|
||||
</p></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
555
_modules/categories/management/commands/import_categories.html
Normal file
555
_modules/categories/management/commands/import_categories.html
Normal file
|
|
@ -0,0 +1,555 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
|
||||
<html lang="en" data-content_root="../../../../" >
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>categories.management.commands.import_categories — Django Categories 2.0.0 documentation</title>
|
||||
|
||||
|
||||
|
||||
<script data-cfasync="false">
|
||||
document.documentElement.dataset.mode = localStorage.getItem("mode") || "";
|
||||
document.documentElement.dataset.theme = localStorage.getItem("theme") || "light";
|
||||
</script>
|
||||
|
||||
<!-- Loaded before other Sphinx assets -->
|
||||
<link href="../../../../_static/styles/theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link href="../../../../_static/styles/bootstrap.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
|
||||
|
||||
<link href="../../../../_static/vendor/fontawesome/6.5.1/css/all.min.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../_static/vendor/fontawesome/6.5.1/webfonts/fa-solid-900.woff2" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../_static/vendor/fontawesome/6.5.1/webfonts/fa-brands-400.woff2" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../_static/vendor/fontawesome/6.5.1/webfonts/fa-regular-400.woff2" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../../_static/css/custom.css?v=ea07567a" />
|
||||
|
||||
<!-- Pre-loaded scripts that we'll load fully later -->
|
||||
<link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae" />
|
||||
<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae" />
|
||||
<script src="../../../../_static/vendor/fontawesome/6.5.1/js/all.min.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
|
||||
<script src="../../../../_static/documentation_options.js?v=51b770b3"></script>
|
||||
<script src="../../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
<script>DOCUMENTATION_OPTIONS.pagename = '_modules/categories/management/commands/import_categories';</script>
|
||||
<link rel="index" title="Index" href="../../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../../search.html" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<meta name="docsearch:language" content="en"/>
|
||||
</head>
|
||||
|
||||
|
||||
<body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode="">
|
||||
|
||||
|
||||
|
||||
<a id="pst-skip-link" class="skip-link" href="#main-content">Skip to main content</a>
|
||||
|
||||
<div id="pst-scroll-pixel-helper"></div>
|
||||
|
||||
<button type="button" class="btn rounded-pill" id="pst-back-to-top">
|
||||
<i class="fa-solid fa-arrow-up"></i>
|
||||
Back to top
|
||||
</button>
|
||||
|
||||
|
||||
<input type="checkbox"
|
||||
class="sidebar-toggle"
|
||||
name="__primary"
|
||||
id="__primary"/>
|
||||
<label class="overlay overlay-primary" for="__primary"></label>
|
||||
|
||||
<input type="checkbox"
|
||||
class="sidebar-toggle"
|
||||
name="__secondary"
|
||||
id="__secondary"/>
|
||||
<label class="overlay overlay-secondary" for="__secondary"></label>
|
||||
|
||||
<div class="search-button__wrapper">
|
||||
<div class="search-button__overlay"></div>
|
||||
<div class="search-button__search-container">
|
||||
<form class="bd-search d-flex align-items-center"
|
||||
action="../../../../search.html"
|
||||
method="get">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<input type="search"
|
||||
class="form-control"
|
||||
name="q"
|
||||
id="search-input"
|
||||
placeholder="Search the docs ..."
|
||||
aria-label="Search the docs ..."
|
||||
autocomplete="off"
|
||||
autocorrect="off"
|
||||
autocapitalize="off"
|
||||
spellcheck="false"/>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span>
|
||||
</form></div>
|
||||
</div>
|
||||
|
||||
<header class="bd-header navbar navbar-expand-lg bd-navbar">
|
||||
<div class="bd-header__inner bd-page-width">
|
||||
<label class="sidebar-toggle primary-toggle" for="__primary">
|
||||
<span class="fa-solid fa-bars"></span>
|
||||
</label>
|
||||
|
||||
|
||||
<div class="col-lg-3 navbar-header-items__start">
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
|
||||
|
||||
<a class="navbar-brand logo" href="../../../../index.html">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="title logo__title">Django Categories 2.0.0 documentation</p>
|
||||
|
||||
</a></div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col-lg-9 navbar-header-items">
|
||||
|
||||
<div class="me-auto navbar-header-items__center">
|
||||
|
||||
<div class="navbar-item">
|
||||
<nav class="navbar-nav">
|
||||
<ul class="bd-navbar-elements navbar-nav">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../../installation.html">
|
||||
Installation
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../../getting_started.html">
|
||||
Getting Started
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../../user_guide/index.html">
|
||||
User Guide
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../../reference/index.html">
|
||||
Reference
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../../api/index.html">
|
||||
API
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item dropdown">
|
||||
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links">
|
||||
More
|
||||
</button>
|
||||
<ul id="pst-nav-more-links" class="dropdown-menu">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link dropdown-item nav-internal" href="../../../../changelog.html">
|
||||
Changelog
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-header-items__end">
|
||||
|
||||
<div class="navbar-item navbar-persistent--container">
|
||||
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<span class="search-button__default-text">Search</span>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
|
||||
</button>
|
||||
`);
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
|
||||
</button>
|
||||
`);
|
||||
</script></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-persistent--mobile">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<span class="search-button__default-text">Search</span>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
|
||||
</button>
|
||||
`);
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</header>
|
||||
|
||||
|
||||
<div class="bd-container">
|
||||
<div class="bd-container__inner bd-page-width">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="bd-sidebar-primary bd-sidebar hide-on-wide">
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-header-items sidebar-primary__section">
|
||||
|
||||
|
||||
<div class="sidebar-header-items__center">
|
||||
|
||||
<div class="navbar-item">
|
||||
<nav class="navbar-nav">
|
||||
<ul class="bd-navbar-elements navbar-nav">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../../installation.html">
|
||||
Installation
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../../getting_started.html">
|
||||
Getting Started
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../../user_guide/index.html">
|
||||
User Guide
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../../reference/index.html">
|
||||
Reference
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../../../api/index.html">
|
||||
API
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item dropdown">
|
||||
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links-2">
|
||||
More
|
||||
</button>
|
||||
<ul id="pst-nav-more-links-2" class="dropdown-menu">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link dropdown-item nav-internal" href="../../../../changelog.html">
|
||||
Changelog
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-header-items__end">
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
|
||||
</button>
|
||||
`);
|
||||
</script></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="sidebar-primary-items__end sidebar-primary__section">
|
||||
</div>
|
||||
|
||||
<div id="rtd-footer-container"></div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<main id="main-content" class="bd-main">
|
||||
|
||||
|
||||
<div class="bd-content">
|
||||
<div class="bd-article-container">
|
||||
|
||||
<div class="bd-header-article">
|
||||
<div class="header-article-items header-article__inner">
|
||||
|
||||
<div class="header-article-items__start">
|
||||
|
||||
<div class="header-article-item">
|
||||
|
||||
|
||||
|
||||
<nav aria-label="Breadcrumb">
|
||||
<ul class="bd-breadcrumbs">
|
||||
|
||||
<li class="breadcrumb-item breadcrumb-home">
|
||||
<a href="../../../../index.html" class="nav-link" aria-label="Home">
|
||||
<i class="fa-solid fa-home"></i>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">Module code</a></li>
|
||||
|
||||
<li class="breadcrumb-item active" aria-current="page">categories.m...</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div id="searchbox"></div>
|
||||
<article class="bd-article">
|
||||
|
||||
<h1>Source code for categories.management.commands.import_categories</h1><div class="highlight"><pre>
|
||||
<span></span><span class="sd">"""Import category trees from a file."""</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">django.core.management.base</span> <span class="kn">import</span> <span class="n">BaseCommand</span><span class="p">,</span> <span class="n">CommandError</span>
|
||||
<span class="kn">from</span> <span class="nn">django.db</span> <span class="kn">import</span> <span class="n">transaction</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">categories.models</span> <span class="kn">import</span> <span class="n">Category</span>
|
||||
<span class="kn">from</span> <span class="nn">categories.settings</span> <span class="kn">import</span> <span class="n">SLUG_TRANSLITERATOR</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">...utils</span> <span class="kn">import</span> <span class="n">slugify</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="Command">
|
||||
<a class="viewcode-back" href="../../../../api/categories.management.commands.import_categories.Command.html#categories.management.commands.import_categories.Command">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">Command</span><span class="p">(</span><span class="n">BaseCommand</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Import category trees from a file."""</span>
|
||||
|
||||
<span class="n">help</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="s2">"Imports category tree(s) from a file. Sub categories must be indented by the same multiple of spaces or tabs."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">args</span> <span class="o">=</span> <span class="s2">"file_path [file_path ...]"</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_indent</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">string</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Look through the string and count the spaces.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">indent_amt</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">string</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="s2">"</span><span class="se">\t</span><span class="s2">"</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="s2">"</span><span class="se">\t</span><span class="s2">"</span>
|
||||
<span class="k">for</span> <span class="n">char</span> <span class="ow">in</span> <span class="n">string</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">char</span> <span class="o">==</span> <span class="s2">" "</span><span class="p">:</span>
|
||||
<span class="n">indent_amt</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="s2">" "</span> <span class="o">*</span> <span class="n">indent_amt</span>
|
||||
|
||||
<span class="nd">@transaction</span><span class="o">.</span><span class="n">atomic</span>
|
||||
<span class="k">def</span> <span class="nf">make_category</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">string</span><span class="p">,</span> <span class="n">parent</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">order</span><span class="o">=</span><span class="mi">1</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Make and save a category object from a string.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">cat</span> <span class="o">=</span> <span class="n">Category</span><span class="p">(</span>
|
||||
<span class="n">name</span><span class="o">=</span><span class="n">string</span><span class="o">.</span><span class="n">strip</span><span class="p">(),</span>
|
||||
<span class="n">slug</span><span class="o">=</span><span class="n">slugify</span><span class="p">(</span><span class="n">SLUG_TRANSLITERATOR</span><span class="p">(</span><span class="n">string</span><span class="o">.</span><span class="n">strip</span><span class="p">()))[:</span><span class="mi">49</span><span class="p">],</span>
|
||||
<span class="c1"># arent=parent,</span>
|
||||
<span class="n">order</span><span class="o">=</span><span class="n">order</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">cat</span><span class="o">.</span><span class="n">_tree_manager</span><span class="o">.</span><span class="n">insert_node</span><span class="p">(</span><span class="n">cat</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="s2">"last-child"</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">cat</span><span class="o">.</span><span class="n">save</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">parent</span><span class="p">:</span>
|
||||
<span class="n">parent</span><span class="o">.</span><span class="n">rght</span> <span class="o">=</span> <span class="n">cat</span><span class="o">.</span><span class="n">rght</span> <span class="o">+</span> <span class="mi">1</span>
|
||||
<span class="n">parent</span><span class="o">.</span><span class="n">save</span><span class="p">()</span>
|
||||
<span class="k">return</span> <span class="n">cat</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">parse_lines</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">lines</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Do the work of parsing each line.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">indent</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
<span class="n">level</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">lines</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">" "</span><span class="p">,</span> <span class="s2">"</span><span class="se">\t</span><span class="s2">"</span><span class="p">]:</span>
|
||||
<span class="k">raise</span> <span class="n">CommandError</span><span class="p">(</span><span class="s2">"The first line in the file cannot start with a space or tab."</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># This keeps track of the current parents at a given level</span>
|
||||
<span class="n">current_parents</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">:</span> <span class="kc">None</span><span class="p">}</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">lines</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">line</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="k">continue</span>
|
||||
<span class="k">if</span> <span class="n">line</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">" "</span><span class="p">,</span> <span class="s2">"</span><span class="se">\t</span><span class="s2">"</span><span class="p">]:</span>
|
||||
<span class="k">if</span> <span class="n">indent</span> <span class="o">==</span> <span class="s2">""</span><span class="p">:</span>
|
||||
<span class="n">indent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_indent</span><span class="p">(</span><span class="n">line</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">line</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">indent</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">CommandError</span><span class="p">(</span><span class="s2">"You can't mix spaces and tabs for indents"</span><span class="p">)</span>
|
||||
<span class="n">level</span> <span class="o">=</span> <span class="n">line</span><span class="o">.</span><span class="n">count</span><span class="p">(</span><span class="n">indent</span><span class="p">)</span>
|
||||
<span class="n">current_parents</span><span class="p">[</span><span class="n">level</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">make_category</span><span class="p">(</span><span class="n">line</span><span class="p">,</span> <span class="n">parent</span><span class="o">=</span><span class="n">current_parents</span><span class="p">[</span><span class="n">level</span> <span class="o">-</span> <span class="mi">1</span><span class="p">])</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># We are back to a zero level, so reset the whole thing</span>
|
||||
<span class="n">current_parents</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">make_category</span><span class="p">(</span><span class="n">line</span><span class="p">)}</span>
|
||||
<span class="n">current_parents</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">_tree_manager</span><span class="o">.</span><span class="n">rebuild</span><span class="p">()</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">handle</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">file_paths</span><span class="p">,</span> <span class="o">**</span><span class="n">options</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Handle the basic import.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="kn">import</span> <span class="nn">os</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">file_path</span> <span class="ow">in</span> <span class="n">file_paths</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isfile</span><span class="p">(</span><span class="n">file_path</span><span class="p">):</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"File </span><span class="si">%s</span><span class="s2"> not found."</span> <span class="o">%</span> <span class="n">file_path</span><span class="p">)</span>
|
||||
<span class="k">continue</span>
|
||||
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">file_path</span><span class="p">,</span> <span class="s2">"r"</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">readlines</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">parse_lines</span><span class="p">(</span><span class="n">data</span><span class="p">)</span></div>
|
||||
|
||||
</pre></div>
|
||||
|
||||
</article>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<footer class="prev-next-footer">
|
||||
|
||||
<div class="prev-next-area">
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="bd-sidebar-secondary bd-toc"></div>
|
||||
|
||||
|
||||
</div>
|
||||
<footer class="bd-footer-content">
|
||||
|
||||
</footer>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Scripts loaded after <body> so the DOM is not blocked -->
|
||||
<script src="../../../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
<script src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
|
||||
<footer class="bd-footer">
|
||||
<div class="bd-footer__inner bd-page-width">
|
||||
|
||||
<div class="footer-items__start">
|
||||
|
||||
<div class="footer-item">
|
||||
|
||||
<p class="copyright">
|
||||
|
||||
© Copyright 2010-2024, Corey Oordt.
|
||||
<br/>
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="footer-item">
|
||||
|
||||
<p class="sphinx-version">
|
||||
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.3.7.
|
||||
<br/>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="footer-items__end">
|
||||
|
||||
<div class="footer-item">
|
||||
<p class="theme-version">
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.15.2.
|
||||
</p></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
552
_modules/categories/migration.html
Normal file
552
_modules/categories/migration.html
Normal file
|
|
@ -0,0 +1,552 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
|
||||
<html lang="en" data-content_root="../../" >
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>categories.migration — Django Categories 2.0.0 documentation</title>
|
||||
|
||||
|
||||
|
||||
<script data-cfasync="false">
|
||||
document.documentElement.dataset.mode = localStorage.getItem("mode") || "";
|
||||
document.documentElement.dataset.theme = localStorage.getItem("theme") || "light";
|
||||
</script>
|
||||
|
||||
<!-- Loaded before other Sphinx assets -->
|
||||
<link href="../../_static/styles/theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link href="../../_static/styles/bootstrap.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link href="../../_static/styles/pydata-sphinx-theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
|
||||
|
||||
<link href="../../_static/vendor/fontawesome/6.5.1/css/all.min.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-solid-900.woff2" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-brands-400.woff2" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-regular-400.woff2" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/css/custom.css?v=ea07567a" />
|
||||
|
||||
<!-- Pre-loaded scripts that we'll load fully later -->
|
||||
<link rel="preload" as="script" href="../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae" />
|
||||
<link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae" />
|
||||
<script src="../../_static/vendor/fontawesome/6.5.1/js/all.min.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
|
||||
<script src="../../_static/documentation_options.js?v=51b770b3"></script>
|
||||
<script src="../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
<script>DOCUMENTATION_OPTIONS.pagename = '_modules/categories/migration';</script>
|
||||
<link rel="index" title="Index" href="../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../search.html" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<meta name="docsearch:language" content="en"/>
|
||||
</head>
|
||||
|
||||
|
||||
<body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode="">
|
||||
|
||||
|
||||
|
||||
<a id="pst-skip-link" class="skip-link" href="#main-content">Skip to main content</a>
|
||||
|
||||
<div id="pst-scroll-pixel-helper"></div>
|
||||
|
||||
<button type="button" class="btn rounded-pill" id="pst-back-to-top">
|
||||
<i class="fa-solid fa-arrow-up"></i>
|
||||
Back to top
|
||||
</button>
|
||||
|
||||
|
||||
<input type="checkbox"
|
||||
class="sidebar-toggle"
|
||||
name="__primary"
|
||||
id="__primary"/>
|
||||
<label class="overlay overlay-primary" for="__primary"></label>
|
||||
|
||||
<input type="checkbox"
|
||||
class="sidebar-toggle"
|
||||
name="__secondary"
|
||||
id="__secondary"/>
|
||||
<label class="overlay overlay-secondary" for="__secondary"></label>
|
||||
|
||||
<div class="search-button__wrapper">
|
||||
<div class="search-button__overlay"></div>
|
||||
<div class="search-button__search-container">
|
||||
<form class="bd-search d-flex align-items-center"
|
||||
action="../../search.html"
|
||||
method="get">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<input type="search"
|
||||
class="form-control"
|
||||
name="q"
|
||||
id="search-input"
|
||||
placeholder="Search the docs ..."
|
||||
aria-label="Search the docs ..."
|
||||
autocomplete="off"
|
||||
autocorrect="off"
|
||||
autocapitalize="off"
|
||||
spellcheck="false"/>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span>
|
||||
</form></div>
|
||||
</div>
|
||||
|
||||
<header class="bd-header navbar navbar-expand-lg bd-navbar">
|
||||
<div class="bd-header__inner bd-page-width">
|
||||
<label class="sidebar-toggle primary-toggle" for="__primary">
|
||||
<span class="fa-solid fa-bars"></span>
|
||||
</label>
|
||||
|
||||
|
||||
<div class="col-lg-3 navbar-header-items__start">
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
|
||||
|
||||
<a class="navbar-brand logo" href="../../index.html">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="title logo__title">Django Categories 2.0.0 documentation</p>
|
||||
|
||||
</a></div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col-lg-9 navbar-header-items">
|
||||
|
||||
<div class="me-auto navbar-header-items__center">
|
||||
|
||||
<div class="navbar-item">
|
||||
<nav class="navbar-nav">
|
||||
<ul class="bd-navbar-elements navbar-nav">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../installation.html">
|
||||
Installation
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../getting_started.html">
|
||||
Getting Started
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../user_guide/index.html">
|
||||
User Guide
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../reference/index.html">
|
||||
Reference
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../api/index.html">
|
||||
API
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item dropdown">
|
||||
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links">
|
||||
More
|
||||
</button>
|
||||
<ul id="pst-nav-more-links" class="dropdown-menu">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link dropdown-item nav-internal" href="../../changelog.html">
|
||||
Changelog
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-header-items__end">
|
||||
|
||||
<div class="navbar-item navbar-persistent--container">
|
||||
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<span class="search-button__default-text">Search</span>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
|
||||
</button>
|
||||
`);
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
|
||||
</button>
|
||||
`);
|
||||
</script></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-persistent--mobile">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<span class="search-button__default-text">Search</span>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
|
||||
</button>
|
||||
`);
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</header>
|
||||
|
||||
|
||||
<div class="bd-container">
|
||||
<div class="bd-container__inner bd-page-width">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="bd-sidebar-primary bd-sidebar hide-on-wide">
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-header-items sidebar-primary__section">
|
||||
|
||||
|
||||
<div class="sidebar-header-items__center">
|
||||
|
||||
<div class="navbar-item">
|
||||
<nav class="navbar-nav">
|
||||
<ul class="bd-navbar-elements navbar-nav">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../installation.html">
|
||||
Installation
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../getting_started.html">
|
||||
Getting Started
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../user_guide/index.html">
|
||||
User Guide
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../reference/index.html">
|
||||
Reference
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../api/index.html">
|
||||
API
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item dropdown">
|
||||
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links-2">
|
||||
More
|
||||
</button>
|
||||
<ul id="pst-nav-more-links-2" class="dropdown-menu">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link dropdown-item nav-internal" href="../../changelog.html">
|
||||
Changelog
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-header-items__end">
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
|
||||
</button>
|
||||
`);
|
||||
</script></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="sidebar-primary-items__end sidebar-primary__section">
|
||||
</div>
|
||||
|
||||
<div id="rtd-footer-container"></div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<main id="main-content" class="bd-main">
|
||||
|
||||
|
||||
<div class="bd-content">
|
||||
<div class="bd-article-container">
|
||||
|
||||
<div class="bd-header-article">
|
||||
<div class="header-article-items header-article__inner">
|
||||
|
||||
<div class="header-article-items__start">
|
||||
|
||||
<div class="header-article-item">
|
||||
|
||||
|
||||
|
||||
<nav aria-label="Breadcrumb">
|
||||
<ul class="bd-breadcrumbs">
|
||||
|
||||
<li class="breadcrumb-item breadcrumb-home">
|
||||
<a href="../../index.html" class="nav-link" aria-label="Home">
|
||||
<i class="fa-solid fa-home"></i>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="breadcrumb-item"><a href="../index.html" class="nav-link">Module code</a></li>
|
||||
|
||||
<li class="breadcrumb-item active" aria-current="page">categories.migration</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div id="searchbox"></div>
|
||||
<article class="bd-article">
|
||||
|
||||
<h1>Source code for categories.migration</h1><div class="highlight"><pre>
|
||||
<span></span><span class="sd">"""Adds and removes category relations on the database."""</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">django.apps</span> <span class="kn">import</span> <span class="n">apps</span>
|
||||
<span class="kn">from</span> <span class="nn">django.db</span> <span class="kn">import</span> <span class="n">DatabaseError</span><span class="p">,</span> <span class="n">connection</span><span class="p">,</span> <span class="n">transaction</span>
|
||||
<span class="kn">from</span> <span class="nn">django.db.utils</span> <span class="kn">import</span> <span class="n">OperationalError</span><span class="p">,</span> <span class="n">ProgrammingError</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="table_exists">
|
||||
<a class="viewcode-back" href="../../api/categories.migration.table_exists.html#categories.migration.table_exists">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">table_exists</span><span class="p">(</span><span class="n">table_name</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Check if a table exists in the database.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">pass</span></div>
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="field_exists">
|
||||
<a class="viewcode-back" href="../../api/categories.migration.field_exists.html#categories.migration.field_exists">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">field_exists</span><span class="p">(</span><span class="n">app_name</span><span class="p">,</span> <span class="n">model_name</span><span class="p">,</span> <span class="n">field_name</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Does the FK or M2M table exist in the database already?</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">model</span> <span class="o">=</span> <span class="n">apps</span><span class="o">.</span><span class="n">get_model</span><span class="p">(</span><span class="n">app_name</span><span class="p">,</span> <span class="n">model_name</span><span class="p">)</span>
|
||||
<span class="n">table_name</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">_meta</span><span class="o">.</span><span class="n">db_table</span>
|
||||
<span class="n">cursor</span> <span class="o">=</span> <span class="n">connection</span><span class="o">.</span><span class="n">cursor</span><span class="p">()</span>
|
||||
<span class="n">field_info</span> <span class="o">=</span> <span class="n">connection</span><span class="o">.</span><span class="n">introspection</span><span class="o">.</span><span class="n">get_table_description</span><span class="p">(</span><span class="n">cursor</span><span class="p">,</span> <span class="n">table_name</span><span class="p">)</span>
|
||||
<span class="n">field_names</span> <span class="o">=</span> <span class="p">[</span><span class="n">f</span><span class="o">.</span><span class="n">name</span> <span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="n">field_info</span><span class="p">]</span>
|
||||
|
||||
<span class="c1"># Return True if the many to many table exists</span>
|
||||
<span class="n">field</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">_meta</span><span class="o">.</span><span class="n">get_field</span><span class="p">(</span><span class="n">field_name</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="s2">"m2m_db_table"</span><span class="p">):</span>
|
||||
<span class="n">m2m_table_name</span> <span class="o">=</span> <span class="n">field</span><span class="o">.</span><span class="n">m2m_db_table</span><span class="p">()</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">m2m_field_info</span> <span class="o">=</span> <span class="n">connection</span><span class="o">.</span><span class="n">introspection</span><span class="o">.</span><span class="n">get_table_description</span><span class="p">(</span><span class="n">cursor</span><span class="p">,</span> <span class="n">m2m_table_name</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="n">DatabaseError</span><span class="p">:</span> <span class="c1"># Django >= 4.1 throws DatabaseError</span>
|
||||
<span class="n">m2m_field_info</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">if</span> <span class="n">m2m_field_info</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="kc">True</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">field_name</span> <span class="ow">in</span> <span class="n">field_names</span></div>
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="drop_field">
|
||||
<a class="viewcode-back" href="../../api/categories.migration.drop_field.html#categories.migration.drop_field">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">drop_field</span><span class="p">(</span><span class="n">app_name</span><span class="p">,</span> <span class="n">model_name</span><span class="p">,</span> <span class="n">field_name</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Drop the given field from the app's model.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">app_config</span> <span class="o">=</span> <span class="n">apps</span><span class="o">.</span><span class="n">get_app_config</span><span class="p">(</span><span class="n">app_name</span><span class="p">)</span>
|
||||
<span class="n">model</span> <span class="o">=</span> <span class="n">app_config</span><span class="o">.</span><span class="n">get_model</span><span class="p">(</span><span class="n">model_name</span><span class="p">)</span>
|
||||
<span class="n">field</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">_meta</span><span class="o">.</span><span class="n">get_field</span><span class="p">(</span><span class="n">field_name</span><span class="p">)</span>
|
||||
<span class="k">with</span> <span class="n">connection</span><span class="o">.</span><span class="n">schema_editor</span><span class="p">()</span> <span class="k">as</span> <span class="n">schema_editor</span><span class="p">:</span>
|
||||
<span class="n">schema_editor</span><span class="o">.</span><span class="n">remove_field</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">field</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="migrate_app">
|
||||
<a class="viewcode-back" href="../../api/categories.migration.migrate_app.html#categories.migration.migrate_app">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">migrate_app</span><span class="p">(</span><span class="n">sender</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Migrate all models of this app registered.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="kn">from</span> <span class="nn">.registration</span> <span class="kn">import</span> <span class="n">registry</span>
|
||||
|
||||
<span class="k">if</span> <span class="s2">"app_config"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
<span class="n">app_config</span> <span class="o">=</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"app_config"</span><span class="p">]</span>
|
||||
|
||||
<span class="n">app_name</span> <span class="o">=</span> <span class="n">app_config</span><span class="o">.</span><span class="n">label</span>
|
||||
|
||||
<span class="n">fields</span> <span class="o">=</span> <span class="p">[</span><span class="n">fld</span> <span class="k">for</span> <span class="n">fld</span> <span class="ow">in</span> <span class="nb">list</span><span class="p">(</span><span class="n">registry</span><span class="o">.</span><span class="n">_field_registry</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span> <span class="k">if</span> <span class="n">fld</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="n">app_name</span><span class="p">)]</span>
|
||||
|
||||
<span class="n">sid</span> <span class="o">=</span> <span class="n">transaction</span><span class="o">.</span><span class="n">savepoint</span><span class="p">()</span>
|
||||
<span class="k">for</span> <span class="n">fld</span> <span class="ow">in</span> <span class="n">fields</span><span class="p">:</span>
|
||||
<span class="n">model_name</span><span class="p">,</span> <span class="n">field_name</span> <span class="o">=</span> <span class="n">fld</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"."</span><span class="p">)[</span><span class="mi">1</span><span class="p">:]</span>
|
||||
<span class="k">if</span> <span class="n">field_exists</span><span class="p">(</span><span class="n">app_name</span><span class="p">,</span> <span class="n">model_name</span><span class="p">,</span> <span class="n">field_name</span><span class="p">):</span>
|
||||
<span class="k">continue</span>
|
||||
<span class="n">model</span> <span class="o">=</span> <span class="n">app_config</span><span class="o">.</span><span class="n">get_model</span><span class="p">(</span><span class="n">model_name</span><span class="p">)</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">with</span> <span class="n">connection</span><span class="o">.</span><span class="n">schema_editor</span><span class="p">()</span> <span class="k">as</span> <span class="n">schema_editor</span><span class="p">:</span>
|
||||
<span class="n">schema_editor</span><span class="o">.</span><span class="n">add_field</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">registry</span><span class="o">.</span><span class="n">_field_registry</span><span class="p">[</span><span class="n">fld</span><span class="p">])</span>
|
||||
<span class="k">if</span> <span class="n">sid</span><span class="p">:</span>
|
||||
<span class="n">transaction</span><span class="o">.</span><span class="n">savepoint_commit</span><span class="p">(</span><span class="n">sid</span><span class="p">)</span>
|
||||
<span class="c1"># Django 4.1 with sqlite3 has for some reason started throwing OperationalError</span>
|
||||
<span class="c1"># instead of ProgrammingError, so we need to catch both.</span>
|
||||
<span class="k">except</span> <span class="p">(</span><span class="n">ProgrammingError</span><span class="p">,</span> <span class="n">OperationalError</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">sid</span><span class="p">:</span>
|
||||
<span class="n">transaction</span><span class="o">.</span><span class="n">savepoint_rollback</span><span class="p">(</span><span class="n">sid</span><span class="p">)</span>
|
||||
<span class="k">continue</span></div>
|
||||
|
||||
</pre></div>
|
||||
|
||||
</article>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<footer class="prev-next-footer">
|
||||
|
||||
<div class="prev-next-area">
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="bd-sidebar-secondary bd-toc"></div>
|
||||
|
||||
|
||||
</div>
|
||||
<footer class="bd-footer-content">
|
||||
|
||||
</footer>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Scripts loaded after <body> so the DOM is not blocked -->
|
||||
<script src="../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
<script src="../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
|
||||
<footer class="bd-footer">
|
||||
<div class="bd-footer__inner bd-page-width">
|
||||
|
||||
<div class="footer-items__start">
|
||||
|
||||
<div class="footer-item">
|
||||
|
||||
<p class="copyright">
|
||||
|
||||
© Copyright 2010-2024, Corey Oordt.
|
||||
<br/>
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="footer-item">
|
||||
|
||||
<p class="sphinx-version">
|
||||
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.3.7.
|
||||
<br/>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="footer-items__end">
|
||||
|
||||
<div class="footer-item">
|
||||
<p class="theme-version">
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.15.2.
|
||||
</p></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
632
_modules/categories/models.html
Normal file
632
_modules/categories/models.html
Normal file
|
|
@ -0,0 +1,632 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
|
||||
<html lang="en" data-content_root="../../" >
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>categories.models — Django Categories 2.0.0 documentation</title>
|
||||
|
||||
|
||||
|
||||
<script data-cfasync="false">
|
||||
document.documentElement.dataset.mode = localStorage.getItem("mode") || "";
|
||||
document.documentElement.dataset.theme = localStorage.getItem("theme") || "light";
|
||||
</script>
|
||||
|
||||
<!-- Loaded before other Sphinx assets -->
|
||||
<link href="../../_static/styles/theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link href="../../_static/styles/bootstrap.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link href="../../_static/styles/pydata-sphinx-theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
|
||||
|
||||
<link href="../../_static/vendor/fontawesome/6.5.1/css/all.min.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-solid-900.woff2" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-brands-400.woff2" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-regular-400.woff2" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/css/custom.css?v=ea07567a" />
|
||||
|
||||
<!-- Pre-loaded scripts that we'll load fully later -->
|
||||
<link rel="preload" as="script" href="../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae" />
|
||||
<link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae" />
|
||||
<script src="../../_static/vendor/fontawesome/6.5.1/js/all.min.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
|
||||
<script src="../../_static/documentation_options.js?v=51b770b3"></script>
|
||||
<script src="../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
<script>DOCUMENTATION_OPTIONS.pagename = '_modules/categories/models';</script>
|
||||
<link rel="index" title="Index" href="../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../search.html" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<meta name="docsearch:language" content="en"/>
|
||||
</head>
|
||||
|
||||
|
||||
<body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode="">
|
||||
|
||||
|
||||
|
||||
<a id="pst-skip-link" class="skip-link" href="#main-content">Skip to main content</a>
|
||||
|
||||
<div id="pst-scroll-pixel-helper"></div>
|
||||
|
||||
<button type="button" class="btn rounded-pill" id="pst-back-to-top">
|
||||
<i class="fa-solid fa-arrow-up"></i>
|
||||
Back to top
|
||||
</button>
|
||||
|
||||
|
||||
<input type="checkbox"
|
||||
class="sidebar-toggle"
|
||||
name="__primary"
|
||||
id="__primary"/>
|
||||
<label class="overlay overlay-primary" for="__primary"></label>
|
||||
|
||||
<input type="checkbox"
|
||||
class="sidebar-toggle"
|
||||
name="__secondary"
|
||||
id="__secondary"/>
|
||||
<label class="overlay overlay-secondary" for="__secondary"></label>
|
||||
|
||||
<div class="search-button__wrapper">
|
||||
<div class="search-button__overlay"></div>
|
||||
<div class="search-button__search-container">
|
||||
<form class="bd-search d-flex align-items-center"
|
||||
action="../../search.html"
|
||||
method="get">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<input type="search"
|
||||
class="form-control"
|
||||
name="q"
|
||||
id="search-input"
|
||||
placeholder="Search the docs ..."
|
||||
aria-label="Search the docs ..."
|
||||
autocomplete="off"
|
||||
autocorrect="off"
|
||||
autocapitalize="off"
|
||||
spellcheck="false"/>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span>
|
||||
</form></div>
|
||||
</div>
|
||||
|
||||
<header class="bd-header navbar navbar-expand-lg bd-navbar">
|
||||
<div class="bd-header__inner bd-page-width">
|
||||
<label class="sidebar-toggle primary-toggle" for="__primary">
|
||||
<span class="fa-solid fa-bars"></span>
|
||||
</label>
|
||||
|
||||
|
||||
<div class="col-lg-3 navbar-header-items__start">
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
|
||||
|
||||
<a class="navbar-brand logo" href="../../index.html">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="title logo__title">Django Categories 2.0.0 documentation</p>
|
||||
|
||||
</a></div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col-lg-9 navbar-header-items">
|
||||
|
||||
<div class="me-auto navbar-header-items__center">
|
||||
|
||||
<div class="navbar-item">
|
||||
<nav class="navbar-nav">
|
||||
<ul class="bd-navbar-elements navbar-nav">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../installation.html">
|
||||
Installation
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../getting_started.html">
|
||||
Getting Started
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../user_guide/index.html">
|
||||
User Guide
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../reference/index.html">
|
||||
Reference
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../api/index.html">
|
||||
API
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item dropdown">
|
||||
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links">
|
||||
More
|
||||
</button>
|
||||
<ul id="pst-nav-more-links" class="dropdown-menu">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link dropdown-item nav-internal" href="../../changelog.html">
|
||||
Changelog
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-header-items__end">
|
||||
|
||||
<div class="navbar-item navbar-persistent--container">
|
||||
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<span class="search-button__default-text">Search</span>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
|
||||
</button>
|
||||
`);
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
|
||||
</button>
|
||||
`);
|
||||
</script></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-persistent--mobile">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<span class="search-button__default-text">Search</span>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
|
||||
</button>
|
||||
`);
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</header>
|
||||
|
||||
|
||||
<div class="bd-container">
|
||||
<div class="bd-container__inner bd-page-width">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="bd-sidebar-primary bd-sidebar hide-on-wide">
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-header-items sidebar-primary__section">
|
||||
|
||||
|
||||
<div class="sidebar-header-items__center">
|
||||
|
||||
<div class="navbar-item">
|
||||
<nav class="navbar-nav">
|
||||
<ul class="bd-navbar-elements navbar-nav">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../installation.html">
|
||||
Installation
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../getting_started.html">
|
||||
Getting Started
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../user_guide/index.html">
|
||||
User Guide
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../reference/index.html">
|
||||
Reference
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../api/index.html">
|
||||
API
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item dropdown">
|
||||
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links-2">
|
||||
More
|
||||
</button>
|
||||
<ul id="pst-nav-more-links-2" class="dropdown-menu">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link dropdown-item nav-internal" href="../../changelog.html">
|
||||
Changelog
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-header-items__end">
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
|
||||
</button>
|
||||
`);
|
||||
</script></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="sidebar-primary-items__end sidebar-primary__section">
|
||||
</div>
|
||||
|
||||
<div id="rtd-footer-container"></div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<main id="main-content" class="bd-main">
|
||||
|
||||
|
||||
<div class="bd-content">
|
||||
<div class="bd-article-container">
|
||||
|
||||
<div class="bd-header-article">
|
||||
<div class="header-article-items header-article__inner">
|
||||
|
||||
<div class="header-article-items__start">
|
||||
|
||||
<div class="header-article-item">
|
||||
|
||||
|
||||
|
||||
<nav aria-label="Breadcrumb">
|
||||
<ul class="bd-breadcrumbs">
|
||||
|
||||
<li class="breadcrumb-item breadcrumb-home">
|
||||
<a href="../../index.html" class="nav-link" aria-label="Home">
|
||||
<i class="fa-solid fa-home"></i>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="breadcrumb-item"><a href="../index.html" class="nav-link">Module code</a></li>
|
||||
|
||||
<li class="breadcrumb-item active" aria-current="page">categories.models</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div id="searchbox"></div>
|
||||
<article class="bd-article">
|
||||
|
||||
<h1>Source code for categories.models</h1><div class="highlight"><pre>
|
||||
<span></span><span class="sd">"""Category models."""</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">functools</span> <span class="kn">import</span> <span class="n">reduce</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">django.contrib.contenttypes.fields</span> <span class="kn">import</span> <span class="n">GenericForeignKey</span>
|
||||
<span class="kn">from</span> <span class="nn">django.contrib.contenttypes.models</span> <span class="kn">import</span> <span class="n">ContentType</span>
|
||||
<span class="kn">from</span> <span class="nn">django.core.files.images</span> <span class="kn">import</span> <span class="n">get_image_dimensions</span>
|
||||
<span class="kn">from</span> <span class="nn">django.db</span> <span class="kn">import</span> <span class="n">models</span>
|
||||
<span class="kn">from</span> <span class="nn">django.urls</span> <span class="kn">import</span> <span class="n">reverse</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.encoding</span> <span class="kn">import</span> <span class="n">force_str</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.translation</span> <span class="kn">import</span> <span class="n">gettext_lazy</span> <span class="k">as</span> <span class="n">_</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">.base</span> <span class="kn">import</span> <span class="n">CategoryBase</span>
|
||||
<span class="kn">from</span> <span class="nn">.settings</span> <span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="n">RELATION_MODELS</span><span class="p">,</span>
|
||||
<span class="n">RELATIONS</span><span class="p">,</span>
|
||||
<span class="n">THUMBNAIL_STORAGE_ALIAS</span><span class="p">,</span>
|
||||
<span class="n">THUMBNAIL_UPLOAD_PATH</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="c1"># Determine storage method based on Django version</span>
|
||||
<span class="k">try</span><span class="p">:</span> <span class="c1"># Django 4.2+</span>
|
||||
<span class="kn">from</span> <span class="nn">django.core.files.storage</span> <span class="kn">import</span> <span class="n">storages</span>
|
||||
|
||||
<span class="n">STORAGE</span> <span class="o">=</span> <span class="n">storages</span><span class="p">[</span><span class="n">THUMBNAIL_STORAGE_ALIAS</span><span class="p">]</span>
|
||||
<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">django.core.files.storage</span> <span class="kn">import</span> <span class="n">get_storage_class</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">.settings</span> <span class="kn">import</span> <span class="n">THUMBNAIL_STORAGE</span>
|
||||
|
||||
<span class="n">STORAGE</span> <span class="o">=</span> <span class="n">get_storage_class</span><span class="p">(</span><span class="n">THUMBNAIL_STORAGE</span><span class="p">)()</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="Category">
|
||||
<a class="viewcode-back" href="../../api/categories.models.Category.html#categories.models.Category">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">Category</span><span class="p">(</span><span class="n">CategoryBase</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""A basic category model."""</span>
|
||||
|
||||
<span class="n">thumbnail</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">FileField</span><span class="p">(</span>
|
||||
<span class="n">upload_to</span><span class="o">=</span><span class="n">THUMBNAIL_UPLOAD_PATH</span><span class="p">,</span>
|
||||
<span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
<span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
<span class="n">storage</span><span class="o">=</span><span class="n">STORAGE</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">thumbnail_width</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">IntegerField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">thumbnail_height</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">IntegerField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">order</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">IntegerField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
|
||||
<span class="n">alternate_title</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span>
|
||||
<span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="n">max_length</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span> <span class="n">help_text</span><span class="o">=</span><span class="s2">"An alternative title to use on pages with this category."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">alternate_url</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span>
|
||||
<span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
<span class="n">max_length</span><span class="o">=</span><span class="mi">200</span><span class="p">,</span>
|
||||
<span class="n">help_text</span><span class="o">=</span><span class="s2">"An alternative URL to use instead of the one derived from "</span> <span class="s2">"the category hierarchy."</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">description</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">meta_keywords</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span>
|
||||
<span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="n">max_length</span><span class="o">=</span><span class="mi">255</span><span class="p">,</span> <span class="n">help_text</span><span class="o">=</span><span class="s2">"Comma-separated keywords for search engines."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">meta_extra</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">(</span>
|
||||
<span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="n">help_text</span><span class="o">=</span><span class="s2">"(Advanced) Any additional HTML to be placed verbatim "</span> <span class="s2">"in the &lt;head&gt;"</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">short_title</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Return the name."""</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_absolute_url</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Return a path."""</span>
|
||||
<span class="kn">from</span> <span class="nn">django.urls</span> <span class="kn">import</span> <span class="n">NoReverseMatch</span>
|
||||
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">alternate_url</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">alternate_url</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">prefix</span> <span class="o">=</span> <span class="n">reverse</span><span class="p">(</span><span class="s2">"categories_tree_list"</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="n">NoReverseMatch</span><span class="p">:</span>
|
||||
<span class="n">prefix</span> <span class="o">=</span> <span class="s2">"/"</span>
|
||||
<span class="n">ancestors</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">get_ancestors</span><span class="p">())</span> <span class="o">+</span> <span class="p">[</span>
|
||||
<span class="bp">self</span><span class="p">,</span>
|
||||
<span class="p">]</span>
|
||||
<span class="k">return</span> <span class="n">prefix</span> <span class="o">+</span> <span class="s2">"/"</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="n">force_str</span><span class="p">(</span><span class="n">i</span><span class="o">.</span><span class="n">slug</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">ancestors</span><span class="p">])</span> <span class="o">+</span> <span class="s2">"/"</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">RELATION_MODELS</span><span class="p">:</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_related_content_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">content_type</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Get all related items of the specified content type.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">categoryrelation_set</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">content_type__name</span><span class="o">=</span><span class="n">content_type</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_relation_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">relation_type</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Get all relations of the specified relation type.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">categoryrelation_set</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">relation_type</span><span class="o">=</span><span class="n">relation_type</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">save</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Save the category."""</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">thumbnail</span><span class="p">:</span>
|
||||
<span class="n">width</span><span class="p">,</span> <span class="n">height</span> <span class="o">=</span> <span class="n">get_image_dimensions</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">thumbnail</span><span class="o">.</span><span class="n">file</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">width</span><span class="p">,</span> <span class="n">height</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">thumbnail_width</span> <span class="o">=</span> <span class="n">width</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">thumbnail_height</span> <span class="o">=</span> <span class="n">height</span>
|
||||
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">Category</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">Meta</span><span class="p">(</span><span class="n">CategoryBase</span><span class="o">.</span><span class="n">Meta</span><span class="p">):</span>
|
||||
<span class="n">verbose_name</span> <span class="o">=</span> <span class="n">_</span><span class="p">(</span><span class="s2">"category"</span><span class="p">)</span>
|
||||
<span class="n">verbose_name_plural</span> <span class="o">=</span> <span class="n">_</span><span class="p">(</span><span class="s2">"categories"</span><span class="p">)</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">MPTTMeta</span><span class="p">:</span>
|
||||
<span class="n">order_insertion_by</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"order"</span><span class="p">,</span> <span class="s2">"name"</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
|
||||
<span class="k">if</span> <span class="n">RELATIONS</span><span class="p">:</span>
|
||||
<span class="n">CATEGORY_RELATION_LIMITS</span> <span class="o">=</span> <span class="n">reduce</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="n">x</span> <span class="o">|</span> <span class="n">y</span><span class="p">,</span> <span class="n">RELATIONS</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">CATEGORY_RELATION_LIMITS</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="CategoryRelationManager">
|
||||
<a class="viewcode-back" href="../../api/categories.models.CategoryRelationManager.html#categories.models.CategoryRelationManager">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">CategoryRelationManager</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Manager</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Custom access functions for category relations."""</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_content_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">content_type</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Get all the items of the given content type related to this item.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">qs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_queryset</span><span class="p">()</span>
|
||||
<span class="k">return</span> <span class="n">qs</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">content_type__name</span><span class="o">=</span><span class="n">content_type</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_relation_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">relation_type</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Get all the items of the given relationship type related to this item.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">qs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_queryset</span><span class="p">()</span>
|
||||
<span class="k">return</span> <span class="n">qs</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">relation_type</span><span class="o">=</span><span class="n">relation_type</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="CategoryRelation">
|
||||
<a class="viewcode-back" href="../../api/categories.models.CategoryRelation.html#categories.models.CategoryRelation">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">CategoryRelation</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Related category item."""</span>
|
||||
|
||||
<span class="n">category</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">Category</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="n">_</span><span class="p">(</span><span class="s2">"category"</span><span class="p">),</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">)</span>
|
||||
<span class="n">content_type</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span>
|
||||
<span class="n">ContentType</span><span class="p">,</span>
|
||||
<span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span>
|
||||
<span class="n">limit_choices_to</span><span class="o">=</span><span class="n">CATEGORY_RELATION_LIMITS</span><span class="p">,</span>
|
||||
<span class="n">verbose_name</span><span class="o">=</span><span class="n">_</span><span class="p">(</span><span class="s2">"content type"</span><span class="p">),</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">object_id</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">PositiveIntegerField</span><span class="p">(</span><span class="n">verbose_name</span><span class="o">=</span><span class="n">_</span><span class="p">(</span><span class="s2">"object id"</span><span class="p">))</span>
|
||||
<span class="n">content_object</span> <span class="o">=</span> <span class="n">GenericForeignKey</span><span class="p">(</span><span class="s2">"content_type"</span><span class="p">,</span> <span class="s2">"object_id"</span><span class="p">)</span>
|
||||
<span class="n">relation_type</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span>
|
||||
<span class="n">verbose_name</span><span class="o">=</span><span class="n">_</span><span class="p">(</span><span class="s2">"relation type"</span><span class="p">),</span>
|
||||
<span class="n">max_length</span><span class="o">=</span><span class="mi">200</span><span class="p">,</span>
|
||||
<span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
<span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
<span class="n">help_text</span><span class="o">=</span><span class="n">_</span><span class="p">(</span><span class="s2">"A generic text field to tag a relation, like 'leadphoto'."</span><span class="p">),</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">objects</span> <span class="o">=</span> <span class="n">CategoryRelationManager</span><span class="p">()</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__unicode__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="s2">"CategoryRelation"</span></div>
|
||||
|
||||
</pre></div>
|
||||
|
||||
</article>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<footer class="prev-next-footer">
|
||||
|
||||
<div class="prev-next-area">
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="bd-sidebar-secondary bd-toc"></div>
|
||||
|
||||
|
||||
</div>
|
||||
<footer class="bd-footer-content">
|
||||
|
||||
</footer>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Scripts loaded after <body> so the DOM is not blocked -->
|
||||
<script src="../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
<script src="../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
|
||||
<footer class="bd-footer">
|
||||
<div class="bd-footer__inner bd-page-width">
|
||||
|
||||
<div class="footer-items__start">
|
||||
|
||||
<div class="footer-item">
|
||||
|
||||
<p class="copyright">
|
||||
|
||||
© Copyright 2010-2024, Corey Oordt.
|
||||
<br/>
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="footer-item">
|
||||
|
||||
<p class="sphinx-version">
|
||||
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.3.7.
|
||||
<br/>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="footer-items__end">
|
||||
|
||||
<div class="footer-item">
|
||||
<p class="theme-version">
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.15.2.
|
||||
</p></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
640
_modules/categories/registration.html
Normal file
640
_modules/categories/registration.html
Normal file
|
|
@ -0,0 +1,640 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
|
||||
<html lang="en" data-content_root="../../" >
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>categories.registration — Django Categories 2.0.0 documentation</title>
|
||||
|
||||
|
||||
|
||||
<script data-cfasync="false">
|
||||
document.documentElement.dataset.mode = localStorage.getItem("mode") || "";
|
||||
document.documentElement.dataset.theme = localStorage.getItem("theme") || "light";
|
||||
</script>
|
||||
|
||||
<!-- Loaded before other Sphinx assets -->
|
||||
<link href="../../_static/styles/theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link href="../../_static/styles/bootstrap.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link href="../../_static/styles/pydata-sphinx-theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
|
||||
|
||||
<link href="../../_static/vendor/fontawesome/6.5.1/css/all.min.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-solid-900.woff2" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-brands-400.woff2" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-regular-400.woff2" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/css/custom.css?v=ea07567a" />
|
||||
|
||||
<!-- Pre-loaded scripts that we'll load fully later -->
|
||||
<link rel="preload" as="script" href="../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae" />
|
||||
<link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae" />
|
||||
<script src="../../_static/vendor/fontawesome/6.5.1/js/all.min.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
|
||||
<script src="../../_static/documentation_options.js?v=51b770b3"></script>
|
||||
<script src="../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
<script>DOCUMENTATION_OPTIONS.pagename = '_modules/categories/registration';</script>
|
||||
<link rel="index" title="Index" href="../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../search.html" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<meta name="docsearch:language" content="en"/>
|
||||
</head>
|
||||
|
||||
|
||||
<body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode="">
|
||||
|
||||
|
||||
|
||||
<a id="pst-skip-link" class="skip-link" href="#main-content">Skip to main content</a>
|
||||
|
||||
<div id="pst-scroll-pixel-helper"></div>
|
||||
|
||||
<button type="button" class="btn rounded-pill" id="pst-back-to-top">
|
||||
<i class="fa-solid fa-arrow-up"></i>
|
||||
Back to top
|
||||
</button>
|
||||
|
||||
|
||||
<input type="checkbox"
|
||||
class="sidebar-toggle"
|
||||
name="__primary"
|
||||
id="__primary"/>
|
||||
<label class="overlay overlay-primary" for="__primary"></label>
|
||||
|
||||
<input type="checkbox"
|
||||
class="sidebar-toggle"
|
||||
name="__secondary"
|
||||
id="__secondary"/>
|
||||
<label class="overlay overlay-secondary" for="__secondary"></label>
|
||||
|
||||
<div class="search-button__wrapper">
|
||||
<div class="search-button__overlay"></div>
|
||||
<div class="search-button__search-container">
|
||||
<form class="bd-search d-flex align-items-center"
|
||||
action="../../search.html"
|
||||
method="get">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<input type="search"
|
||||
class="form-control"
|
||||
name="q"
|
||||
id="search-input"
|
||||
placeholder="Search the docs ..."
|
||||
aria-label="Search the docs ..."
|
||||
autocomplete="off"
|
||||
autocorrect="off"
|
||||
autocapitalize="off"
|
||||
spellcheck="false"/>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span>
|
||||
</form></div>
|
||||
</div>
|
||||
|
||||
<header class="bd-header navbar navbar-expand-lg bd-navbar">
|
||||
<div class="bd-header__inner bd-page-width">
|
||||
<label class="sidebar-toggle primary-toggle" for="__primary">
|
||||
<span class="fa-solid fa-bars"></span>
|
||||
</label>
|
||||
|
||||
|
||||
<div class="col-lg-3 navbar-header-items__start">
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
|
||||
|
||||
<a class="navbar-brand logo" href="../../index.html">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="title logo__title">Django Categories 2.0.0 documentation</p>
|
||||
|
||||
</a></div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col-lg-9 navbar-header-items">
|
||||
|
||||
<div class="me-auto navbar-header-items__center">
|
||||
|
||||
<div class="navbar-item">
|
||||
<nav class="navbar-nav">
|
||||
<ul class="bd-navbar-elements navbar-nav">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../installation.html">
|
||||
Installation
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../getting_started.html">
|
||||
Getting Started
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../user_guide/index.html">
|
||||
User Guide
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../reference/index.html">
|
||||
Reference
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../api/index.html">
|
||||
API
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item dropdown">
|
||||
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links">
|
||||
More
|
||||
</button>
|
||||
<ul id="pst-nav-more-links" class="dropdown-menu">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link dropdown-item nav-internal" href="../../changelog.html">
|
||||
Changelog
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-header-items__end">
|
||||
|
||||
<div class="navbar-item navbar-persistent--container">
|
||||
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<span class="search-button__default-text">Search</span>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
|
||||
</button>
|
||||
`);
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
|
||||
</button>
|
||||
`);
|
||||
</script></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-persistent--mobile">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<span class="search-button__default-text">Search</span>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
|
||||
</button>
|
||||
`);
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</header>
|
||||
|
||||
|
||||
<div class="bd-container">
|
||||
<div class="bd-container__inner bd-page-width">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="bd-sidebar-primary bd-sidebar hide-on-wide">
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-header-items sidebar-primary__section">
|
||||
|
||||
|
||||
<div class="sidebar-header-items__center">
|
||||
|
||||
<div class="navbar-item">
|
||||
<nav class="navbar-nav">
|
||||
<ul class="bd-navbar-elements navbar-nav">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../installation.html">
|
||||
Installation
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../getting_started.html">
|
||||
Getting Started
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../user_guide/index.html">
|
||||
User Guide
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../reference/index.html">
|
||||
Reference
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../api/index.html">
|
||||
API
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item dropdown">
|
||||
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links-2">
|
||||
More
|
||||
</button>
|
||||
<ul id="pst-nav-more-links-2" class="dropdown-menu">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link dropdown-item nav-internal" href="../../changelog.html">
|
||||
Changelog
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-header-items__end">
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
|
||||
</button>
|
||||
`);
|
||||
</script></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="sidebar-primary-items__end sidebar-primary__section">
|
||||
</div>
|
||||
|
||||
<div id="rtd-footer-container"></div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<main id="main-content" class="bd-main">
|
||||
|
||||
|
||||
<div class="bd-content">
|
||||
<div class="bd-article-container">
|
||||
|
||||
<div class="bd-header-article">
|
||||
<div class="header-article-items header-article__inner">
|
||||
|
||||
<div class="header-article-items__start">
|
||||
|
||||
<div class="header-article-item">
|
||||
|
||||
|
||||
|
||||
<nav aria-label="Breadcrumb">
|
||||
<ul class="bd-breadcrumbs">
|
||||
|
||||
<li class="breadcrumb-item breadcrumb-home">
|
||||
<a href="../../index.html" class="nav-link" aria-label="Home">
|
||||
<i class="fa-solid fa-home"></i>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="breadcrumb-item"><a href="../index.html" class="nav-link">Module code</a></li>
|
||||
|
||||
<li class="breadcrumb-item active" aria-current="page">categories.r...</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div id="searchbox"></div>
|
||||
<article class="bd-article">
|
||||
|
||||
<h1>Source code for categories.registration</h1><div class="highlight"><pre>
|
||||
<span></span><span class="sd">"""</span>
|
||||
<span class="sd">These functions handle the adding of fields to other models.</span>
|
||||
<span class="sd">"""</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Type</span><span class="p">,</span> <span class="n">Union</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">collections.abc</span> <span class="kn">import</span> <span class="n">Iterable</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">django.core.exceptions</span> <span class="kn">import</span> <span class="n">FieldDoesNotExist</span><span class="p">,</span> <span class="n">ImproperlyConfigured</span>
|
||||
<span class="kn">from</span> <span class="nn">django.db.models</span> <span class="kn">import</span> <span class="n">CASCADE</span><span class="p">,</span> <span class="n">ForeignKey</span><span class="p">,</span> <span class="n">ManyToManyField</span>
|
||||
|
||||
<span class="c1"># from settings import self._field_registry, self._model_registry</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.translation</span> <span class="kn">import</span> <span class="n">gettext_lazy</span> <span class="k">as</span> <span class="n">_</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">fields</span>
|
||||
|
||||
<span class="n">FIELD_TYPES</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="s2">"ForeignKey"</span><span class="p">:</span> <span class="n">ForeignKey</span><span class="p">,</span>
|
||||
<span class="s2">"ManyToManyField"</span><span class="p">:</span> <span class="n">ManyToManyField</span><span class="p">,</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="Registry">
|
||||
<a class="viewcode-back" href="../../api/categories.registration.Registry.html#categories.registration.Registry">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">Registry</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Keeps track of fields and models registered."""</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_field_registry</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_model_registry</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">register_model</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">app</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">model_name</span><span class="p">,</span> <span class="n">field_type</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">field_definitions</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Iterable</span><span class="p">]):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Registration process for Django 1.7+.</span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> app: app name/label</span>
|
||||
<span class="sd"> model_name: name of the model</span>
|
||||
<span class="sd"> field_definitions: a string, tuple or list of field configurations</span>
|
||||
<span class="sd"> field_type: either 'ForeignKey' or 'ManyToManyField'</span>
|
||||
|
||||
<span class="sd"> Raises:</span>
|
||||
<span class="sd"> ImproperlyConfigured: For incorrect parameter types or missing model.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="kn">from</span> <span class="nn">django.apps</span> <span class="kn">import</span> <span class="n">apps</span>
|
||||
|
||||
<span class="n">app_label</span> <span class="o">=</span> <span class="n">app</span>
|
||||
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">field_definitions</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
|
||||
<span class="n">field_definitions</span> <span class="o">=</span> <span class="p">[</span><span class="n">field_definitions</span><span class="p">]</span>
|
||||
<span class="k">elif</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">field_definitions</span><span class="p">,</span> <span class="n">Iterable</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="n">ImproperlyConfigured</span><span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"Field configuration for </span><span class="si">%(app)s</span><span class="s2"> should be a string or iterable"</span><span class="p">)</span> <span class="o">%</span> <span class="p">{</span><span class="s2">"app"</span><span class="p">:</span> <span class="n">app</span><span class="p">}</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">field_type</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"ForeignKey"</span><span class="p">,</span> <span class="s2">"ManyToManyField"</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="n">ImproperlyConfigured</span><span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="s1">'`field_type` must be either `"ForeignKey"` or `"ManyToManyField"`.'</span><span class="p">))</span>
|
||||
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">model_name</span><span class="p">,</span> <span class="s2">"_meta"</span><span class="p">):</span>
|
||||
<span class="n">app_config</span> <span class="o">=</span> <span class="n">apps</span><span class="o">.</span><span class="n">get_app_config</span><span class="p">(</span><span class="n">app</span><span class="p">)</span>
|
||||
<span class="n">app_label</span> <span class="o">=</span> <span class="n">app_config</span><span class="o">.</span><span class="n">label</span>
|
||||
<span class="n">model</span> <span class="o">=</span> <span class="n">app_config</span><span class="o">.</span><span class="n">get_model</span><span class="p">(</span><span class="n">model_name</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">model</span> <span class="o">=</span> <span class="n">model_name</span>
|
||||
<span class="n">model_name</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">_meta</span><span class="o">.</span><span class="n">model_name</span>
|
||||
<span class="n">opts</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">_meta</span>
|
||||
<span class="k">if</span> <span class="n">app_label</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_model_registry</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_model_registry</span><span class="p">[</span><span class="n">app_label</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">if</span> <span class="n">model</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_model_registry</span><span class="p">[</span><span class="n">app_label</span><span class="p">]:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_model_registry</span><span class="p">[</span><span class="n">app_label</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">model</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">LookupError</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">ImproperlyConfigured</span><span class="p">(</span>
|
||||
<span class="s1">'Model "</span><span class="si">%(model)s</span><span class="s1">" doesn</span><span class="se">\'</span><span class="s1">t exist in app "</span><span class="si">%(app)s</span><span class="s1">".'</span> <span class="o">%</span> <span class="p">{</span><span class="s2">"model"</span><span class="p">:</span> <span class="n">model_name</span><span class="p">,</span> <span class="s2">"app"</span><span class="p">:</span> <span class="n">app</span><span class="p">}</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">field_definitions</span><span class="p">,</span> <span class="p">(</span><span class="nb">tuple</span><span class="p">,</span> <span class="nb">list</span><span class="p">)):</span>
|
||||
<span class="n">field_definitions</span> <span class="o">=</span> <span class="p">[</span><span class="n">field_definitions</span><span class="p">]</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">fld</span> <span class="ow">in</span> <span class="n">field_definitions</span><span class="p">:</span>
|
||||
<span class="n">extra_params</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"to"</span><span class="p">:</span> <span class="s2">"categories.Category"</span><span class="p">,</span> <span class="s2">"blank"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span>
|
||||
<span class="k">if</span> <span class="n">field_type</span> <span class="o">!=</span> <span class="s2">"ManyToManyField"</span><span class="p">:</span>
|
||||
<span class="n">extra_params</span><span class="p">[</span><span class="s2">"on_delete"</span><span class="p">]</span> <span class="o">=</span> <span class="n">CASCADE</span>
|
||||
<span class="n">extra_params</span><span class="p">[</span><span class="s2">"null"</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">fld</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
|
||||
<span class="n">field_name</span> <span class="o">=</span> <span class="n">fld</span>
|
||||
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">fld</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="s2">"name"</span> <span class="ow">in</span> <span class="n">fld</span><span class="p">:</span>
|
||||
<span class="n">field_name</span> <span class="o">=</span> <span class="n">fld</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"name"</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">continue</span>
|
||||
<span class="n">extra_params</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">fld</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">ImproperlyConfigured</span><span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"</span><span class="si">%(settings)s</span><span class="s2"> doesn't recognize the value of </span><span class="si">%(app)s</span><span class="s2">.</span><span class="si">%(model)s</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="o">%</span> <span class="p">{</span><span class="s2">"settings"</span><span class="p">:</span> <span class="s2">"CATEGORY_SETTINGS"</span><span class="p">,</span> <span class="s2">"app"</span><span class="p">:</span> <span class="n">app</span><span class="p">,</span> <span class="s2">"model"</span><span class="p">:</span> <span class="n">model_name</span><span class="p">}</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">registry_name</span> <span class="o">=</span> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="n">app_label</span><span class="p">,</span> <span class="n">model_name</span><span class="o">.</span><span class="n">lower</span><span class="p">(),</span> <span class="n">field_name</span><span class="p">])</span>
|
||||
<span class="k">if</span> <span class="n">registry_name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_field_registry</span><span class="p">:</span>
|
||||
<span class="k">continue</span>
|
||||
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">opts</span><span class="o">.</span><span class="n">get_field</span><span class="p">(</span><span class="n">field_name</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="n">FieldDoesNotExist</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_field_registry</span><span class="p">[</span><span class="n">registry_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">FIELD_TYPES</span><span class="p">[</span><span class="n">field_type</span><span class="p">](</span><span class="o">**</span><span class="n">extra_params</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_field_registry</span><span class="p">[</span><span class="n">registry_name</span><span class="p">]</span><span class="o">.</span><span class="n">contribute_to_class</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">field_name</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">register_m2m</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model</span><span class="p">,</span> <span class="n">field_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"categories"</span><span class="p">,</span> <span class="n">extra_params</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">dict</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Register a field name to the model as a many to many field."""</span>
|
||||
<span class="n">extra_params</span> <span class="o">=</span> <span class="n">extra_params</span> <span class="ow">or</span> <span class="p">{}</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_register</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">field_name</span><span class="p">,</span> <span class="n">extra_params</span><span class="p">,</span> <span class="n">fields</span><span class="o">.</span><span class="n">CategoryM2MField</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">register_fk</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model</span><span class="p">,</span> <span class="n">field_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"category"</span><span class="p">,</span> <span class="n">extra_params</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">dict</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Register a field name to the model as a foreign key."""</span>
|
||||
<span class="n">extra_params</span> <span class="o">=</span> <span class="n">extra_params</span> <span class="ow">or</span> <span class="p">{}</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_register</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">field_name</span><span class="p">,</span> <span class="n">extra_params</span><span class="p">,</span> <span class="n">fields</span><span class="o">.</span><span class="n">CategoryFKField</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_register</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="p">,</span>
|
||||
<span class="n">model</span><span class="p">,</span>
|
||||
<span class="n">field_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
|
||||
<span class="n">extra_params</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">dict</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">field</span><span class="p">:</span> <span class="n">Type</span> <span class="o">=</span> <span class="n">fields</span><span class="o">.</span><span class="n">CategoryFKField</span><span class="p">,</span>
|
||||
<span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Does the heavy lifting for registering a field to a model."""</span>
|
||||
<span class="n">app_label</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">_meta</span><span class="o">.</span><span class="n">app_label</span>
|
||||
<span class="n">extra_params</span> <span class="o">=</span> <span class="n">extra_params</span> <span class="ow">or</span> <span class="p">{}</span>
|
||||
<span class="n">registry_name</span> <span class="o">=</span> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">((</span><span class="n">app_label</span><span class="p">,</span> <span class="n">model</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="n">field_name</span><span class="p">))</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">registry_name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_field_registry</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="c1"># raise AlreadyRegistered</span>
|
||||
<span class="n">opts</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">_meta</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">opts</span><span class="o">.</span><span class="n">get_field</span><span class="p">(</span><span class="n">field_name</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="n">FieldDoesNotExist</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">app_label</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_model_registry</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_model_registry</span><span class="p">[</span><span class="n">app_label</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">if</span> <span class="n">model</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_model_registry</span><span class="p">[</span><span class="n">app_label</span><span class="p">]:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_model_registry</span><span class="p">[</span><span class="n">app_label</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">model</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_field_registry</span><span class="p">[</span><span class="n">registry_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span><span class="o">**</span><span class="n">extra_params</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_field_registry</span><span class="p">[</span><span class="n">registry_name</span><span class="p">]</span><span class="o">.</span><span class="n">contribute_to_class</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">field_name</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
|
||||
<span class="n">registry</span> <span class="o">=</span> <span class="n">Registry</span><span class="p">()</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">_process_registry</span><span class="p">(</span><span class="n">registry</span><span class="p">,</span> <span class="n">call_func</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Given a dictionary, and a registration function, process the registry.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="kn">from</span> <span class="nn">django.apps</span> <span class="kn">import</span> <span class="n">apps</span>
|
||||
<span class="kn">from</span> <span class="nn">django.core.exceptions</span> <span class="kn">import</span> <span class="n">ImproperlyConfigured</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="nb">list</span><span class="p">(</span><span class="n">registry</span><span class="o">.</span><span class="n">items</span><span class="p">()):</span>
|
||||
<span class="n">model</span> <span class="o">=</span> <span class="n">apps</span><span class="o">.</span><span class="n">get_model</span><span class="p">(</span><span class="o">*</span><span class="n">key</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"."</span><span class="p">))</span>
|
||||
<span class="k">if</span> <span class="n">model</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">ImproperlyConfigured</span><span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="s2">"</span><span class="si">%(key)s</span><span class="s2"> is not a model"</span><span class="p">)</span> <span class="o">%</span> <span class="p">{</span><span class="s2">"key"</span><span class="p">:</span> <span class="n">key</span><span class="p">})</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="p">(</span><span class="nb">tuple</span><span class="p">,</span> <span class="nb">list</span><span class="p">)):</span>
|
||||
<span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">value</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
|
||||
<span class="n">call_func</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">item</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span>
|
||||
<span class="n">field_name</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"name"</span><span class="p">)</span>
|
||||
<span class="n">call_func</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">field_name</span><span class="p">,</span> <span class="n">extra_params</span><span class="o">=</span><span class="n">item</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">ImproperlyConfigured</span><span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"</span><span class="si">%(settings)s</span><span class="s2"> doesn't recognize the value of </span><span class="si">%(key)s</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="o">%</span> <span class="p">{</span><span class="s2">"settings"</span><span class="p">:</span> <span class="s2">"CATEGORY_SETTINGS"</span><span class="p">,</span> <span class="s2">"key"</span><span class="p">:</span> <span class="n">key</span><span class="p">}</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
|
||||
<span class="n">call_func</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span>
|
||||
<span class="n">field_name</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"name"</span><span class="p">)</span>
|
||||
<span class="n">call_func</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">field_name</span><span class="p">,</span> <span class="n">extra_params</span><span class="o">=</span><span class="n">value</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">ImproperlyConfigured</span><span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"</span><span class="si">%(settings)s</span><span class="s2"> doesn't recognize the value of </span><span class="si">%(key)s</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="o">%</span> <span class="p">{</span><span class="s2">"settings"</span><span class="p">:</span> <span class="s2">"CATEGORY_SETTINGS"</span><span class="p">,</span> <span class="s2">"key"</span><span class="p">:</span> <span class="n">key</span><span class="p">}</span>
|
||||
<span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
</article>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<footer class="prev-next-footer">
|
||||
|
||||
<div class="prev-next-area">
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="bd-sidebar-secondary bd-toc"></div>
|
||||
|
||||
|
||||
</div>
|
||||
<footer class="bd-footer-content">
|
||||
|
||||
</footer>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Scripts loaded after <body> so the DOM is not blocked -->
|
||||
<script src="../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
<script src="../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
|
||||
<footer class="bd-footer">
|
||||
<div class="bd-footer__inner bd-page-width">
|
||||
|
||||
<div class="footer-items__start">
|
||||
|
||||
<div class="footer-item">
|
||||
|
||||
<p class="copyright">
|
||||
|
||||
© Copyright 2010-2024, Corey Oordt.
|
||||
<br/>
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="footer-item">
|
||||
|
||||
<p class="sphinx-version">
|
||||
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.3.7.
|
||||
<br/>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="footer-items__end">
|
||||
|
||||
<div class="footer-item">
|
||||
<p class="theme-version">
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.15.2.
|
||||
</p></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
1022
_modules/categories/templatetags/category_tags.html
Normal file
1022
_modules/categories/templatetags/category_tags.html
Normal file
File diff suppressed because it is too large
Load diff
471
_modules/categories/utils.html
Normal file
471
_modules/categories/utils.html
Normal file
|
|
@ -0,0 +1,471 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
|
||||
<html lang="en" data-content_root="../../" >
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>categories.utils — Django Categories 2.0.0 documentation</title>
|
||||
|
||||
|
||||
|
||||
<script data-cfasync="false">
|
||||
document.documentElement.dataset.mode = localStorage.getItem("mode") || "";
|
||||
document.documentElement.dataset.theme = localStorage.getItem("theme") || "light";
|
||||
</script>
|
||||
|
||||
<!-- Loaded before other Sphinx assets -->
|
||||
<link href="../../_static/styles/theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link href="../../_static/styles/bootstrap.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link href="../../_static/styles/pydata-sphinx-theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
|
||||
|
||||
<link href="../../_static/vendor/fontawesome/6.5.1/css/all.min.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-solid-900.woff2" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-brands-400.woff2" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-regular-400.woff2" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/css/custom.css?v=ea07567a" />
|
||||
|
||||
<!-- Pre-loaded scripts that we'll load fully later -->
|
||||
<link rel="preload" as="script" href="../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae" />
|
||||
<link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae" />
|
||||
<script src="../../_static/vendor/fontawesome/6.5.1/js/all.min.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
|
||||
<script src="../../_static/documentation_options.js?v=51b770b3"></script>
|
||||
<script src="../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
<script>DOCUMENTATION_OPTIONS.pagename = '_modules/categories/utils';</script>
|
||||
<link rel="index" title="Index" href="../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../search.html" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<meta name="docsearch:language" content="en"/>
|
||||
</head>
|
||||
|
||||
|
||||
<body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode="">
|
||||
|
||||
|
||||
|
||||
<a id="pst-skip-link" class="skip-link" href="#main-content">Skip to main content</a>
|
||||
|
||||
<div id="pst-scroll-pixel-helper"></div>
|
||||
|
||||
<button type="button" class="btn rounded-pill" id="pst-back-to-top">
|
||||
<i class="fa-solid fa-arrow-up"></i>
|
||||
Back to top
|
||||
</button>
|
||||
|
||||
|
||||
<input type="checkbox"
|
||||
class="sidebar-toggle"
|
||||
name="__primary"
|
||||
id="__primary"/>
|
||||
<label class="overlay overlay-primary" for="__primary"></label>
|
||||
|
||||
<input type="checkbox"
|
||||
class="sidebar-toggle"
|
||||
name="__secondary"
|
||||
id="__secondary"/>
|
||||
<label class="overlay overlay-secondary" for="__secondary"></label>
|
||||
|
||||
<div class="search-button__wrapper">
|
||||
<div class="search-button__overlay"></div>
|
||||
<div class="search-button__search-container">
|
||||
<form class="bd-search d-flex align-items-center"
|
||||
action="../../search.html"
|
||||
method="get">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<input type="search"
|
||||
class="form-control"
|
||||
name="q"
|
||||
id="search-input"
|
||||
placeholder="Search the docs ..."
|
||||
aria-label="Search the docs ..."
|
||||
autocomplete="off"
|
||||
autocorrect="off"
|
||||
autocapitalize="off"
|
||||
spellcheck="false"/>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span>
|
||||
</form></div>
|
||||
</div>
|
||||
|
||||
<header class="bd-header navbar navbar-expand-lg bd-navbar">
|
||||
<div class="bd-header__inner bd-page-width">
|
||||
<label class="sidebar-toggle primary-toggle" for="__primary">
|
||||
<span class="fa-solid fa-bars"></span>
|
||||
</label>
|
||||
|
||||
|
||||
<div class="col-lg-3 navbar-header-items__start">
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
|
||||
|
||||
<a class="navbar-brand logo" href="../../index.html">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="title logo__title">Django Categories 2.0.0 documentation</p>
|
||||
|
||||
</a></div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col-lg-9 navbar-header-items">
|
||||
|
||||
<div class="me-auto navbar-header-items__center">
|
||||
|
||||
<div class="navbar-item">
|
||||
<nav class="navbar-nav">
|
||||
<ul class="bd-navbar-elements navbar-nav">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../installation.html">
|
||||
Installation
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../getting_started.html">
|
||||
Getting Started
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../user_guide/index.html">
|
||||
User Guide
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../reference/index.html">
|
||||
Reference
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../api/index.html">
|
||||
API
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item dropdown">
|
||||
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links">
|
||||
More
|
||||
</button>
|
||||
<ul id="pst-nav-more-links" class="dropdown-menu">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link dropdown-item nav-internal" href="../../changelog.html">
|
||||
Changelog
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-header-items__end">
|
||||
|
||||
<div class="navbar-item navbar-persistent--container">
|
||||
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<span class="search-button__default-text">Search</span>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
|
||||
</button>
|
||||
`);
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
|
||||
</button>
|
||||
`);
|
||||
</script></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-persistent--mobile">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<span class="search-button__default-text">Search</span>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
|
||||
</button>
|
||||
`);
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</header>
|
||||
|
||||
|
||||
<div class="bd-container">
|
||||
<div class="bd-container__inner bd-page-width">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="bd-sidebar-primary bd-sidebar hide-on-wide">
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-header-items sidebar-primary__section">
|
||||
|
||||
|
||||
<div class="sidebar-header-items__center">
|
||||
|
||||
<div class="navbar-item">
|
||||
<nav class="navbar-nav">
|
||||
<ul class="bd-navbar-elements navbar-nav">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../installation.html">
|
||||
Installation
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../getting_started.html">
|
||||
Getting Started
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../user_guide/index.html">
|
||||
User Guide
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../reference/index.html">
|
||||
Reference
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../api/index.html">
|
||||
API
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item dropdown">
|
||||
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links-2">
|
||||
More
|
||||
</button>
|
||||
<ul id="pst-nav-more-links-2" class="dropdown-menu">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link dropdown-item nav-internal" href="../../changelog.html">
|
||||
Changelog
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-header-items__end">
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
|
||||
</button>
|
||||
`);
|
||||
</script></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="sidebar-primary-items__end sidebar-primary__section">
|
||||
</div>
|
||||
|
||||
<div id="rtd-footer-container"></div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<main id="main-content" class="bd-main">
|
||||
|
||||
|
||||
<div class="bd-content">
|
||||
<div class="bd-article-container">
|
||||
|
||||
<div class="bd-header-article">
|
||||
<div class="header-article-items header-article__inner">
|
||||
|
||||
<div class="header-article-items__start">
|
||||
|
||||
<div class="header-article-item">
|
||||
|
||||
|
||||
|
||||
<nav aria-label="Breadcrumb">
|
||||
<ul class="bd-breadcrumbs">
|
||||
|
||||
<li class="breadcrumb-item breadcrumb-home">
|
||||
<a href="../../index.html" class="nav-link" aria-label="Home">
|
||||
<i class="fa-solid fa-home"></i>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="breadcrumb-item"><a href="../index.html" class="nav-link">Module code</a></li>
|
||||
|
||||
<li class="breadcrumb-item active" aria-current="page">categories.utils</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div id="searchbox"></div>
|
||||
<article class="bd-article">
|
||||
|
||||
<h1>Source code for categories.utils</h1><div class="highlight"><pre>
|
||||
<span></span><span class="sd">"""This module contains utility functions that are used across the project."""</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">django.utils.text</span> <span class="kn">import</span> <span class="n">slugify</span> <span class="k">as</span> <span class="n">django_slugify</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="slugify">
|
||||
<a class="viewcode-back" href="../../api/categories.utils.slugify.html#categories.utils.slugify">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">slugify</span><span class="p">(</span><span class="n">text</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Slugify a string. This function is a wrapper to unify the slugify function across the project."""</span>
|
||||
<span class="k">return</span> <span class="n">django_slugify</span><span class="p">(</span><span class="n">text</span><span class="p">,</span> <span class="n">allow_unicode</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
|
||||
|
||||
</pre></div>
|
||||
|
||||
</article>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<footer class="prev-next-footer">
|
||||
|
||||
<div class="prev-next-area">
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="bd-sidebar-secondary bd-toc"></div>
|
||||
|
||||
|
||||
</div>
|
||||
<footer class="bd-footer-content">
|
||||
|
||||
</footer>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Scripts loaded after <body> so the DOM is not blocked -->
|
||||
<script src="../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
<script src="../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
|
||||
<footer class="bd-footer">
|
||||
<div class="bd-footer__inner bd-page-width">
|
||||
|
||||
<div class="footer-items__start">
|
||||
|
||||
<div class="footer-item">
|
||||
|
||||
<p class="copyright">
|
||||
|
||||
© Copyright 2010-2024, Corey Oordt.
|
||||
<br/>
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="footer-item">
|
||||
|
||||
<p class="sphinx-version">
|
||||
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.3.7.
|
||||
<br/>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="footer-items__end">
|
||||
|
||||
<div class="footer-item">
|
||||
<p class="theme-version">
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.15.2.
|
||||
</p></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
628
_modules/categories/views.html
Normal file
628
_modules/categories/views.html
Normal file
|
|
@ -0,0 +1,628 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
|
||||
<html lang="en" data-content_root="../../" >
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>categories.views — Django Categories 2.0.0 documentation</title>
|
||||
|
||||
|
||||
|
||||
<script data-cfasync="false">
|
||||
document.documentElement.dataset.mode = localStorage.getItem("mode") || "";
|
||||
document.documentElement.dataset.theme = localStorage.getItem("theme") || "light";
|
||||
</script>
|
||||
|
||||
<!-- Loaded before other Sphinx assets -->
|
||||
<link href="../../_static/styles/theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link href="../../_static/styles/bootstrap.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link href="../../_static/styles/pydata-sphinx-theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
|
||||
|
||||
<link href="../../_static/vendor/fontawesome/6.5.1/css/all.min.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-solid-900.woff2" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-brands-400.woff2" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-regular-400.woff2" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/css/custom.css?v=ea07567a" />
|
||||
|
||||
<!-- Pre-loaded scripts that we'll load fully later -->
|
||||
<link rel="preload" as="script" href="../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae" />
|
||||
<link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae" />
|
||||
<script src="../../_static/vendor/fontawesome/6.5.1/js/all.min.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
|
||||
<script src="../../_static/documentation_options.js?v=51b770b3"></script>
|
||||
<script src="../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
<script>DOCUMENTATION_OPTIONS.pagename = '_modules/categories/views';</script>
|
||||
<link rel="index" title="Index" href="../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../search.html" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<meta name="docsearch:language" content="en"/>
|
||||
</head>
|
||||
|
||||
|
||||
<body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode="">
|
||||
|
||||
|
||||
|
||||
<a id="pst-skip-link" class="skip-link" href="#main-content">Skip to main content</a>
|
||||
|
||||
<div id="pst-scroll-pixel-helper"></div>
|
||||
|
||||
<button type="button" class="btn rounded-pill" id="pst-back-to-top">
|
||||
<i class="fa-solid fa-arrow-up"></i>
|
||||
Back to top
|
||||
</button>
|
||||
|
||||
|
||||
<input type="checkbox"
|
||||
class="sidebar-toggle"
|
||||
name="__primary"
|
||||
id="__primary"/>
|
||||
<label class="overlay overlay-primary" for="__primary"></label>
|
||||
|
||||
<input type="checkbox"
|
||||
class="sidebar-toggle"
|
||||
name="__secondary"
|
||||
id="__secondary"/>
|
||||
<label class="overlay overlay-secondary" for="__secondary"></label>
|
||||
|
||||
<div class="search-button__wrapper">
|
||||
<div class="search-button__overlay"></div>
|
||||
<div class="search-button__search-container">
|
||||
<form class="bd-search d-flex align-items-center"
|
||||
action="../../search.html"
|
||||
method="get">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<input type="search"
|
||||
class="form-control"
|
||||
name="q"
|
||||
id="search-input"
|
||||
placeholder="Search the docs ..."
|
||||
aria-label="Search the docs ..."
|
||||
autocomplete="off"
|
||||
autocorrect="off"
|
||||
autocapitalize="off"
|
||||
spellcheck="false"/>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span>
|
||||
</form></div>
|
||||
</div>
|
||||
|
||||
<header class="bd-header navbar navbar-expand-lg bd-navbar">
|
||||
<div class="bd-header__inner bd-page-width">
|
||||
<label class="sidebar-toggle primary-toggle" for="__primary">
|
||||
<span class="fa-solid fa-bars"></span>
|
||||
</label>
|
||||
|
||||
|
||||
<div class="col-lg-3 navbar-header-items__start">
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
|
||||
|
||||
<a class="navbar-brand logo" href="../../index.html">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="title logo__title">Django Categories 2.0.0 documentation</p>
|
||||
|
||||
</a></div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col-lg-9 navbar-header-items">
|
||||
|
||||
<div class="me-auto navbar-header-items__center">
|
||||
|
||||
<div class="navbar-item">
|
||||
<nav class="navbar-nav">
|
||||
<ul class="bd-navbar-elements navbar-nav">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../installation.html">
|
||||
Installation
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../getting_started.html">
|
||||
Getting Started
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../user_guide/index.html">
|
||||
User Guide
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../reference/index.html">
|
||||
Reference
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../api/index.html">
|
||||
API
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item dropdown">
|
||||
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links">
|
||||
More
|
||||
</button>
|
||||
<ul id="pst-nav-more-links" class="dropdown-menu">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link dropdown-item nav-internal" href="../../changelog.html">
|
||||
Changelog
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-header-items__end">
|
||||
|
||||
<div class="navbar-item navbar-persistent--container">
|
||||
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<span class="search-button__default-text">Search</span>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
|
||||
</button>
|
||||
`);
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
|
||||
</button>
|
||||
`);
|
||||
</script></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-persistent--mobile">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<span class="search-button__default-text">Search</span>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
|
||||
</button>
|
||||
`);
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</header>
|
||||
|
||||
|
||||
<div class="bd-container">
|
||||
<div class="bd-container__inner bd-page-width">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="bd-sidebar-primary bd-sidebar hide-on-wide">
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-header-items sidebar-primary__section">
|
||||
|
||||
|
||||
<div class="sidebar-header-items__center">
|
||||
|
||||
<div class="navbar-item">
|
||||
<nav class="navbar-nav">
|
||||
<ul class="bd-navbar-elements navbar-nav">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../installation.html">
|
||||
Installation
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../getting_started.html">
|
||||
Getting Started
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../user_guide/index.html">
|
||||
User Guide
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../reference/index.html">
|
||||
Reference
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../../api/index.html">
|
||||
API
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item dropdown">
|
||||
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links-2">
|
||||
More
|
||||
</button>
|
||||
<ul id="pst-nav-more-links-2" class="dropdown-menu">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link dropdown-item nav-internal" href="../../changelog.html">
|
||||
Changelog
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-header-items__end">
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
|
||||
</button>
|
||||
`);
|
||||
</script></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="sidebar-primary-items__end sidebar-primary__section">
|
||||
</div>
|
||||
|
||||
<div id="rtd-footer-container"></div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<main id="main-content" class="bd-main">
|
||||
|
||||
|
||||
<div class="bd-content">
|
||||
<div class="bd-article-container">
|
||||
|
||||
<div class="bd-header-article">
|
||||
<div class="header-article-items header-article__inner">
|
||||
|
||||
<div class="header-article-items__start">
|
||||
|
||||
<div class="header-article-item">
|
||||
|
||||
|
||||
|
||||
<nav aria-label="Breadcrumb">
|
||||
<ul class="bd-breadcrumbs">
|
||||
|
||||
<li class="breadcrumb-item breadcrumb-home">
|
||||
<a href="../../index.html" class="nav-link" aria-label="Home">
|
||||
<i class="fa-solid fa-home"></i>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="breadcrumb-item"><a href="../index.html" class="nav-link">Module code</a></li>
|
||||
|
||||
<li class="breadcrumb-item active" aria-current="page">categories.views</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div id="searchbox"></div>
|
||||
<article class="bd-article">
|
||||
|
||||
<h1>Source code for categories.views</h1><div class="highlight"><pre>
|
||||
<span></span><span class="sd">"""View functions for categories."""</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Optional</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">django.http</span> <span class="kn">import</span> <span class="n">Http404</span><span class="p">,</span> <span class="n">HttpResponse</span>
|
||||
<span class="kn">from</span> <span class="nn">django.shortcuts</span> <span class="kn">import</span> <span class="n">get_object_or_404</span>
|
||||
<span class="kn">from</span> <span class="nn">django.template.loader</span> <span class="kn">import</span> <span class="n">select_template</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.translation</span> <span class="kn">import</span> <span class="n">gettext_lazy</span> <span class="k">as</span> <span class="n">_</span>
|
||||
<span class="kn">from</span> <span class="nn">django.views.generic</span> <span class="kn">import</span> <span class="n">DetailView</span><span class="p">,</span> <span class="n">ListView</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">.models</span> <span class="kn">import</span> <span class="n">Category</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="category_detail">
|
||||
<a class="viewcode-back" href="../../api/categories.views.category_detail.html#categories.views.category_detail">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">category_detail</span><span class="p">(</span>
|
||||
<span class="n">request</span><span class="p">,</span> <span class="n">path</span><span class="p">,</span> <span class="n">template_name</span><span class="o">=</span><span class="s2">"categories/category_detail.html"</span><span class="p">,</span> <span class="n">extra_context</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">dict</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Render the detail page for a category."""</span>
|
||||
<span class="n">extra_context</span> <span class="o">=</span> <span class="n">extra_context</span> <span class="ow">or</span> <span class="p">{}</span>
|
||||
<span class="n">path_items</span> <span class="o">=</span> <span class="n">path</span><span class="o">.</span><span class="n">strip</span><span class="p">(</span><span class="s2">"/"</span><span class="p">)</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"/"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">path_items</span><span class="p">)</span> <span class="o">>=</span> <span class="mi">2</span><span class="p">:</span>
|
||||
<span class="n">category</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span>
|
||||
<span class="n">Category</span><span class="p">,</span> <span class="n">slug__iexact</span><span class="o">=</span><span class="n">path_items</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> <span class="n">level</span><span class="o">=</span><span class="nb">len</span><span class="p">(</span><span class="n">path_items</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">parent__slug__iexact</span><span class="o">=</span><span class="n">path_items</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">category</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Category</span><span class="p">,</span> <span class="n">slug__iexact</span><span class="o">=</span><span class="n">path_items</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> <span class="n">level</span><span class="o">=</span><span class="nb">len</span><span class="p">(</span><span class="n">path_items</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
|
||||
|
||||
<span class="n">templates</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">while</span> <span class="n">path_items</span><span class="p">:</span>
|
||||
<span class="n">templates</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"categories/</span><span class="si">%s</span><span class="s2">.html"</span> <span class="o">%</span> <span class="s2">"_"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">path_items</span><span class="p">))</span>
|
||||
<span class="n">path_items</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span>
|
||||
<span class="n">templates</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">template_name</span><span class="p">)</span>
|
||||
|
||||
<span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"category"</span><span class="p">:</span> <span class="n">category</span><span class="p">}</span>
|
||||
<span class="k">if</span> <span class="n">extra_context</span><span class="p">:</span>
|
||||
<span class="n">context</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">extra_context</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">HttpResponse</span><span class="p">(</span><span class="n">select_template</span><span class="p">(</span><span class="n">templates</span><span class="p">)</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">))</span></div>
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="get_category_for_path">
|
||||
<a class="viewcode-back" href="../../api/categories.views.get_category_for_path.html#categories.views.get_category_for_path">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">get_category_for_path</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">queryset</span><span class="o">=</span><span class="n">Category</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">all</span><span class="p">()):</span>
|
||||
<span class="w"> </span><span class="sd">"""Return the category for a path."""</span>
|
||||
<span class="n">path_items</span> <span class="o">=</span> <span class="n">path</span><span class="o">.</span><span class="n">strip</span><span class="p">(</span><span class="s2">"/"</span><span class="p">)</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"/"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">path_items</span><span class="p">)</span> <span class="o">>=</span> <span class="mi">2</span><span class="p">:</span>
|
||||
<span class="n">queryset</span> <span class="o">=</span> <span class="n">queryset</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span>
|
||||
<span class="n">slug__iexact</span><span class="o">=</span><span class="n">path_items</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> <span class="n">level</span><span class="o">=</span><span class="nb">len</span><span class="p">(</span><span class="n">path_items</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">parent__slug__iexact</span><span class="o">=</span><span class="n">path_items</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">queryset</span> <span class="o">=</span> <span class="n">queryset</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">slug__iexact</span><span class="o">=</span><span class="n">path_items</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> <span class="n">level</span><span class="o">=</span><span class="nb">len</span><span class="p">(</span><span class="n">path_items</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">queryset</span><span class="o">.</span><span class="n">get</span><span class="p">()</span></div>
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="CategoryDetailView">
|
||||
<a class="viewcode-back" href="../../api/categories.views.CategoryDetailView.html#categories.views.CategoryDetailView">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">CategoryDetailView</span><span class="p">(</span><span class="n">DetailView</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Detail view for a category."""</span>
|
||||
|
||||
<span class="n">model</span> <span class="o">=</span> <span class="n">Category</span>
|
||||
<span class="n">path_field</span> <span class="o">=</span> <span class="s2">"path"</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_object</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Get the category."""</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">path_field</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">kwargs</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span>
|
||||
<span class="s2">"Category detail view </span><span class="si">%s</span><span class="s2"> must be called with "</span> <span class="s2">"a </span><span class="si">%s</span><span class="s2">."</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">path_field</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">queryset</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">queryset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_queryset</span><span class="p">()</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">get_category_for_path</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">kwargs</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">path_field</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">all</span><span class="p">())</span>
|
||||
<span class="k">except</span> <span class="n">Category</span><span class="o">.</span><span class="n">DoesNotExist</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">Http404</span><span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"No </span><span class="si">%(verbose_name)s</span><span class="s2"> found matching the query"</span><span class="p">)</span> <span class="o">%</span> <span class="p">{</span><span class="s2">"verbose_name"</span><span class="p">:</span> <span class="n">queryset</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">_meta</span><span class="o">.</span><span class="n">verbose_name</span><span class="p">}</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_template_names</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Get the potential template names."""</span>
|
||||
<span class="n">names</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="n">path_items</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">kwargs</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">path_field</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">(</span><span class="s2">"/"</span><span class="p">)</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"/"</span><span class="p">)</span>
|
||||
<span class="k">while</span> <span class="n">path_items</span><span class="p">:</span>
|
||||
<span class="n">names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"categories/</span><span class="si">%s</span><span class="s2">.html"</span> <span class="o">%</span> <span class="s2">"_"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">path_items</span><span class="p">))</span>
|
||||
<span class="n">path_items</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span>
|
||||
<span class="n">names</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="nb">super</span><span class="p">(</span><span class="n">CategoryDetailView</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">get_template_names</span><span class="p">())</span>
|
||||
<span class="k">return</span> <span class="n">names</span></div>
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="CategoryRelatedDetail">
|
||||
<a class="viewcode-back" href="../../api/categories.views.CategoryRelatedDetail.html#categories.views.CategoryRelatedDetail">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">CategoryRelatedDetail</span><span class="p">(</span><span class="n">DetailView</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Detailed view for a category relation."""</span>
|
||||
|
||||
<span class="n">path_field</span> <span class="o">=</span> <span class="s2">"category_path"</span>
|
||||
<span class="n">object_name_field</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_object</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Get the object to render."""</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">path_field</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">kwargs</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span>
|
||||
<span class="s2">"Category detail view </span><span class="si">%s</span><span class="s2"> must be called with "</span> <span class="s2">"a </span><span class="si">%s</span><span class="s2">."</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">path_field</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">queryset</span> <span class="o">=</span> <span class="nb">super</span><span class="p">(</span><span class="n">CategoryRelatedDetail</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">get_queryset</span><span class="p">()</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">category</span> <span class="o">=</span> <span class="n">get_category_for_path</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">kwargs</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">path_field</span><span class="p">])</span>
|
||||
<span class="k">except</span> <span class="n">Category</span><span class="o">.</span><span class="n">DoesNotExist</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">Http404</span><span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"No </span><span class="si">%(verbose_name)s</span><span class="s2"> found matching the query"</span><span class="p">)</span> <span class="o">%</span> <span class="p">{</span><span class="s2">"verbose_name"</span><span class="p">:</span> <span class="n">queryset</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">_meta</span><span class="o">.</span><span class="n">verbose_name</span><span class="p">}</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">queryset</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">category</span><span class="o">=</span><span class="n">category</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_template_names</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Get all template names."""</span>
|
||||
<span class="n">names</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="n">opts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">object</span><span class="o">.</span><span class="n">_meta</span>
|
||||
<span class="n">path_items</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">kwargs</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">path_field</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">(</span><span class="s2">"/"</span><span class="p">)</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"/"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">object_name_field</span><span class="p">:</span>
|
||||
<span class="n">path_items</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">object</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">object_name_field</span><span class="p">))</span>
|
||||
<span class="k">while</span> <span class="n">path_items</span><span class="p">:</span>
|
||||
<span class="n">names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
<span class="s2">"</span><span class="si">%s</span><span class="s2">/category_</span><span class="si">%s</span><span class="s2">_</span><span class="si">%s%s</span><span class="s2">.html"</span>
|
||||
<span class="o">%</span> <span class="p">(</span><span class="n">opts</span><span class="o">.</span><span class="n">app_label</span><span class="p">,</span> <span class="s2">"_"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">path_items</span><span class="p">),</span> <span class="n">opts</span><span class="o">.</span><span class="n">object_name</span><span class="o">.</span><span class="n">lower</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">template_name_suffix</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">path_items</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span>
|
||||
<span class="n">names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2">/category_</span><span class="si">%s%s</span><span class="s2">.html"</span> <span class="o">%</span> <span class="p">(</span><span class="n">opts</span><span class="o">.</span><span class="n">app_label</span><span class="p">,</span> <span class="n">opts</span><span class="o">.</span><span class="n">object_name</span><span class="o">.</span><span class="n">lower</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">template_name_suffix</span><span class="p">))</span>
|
||||
<span class="n">names</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="nb">super</span><span class="p">(</span><span class="n">CategoryRelatedDetail</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">get_template_names</span><span class="p">())</span>
|
||||
<span class="k">return</span> <span class="n">names</span></div>
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="CategoryRelatedList">
|
||||
<a class="viewcode-back" href="../../api/categories.views.CategoryRelatedList.html#categories.views.CategoryRelatedList">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">CategoryRelatedList</span><span class="p">(</span><span class="n">ListView</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""List related category items."""</span>
|
||||
|
||||
<span class="n">path_field</span> <span class="o">=</span> <span class="s2">"category_path"</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_queryset</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Get the list of items."""</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">path_field</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">kwargs</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span>
|
||||
<span class="s2">"Category detail view </span><span class="si">%s</span><span class="s2"> must be called with "</span> <span class="s2">"a </span><span class="si">%s</span><span class="s2">."</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">path_field</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">queryset</span> <span class="o">=</span> <span class="nb">super</span><span class="p">(</span><span class="n">CategoryRelatedList</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">get_queryset</span><span class="p">()</span>
|
||||
<span class="n">category</span> <span class="o">=</span> <span class="n">get_category_for_path</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">kwargs</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">path_field</span><span class="p">])</span>
|
||||
<span class="k">return</span> <span class="n">queryset</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">category</span><span class="o">=</span><span class="n">category</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_template_names</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Get the template names."""</span>
|
||||
<span class="n">names</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">object_list</span><span class="p">,</span> <span class="s2">"model"</span><span class="p">):</span>
|
||||
<span class="n">opts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">object_list</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">_meta</span>
|
||||
<span class="n">path_items</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">kwargs</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">path_field</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">(</span><span class="s2">"/"</span><span class="p">)</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"/"</span><span class="p">)</span>
|
||||
<span class="k">while</span> <span class="n">path_items</span><span class="p">:</span>
|
||||
<span class="n">names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
<span class="s2">"</span><span class="si">%s</span><span class="s2">/category_</span><span class="si">%s</span><span class="s2">_</span><span class="si">%s%s</span><span class="s2">.html"</span>
|
||||
<span class="o">%</span> <span class="p">(</span><span class="n">opts</span><span class="o">.</span><span class="n">app_label</span><span class="p">,</span> <span class="s2">"_"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">path_items</span><span class="p">),</span> <span class="n">opts</span><span class="o">.</span><span class="n">object_name</span><span class="o">.</span><span class="n">lower</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">template_name_suffix</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">path_items</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span>
|
||||
<span class="n">names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
<span class="s2">"</span><span class="si">%s</span><span class="s2">/category_</span><span class="si">%s%s</span><span class="s2">.html"</span> <span class="o">%</span> <span class="p">(</span><span class="n">opts</span><span class="o">.</span><span class="n">app_label</span><span class="p">,</span> <span class="n">opts</span><span class="o">.</span><span class="n">object_name</span><span class="o">.</span><span class="n">lower</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">template_name_suffix</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">names</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="nb">super</span><span class="p">(</span><span class="n">CategoryRelatedList</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">get_template_names</span><span class="p">())</span>
|
||||
<span class="k">return</span> <span class="n">names</span></div>
|
||||
|
||||
</pre></div>
|
||||
|
||||
</article>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<footer class="prev-next-footer">
|
||||
|
||||
<div class="prev-next-area">
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="bd-sidebar-secondary bd-toc"></div>
|
||||
|
||||
|
||||
</div>
|
||||
<footer class="bd-footer-content">
|
||||
|
||||
</footer>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Scripts loaded after <body> so the DOM is not blocked -->
|
||||
<script src="../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
<script src="../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
|
||||
<footer class="bd-footer">
|
||||
<div class="bd-footer__inner bd-page-width">
|
||||
|
||||
<div class="footer-items__start">
|
||||
|
||||
<div class="footer-item">
|
||||
|
||||
<p class="copyright">
|
||||
|
||||
© Copyright 2010-2024, Corey Oordt.
|
||||
<br/>
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="footer-item">
|
||||
|
||||
<p class="sphinx-version">
|
||||
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.3.7.
|
||||
<br/>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="footer-items__end">
|
||||
|
||||
<div class="footer-item">
|
||||
<p class="theme-version">
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.15.2.
|
||||
</p></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
474
_modules/index.html
Normal file
474
_modules/index.html
Normal file
|
|
@ -0,0 +1,474 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
|
||||
<html lang="en" data-content_root="../" >
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Overview: module code — Django Categories 2.0.0 documentation</title>
|
||||
|
||||
|
||||
|
||||
<script data-cfasync="false">
|
||||
document.documentElement.dataset.mode = localStorage.getItem("mode") || "";
|
||||
document.documentElement.dataset.theme = localStorage.getItem("theme") || "light";
|
||||
</script>
|
||||
|
||||
<!-- Loaded before other Sphinx assets -->
|
||||
<link href="../_static/styles/theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link href="../_static/styles/bootstrap.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link href="../_static/styles/pydata-sphinx-theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
|
||||
|
||||
<link href="../_static/vendor/fontawesome/6.5.1/css/all.min.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../_static/vendor/fontawesome/6.5.1/webfonts/fa-solid-900.woff2" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../_static/vendor/fontawesome/6.5.1/webfonts/fa-brands-400.woff2" />
|
||||
<link rel="preload" as="font" type="font/woff2" crossorigin href="../_static/vendor/fontawesome/6.5.1/webfonts/fa-regular-400.woff2" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=fa44fd50" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/css/custom.css?v=ea07567a" />
|
||||
|
||||
<!-- Pre-loaded scripts that we'll load fully later -->
|
||||
<link rel="preload" as="script" href="../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae" />
|
||||
<link rel="preload" as="script" href="../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae" />
|
||||
<script src="../_static/vendor/fontawesome/6.5.1/js/all.min.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
|
||||
<script src="../_static/documentation_options.js?v=51b770b3"></script>
|
||||
<script src="../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
<script>DOCUMENTATION_OPTIONS.pagename = '_modules/index';</script>
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<meta name="docsearch:language" content="en"/>
|
||||
</head>
|
||||
|
||||
|
||||
<body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode="">
|
||||
|
||||
|
||||
|
||||
<a id="pst-skip-link" class="skip-link" href="#main-content">Skip to main content</a>
|
||||
|
||||
<div id="pst-scroll-pixel-helper"></div>
|
||||
|
||||
<button type="button" class="btn rounded-pill" id="pst-back-to-top">
|
||||
<i class="fa-solid fa-arrow-up"></i>
|
||||
Back to top
|
||||
</button>
|
||||
|
||||
|
||||
<input type="checkbox"
|
||||
class="sidebar-toggle"
|
||||
name="__primary"
|
||||
id="__primary"/>
|
||||
<label class="overlay overlay-primary" for="__primary"></label>
|
||||
|
||||
<input type="checkbox"
|
||||
class="sidebar-toggle"
|
||||
name="__secondary"
|
||||
id="__secondary"/>
|
||||
<label class="overlay overlay-secondary" for="__secondary"></label>
|
||||
|
||||
<div class="search-button__wrapper">
|
||||
<div class="search-button__overlay"></div>
|
||||
<div class="search-button__search-container">
|
||||
<form class="bd-search d-flex align-items-center"
|
||||
action="../search.html"
|
||||
method="get">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<input type="search"
|
||||
class="form-control"
|
||||
name="q"
|
||||
id="search-input"
|
||||
placeholder="Search the docs ..."
|
||||
aria-label="Search the docs ..."
|
||||
autocomplete="off"
|
||||
autocorrect="off"
|
||||
autocapitalize="off"
|
||||
spellcheck="false"/>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span>
|
||||
</form></div>
|
||||
</div>
|
||||
|
||||
<header class="bd-header navbar navbar-expand-lg bd-navbar">
|
||||
<div class="bd-header__inner bd-page-width">
|
||||
<label class="sidebar-toggle primary-toggle" for="__primary">
|
||||
<span class="fa-solid fa-bars"></span>
|
||||
</label>
|
||||
|
||||
|
||||
<div class="col-lg-3 navbar-header-items__start">
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
|
||||
|
||||
<a class="navbar-brand logo" href="../index.html">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="title logo__title">Django Categories 2.0.0 documentation</p>
|
||||
|
||||
</a></div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col-lg-9 navbar-header-items">
|
||||
|
||||
<div class="me-auto navbar-header-items__center">
|
||||
|
||||
<div class="navbar-item">
|
||||
<nav class="navbar-nav">
|
||||
<ul class="bd-navbar-elements navbar-nav">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../installation.html">
|
||||
Installation
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../getting_started.html">
|
||||
Getting Started
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../user_guide/index.html">
|
||||
User Guide
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../reference/index.html">
|
||||
Reference
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../api/index.html">
|
||||
API
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item dropdown">
|
||||
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links">
|
||||
More
|
||||
</button>
|
||||
<ul id="pst-nav-more-links" class="dropdown-menu">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link dropdown-item nav-internal" href="../changelog.html">
|
||||
Changelog
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-header-items__end">
|
||||
|
||||
<div class="navbar-item navbar-persistent--container">
|
||||
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<span class="search-button__default-text">Search</span>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
|
||||
</button>
|
||||
`);
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
|
||||
</button>
|
||||
`);
|
||||
</script></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navbar-persistent--mobile">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<span class="search-button__default-text">Search</span>
|
||||
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
|
||||
</button>
|
||||
`);
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</header>
|
||||
|
||||
|
||||
<div class="bd-container">
|
||||
<div class="bd-container__inner bd-page-width">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="bd-sidebar-primary bd-sidebar hide-on-wide">
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-header-items sidebar-primary__section">
|
||||
|
||||
|
||||
<div class="sidebar-header-items__center">
|
||||
|
||||
<div class="navbar-item">
|
||||
<nav class="navbar-nav">
|
||||
<ul class="bd-navbar-elements navbar-nav">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../installation.html">
|
||||
Installation
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../getting_started.html">
|
||||
Getting Started
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../user_guide/index.html">
|
||||
User Guide
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../reference/index.html">
|
||||
Reference
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-internal" href="../api/index.html">
|
||||
API
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item dropdown">
|
||||
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links-2">
|
||||
More
|
||||
</button>
|
||||
<ul id="pst-nav-more-links-2" class="dropdown-menu">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link dropdown-item nav-internal" href="../changelog.html">
|
||||
Changelog
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-header-items__end">
|
||||
|
||||
<div class="navbar-item">
|
||||
|
||||
<script>
|
||||
document.write(`
|
||||
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
|
||||
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
|
||||
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
|
||||
</button>
|
||||
`);
|
||||
</script></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="sidebar-primary-items__end sidebar-primary__section">
|
||||
</div>
|
||||
|
||||
<div id="rtd-footer-container"></div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<main id="main-content" class="bd-main">
|
||||
|
||||
|
||||
<div class="bd-content">
|
||||
<div class="bd-article-container">
|
||||
|
||||
<div class="bd-header-article">
|
||||
<div class="header-article-items header-article__inner">
|
||||
|
||||
<div class="header-article-items__start">
|
||||
|
||||
<div class="header-article-item">
|
||||
|
||||
|
||||
|
||||
<nav aria-label="Breadcrumb">
|
||||
<ul class="bd-breadcrumbs">
|
||||
|
||||
<li class="breadcrumb-item breadcrumb-home">
|
||||
<a href="../index.html" class="nav-link" aria-label="Home">
|
||||
<i class="fa-solid fa-home"></i>
|
||||
</a>
|
||||
</li>
|
||||
<li class="breadcrumb-item active" aria-current="page">Overview:...</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div id="searchbox"></div>
|
||||
<article class="bd-article">
|
||||
|
||||
<h1>All modules for which code is available</h1>
|
||||
<ul><li><a href="categories/admin.html">categories.admin</a></li>
|
||||
<li><a href="categories/apps.html">categories.apps</a></li>
|
||||
<li><a href="categories/base.html">categories.base</a></li>
|
||||
<li><a href="categories/editor/templatetags/admin_tree_list_tags.html">categories.editor.templatetags.admin_tree_list_tags</a></li>
|
||||
<li><a href="categories/editor/tree_editor.html">categories.editor.tree_editor</a></li>
|
||||
<li><a href="categories/editor/utils.html">categories.editor.utils</a></li>
|
||||
<li><a href="categories/fields.html">categories.fields</a></li>
|
||||
<li><a href="categories/genericcollection.html">categories.genericcollection</a></li>
|
||||
<li><a href="categories/management/commands/add_category_fields.html">categories.management.commands.add_category_fields</a></li>
|
||||
<li><a href="categories/management/commands/drop_category_field.html">categories.management.commands.drop_category_field</a></li>
|
||||
<li><a href="categories/management/commands/import_categories.html">categories.management.commands.import_categories</a></li>
|
||||
<li><a href="categories/migration.html">categories.migration</a></li>
|
||||
<li><a href="categories/models.html">categories.models</a></li>
|
||||
<li><a href="categories/registration.html">categories.registration</a></li>
|
||||
<li><a href="categories/templatetags/category_tags.html">categories.templatetags.category_tags</a></li>
|
||||
<li><a href="categories/utils.html">categories.utils</a></li>
|
||||
<li><a href="categories/views.html">categories.views</a></li>
|
||||
</ul>
|
||||
|
||||
</article>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<footer class="prev-next-footer">
|
||||
|
||||
<div class="prev-next-area">
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="bd-sidebar-secondary bd-toc"></div>
|
||||
|
||||
|
||||
</div>
|
||||
<footer class="bd-footer-content">
|
||||
|
||||
</footer>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Scripts loaded after <body> so the DOM is not blocked -->
|
||||
<script src="../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
<script src="../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae"></script>
|
||||
|
||||
<footer class="bd-footer">
|
||||
<div class="bd-footer__inner bd-page-width">
|
||||
|
||||
<div class="footer-items__start">
|
||||
|
||||
<div class="footer-item">
|
||||
|
||||
<p class="copyright">
|
||||
|
||||
© Copyright 2010-2024, Corey Oordt.
|
||||
<br/>
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="footer-item">
|
||||
|
||||
<p class="sphinx-version">
|
||||
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.3.7.
|
||||
<br/>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="footer-items__end">
|
||||
|
||||
<div class="footer-item">
|
||||
<p class="theme-version">
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.15.2.
|
||||
</p></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
267
_sources/api/categories.admin.CategoryAdmin.rst.txt
Normal file
267
_sources/api/categories.admin.CategoryAdmin.rst.txt
Normal file
|
|
@ -0,0 +1,267 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.admin.CategoryAdmin
|
||||
|
||||
CategoryAdmin
|
||||
=============
|
||||
|
||||
.. currentmodule:: categories.admin
|
||||
|
||||
.. autoclass:: CategoryAdmin
|
||||
|
||||
|
||||
|
||||
.. rubric:: Methods
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~CategoryAdmin.action_checkbox
|
||||
|
||||
~CategoryAdmin.activate
|
||||
|
||||
~CategoryAdmin.add_view
|
||||
|
||||
~CategoryAdmin.change_view
|
||||
|
||||
~CategoryAdmin.changeform_view
|
||||
|
||||
~CategoryAdmin.changelist_view
|
||||
|
||||
~CategoryAdmin.check
|
||||
|
||||
~CategoryAdmin.construct_change_message
|
||||
|
||||
~CategoryAdmin.deactivate
|
||||
|
||||
~CategoryAdmin.delete_model
|
||||
|
||||
~CategoryAdmin.delete_queryset
|
||||
|
||||
~CategoryAdmin.delete_view
|
||||
|
||||
~CategoryAdmin.formfield_for_choice_field
|
||||
|
||||
~CategoryAdmin.formfield_for_dbfield
|
||||
|
||||
~CategoryAdmin.formfield_for_foreignkey
|
||||
|
||||
~CategoryAdmin.formfield_for_manytomany
|
||||
|
||||
~CategoryAdmin.get_action
|
||||
|
||||
~CategoryAdmin.get_action_choices
|
||||
|
||||
~CategoryAdmin.get_actions
|
||||
|
||||
~CategoryAdmin.get_autocomplete_fields
|
||||
|
||||
~CategoryAdmin.get_changeform_initial_data
|
||||
|
||||
~CategoryAdmin.get_changelist
|
||||
|
||||
~CategoryAdmin.get_changelist_form
|
||||
|
||||
~CategoryAdmin.get_changelist_formset
|
||||
|
||||
~CategoryAdmin.get_changelist_instance
|
||||
|
||||
~CategoryAdmin.get_deleted_objects
|
||||
|
||||
~CategoryAdmin.get_empty_value_display
|
||||
|
||||
~CategoryAdmin.get_exclude
|
||||
|
||||
~CategoryAdmin.get_field_queryset
|
||||
|
||||
~CategoryAdmin.get_fields
|
||||
|
||||
~CategoryAdmin.get_fieldsets
|
||||
|
||||
~CategoryAdmin.get_form
|
||||
|
||||
~CategoryAdmin.get_formsets_with_inlines
|
||||
|
||||
~CategoryAdmin.get_inline_formsets
|
||||
|
||||
~CategoryAdmin.get_inline_instances
|
||||
|
||||
~CategoryAdmin.get_inlines
|
||||
|
||||
~CategoryAdmin.get_list_display
|
||||
|
||||
~CategoryAdmin.get_list_display_links
|
||||
|
||||
~CategoryAdmin.get_list_filter
|
||||
|
||||
~CategoryAdmin.get_list_select_related
|
||||
|
||||
~CategoryAdmin.get_model_perms
|
||||
|
||||
~CategoryAdmin.get_object
|
||||
|
||||
~CategoryAdmin.get_ordering
|
||||
|
||||
~CategoryAdmin.get_paginator
|
||||
|
||||
~CategoryAdmin.get_prepopulated_fields
|
||||
|
||||
~CategoryAdmin.get_preserved_filters
|
||||
|
||||
~CategoryAdmin.get_queryset
|
||||
|
||||
~CategoryAdmin.get_readonly_fields
|
||||
|
||||
~CategoryAdmin.get_search_fields
|
||||
|
||||
~CategoryAdmin.get_search_results
|
||||
|
||||
~CategoryAdmin.get_sortable_by
|
||||
|
||||
~CategoryAdmin.get_urls
|
||||
|
||||
~CategoryAdmin.get_view_on_site_url
|
||||
|
||||
~CategoryAdmin.has_add_permission
|
||||
|
||||
~CategoryAdmin.has_change_permission
|
||||
|
||||
~CategoryAdmin.has_delete_permission
|
||||
|
||||
~CategoryAdmin.has_module_permission
|
||||
|
||||
~CategoryAdmin.has_view_or_change_permission
|
||||
|
||||
~CategoryAdmin.has_view_permission
|
||||
|
||||
~CategoryAdmin.history_view
|
||||
|
||||
~CategoryAdmin.log_addition
|
||||
|
||||
~CategoryAdmin.log_change
|
||||
|
||||
~CategoryAdmin.log_deletion
|
||||
|
||||
~CategoryAdmin.lookup_allowed
|
||||
|
||||
~CategoryAdmin.message_user
|
||||
|
||||
~CategoryAdmin.old_changelist_view
|
||||
|
||||
~CategoryAdmin.render_change_form
|
||||
|
||||
~CategoryAdmin.render_delete_form
|
||||
|
||||
~CategoryAdmin.response_action
|
||||
|
||||
~CategoryAdmin.response_add
|
||||
|
||||
~CategoryAdmin.response_change
|
||||
|
||||
~CategoryAdmin.response_delete
|
||||
|
||||
~CategoryAdmin.response_post_save_add
|
||||
|
||||
~CategoryAdmin.response_post_save_change
|
||||
|
||||
~CategoryAdmin.save_form
|
||||
|
||||
~CategoryAdmin.save_formset
|
||||
|
||||
~CategoryAdmin.save_model
|
||||
|
||||
~CategoryAdmin.save_related
|
||||
|
||||
~CategoryAdmin.to_field_allowed
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Attributes
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~CategoryAdmin.actions
|
||||
|
||||
~CategoryAdmin.actions_on_bottom
|
||||
|
||||
~CategoryAdmin.actions_on_top
|
||||
|
||||
~CategoryAdmin.actions_selection_counter
|
||||
|
||||
~CategoryAdmin.add_form_template
|
||||
|
||||
~CategoryAdmin.autocomplete_fields
|
||||
|
||||
~CategoryAdmin.change_form_template
|
||||
|
||||
~CategoryAdmin.change_list_template
|
||||
|
||||
~CategoryAdmin.date_hierarchy
|
||||
|
||||
~CategoryAdmin.delete_confirmation_template
|
||||
|
||||
~CategoryAdmin.delete_selected_confirmation_template
|
||||
|
||||
~CategoryAdmin.exclude
|
||||
|
||||
~CategoryAdmin.fields
|
||||
|
||||
~CategoryAdmin.filter_horizontal
|
||||
|
||||
~CategoryAdmin.filter_vertical
|
||||
|
||||
~CategoryAdmin.formfield_overrides
|
||||
|
||||
~CategoryAdmin.inlines
|
||||
|
||||
~CategoryAdmin.list_display
|
||||
|
||||
~CategoryAdmin.list_display_links
|
||||
|
||||
~CategoryAdmin.list_editable
|
||||
|
||||
~CategoryAdmin.list_filter
|
||||
|
||||
~CategoryAdmin.list_max_show_all
|
||||
|
||||
~CategoryAdmin.list_per_page
|
||||
|
||||
~CategoryAdmin.list_select_related
|
||||
|
||||
~CategoryAdmin.media
|
||||
|
||||
~CategoryAdmin.object_history_template
|
||||
|
||||
~CategoryAdmin.ordering
|
||||
|
||||
~CategoryAdmin.popup_response_template
|
||||
|
||||
~CategoryAdmin.prepopulated_fields
|
||||
|
||||
~CategoryAdmin.preserve_filters
|
||||
|
||||
~CategoryAdmin.radio_fields
|
||||
|
||||
~CategoryAdmin.raw_id_fields
|
||||
|
||||
~CategoryAdmin.readonly_fields
|
||||
|
||||
~CategoryAdmin.save_as
|
||||
|
||||
~CategoryAdmin.save_as_continue
|
||||
|
||||
~CategoryAdmin.save_on_top
|
||||
|
||||
~CategoryAdmin.search_fields
|
||||
|
||||
~CategoryAdmin.show_full_result_count
|
||||
|
||||
~CategoryAdmin.sortable_by
|
||||
|
||||
~CategoryAdmin.urls
|
||||
|
||||
~CategoryAdmin.view_on_site
|
||||
|
||||
|
||||
83
_sources/api/categories.admin.CategoryAdminForm.rst.txt
Normal file
83
_sources/api/categories.admin.CategoryAdminForm.rst.txt
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.admin.CategoryAdminForm
|
||||
|
||||
CategoryAdminForm
|
||||
=================
|
||||
|
||||
.. currentmodule:: categories.admin
|
||||
|
||||
.. autoclass:: CategoryAdminForm
|
||||
|
||||
|
||||
|
||||
.. rubric:: Methods
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~CategoryAdminForm.add_error
|
||||
|
||||
~CategoryAdminForm.add_initial_prefix
|
||||
|
||||
~CategoryAdminForm.add_prefix
|
||||
|
||||
~CategoryAdminForm.as_p
|
||||
|
||||
~CategoryAdminForm.as_table
|
||||
|
||||
~CategoryAdminForm.as_ul
|
||||
|
||||
~CategoryAdminForm.clean
|
||||
|
||||
~CategoryAdminForm.clean_alternate_title
|
||||
|
||||
~CategoryAdminForm.clean_slug
|
||||
|
||||
~CategoryAdminForm.full_clean
|
||||
|
||||
~CategoryAdminForm.get_initial_for_field
|
||||
|
||||
~CategoryAdminForm.has_changed
|
||||
|
||||
~CategoryAdminForm.has_error
|
||||
|
||||
~CategoryAdminForm.hidden_fields
|
||||
|
||||
~CategoryAdminForm.is_multipart
|
||||
|
||||
~CategoryAdminForm.is_valid
|
||||
|
||||
~CategoryAdminForm.non_field_errors
|
||||
|
||||
~CategoryAdminForm.order_fields
|
||||
|
||||
~CategoryAdminForm.save
|
||||
|
||||
~CategoryAdminForm.validate_unique
|
||||
|
||||
~CategoryAdminForm.visible_fields
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Attributes
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~CategoryAdminForm.changed_data
|
||||
|
||||
~CategoryAdminForm.default_renderer
|
||||
|
||||
~CategoryAdminForm.errors
|
||||
|
||||
~CategoryAdminForm.field_order
|
||||
|
||||
~CategoryAdminForm.media
|
||||
|
||||
~CategoryAdminForm.prefix
|
||||
|
||||
~CategoryAdminForm.use_required_attribute
|
||||
|
||||
|
||||
143
_sources/api/categories.admin.InlineCategoryRelation.rst.txt
Normal file
143
_sources/api/categories.admin.InlineCategoryRelation.rst.txt
Normal file
|
|
@ -0,0 +1,143 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.admin.InlineCategoryRelation
|
||||
|
||||
InlineCategoryRelation
|
||||
======================
|
||||
|
||||
.. currentmodule:: categories.admin
|
||||
|
||||
.. autoclass:: InlineCategoryRelation
|
||||
|
||||
|
||||
|
||||
.. rubric:: Methods
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~InlineCategoryRelation.check
|
||||
|
||||
~InlineCategoryRelation.formfield_for_choice_field
|
||||
|
||||
~InlineCategoryRelation.formfield_for_dbfield
|
||||
|
||||
~InlineCategoryRelation.formfield_for_foreignkey
|
||||
|
||||
~InlineCategoryRelation.formfield_for_manytomany
|
||||
|
||||
~InlineCategoryRelation.get_autocomplete_fields
|
||||
|
||||
~InlineCategoryRelation.get_content_types
|
||||
|
||||
~InlineCategoryRelation.get_empty_value_display
|
||||
|
||||
~InlineCategoryRelation.get_exclude
|
||||
|
||||
~InlineCategoryRelation.get_extra
|
||||
|
||||
~InlineCategoryRelation.get_field_queryset
|
||||
|
||||
~InlineCategoryRelation.get_fields
|
||||
|
||||
~InlineCategoryRelation.get_fieldsets
|
||||
|
||||
~InlineCategoryRelation.get_formset
|
||||
|
||||
~InlineCategoryRelation.get_inlines
|
||||
|
||||
~InlineCategoryRelation.get_max_num
|
||||
|
||||
~InlineCategoryRelation.get_min_num
|
||||
|
||||
~InlineCategoryRelation.get_ordering
|
||||
|
||||
~InlineCategoryRelation.get_prepopulated_fields
|
||||
|
||||
~InlineCategoryRelation.get_queryset
|
||||
|
||||
~InlineCategoryRelation.get_readonly_fields
|
||||
|
||||
~InlineCategoryRelation.get_sortable_by
|
||||
|
||||
~InlineCategoryRelation.get_view_on_site_url
|
||||
|
||||
~InlineCategoryRelation.has_add_permission
|
||||
|
||||
~InlineCategoryRelation.has_change_permission
|
||||
|
||||
~InlineCategoryRelation.has_delete_permission
|
||||
|
||||
~InlineCategoryRelation.has_module_permission
|
||||
|
||||
~InlineCategoryRelation.has_view_or_change_permission
|
||||
|
||||
~InlineCategoryRelation.has_view_permission
|
||||
|
||||
~InlineCategoryRelation.lookup_allowed
|
||||
|
||||
~InlineCategoryRelation.to_field_allowed
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Attributes
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~InlineCategoryRelation.autocomplete_fields
|
||||
|
||||
~InlineCategoryRelation.can_delete
|
||||
|
||||
~InlineCategoryRelation.classes
|
||||
|
||||
~InlineCategoryRelation.ct_field
|
||||
|
||||
~InlineCategoryRelation.ct_fk_field
|
||||
|
||||
~InlineCategoryRelation.exclude
|
||||
|
||||
~InlineCategoryRelation.extra
|
||||
|
||||
~InlineCategoryRelation.fields
|
||||
|
||||
~InlineCategoryRelation.filter_horizontal
|
||||
|
||||
~InlineCategoryRelation.filter_vertical
|
||||
|
||||
~InlineCategoryRelation.fk_name
|
||||
|
||||
~InlineCategoryRelation.formfield_overrides
|
||||
|
||||
~InlineCategoryRelation.max_num
|
||||
|
||||
~InlineCategoryRelation.media
|
||||
|
||||
~InlineCategoryRelation.min_num
|
||||
|
||||
~InlineCategoryRelation.ordering
|
||||
|
||||
~InlineCategoryRelation.prepopulated_fields
|
||||
|
||||
~InlineCategoryRelation.radio_fields
|
||||
|
||||
~InlineCategoryRelation.raw_id_fields
|
||||
|
||||
~InlineCategoryRelation.readonly_fields
|
||||
|
||||
~InlineCategoryRelation.show_change_link
|
||||
|
||||
~InlineCategoryRelation.show_full_result_count
|
||||
|
||||
~InlineCategoryRelation.sortable_by
|
||||
|
||||
~InlineCategoryRelation.template
|
||||
|
||||
~InlineCategoryRelation.verbose_name
|
||||
|
||||
~InlineCategoryRelation.verbose_name_plural
|
||||
|
||||
~InlineCategoryRelation.view_on_site
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.admin.NullTreeNodeChoiceField
|
||||
|
||||
NullTreeNodeChoiceField
|
||||
=======================
|
||||
|
||||
.. currentmodule:: categories.admin
|
||||
|
||||
.. autoclass:: NullTreeNodeChoiceField
|
||||
|
||||
|
||||
|
||||
.. rubric:: Methods
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~NullTreeNodeChoiceField.bound_data
|
||||
|
||||
~NullTreeNodeChoiceField.clean
|
||||
|
||||
~NullTreeNodeChoiceField.get_bound_field
|
||||
|
||||
~NullTreeNodeChoiceField.get_limit_choices_to
|
||||
|
||||
~NullTreeNodeChoiceField.has_changed
|
||||
|
||||
~NullTreeNodeChoiceField.label_from_instance
|
||||
|
||||
~NullTreeNodeChoiceField.prepare_value
|
||||
|
||||
~NullTreeNodeChoiceField.run_validators
|
||||
|
||||
~NullTreeNodeChoiceField.to_python
|
||||
|
||||
~NullTreeNodeChoiceField.valid_value
|
||||
|
||||
~NullTreeNodeChoiceField.validate
|
||||
|
||||
~NullTreeNodeChoiceField.widget_attrs
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Attributes
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~NullTreeNodeChoiceField.choices
|
||||
|
||||
~NullTreeNodeChoiceField.default_error_messages
|
||||
|
||||
~NullTreeNodeChoiceField.default_validators
|
||||
|
||||
~NullTreeNodeChoiceField.empty_values
|
||||
|
||||
~NullTreeNodeChoiceField.queryset
|
||||
|
||||
|
||||
24
_sources/api/categories.admin.rst.txt
Normal file
24
_sources/api/categories.admin.rst.txt
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.admin
|
||||
|
||||
admin
|
||||
=====
|
||||
.. currentmodule:: categories.admin
|
||||
|
||||
|
||||
.. automodule:: categories.admin
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Classes
|
||||
|
||||
.. autosummary::
|
||||
:toctree:
|
||||
|
||||
CategoryAdmin
|
||||
CategoryAdminForm
|
||||
InlineCategoryRelation
|
||||
NullTreeNodeChoiceField
|
||||
14
_sources/api/categories.api.rst.txt
Normal file
14
_sources/api/categories.api.rst.txt
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.api
|
||||
|
||||
api
|
||||
===
|
||||
.. currentmodule:: categories.api
|
||||
|
||||
|
||||
.. automodule:: categories.api
|
||||
|
||||
|
||||
|
||||
|
||||
43
_sources/api/categories.apps.CategoriesConfig.rst.txt
Normal file
43
_sources/api/categories.apps.CategoriesConfig.rst.txt
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.apps.CategoriesConfig
|
||||
|
||||
CategoriesConfig
|
||||
================
|
||||
|
||||
.. currentmodule:: categories.apps
|
||||
|
||||
.. autoclass:: CategoriesConfig
|
||||
|
||||
|
||||
|
||||
.. rubric:: Methods
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~CategoriesConfig.create
|
||||
|
||||
~CategoriesConfig.get_model
|
||||
|
||||
~CategoriesConfig.get_models
|
||||
|
||||
~CategoriesConfig.import_models
|
||||
|
||||
~CategoriesConfig.ready
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Attributes
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~CategoriesConfig.default_auto_field
|
||||
|
||||
~CategoriesConfig.name
|
||||
|
||||
~CategoriesConfig.verbose_name
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.apps.handle_class_prepared
|
||||
|
||||
handle\_class\_prepared
|
||||
=======================
|
||||
|
||||
.. currentmodule:: categories.apps
|
||||
.. autofunction:: handle_class_prepared
|
||||
28
_sources/api/categories.apps.rst.txt
Normal file
28
_sources/api/categories.apps.rst.txt
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.apps
|
||||
|
||||
apps
|
||||
====
|
||||
.. currentmodule:: categories.apps
|
||||
|
||||
|
||||
.. automodule:: categories.apps
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Functions
|
||||
|
||||
.. autosummary::
|
||||
:toctree:
|
||||
|
||||
handle_class_prepared
|
||||
|
||||
.. rubric:: Classes
|
||||
|
||||
.. autosummary::
|
||||
:toctree:
|
||||
|
||||
CategoriesConfig
|
||||
109
_sources/api/categories.base.CategoryBase.rst.txt
Normal file
109
_sources/api/categories.base.CategoryBase.rst.txt
Normal file
|
|
@ -0,0 +1,109 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.base.CategoryBase
|
||||
|
||||
CategoryBase
|
||||
============
|
||||
|
||||
.. currentmodule:: categories.base
|
||||
|
||||
.. autoclass:: CategoryBase
|
||||
|
||||
|
||||
|
||||
.. rubric:: Methods
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~CategoryBase.check
|
||||
|
||||
~CategoryBase.clean
|
||||
|
||||
~CategoryBase.clean_fields
|
||||
|
||||
~CategoryBase.date_error_message
|
||||
|
||||
~CategoryBase.delete
|
||||
|
||||
~CategoryBase.from_db
|
||||
|
||||
~CategoryBase.full_clean
|
||||
|
||||
~CategoryBase.get_ancestors
|
||||
|
||||
~CategoryBase.get_children
|
||||
|
||||
~CategoryBase.get_deferred_fields
|
||||
|
||||
~CategoryBase.get_descendant_count
|
||||
|
||||
~CategoryBase.get_descendants
|
||||
|
||||
~CategoryBase.get_family
|
||||
|
||||
~CategoryBase.get_leafnodes
|
||||
|
||||
~CategoryBase.get_level
|
||||
|
||||
~CategoryBase.get_next_sibling
|
||||
|
||||
~CategoryBase.get_previous_sibling
|
||||
|
||||
~CategoryBase.get_root
|
||||
|
||||
~CategoryBase.get_siblings
|
||||
|
||||
~CategoryBase.insert_at
|
||||
|
||||
~CategoryBase.is_ancestor_of
|
||||
|
||||
~CategoryBase.is_child_node
|
||||
|
||||
~CategoryBase.is_descendant_of
|
||||
|
||||
~CategoryBase.is_leaf_node
|
||||
|
||||
~CategoryBase.is_root_node
|
||||
|
||||
~CategoryBase.move_to
|
||||
|
||||
~CategoryBase.prepare_database_save
|
||||
|
||||
~CategoryBase.refresh_from_db
|
||||
|
||||
~CategoryBase.save
|
||||
|
||||
~CategoryBase.save_base
|
||||
|
||||
~CategoryBase.serializable_value
|
||||
|
||||
~CategoryBase.unique_error_message
|
||||
|
||||
~CategoryBase.validate_unique
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Attributes
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~CategoryBase.active
|
||||
|
||||
~CategoryBase.name
|
||||
|
||||
~CategoryBase.objects
|
||||
|
||||
~CategoryBase.parent
|
||||
|
||||
~CategoryBase.parent_id
|
||||
|
||||
~CategoryBase.pk
|
||||
|
||||
~CategoryBase.slug
|
||||
|
||||
~CategoryBase.tree
|
||||
|
||||
|
||||
267
_sources/api/categories.base.CategoryBaseAdmin.rst.txt
Normal file
267
_sources/api/categories.base.CategoryBaseAdmin.rst.txt
Normal file
|
|
@ -0,0 +1,267 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.base.CategoryBaseAdmin
|
||||
|
||||
CategoryBaseAdmin
|
||||
=================
|
||||
|
||||
.. currentmodule:: categories.base
|
||||
|
||||
.. autoclass:: CategoryBaseAdmin
|
||||
|
||||
|
||||
|
||||
.. rubric:: Methods
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~CategoryBaseAdmin.action_checkbox
|
||||
|
||||
~CategoryBaseAdmin.activate
|
||||
|
||||
~CategoryBaseAdmin.add_view
|
||||
|
||||
~CategoryBaseAdmin.change_view
|
||||
|
||||
~CategoryBaseAdmin.changeform_view
|
||||
|
||||
~CategoryBaseAdmin.changelist_view
|
||||
|
||||
~CategoryBaseAdmin.check
|
||||
|
||||
~CategoryBaseAdmin.construct_change_message
|
||||
|
||||
~CategoryBaseAdmin.deactivate
|
||||
|
||||
~CategoryBaseAdmin.delete_model
|
||||
|
||||
~CategoryBaseAdmin.delete_queryset
|
||||
|
||||
~CategoryBaseAdmin.delete_view
|
||||
|
||||
~CategoryBaseAdmin.formfield_for_choice_field
|
||||
|
||||
~CategoryBaseAdmin.formfield_for_dbfield
|
||||
|
||||
~CategoryBaseAdmin.formfield_for_foreignkey
|
||||
|
||||
~CategoryBaseAdmin.formfield_for_manytomany
|
||||
|
||||
~CategoryBaseAdmin.get_action
|
||||
|
||||
~CategoryBaseAdmin.get_action_choices
|
||||
|
||||
~CategoryBaseAdmin.get_actions
|
||||
|
||||
~CategoryBaseAdmin.get_autocomplete_fields
|
||||
|
||||
~CategoryBaseAdmin.get_changeform_initial_data
|
||||
|
||||
~CategoryBaseAdmin.get_changelist
|
||||
|
||||
~CategoryBaseAdmin.get_changelist_form
|
||||
|
||||
~CategoryBaseAdmin.get_changelist_formset
|
||||
|
||||
~CategoryBaseAdmin.get_changelist_instance
|
||||
|
||||
~CategoryBaseAdmin.get_deleted_objects
|
||||
|
||||
~CategoryBaseAdmin.get_empty_value_display
|
||||
|
||||
~CategoryBaseAdmin.get_exclude
|
||||
|
||||
~CategoryBaseAdmin.get_field_queryset
|
||||
|
||||
~CategoryBaseAdmin.get_fields
|
||||
|
||||
~CategoryBaseAdmin.get_fieldsets
|
||||
|
||||
~CategoryBaseAdmin.get_form
|
||||
|
||||
~CategoryBaseAdmin.get_formsets_with_inlines
|
||||
|
||||
~CategoryBaseAdmin.get_inline_formsets
|
||||
|
||||
~CategoryBaseAdmin.get_inline_instances
|
||||
|
||||
~CategoryBaseAdmin.get_inlines
|
||||
|
||||
~CategoryBaseAdmin.get_list_display
|
||||
|
||||
~CategoryBaseAdmin.get_list_display_links
|
||||
|
||||
~CategoryBaseAdmin.get_list_filter
|
||||
|
||||
~CategoryBaseAdmin.get_list_select_related
|
||||
|
||||
~CategoryBaseAdmin.get_model_perms
|
||||
|
||||
~CategoryBaseAdmin.get_object
|
||||
|
||||
~CategoryBaseAdmin.get_ordering
|
||||
|
||||
~CategoryBaseAdmin.get_paginator
|
||||
|
||||
~CategoryBaseAdmin.get_prepopulated_fields
|
||||
|
||||
~CategoryBaseAdmin.get_preserved_filters
|
||||
|
||||
~CategoryBaseAdmin.get_queryset
|
||||
|
||||
~CategoryBaseAdmin.get_readonly_fields
|
||||
|
||||
~CategoryBaseAdmin.get_search_fields
|
||||
|
||||
~CategoryBaseAdmin.get_search_results
|
||||
|
||||
~CategoryBaseAdmin.get_sortable_by
|
||||
|
||||
~CategoryBaseAdmin.get_urls
|
||||
|
||||
~CategoryBaseAdmin.get_view_on_site_url
|
||||
|
||||
~CategoryBaseAdmin.has_add_permission
|
||||
|
||||
~CategoryBaseAdmin.has_change_permission
|
||||
|
||||
~CategoryBaseAdmin.has_delete_permission
|
||||
|
||||
~CategoryBaseAdmin.has_module_permission
|
||||
|
||||
~CategoryBaseAdmin.has_view_or_change_permission
|
||||
|
||||
~CategoryBaseAdmin.has_view_permission
|
||||
|
||||
~CategoryBaseAdmin.history_view
|
||||
|
||||
~CategoryBaseAdmin.log_addition
|
||||
|
||||
~CategoryBaseAdmin.log_change
|
||||
|
||||
~CategoryBaseAdmin.log_deletion
|
||||
|
||||
~CategoryBaseAdmin.lookup_allowed
|
||||
|
||||
~CategoryBaseAdmin.message_user
|
||||
|
||||
~CategoryBaseAdmin.old_changelist_view
|
||||
|
||||
~CategoryBaseAdmin.render_change_form
|
||||
|
||||
~CategoryBaseAdmin.render_delete_form
|
||||
|
||||
~CategoryBaseAdmin.response_action
|
||||
|
||||
~CategoryBaseAdmin.response_add
|
||||
|
||||
~CategoryBaseAdmin.response_change
|
||||
|
||||
~CategoryBaseAdmin.response_delete
|
||||
|
||||
~CategoryBaseAdmin.response_post_save_add
|
||||
|
||||
~CategoryBaseAdmin.response_post_save_change
|
||||
|
||||
~CategoryBaseAdmin.save_form
|
||||
|
||||
~CategoryBaseAdmin.save_formset
|
||||
|
||||
~CategoryBaseAdmin.save_model
|
||||
|
||||
~CategoryBaseAdmin.save_related
|
||||
|
||||
~CategoryBaseAdmin.to_field_allowed
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Attributes
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~CategoryBaseAdmin.actions
|
||||
|
||||
~CategoryBaseAdmin.actions_on_bottom
|
||||
|
||||
~CategoryBaseAdmin.actions_on_top
|
||||
|
||||
~CategoryBaseAdmin.actions_selection_counter
|
||||
|
||||
~CategoryBaseAdmin.add_form_template
|
||||
|
||||
~CategoryBaseAdmin.autocomplete_fields
|
||||
|
||||
~CategoryBaseAdmin.change_form_template
|
||||
|
||||
~CategoryBaseAdmin.change_list_template
|
||||
|
||||
~CategoryBaseAdmin.date_hierarchy
|
||||
|
||||
~CategoryBaseAdmin.delete_confirmation_template
|
||||
|
||||
~CategoryBaseAdmin.delete_selected_confirmation_template
|
||||
|
||||
~CategoryBaseAdmin.exclude
|
||||
|
||||
~CategoryBaseAdmin.fields
|
||||
|
||||
~CategoryBaseAdmin.filter_horizontal
|
||||
|
||||
~CategoryBaseAdmin.filter_vertical
|
||||
|
||||
~CategoryBaseAdmin.formfield_overrides
|
||||
|
||||
~CategoryBaseAdmin.inlines
|
||||
|
||||
~CategoryBaseAdmin.list_display
|
||||
|
||||
~CategoryBaseAdmin.list_display_links
|
||||
|
||||
~CategoryBaseAdmin.list_editable
|
||||
|
||||
~CategoryBaseAdmin.list_filter
|
||||
|
||||
~CategoryBaseAdmin.list_max_show_all
|
||||
|
||||
~CategoryBaseAdmin.list_per_page
|
||||
|
||||
~CategoryBaseAdmin.list_select_related
|
||||
|
||||
~CategoryBaseAdmin.media
|
||||
|
||||
~CategoryBaseAdmin.object_history_template
|
||||
|
||||
~CategoryBaseAdmin.ordering
|
||||
|
||||
~CategoryBaseAdmin.popup_response_template
|
||||
|
||||
~CategoryBaseAdmin.prepopulated_fields
|
||||
|
||||
~CategoryBaseAdmin.preserve_filters
|
||||
|
||||
~CategoryBaseAdmin.radio_fields
|
||||
|
||||
~CategoryBaseAdmin.raw_id_fields
|
||||
|
||||
~CategoryBaseAdmin.readonly_fields
|
||||
|
||||
~CategoryBaseAdmin.save_as
|
||||
|
||||
~CategoryBaseAdmin.save_as_continue
|
||||
|
||||
~CategoryBaseAdmin.save_on_top
|
||||
|
||||
~CategoryBaseAdmin.search_fields
|
||||
|
||||
~CategoryBaseAdmin.show_full_result_count
|
||||
|
||||
~CategoryBaseAdmin.sortable_by
|
||||
|
||||
~CategoryBaseAdmin.urls
|
||||
|
||||
~CategoryBaseAdmin.view_on_site
|
||||
|
||||
|
||||
81
_sources/api/categories.base.CategoryBaseAdminForm.rst.txt
Normal file
81
_sources/api/categories.base.CategoryBaseAdminForm.rst.txt
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.base.CategoryBaseAdminForm
|
||||
|
||||
CategoryBaseAdminForm
|
||||
=====================
|
||||
|
||||
.. currentmodule:: categories.base
|
||||
|
||||
.. autoclass:: CategoryBaseAdminForm
|
||||
|
||||
|
||||
|
||||
.. rubric:: Methods
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~CategoryBaseAdminForm.add_error
|
||||
|
||||
~CategoryBaseAdminForm.add_initial_prefix
|
||||
|
||||
~CategoryBaseAdminForm.add_prefix
|
||||
|
||||
~CategoryBaseAdminForm.as_p
|
||||
|
||||
~CategoryBaseAdminForm.as_table
|
||||
|
||||
~CategoryBaseAdminForm.as_ul
|
||||
|
||||
~CategoryBaseAdminForm.clean
|
||||
|
||||
~CategoryBaseAdminForm.clean_slug
|
||||
|
||||
~CategoryBaseAdminForm.full_clean
|
||||
|
||||
~CategoryBaseAdminForm.get_initial_for_field
|
||||
|
||||
~CategoryBaseAdminForm.has_changed
|
||||
|
||||
~CategoryBaseAdminForm.has_error
|
||||
|
||||
~CategoryBaseAdminForm.hidden_fields
|
||||
|
||||
~CategoryBaseAdminForm.is_multipart
|
||||
|
||||
~CategoryBaseAdminForm.is_valid
|
||||
|
||||
~CategoryBaseAdminForm.non_field_errors
|
||||
|
||||
~CategoryBaseAdminForm.order_fields
|
||||
|
||||
~CategoryBaseAdminForm.save
|
||||
|
||||
~CategoryBaseAdminForm.validate_unique
|
||||
|
||||
~CategoryBaseAdminForm.visible_fields
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Attributes
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~CategoryBaseAdminForm.changed_data
|
||||
|
||||
~CategoryBaseAdminForm.default_renderer
|
||||
|
||||
~CategoryBaseAdminForm.errors
|
||||
|
||||
~CategoryBaseAdminForm.field_order
|
||||
|
||||
~CategoryBaseAdminForm.media
|
||||
|
||||
~CategoryBaseAdminForm.prefix
|
||||
|
||||
~CategoryBaseAdminForm.use_required_attribute
|
||||
|
||||
|
||||
133
_sources/api/categories.base.CategoryManager.rst.txt
Normal file
133
_sources/api/categories.base.CategoryManager.rst.txt
Normal file
|
|
@ -0,0 +1,133 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.base.CategoryManager
|
||||
|
||||
CategoryManager
|
||||
===============
|
||||
|
||||
.. currentmodule:: categories.base
|
||||
|
||||
.. autoclass:: CategoryManager
|
||||
|
||||
|
||||
|
||||
.. rubric:: Methods
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~CategoryManager.active
|
||||
|
||||
~CategoryManager.aggregate
|
||||
|
||||
~CategoryManager.alias
|
||||
|
||||
~CategoryManager.all
|
||||
|
||||
~CategoryManager.annotate
|
||||
|
||||
~CategoryManager.bulk_create
|
||||
|
||||
~CategoryManager.bulk_update
|
||||
|
||||
~CategoryManager.check
|
||||
|
||||
~CategoryManager.complex_filter
|
||||
|
||||
~CategoryManager.contribute_to_class
|
||||
|
||||
~CategoryManager.count
|
||||
|
||||
~CategoryManager.create
|
||||
|
||||
~CategoryManager.dates
|
||||
|
||||
~CategoryManager.datetimes
|
||||
|
||||
~CategoryManager.db_manager
|
||||
|
||||
~CategoryManager.deconstruct
|
||||
|
||||
~CategoryManager.defer
|
||||
|
||||
~CategoryManager.difference
|
||||
|
||||
~CategoryManager.distinct
|
||||
|
||||
~CategoryManager.earliest
|
||||
|
||||
~CategoryManager.exclude
|
||||
|
||||
~CategoryManager.exists
|
||||
|
||||
~CategoryManager.explain
|
||||
|
||||
~CategoryManager.extra
|
||||
|
||||
~CategoryManager.filter
|
||||
|
||||
~CategoryManager.first
|
||||
|
||||
~CategoryManager.from_queryset
|
||||
|
||||
~CategoryManager.get
|
||||
|
||||
~CategoryManager.get_or_create
|
||||
|
||||
~CategoryManager.get_queryset
|
||||
|
||||
~CategoryManager.in_bulk
|
||||
|
||||
~CategoryManager.intersection
|
||||
|
||||
~CategoryManager.iterator
|
||||
|
||||
~CategoryManager.last
|
||||
|
||||
~CategoryManager.latest
|
||||
|
||||
~CategoryManager.none
|
||||
|
||||
~CategoryManager.only
|
||||
|
||||
~CategoryManager.order_by
|
||||
|
||||
~CategoryManager.prefetch_related
|
||||
|
||||
~CategoryManager.raw
|
||||
|
||||
~CategoryManager.reverse
|
||||
|
||||
~CategoryManager.select_for_update
|
||||
|
||||
~CategoryManager.select_related
|
||||
|
||||
~CategoryManager.union
|
||||
|
||||
~CategoryManager.update
|
||||
|
||||
~CategoryManager.update_or_create
|
||||
|
||||
~CategoryManager.using
|
||||
|
||||
~CategoryManager.values
|
||||
|
||||
~CategoryManager.values_list
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Attributes
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~CategoryManager.auto_created
|
||||
|
||||
~CategoryManager.creation_counter
|
||||
|
||||
~CategoryManager.db
|
||||
|
||||
~CategoryManager.use_in_migrations
|
||||
|
||||
|
||||
24
_sources/api/categories.base.rst.txt
Normal file
24
_sources/api/categories.base.rst.txt
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.base
|
||||
|
||||
base
|
||||
====
|
||||
.. currentmodule:: categories.base
|
||||
|
||||
|
||||
.. automodule:: categories.base
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Classes
|
||||
|
||||
.. autosummary::
|
||||
:toctree:
|
||||
|
||||
CategoryBase
|
||||
CategoryBaseAdmin
|
||||
CategoryBaseAdminForm
|
||||
CategoryManager
|
||||
14
_sources/api/categories.editor.models.rst.txt
Normal file
14
_sources/api/categories.editor.models.rst.txt
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.editor.models
|
||||
|
||||
models
|
||||
======
|
||||
.. currentmodule:: categories.editor.models
|
||||
|
||||
|
||||
.. automodule:: categories.editor.models
|
||||
|
||||
|
||||
|
||||
|
||||
27
_sources/api/categories.editor.rst.txt
Normal file
27
_sources/api/categories.editor.rst.txt
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.editor
|
||||
|
||||
editor
|
||||
======
|
||||
.. currentmodule:: categories.editor
|
||||
|
||||
|
||||
.. automodule:: categories.editor
|
||||
|
||||
|
||||
|
||||
.. rubric:: Submodules
|
||||
|
||||
.. autosummary::
|
||||
:toctree:
|
||||
:recursive:
|
||||
|
||||
categories.editor.models
|
||||
categories.editor.settings
|
||||
categories.editor.templatetags
|
||||
categories.editor.tree_editor
|
||||
categories.editor.utils
|
||||
|
||||
|
||||
|
||||
14
_sources/api/categories.editor.settings.rst.txt
Normal file
14
_sources/api/categories.editor.settings.rst.txt
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.editor.settings
|
||||
|
||||
settings
|
||||
========
|
||||
.. currentmodule:: categories.editor.settings
|
||||
|
||||
|
||||
.. automodule:: categories.editor.settings
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.editor.templatetags.admin_tree_list_tags.TreeList
|
||||
|
||||
TreeList
|
||||
========
|
||||
|
||||
.. currentmodule:: categories.editor.templatetags.admin_tree_list_tags
|
||||
|
||||
.. autoclass:: TreeList
|
||||
|
||||
|
||||
|
||||
.. rubric:: Methods
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~TreeList.append
|
||||
|
||||
~TreeList.clear
|
||||
|
||||
~TreeList.copy
|
||||
|
||||
~TreeList.count
|
||||
|
||||
~TreeList.extend
|
||||
|
||||
~TreeList.index
|
||||
|
||||
~TreeList.insert
|
||||
|
||||
~TreeList.pop
|
||||
|
||||
~TreeList.remove
|
||||
|
||||
~TreeList.reverse
|
||||
|
||||
~TreeList.sort
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.editor.templatetags.admin_tree_list_tags.get_empty_value_display
|
||||
|
||||
get\_empty\_value\_display
|
||||
==========================
|
||||
|
||||
.. currentmodule:: categories.editor.templatetags.admin_tree_list_tags
|
||||
.. autofunction:: get_empty_value_display
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.editor.templatetags.admin_tree_list_tags.items_for_tree_result
|
||||
|
||||
items\_for\_tree\_result
|
||||
========================
|
||||
|
||||
.. currentmodule:: categories.editor.templatetags.admin_tree_list_tags
|
||||
.. autofunction:: items_for_tree_result
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.editor.templatetags.admin_tree_list_tags.result_tree_list
|
||||
|
||||
result\_tree\_list
|
||||
==================
|
||||
|
||||
.. currentmodule:: categories.editor.templatetags.admin_tree_list_tags
|
||||
.. autofunction:: result_tree_list
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.editor.templatetags.admin_tree_list_tags
|
||||
|
||||
admin\_tree\_list\_tags
|
||||
=======================
|
||||
.. currentmodule:: categories.editor.templatetags.admin_tree_list_tags
|
||||
|
||||
|
||||
.. automodule:: categories.editor.templatetags.admin_tree_list_tags
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Functions
|
||||
|
||||
.. autosummary::
|
||||
:toctree:
|
||||
|
||||
get_empty_value_display
|
||||
items_for_tree_result
|
||||
result_tree_list
|
||||
tree_results
|
||||
|
||||
.. rubric:: Classes
|
||||
|
||||
.. autosummary::
|
||||
:toctree:
|
||||
|
||||
TreeList
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.editor.templatetags.admin_tree_list_tags.tree_results
|
||||
|
||||
tree\_results
|
||||
=============
|
||||
|
||||
.. currentmodule:: categories.editor.templatetags.admin_tree_list_tags
|
||||
.. autofunction:: tree_results
|
||||
23
_sources/api/categories.editor.templatetags.rst.txt
Normal file
23
_sources/api/categories.editor.templatetags.rst.txt
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.editor.templatetags
|
||||
|
||||
templatetags
|
||||
============
|
||||
.. currentmodule:: categories.editor.templatetags
|
||||
|
||||
|
||||
.. automodule:: categories.editor.templatetags
|
||||
|
||||
|
||||
|
||||
.. rubric:: Submodules
|
||||
|
||||
.. autosummary::
|
||||
:toctree:
|
||||
:recursive:
|
||||
|
||||
categories.editor.templatetags.admin_tree_list_tags
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.editor.tree_editor.TreeChangeList
|
||||
|
||||
TreeChangeList
|
||||
==============
|
||||
|
||||
.. currentmodule:: categories.editor.tree_editor
|
||||
|
||||
.. autoclass:: TreeChangeList
|
||||
|
||||
|
||||
|
||||
.. rubric:: Methods
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~TreeChangeList.apply_select_related
|
||||
|
||||
~TreeChangeList.get_filters
|
||||
|
||||
~TreeChangeList.get_filters_params
|
||||
|
||||
~TreeChangeList.get_ordering
|
||||
|
||||
~TreeChangeList.get_ordering_field
|
||||
|
||||
~TreeChangeList.get_ordering_field_columns
|
||||
|
||||
~TreeChangeList.get_query_string
|
||||
|
||||
~TreeChangeList.get_queryset
|
||||
|
||||
~TreeChangeList.get_results
|
||||
|
||||
~TreeChangeList.has_related_field_in_list_display
|
||||
|
||||
~TreeChangeList.url_for_result
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
263
_sources/api/categories.editor.tree_editor.TreeEditor.rst.txt
Normal file
263
_sources/api/categories.editor.tree_editor.TreeEditor.rst.txt
Normal file
|
|
@ -0,0 +1,263 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.editor.tree_editor.TreeEditor
|
||||
|
||||
TreeEditor
|
||||
==========
|
||||
|
||||
.. currentmodule:: categories.editor.tree_editor
|
||||
|
||||
.. autoclass:: TreeEditor
|
||||
|
||||
|
||||
|
||||
.. rubric:: Methods
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~TreeEditor.action_checkbox
|
||||
|
||||
~TreeEditor.add_view
|
||||
|
||||
~TreeEditor.change_view
|
||||
|
||||
~TreeEditor.changeform_view
|
||||
|
||||
~TreeEditor.changelist_view
|
||||
|
||||
~TreeEditor.check
|
||||
|
||||
~TreeEditor.construct_change_message
|
||||
|
||||
~TreeEditor.delete_model
|
||||
|
||||
~TreeEditor.delete_queryset
|
||||
|
||||
~TreeEditor.delete_view
|
||||
|
||||
~TreeEditor.formfield_for_choice_field
|
||||
|
||||
~TreeEditor.formfield_for_dbfield
|
||||
|
||||
~TreeEditor.formfield_for_foreignkey
|
||||
|
||||
~TreeEditor.formfield_for_manytomany
|
||||
|
||||
~TreeEditor.get_action
|
||||
|
||||
~TreeEditor.get_action_choices
|
||||
|
||||
~TreeEditor.get_actions
|
||||
|
||||
~TreeEditor.get_autocomplete_fields
|
||||
|
||||
~TreeEditor.get_changeform_initial_data
|
||||
|
||||
~TreeEditor.get_changelist
|
||||
|
||||
~TreeEditor.get_changelist_form
|
||||
|
||||
~TreeEditor.get_changelist_formset
|
||||
|
||||
~TreeEditor.get_changelist_instance
|
||||
|
||||
~TreeEditor.get_deleted_objects
|
||||
|
||||
~TreeEditor.get_empty_value_display
|
||||
|
||||
~TreeEditor.get_exclude
|
||||
|
||||
~TreeEditor.get_field_queryset
|
||||
|
||||
~TreeEditor.get_fields
|
||||
|
||||
~TreeEditor.get_fieldsets
|
||||
|
||||
~TreeEditor.get_form
|
||||
|
||||
~TreeEditor.get_formsets_with_inlines
|
||||
|
||||
~TreeEditor.get_inline_formsets
|
||||
|
||||
~TreeEditor.get_inline_instances
|
||||
|
||||
~TreeEditor.get_inlines
|
||||
|
||||
~TreeEditor.get_list_display
|
||||
|
||||
~TreeEditor.get_list_display_links
|
||||
|
||||
~TreeEditor.get_list_filter
|
||||
|
||||
~TreeEditor.get_list_select_related
|
||||
|
||||
~TreeEditor.get_model_perms
|
||||
|
||||
~TreeEditor.get_object
|
||||
|
||||
~TreeEditor.get_ordering
|
||||
|
||||
~TreeEditor.get_paginator
|
||||
|
||||
~TreeEditor.get_prepopulated_fields
|
||||
|
||||
~TreeEditor.get_preserved_filters
|
||||
|
||||
~TreeEditor.get_queryset
|
||||
|
||||
~TreeEditor.get_readonly_fields
|
||||
|
||||
~TreeEditor.get_search_fields
|
||||
|
||||
~TreeEditor.get_search_results
|
||||
|
||||
~TreeEditor.get_sortable_by
|
||||
|
||||
~TreeEditor.get_urls
|
||||
|
||||
~TreeEditor.get_view_on_site_url
|
||||
|
||||
~TreeEditor.has_add_permission
|
||||
|
||||
~TreeEditor.has_change_permission
|
||||
|
||||
~TreeEditor.has_delete_permission
|
||||
|
||||
~TreeEditor.has_module_permission
|
||||
|
||||
~TreeEditor.has_view_or_change_permission
|
||||
|
||||
~TreeEditor.has_view_permission
|
||||
|
||||
~TreeEditor.history_view
|
||||
|
||||
~TreeEditor.log_addition
|
||||
|
||||
~TreeEditor.log_change
|
||||
|
||||
~TreeEditor.log_deletion
|
||||
|
||||
~TreeEditor.lookup_allowed
|
||||
|
||||
~TreeEditor.message_user
|
||||
|
||||
~TreeEditor.old_changelist_view
|
||||
|
||||
~TreeEditor.render_change_form
|
||||
|
||||
~TreeEditor.render_delete_form
|
||||
|
||||
~TreeEditor.response_action
|
||||
|
||||
~TreeEditor.response_add
|
||||
|
||||
~TreeEditor.response_change
|
||||
|
||||
~TreeEditor.response_delete
|
||||
|
||||
~TreeEditor.response_post_save_add
|
||||
|
||||
~TreeEditor.response_post_save_change
|
||||
|
||||
~TreeEditor.save_form
|
||||
|
||||
~TreeEditor.save_formset
|
||||
|
||||
~TreeEditor.save_model
|
||||
|
||||
~TreeEditor.save_related
|
||||
|
||||
~TreeEditor.to_field_allowed
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Attributes
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~TreeEditor.actions
|
||||
|
||||
~TreeEditor.actions_on_bottom
|
||||
|
||||
~TreeEditor.actions_on_top
|
||||
|
||||
~TreeEditor.actions_selection_counter
|
||||
|
||||
~TreeEditor.add_form_template
|
||||
|
||||
~TreeEditor.autocomplete_fields
|
||||
|
||||
~TreeEditor.change_form_template
|
||||
|
||||
~TreeEditor.change_list_template
|
||||
|
||||
~TreeEditor.date_hierarchy
|
||||
|
||||
~TreeEditor.delete_confirmation_template
|
||||
|
||||
~TreeEditor.delete_selected_confirmation_template
|
||||
|
||||
~TreeEditor.exclude
|
||||
|
||||
~TreeEditor.fields
|
||||
|
||||
~TreeEditor.filter_horizontal
|
||||
|
||||
~TreeEditor.filter_vertical
|
||||
|
||||
~TreeEditor.formfield_overrides
|
||||
|
||||
~TreeEditor.inlines
|
||||
|
||||
~TreeEditor.list_display
|
||||
|
||||
~TreeEditor.list_display_links
|
||||
|
||||
~TreeEditor.list_editable
|
||||
|
||||
~TreeEditor.list_filter
|
||||
|
||||
~TreeEditor.list_max_show_all
|
||||
|
||||
~TreeEditor.list_per_page
|
||||
|
||||
~TreeEditor.list_select_related
|
||||
|
||||
~TreeEditor.media
|
||||
|
||||
~TreeEditor.object_history_template
|
||||
|
||||
~TreeEditor.ordering
|
||||
|
||||
~TreeEditor.popup_response_template
|
||||
|
||||
~TreeEditor.prepopulated_fields
|
||||
|
||||
~TreeEditor.preserve_filters
|
||||
|
||||
~TreeEditor.radio_fields
|
||||
|
||||
~TreeEditor.raw_id_fields
|
||||
|
||||
~TreeEditor.readonly_fields
|
||||
|
||||
~TreeEditor.save_as
|
||||
|
||||
~TreeEditor.save_as_continue
|
||||
|
||||
~TreeEditor.save_on_top
|
||||
|
||||
~TreeEditor.search_fields
|
||||
|
||||
~TreeEditor.show_full_result_count
|
||||
|
||||
~TreeEditor.sortable_by
|
||||
|
||||
~TreeEditor.urls
|
||||
|
||||
~TreeEditor.view_on_site
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,123 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.editor.tree_editor.TreeEditorQuerySet
|
||||
|
||||
TreeEditorQuerySet
|
||||
==================
|
||||
|
||||
.. currentmodule:: categories.editor.tree_editor
|
||||
|
||||
.. autoclass:: TreeEditorQuerySet
|
||||
|
||||
|
||||
|
||||
.. rubric:: Methods
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~TreeEditorQuerySet.aggregate
|
||||
|
||||
~TreeEditorQuerySet.alias
|
||||
|
||||
~TreeEditorQuerySet.all
|
||||
|
||||
~TreeEditorQuerySet.annotate
|
||||
|
||||
~TreeEditorQuerySet.as_manager
|
||||
|
||||
~TreeEditorQuerySet.bulk_create
|
||||
|
||||
~TreeEditorQuerySet.bulk_update
|
||||
|
||||
~TreeEditorQuerySet.complex_filter
|
||||
|
||||
~TreeEditorQuerySet.count
|
||||
|
||||
~TreeEditorQuerySet.create
|
||||
|
||||
~TreeEditorQuerySet.dates
|
||||
|
||||
~TreeEditorQuerySet.datetimes
|
||||
|
||||
~TreeEditorQuerySet.defer
|
||||
|
||||
~TreeEditorQuerySet.delete
|
||||
|
||||
~TreeEditorQuerySet.difference
|
||||
|
||||
~TreeEditorQuerySet.distinct
|
||||
|
||||
~TreeEditorQuerySet.earliest
|
||||
|
||||
~TreeEditorQuerySet.exclude
|
||||
|
||||
~TreeEditorQuerySet.exists
|
||||
|
||||
~TreeEditorQuerySet.explain
|
||||
|
||||
~TreeEditorQuerySet.extra
|
||||
|
||||
~TreeEditorQuerySet.filter
|
||||
|
||||
~TreeEditorQuerySet.first
|
||||
|
||||
~TreeEditorQuerySet.get
|
||||
|
||||
~TreeEditorQuerySet.get_or_create
|
||||
|
||||
~TreeEditorQuerySet.in_bulk
|
||||
|
||||
~TreeEditorQuerySet.intersection
|
||||
|
||||
~TreeEditorQuerySet.iterator
|
||||
|
||||
~TreeEditorQuerySet.last
|
||||
|
||||
~TreeEditorQuerySet.latest
|
||||
|
||||
~TreeEditorQuerySet.none
|
||||
|
||||
~TreeEditorQuerySet.only
|
||||
|
||||
~TreeEditorQuerySet.order_by
|
||||
|
||||
~TreeEditorQuerySet.prefetch_related
|
||||
|
||||
~TreeEditorQuerySet.raw
|
||||
|
||||
~TreeEditorQuerySet.resolve_expression
|
||||
|
||||
~TreeEditorQuerySet.reverse
|
||||
|
||||
~TreeEditorQuerySet.select_for_update
|
||||
|
||||
~TreeEditorQuerySet.select_related
|
||||
|
||||
~TreeEditorQuerySet.union
|
||||
|
||||
~TreeEditorQuerySet.update
|
||||
|
||||
~TreeEditorQuerySet.update_or_create
|
||||
|
||||
~TreeEditorQuerySet.using
|
||||
|
||||
~TreeEditorQuerySet.values
|
||||
|
||||
~TreeEditorQuerySet.values_list
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Attributes
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~TreeEditorQuerySet.db
|
||||
|
||||
~TreeEditorQuerySet.ordered
|
||||
|
||||
~TreeEditorQuerySet.query
|
||||
|
||||
|
||||
23
_sources/api/categories.editor.tree_editor.rst.txt
Normal file
23
_sources/api/categories.editor.tree_editor.rst.txt
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.editor.tree_editor
|
||||
|
||||
tree\_editor
|
||||
============
|
||||
.. currentmodule:: categories.editor.tree_editor
|
||||
|
||||
|
||||
.. automodule:: categories.editor.tree_editor
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Classes
|
||||
|
||||
.. autosummary::
|
||||
:toctree:
|
||||
|
||||
TreeChangeList
|
||||
TreeEditor
|
||||
TreeEditorQuerySet
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.editor.utils.display_for_field
|
||||
|
||||
display\_for\_field
|
||||
===================
|
||||
|
||||
.. currentmodule:: categories.editor.utils
|
||||
.. autofunction:: display_for_field
|
||||
21
_sources/api/categories.editor.utils.rst.txt
Normal file
21
_sources/api/categories.editor.utils.rst.txt
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.editor.utils
|
||||
|
||||
utils
|
||||
=====
|
||||
.. currentmodule:: categories.editor.utils
|
||||
|
||||
|
||||
.. automodule:: categories.editor.utils
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Functions
|
||||
|
||||
.. autosummary::
|
||||
:toctree:
|
||||
|
||||
display_for_field
|
||||
211
_sources/api/categories.fields.CategoryFKField.rst.txt
Normal file
211
_sources/api/categories.fields.CategoryFKField.rst.txt
Normal file
|
|
@ -0,0 +1,211 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.fields.CategoryFKField
|
||||
|
||||
CategoryFKField
|
||||
===============
|
||||
|
||||
.. currentmodule:: categories.fields
|
||||
|
||||
.. autoclass:: CategoryFKField
|
||||
|
||||
|
||||
|
||||
.. rubric:: Methods
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~CategoryFKField.cast_db_type
|
||||
|
||||
~CategoryFKField.check
|
||||
|
||||
~CategoryFKField.clean
|
||||
|
||||
~CategoryFKField.clone
|
||||
|
||||
~CategoryFKField.contribute_to_class
|
||||
|
||||
~CategoryFKField.contribute_to_related_class
|
||||
|
||||
~CategoryFKField.convert_empty_strings
|
||||
|
||||
~CategoryFKField.db_check
|
||||
|
||||
~CategoryFKField.db_parameters
|
||||
|
||||
~CategoryFKField.db_type
|
||||
|
||||
~CategoryFKField.db_type_parameters
|
||||
|
||||
~CategoryFKField.db_type_suffix
|
||||
|
||||
~CategoryFKField.deconstruct
|
||||
|
||||
~CategoryFKField.delete_cached_value
|
||||
|
||||
~CategoryFKField.do_related_class
|
||||
|
||||
~CategoryFKField.formfield
|
||||
|
||||
~CategoryFKField.get_attname
|
||||
|
||||
~CategoryFKField.get_attname_column
|
||||
|
||||
~CategoryFKField.get_cache_name
|
||||
|
||||
~CategoryFKField.get_cached_value
|
||||
|
||||
~CategoryFKField.get_choices
|
||||
|
||||
~CategoryFKField.get_col
|
||||
|
||||
~CategoryFKField.get_db_converters
|
||||
|
||||
~CategoryFKField.get_db_prep_save
|
||||
|
||||
~CategoryFKField.get_db_prep_value
|
||||
|
||||
~CategoryFKField.get_default
|
||||
|
||||
~CategoryFKField.get_extra_descriptor_filter
|
||||
|
||||
~CategoryFKField.get_extra_restriction
|
||||
|
||||
~CategoryFKField.get_filter_kwargs_for_object
|
||||
|
||||
~CategoryFKField.get_foreign_related_value
|
||||
|
||||
~CategoryFKField.get_forward_related_filter
|
||||
|
||||
~CategoryFKField.get_instance_value_for_fields
|
||||
|
||||
~CategoryFKField.get_internal_type
|
||||
|
||||
~CategoryFKField.get_joining_columns
|
||||
|
||||
~CategoryFKField.get_limit_choices_to
|
||||
|
||||
~CategoryFKField.get_local_related_value
|
||||
|
||||
~CategoryFKField.get_lookup
|
||||
|
||||
~CategoryFKField.get_lookups
|
||||
|
||||
~CategoryFKField.get_path_info
|
||||
|
||||
~CategoryFKField.get_pk_value_on_save
|
||||
|
||||
~CategoryFKField.get_prep_value
|
||||
|
||||
~CategoryFKField.get_reverse_joining_columns
|
||||
|
||||
~CategoryFKField.get_reverse_path_info
|
||||
|
||||
~CategoryFKField.get_reverse_related_filter
|
||||
|
||||
~CategoryFKField.get_transform
|
||||
|
||||
~CategoryFKField.has_default
|
||||
|
||||
~CategoryFKField.is_cached
|
||||
|
||||
~CategoryFKField.merge_dicts
|
||||
|
||||
~CategoryFKField.pre_save
|
||||
|
||||
~CategoryFKField.register_lookup
|
||||
|
||||
~CategoryFKField.rel_db_type
|
||||
|
||||
~CategoryFKField.related_query_name
|
||||
|
||||
~CategoryFKField.resolve_related_fields
|
||||
|
||||
~CategoryFKField.run_validators
|
||||
|
||||
~CategoryFKField.save_form_data
|
||||
|
||||
~CategoryFKField.select_format
|
||||
|
||||
~CategoryFKField.set_attributes_from_name
|
||||
|
||||
~CategoryFKField.set_attributes_from_rel
|
||||
|
||||
~CategoryFKField.set_cached_value
|
||||
|
||||
~CategoryFKField.to_python
|
||||
|
||||
~CategoryFKField.validate
|
||||
|
||||
~CategoryFKField.value_from_object
|
||||
|
||||
~CategoryFKField.value_to_string
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Attributes
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~CategoryFKField.auto_creation_counter
|
||||
|
||||
~CategoryFKField.cached_col
|
||||
|
||||
~CategoryFKField.class_lookups
|
||||
|
||||
~CategoryFKField.creation_counter
|
||||
|
||||
~CategoryFKField.db_returning
|
||||
|
||||
~CategoryFKField.db_tablespace
|
||||
|
||||
~CategoryFKField.default_error_messages
|
||||
|
||||
~CategoryFKField.default_validators
|
||||
|
||||
~CategoryFKField.description
|
||||
|
||||
~CategoryFKField.empty_strings_allowed
|
||||
|
||||
~CategoryFKField.empty_values
|
||||
|
||||
~CategoryFKField.flatchoices
|
||||
|
||||
~CategoryFKField.foreign_related_fields
|
||||
|
||||
~CategoryFKField.hidden
|
||||
|
||||
~CategoryFKField.local_related_fields
|
||||
|
||||
~CategoryFKField.many_to_many
|
||||
|
||||
~CategoryFKField.many_to_one
|
||||
|
||||
~CategoryFKField.one_to_many
|
||||
|
||||
~CategoryFKField.one_to_one
|
||||
|
||||
~CategoryFKField.related_fields
|
||||
|
||||
~CategoryFKField.related_model
|
||||
|
||||
~CategoryFKField.requires_unique_target
|
||||
|
||||
~CategoryFKField.reverse_related_fields
|
||||
|
||||
~CategoryFKField.swappable_setting
|
||||
|
||||
~CategoryFKField.system_check_deprecated_details
|
||||
|
||||
~CategoryFKField.system_check_removed_details
|
||||
|
||||
~CategoryFKField.target_field
|
||||
|
||||
~CategoryFKField.unique
|
||||
|
||||
~CategoryFKField.validators
|
||||
|
||||
|
||||
183
_sources/api/categories.fields.CategoryM2MField.rst.txt
Normal file
183
_sources/api/categories.fields.CategoryM2MField.rst.txt
Normal file
|
|
@ -0,0 +1,183 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.fields.CategoryM2MField
|
||||
|
||||
CategoryM2MField
|
||||
================
|
||||
|
||||
.. currentmodule:: categories.fields
|
||||
|
||||
.. autoclass:: CategoryM2MField
|
||||
|
||||
|
||||
|
||||
.. rubric:: Methods
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~CategoryM2MField.cast_db_type
|
||||
|
||||
~CategoryM2MField.check
|
||||
|
||||
~CategoryM2MField.clean
|
||||
|
||||
~CategoryM2MField.clone
|
||||
|
||||
~CategoryM2MField.contribute_to_class
|
||||
|
||||
~CategoryM2MField.contribute_to_related_class
|
||||
|
||||
~CategoryM2MField.db_check
|
||||
|
||||
~CategoryM2MField.db_parameters
|
||||
|
||||
~CategoryM2MField.db_type
|
||||
|
||||
~CategoryM2MField.db_type_parameters
|
||||
|
||||
~CategoryM2MField.db_type_suffix
|
||||
|
||||
~CategoryM2MField.deconstruct
|
||||
|
||||
~CategoryM2MField.delete_cached_value
|
||||
|
||||
~CategoryM2MField.do_related_class
|
||||
|
||||
~CategoryM2MField.formfield
|
||||
|
||||
~CategoryM2MField.get_attname
|
||||
|
||||
~CategoryM2MField.get_attname_column
|
||||
|
||||
~CategoryM2MField.get_cache_name
|
||||
|
||||
~CategoryM2MField.get_cached_value
|
||||
|
||||
~CategoryM2MField.get_choices
|
||||
|
||||
~CategoryM2MField.get_col
|
||||
|
||||
~CategoryM2MField.get_db_converters
|
||||
|
||||
~CategoryM2MField.get_db_prep_save
|
||||
|
||||
~CategoryM2MField.get_db_prep_value
|
||||
|
||||
~CategoryM2MField.get_default
|
||||
|
||||
~CategoryM2MField.get_filter_kwargs_for_object
|
||||
|
||||
~CategoryM2MField.get_forward_related_filter
|
||||
|
||||
~CategoryM2MField.get_internal_type
|
||||
|
||||
~CategoryM2MField.get_limit_choices_to
|
||||
|
||||
~CategoryM2MField.get_lookup
|
||||
|
||||
~CategoryM2MField.get_lookups
|
||||
|
||||
~CategoryM2MField.get_path_info
|
||||
|
||||
~CategoryM2MField.get_pk_value_on_save
|
||||
|
||||
~CategoryM2MField.get_prep_value
|
||||
|
||||
~CategoryM2MField.get_reverse_path_info
|
||||
|
||||
~CategoryM2MField.get_reverse_related_filter
|
||||
|
||||
~CategoryM2MField.get_transform
|
||||
|
||||
~CategoryM2MField.has_default
|
||||
|
||||
~CategoryM2MField.is_cached
|
||||
|
||||
~CategoryM2MField.merge_dicts
|
||||
|
||||
~CategoryM2MField.pre_save
|
||||
|
||||
~CategoryM2MField.register_lookup
|
||||
|
||||
~CategoryM2MField.rel_db_type
|
||||
|
||||
~CategoryM2MField.related_query_name
|
||||
|
||||
~CategoryM2MField.run_validators
|
||||
|
||||
~CategoryM2MField.save_form_data
|
||||
|
||||
~CategoryM2MField.select_format
|
||||
|
||||
~CategoryM2MField.set_attributes_from_name
|
||||
|
||||
~CategoryM2MField.set_attributes_from_rel
|
||||
|
||||
~CategoryM2MField.set_cached_value
|
||||
|
||||
~CategoryM2MField.to_python
|
||||
|
||||
~CategoryM2MField.validate
|
||||
|
||||
~CategoryM2MField.value_from_object
|
||||
|
||||
~CategoryM2MField.value_to_string
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Attributes
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~CategoryM2MField.auto_creation_counter
|
||||
|
||||
~CategoryM2MField.cached_col
|
||||
|
||||
~CategoryM2MField.class_lookups
|
||||
|
||||
~CategoryM2MField.creation_counter
|
||||
|
||||
~CategoryM2MField.db_returning
|
||||
|
||||
~CategoryM2MField.db_tablespace
|
||||
|
||||
~CategoryM2MField.default_error_messages
|
||||
|
||||
~CategoryM2MField.default_validators
|
||||
|
||||
~CategoryM2MField.description
|
||||
|
||||
~CategoryM2MField.empty_strings_allowed
|
||||
|
||||
~CategoryM2MField.empty_values
|
||||
|
||||
~CategoryM2MField.flatchoices
|
||||
|
||||
~CategoryM2MField.hidden
|
||||
|
||||
~CategoryM2MField.many_to_many
|
||||
|
||||
~CategoryM2MField.many_to_one
|
||||
|
||||
~CategoryM2MField.one_to_many
|
||||
|
||||
~CategoryM2MField.one_to_one
|
||||
|
||||
~CategoryM2MField.related_model
|
||||
|
||||
~CategoryM2MField.swappable_setting
|
||||
|
||||
~CategoryM2MField.system_check_deprecated_details
|
||||
|
||||
~CategoryM2MField.system_check_removed_details
|
||||
|
||||
~CategoryM2MField.target_field
|
||||
|
||||
~CategoryM2MField.unique
|
||||
|
||||
~CategoryM2MField.validators
|
||||
|
||||
|
||||
22
_sources/api/categories.fields.rst.txt
Normal file
22
_sources/api/categories.fields.rst.txt
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.fields
|
||||
|
||||
fields
|
||||
======
|
||||
.. currentmodule:: categories.fields
|
||||
|
||||
|
||||
.. automodule:: categories.fields
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Classes
|
||||
|
||||
.. autosummary::
|
||||
:toctree:
|
||||
|
||||
CategoryFKField
|
||||
CategoryM2MField
|
||||
|
|
@ -0,0 +1,145 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.genericcollection.GenericCollectionInlineModelAdmin
|
||||
|
||||
GenericCollectionInlineModelAdmin
|
||||
=================================
|
||||
|
||||
.. currentmodule:: categories.genericcollection
|
||||
|
||||
.. autoclass:: GenericCollectionInlineModelAdmin
|
||||
|
||||
|
||||
|
||||
.. rubric:: Methods
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~GenericCollectionInlineModelAdmin.check
|
||||
|
||||
~GenericCollectionInlineModelAdmin.formfield_for_choice_field
|
||||
|
||||
~GenericCollectionInlineModelAdmin.formfield_for_dbfield
|
||||
|
||||
~GenericCollectionInlineModelAdmin.formfield_for_foreignkey
|
||||
|
||||
~GenericCollectionInlineModelAdmin.formfield_for_manytomany
|
||||
|
||||
~GenericCollectionInlineModelAdmin.get_autocomplete_fields
|
||||
|
||||
~GenericCollectionInlineModelAdmin.get_content_types
|
||||
|
||||
~GenericCollectionInlineModelAdmin.get_empty_value_display
|
||||
|
||||
~GenericCollectionInlineModelAdmin.get_exclude
|
||||
|
||||
~GenericCollectionInlineModelAdmin.get_extra
|
||||
|
||||
~GenericCollectionInlineModelAdmin.get_field_queryset
|
||||
|
||||
~GenericCollectionInlineModelAdmin.get_fields
|
||||
|
||||
~GenericCollectionInlineModelAdmin.get_fieldsets
|
||||
|
||||
~GenericCollectionInlineModelAdmin.get_formset
|
||||
|
||||
~GenericCollectionInlineModelAdmin.get_inlines
|
||||
|
||||
~GenericCollectionInlineModelAdmin.get_max_num
|
||||
|
||||
~GenericCollectionInlineModelAdmin.get_min_num
|
||||
|
||||
~GenericCollectionInlineModelAdmin.get_ordering
|
||||
|
||||
~GenericCollectionInlineModelAdmin.get_prepopulated_fields
|
||||
|
||||
~GenericCollectionInlineModelAdmin.get_queryset
|
||||
|
||||
~GenericCollectionInlineModelAdmin.get_readonly_fields
|
||||
|
||||
~GenericCollectionInlineModelAdmin.get_sortable_by
|
||||
|
||||
~GenericCollectionInlineModelAdmin.get_view_on_site_url
|
||||
|
||||
~GenericCollectionInlineModelAdmin.has_add_permission
|
||||
|
||||
~GenericCollectionInlineModelAdmin.has_change_permission
|
||||
|
||||
~GenericCollectionInlineModelAdmin.has_delete_permission
|
||||
|
||||
~GenericCollectionInlineModelAdmin.has_module_permission
|
||||
|
||||
~GenericCollectionInlineModelAdmin.has_view_or_change_permission
|
||||
|
||||
~GenericCollectionInlineModelAdmin.has_view_permission
|
||||
|
||||
~GenericCollectionInlineModelAdmin.lookup_allowed
|
||||
|
||||
~GenericCollectionInlineModelAdmin.to_field_allowed
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Attributes
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~GenericCollectionInlineModelAdmin.autocomplete_fields
|
||||
|
||||
~GenericCollectionInlineModelAdmin.can_delete
|
||||
|
||||
~GenericCollectionInlineModelAdmin.classes
|
||||
|
||||
~GenericCollectionInlineModelAdmin.ct_field
|
||||
|
||||
~GenericCollectionInlineModelAdmin.ct_fk_field
|
||||
|
||||
~GenericCollectionInlineModelAdmin.exclude
|
||||
|
||||
~GenericCollectionInlineModelAdmin.extra
|
||||
|
||||
~GenericCollectionInlineModelAdmin.fields
|
||||
|
||||
~GenericCollectionInlineModelAdmin.filter_horizontal
|
||||
|
||||
~GenericCollectionInlineModelAdmin.filter_vertical
|
||||
|
||||
~GenericCollectionInlineModelAdmin.fk_name
|
||||
|
||||
~GenericCollectionInlineModelAdmin.formfield_overrides
|
||||
|
||||
~GenericCollectionInlineModelAdmin.max_num
|
||||
|
||||
~GenericCollectionInlineModelAdmin.media
|
||||
|
||||
~GenericCollectionInlineModelAdmin.min_num
|
||||
|
||||
~GenericCollectionInlineModelAdmin.model
|
||||
|
||||
~GenericCollectionInlineModelAdmin.ordering
|
||||
|
||||
~GenericCollectionInlineModelAdmin.prepopulated_fields
|
||||
|
||||
~GenericCollectionInlineModelAdmin.radio_fields
|
||||
|
||||
~GenericCollectionInlineModelAdmin.raw_id_fields
|
||||
|
||||
~GenericCollectionInlineModelAdmin.readonly_fields
|
||||
|
||||
~GenericCollectionInlineModelAdmin.show_change_link
|
||||
|
||||
~GenericCollectionInlineModelAdmin.show_full_result_count
|
||||
|
||||
~GenericCollectionInlineModelAdmin.sortable_by
|
||||
|
||||
~GenericCollectionInlineModelAdmin.template
|
||||
|
||||
~GenericCollectionInlineModelAdmin.verbose_name
|
||||
|
||||
~GenericCollectionInlineModelAdmin.verbose_name_plural
|
||||
|
||||
~GenericCollectionInlineModelAdmin.view_on_site
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,145 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.genericcollection.GenericCollectionStackedInline
|
||||
|
||||
GenericCollectionStackedInline
|
||||
==============================
|
||||
|
||||
.. currentmodule:: categories.genericcollection
|
||||
|
||||
.. autoclass:: GenericCollectionStackedInline
|
||||
|
||||
|
||||
|
||||
.. rubric:: Methods
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~GenericCollectionStackedInline.check
|
||||
|
||||
~GenericCollectionStackedInline.formfield_for_choice_field
|
||||
|
||||
~GenericCollectionStackedInline.formfield_for_dbfield
|
||||
|
||||
~GenericCollectionStackedInline.formfield_for_foreignkey
|
||||
|
||||
~GenericCollectionStackedInline.formfield_for_manytomany
|
||||
|
||||
~GenericCollectionStackedInline.get_autocomplete_fields
|
||||
|
||||
~GenericCollectionStackedInline.get_content_types
|
||||
|
||||
~GenericCollectionStackedInline.get_empty_value_display
|
||||
|
||||
~GenericCollectionStackedInline.get_exclude
|
||||
|
||||
~GenericCollectionStackedInline.get_extra
|
||||
|
||||
~GenericCollectionStackedInline.get_field_queryset
|
||||
|
||||
~GenericCollectionStackedInline.get_fields
|
||||
|
||||
~GenericCollectionStackedInline.get_fieldsets
|
||||
|
||||
~GenericCollectionStackedInline.get_formset
|
||||
|
||||
~GenericCollectionStackedInline.get_inlines
|
||||
|
||||
~GenericCollectionStackedInline.get_max_num
|
||||
|
||||
~GenericCollectionStackedInline.get_min_num
|
||||
|
||||
~GenericCollectionStackedInline.get_ordering
|
||||
|
||||
~GenericCollectionStackedInline.get_prepopulated_fields
|
||||
|
||||
~GenericCollectionStackedInline.get_queryset
|
||||
|
||||
~GenericCollectionStackedInline.get_readonly_fields
|
||||
|
||||
~GenericCollectionStackedInline.get_sortable_by
|
||||
|
||||
~GenericCollectionStackedInline.get_view_on_site_url
|
||||
|
||||
~GenericCollectionStackedInline.has_add_permission
|
||||
|
||||
~GenericCollectionStackedInline.has_change_permission
|
||||
|
||||
~GenericCollectionStackedInline.has_delete_permission
|
||||
|
||||
~GenericCollectionStackedInline.has_module_permission
|
||||
|
||||
~GenericCollectionStackedInline.has_view_or_change_permission
|
||||
|
||||
~GenericCollectionStackedInline.has_view_permission
|
||||
|
||||
~GenericCollectionStackedInline.lookup_allowed
|
||||
|
||||
~GenericCollectionStackedInline.to_field_allowed
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Attributes
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~GenericCollectionStackedInline.autocomplete_fields
|
||||
|
||||
~GenericCollectionStackedInline.can_delete
|
||||
|
||||
~GenericCollectionStackedInline.classes
|
||||
|
||||
~GenericCollectionStackedInline.ct_field
|
||||
|
||||
~GenericCollectionStackedInline.ct_fk_field
|
||||
|
||||
~GenericCollectionStackedInline.exclude
|
||||
|
||||
~GenericCollectionStackedInline.extra
|
||||
|
||||
~GenericCollectionStackedInline.fields
|
||||
|
||||
~GenericCollectionStackedInline.filter_horizontal
|
||||
|
||||
~GenericCollectionStackedInline.filter_vertical
|
||||
|
||||
~GenericCollectionStackedInline.fk_name
|
||||
|
||||
~GenericCollectionStackedInline.formfield_overrides
|
||||
|
||||
~GenericCollectionStackedInline.max_num
|
||||
|
||||
~GenericCollectionStackedInline.media
|
||||
|
||||
~GenericCollectionStackedInline.min_num
|
||||
|
||||
~GenericCollectionStackedInline.model
|
||||
|
||||
~GenericCollectionStackedInline.ordering
|
||||
|
||||
~GenericCollectionStackedInline.prepopulated_fields
|
||||
|
||||
~GenericCollectionStackedInline.radio_fields
|
||||
|
||||
~GenericCollectionStackedInline.raw_id_fields
|
||||
|
||||
~GenericCollectionStackedInline.readonly_fields
|
||||
|
||||
~GenericCollectionStackedInline.show_change_link
|
||||
|
||||
~GenericCollectionStackedInline.show_full_result_count
|
||||
|
||||
~GenericCollectionStackedInline.sortable_by
|
||||
|
||||
~GenericCollectionStackedInline.template
|
||||
|
||||
~GenericCollectionStackedInline.verbose_name
|
||||
|
||||
~GenericCollectionStackedInline.verbose_name_plural
|
||||
|
||||
~GenericCollectionStackedInline.view_on_site
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,145 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.genericcollection.GenericCollectionTabularInline
|
||||
|
||||
GenericCollectionTabularInline
|
||||
==============================
|
||||
|
||||
.. currentmodule:: categories.genericcollection
|
||||
|
||||
.. autoclass:: GenericCollectionTabularInline
|
||||
|
||||
|
||||
|
||||
.. rubric:: Methods
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~GenericCollectionTabularInline.check
|
||||
|
||||
~GenericCollectionTabularInline.formfield_for_choice_field
|
||||
|
||||
~GenericCollectionTabularInline.formfield_for_dbfield
|
||||
|
||||
~GenericCollectionTabularInline.formfield_for_foreignkey
|
||||
|
||||
~GenericCollectionTabularInline.formfield_for_manytomany
|
||||
|
||||
~GenericCollectionTabularInline.get_autocomplete_fields
|
||||
|
||||
~GenericCollectionTabularInline.get_content_types
|
||||
|
||||
~GenericCollectionTabularInline.get_empty_value_display
|
||||
|
||||
~GenericCollectionTabularInline.get_exclude
|
||||
|
||||
~GenericCollectionTabularInline.get_extra
|
||||
|
||||
~GenericCollectionTabularInline.get_field_queryset
|
||||
|
||||
~GenericCollectionTabularInline.get_fields
|
||||
|
||||
~GenericCollectionTabularInline.get_fieldsets
|
||||
|
||||
~GenericCollectionTabularInline.get_formset
|
||||
|
||||
~GenericCollectionTabularInline.get_inlines
|
||||
|
||||
~GenericCollectionTabularInline.get_max_num
|
||||
|
||||
~GenericCollectionTabularInline.get_min_num
|
||||
|
||||
~GenericCollectionTabularInline.get_ordering
|
||||
|
||||
~GenericCollectionTabularInline.get_prepopulated_fields
|
||||
|
||||
~GenericCollectionTabularInline.get_queryset
|
||||
|
||||
~GenericCollectionTabularInline.get_readonly_fields
|
||||
|
||||
~GenericCollectionTabularInline.get_sortable_by
|
||||
|
||||
~GenericCollectionTabularInline.get_view_on_site_url
|
||||
|
||||
~GenericCollectionTabularInline.has_add_permission
|
||||
|
||||
~GenericCollectionTabularInline.has_change_permission
|
||||
|
||||
~GenericCollectionTabularInline.has_delete_permission
|
||||
|
||||
~GenericCollectionTabularInline.has_module_permission
|
||||
|
||||
~GenericCollectionTabularInline.has_view_or_change_permission
|
||||
|
||||
~GenericCollectionTabularInline.has_view_permission
|
||||
|
||||
~GenericCollectionTabularInline.lookup_allowed
|
||||
|
||||
~GenericCollectionTabularInline.to_field_allowed
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Attributes
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~GenericCollectionTabularInline.autocomplete_fields
|
||||
|
||||
~GenericCollectionTabularInline.can_delete
|
||||
|
||||
~GenericCollectionTabularInline.classes
|
||||
|
||||
~GenericCollectionTabularInline.ct_field
|
||||
|
||||
~GenericCollectionTabularInline.ct_fk_field
|
||||
|
||||
~GenericCollectionTabularInline.exclude
|
||||
|
||||
~GenericCollectionTabularInline.extra
|
||||
|
||||
~GenericCollectionTabularInline.fields
|
||||
|
||||
~GenericCollectionTabularInline.filter_horizontal
|
||||
|
||||
~GenericCollectionTabularInline.filter_vertical
|
||||
|
||||
~GenericCollectionTabularInline.fk_name
|
||||
|
||||
~GenericCollectionTabularInline.formfield_overrides
|
||||
|
||||
~GenericCollectionTabularInline.max_num
|
||||
|
||||
~GenericCollectionTabularInline.media
|
||||
|
||||
~GenericCollectionTabularInline.min_num
|
||||
|
||||
~GenericCollectionTabularInline.model
|
||||
|
||||
~GenericCollectionTabularInline.ordering
|
||||
|
||||
~GenericCollectionTabularInline.prepopulated_fields
|
||||
|
||||
~GenericCollectionTabularInline.radio_fields
|
||||
|
||||
~GenericCollectionTabularInline.raw_id_fields
|
||||
|
||||
~GenericCollectionTabularInline.readonly_fields
|
||||
|
||||
~GenericCollectionTabularInline.show_change_link
|
||||
|
||||
~GenericCollectionTabularInline.show_full_result_count
|
||||
|
||||
~GenericCollectionTabularInline.sortable_by
|
||||
|
||||
~GenericCollectionTabularInline.template
|
||||
|
||||
~GenericCollectionTabularInline.verbose_name
|
||||
|
||||
~GenericCollectionTabularInline.verbose_name_plural
|
||||
|
||||
~GenericCollectionTabularInline.view_on_site
|
||||
|
||||
|
||||
23
_sources/api/categories.genericcollection.rst.txt
Normal file
23
_sources/api/categories.genericcollection.rst.txt
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.genericcollection
|
||||
|
||||
genericcollection
|
||||
=================
|
||||
.. currentmodule:: categories.genericcollection
|
||||
|
||||
|
||||
.. automodule:: categories.genericcollection
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Classes
|
||||
|
||||
.. autosummary::
|
||||
:toctree:
|
||||
|
||||
GenericCollectionInlineModelAdmin
|
||||
GenericCollectionStackedInline
|
||||
GenericCollectionTabularInline
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.management.commands.add_category_fields.Command
|
||||
|
||||
Command
|
||||
=======
|
||||
|
||||
.. currentmodule:: categories.management.commands.add_category_fields
|
||||
|
||||
.. autoclass:: Command
|
||||
|
||||
|
||||
|
||||
.. rubric:: Methods
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~Command.add_arguments
|
||||
|
||||
~Command.check
|
||||
|
||||
~Command.check_migrations
|
||||
|
||||
~Command.create_parser
|
||||
|
||||
~Command.execute
|
||||
|
||||
~Command.get_version
|
||||
|
||||
~Command.handle
|
||||
|
||||
~Command.print_help
|
||||
|
||||
~Command.run_from_argv
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Attributes
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~Command.args
|
||||
|
||||
~Command.base_stealth_options
|
||||
|
||||
~Command.can_import_settings
|
||||
|
||||
~Command.help
|
||||
|
||||
~Command.output_transaction
|
||||
|
||||
~Command.requires_migrations_checks
|
||||
|
||||
~Command.requires_system_checks
|
||||
|
||||
~Command.stealth_options
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.management.commands.add_category_fields
|
||||
|
||||
add\_category\_fields
|
||||
=====================
|
||||
.. currentmodule:: categories.management.commands.add_category_fields
|
||||
|
||||
|
||||
.. automodule:: categories.management.commands.add_category_fields
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Classes
|
||||
|
||||
.. autosummary::
|
||||
:toctree:
|
||||
|
||||
Command
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.management.commands.drop_category_field.Command
|
||||
|
||||
Command
|
||||
=======
|
||||
|
||||
.. currentmodule:: categories.management.commands.drop_category_field
|
||||
|
||||
.. autoclass:: Command
|
||||
|
||||
|
||||
|
||||
.. rubric:: Methods
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~Command.add_arguments
|
||||
|
||||
~Command.check
|
||||
|
||||
~Command.check_migrations
|
||||
|
||||
~Command.create_parser
|
||||
|
||||
~Command.execute
|
||||
|
||||
~Command.get_version
|
||||
|
||||
~Command.handle
|
||||
|
||||
~Command.print_help
|
||||
|
||||
~Command.run_from_argv
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Attributes
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~Command.args
|
||||
|
||||
~Command.base_stealth_options
|
||||
|
||||
~Command.can_import_settings
|
||||
|
||||
~Command.help
|
||||
|
||||
~Command.output_transaction
|
||||
|
||||
~Command.requires_migrations_checks
|
||||
|
||||
~Command.requires_system_checks
|
||||
|
||||
~Command.stealth_options
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.management.commands.drop_category_field
|
||||
|
||||
drop\_category\_field
|
||||
=====================
|
||||
.. currentmodule:: categories.management.commands.drop_category_field
|
||||
|
||||
|
||||
.. automodule:: categories.management.commands.drop_category_field
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Classes
|
||||
|
||||
.. autosummary::
|
||||
:toctree:
|
||||
|
||||
Command
|
||||
|
|
@ -0,0 +1,65 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.management.commands.import_categories.Command
|
||||
|
||||
Command
|
||||
=======
|
||||
|
||||
.. currentmodule:: categories.management.commands.import_categories
|
||||
|
||||
.. autoclass:: Command
|
||||
|
||||
|
||||
|
||||
.. rubric:: Methods
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~Command.add_arguments
|
||||
|
||||
~Command.check
|
||||
|
||||
~Command.check_migrations
|
||||
|
||||
~Command.create_parser
|
||||
|
||||
~Command.execute
|
||||
|
||||
~Command.get_indent
|
||||
|
||||
~Command.get_version
|
||||
|
||||
~Command.handle
|
||||
|
||||
~Command.make_category
|
||||
|
||||
~Command.parse_lines
|
||||
|
||||
~Command.print_help
|
||||
|
||||
~Command.run_from_argv
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Attributes
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~Command.args
|
||||
|
||||
~Command.base_stealth_options
|
||||
|
||||
~Command.help
|
||||
|
||||
~Command.output_transaction
|
||||
|
||||
~Command.requires_migrations_checks
|
||||
|
||||
~Command.requires_system_checks
|
||||
|
||||
~Command.stealth_options
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.management.commands.import_categories
|
||||
|
||||
import\_categories
|
||||
==================
|
||||
.. currentmodule:: categories.management.commands.import_categories
|
||||
|
||||
|
||||
.. automodule:: categories.management.commands.import_categories
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Classes
|
||||
|
||||
.. autosummary::
|
||||
:toctree:
|
||||
|
||||
Command
|
||||
25
_sources/api/categories.management.commands.rst.txt
Normal file
25
_sources/api/categories.management.commands.rst.txt
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.management.commands
|
||||
|
||||
commands
|
||||
========
|
||||
.. currentmodule:: categories.management.commands
|
||||
|
||||
|
||||
.. automodule:: categories.management.commands
|
||||
|
||||
|
||||
|
||||
.. rubric:: Submodules
|
||||
|
||||
.. autosummary::
|
||||
:toctree:
|
||||
:recursive:
|
||||
|
||||
categories.management.commands.add_category_fields
|
||||
categories.management.commands.drop_category_field
|
||||
categories.management.commands.import_categories
|
||||
|
||||
|
||||
|
||||
23
_sources/api/categories.management.rst.txt
Normal file
23
_sources/api/categories.management.rst.txt
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.management
|
||||
|
||||
management
|
||||
==========
|
||||
.. currentmodule:: categories.management
|
||||
|
||||
|
||||
.. automodule:: categories.management
|
||||
|
||||
|
||||
|
||||
.. rubric:: Submodules
|
||||
|
||||
.. autosummary::
|
||||
:toctree:
|
||||
:recursive:
|
||||
|
||||
categories.management.commands
|
||||
|
||||
|
||||
|
||||
9
_sources/api/categories.migration.drop_field.rst.txt
Normal file
9
_sources/api/categories.migration.drop_field.rst.txt
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.migration.drop_field
|
||||
|
||||
drop\_field
|
||||
===========
|
||||
|
||||
.. currentmodule:: categories.migration
|
||||
.. autofunction:: drop_field
|
||||
9
_sources/api/categories.migration.field_exists.rst.txt
Normal file
9
_sources/api/categories.migration.field_exists.rst.txt
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.migration.field_exists
|
||||
|
||||
field\_exists
|
||||
=============
|
||||
|
||||
.. currentmodule:: categories.migration
|
||||
.. autofunction:: field_exists
|
||||
9
_sources/api/categories.migration.migrate_app.rst.txt
Normal file
9
_sources/api/categories.migration.migrate_app.rst.txt
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.migration.migrate_app
|
||||
|
||||
migrate\_app
|
||||
============
|
||||
|
||||
.. currentmodule:: categories.migration
|
||||
.. autofunction:: migrate_app
|
||||
24
_sources/api/categories.migration.rst.txt
Normal file
24
_sources/api/categories.migration.rst.txt
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.migration
|
||||
|
||||
migration
|
||||
=========
|
||||
.. currentmodule:: categories.migration
|
||||
|
||||
|
||||
.. automodule:: categories.migration
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Functions
|
||||
|
||||
.. autosummary::
|
||||
:toctree:
|
||||
|
||||
drop_field
|
||||
field_exists
|
||||
migrate_app
|
||||
table_exists
|
||||
9
_sources/api/categories.migration.table_exists.rst.txt
Normal file
9
_sources/api/categories.migration.table_exists.rst.txt
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.migration.table_exists
|
||||
|
||||
table\_exists
|
||||
=============
|
||||
|
||||
.. currentmodule:: categories.migration
|
||||
.. autofunction:: table_exists
|
||||
161
_sources/api/categories.models.Category.rst.txt
Normal file
161
_sources/api/categories.models.Category.rst.txt
Normal file
|
|
@ -0,0 +1,161 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.models.Category
|
||||
|
||||
Category
|
||||
========
|
||||
|
||||
.. currentmodule:: categories.models
|
||||
|
||||
.. autoclass:: Category
|
||||
|
||||
|
||||
|
||||
.. rubric:: Methods
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~Category.check
|
||||
|
||||
~Category.clean
|
||||
|
||||
~Category.clean_fields
|
||||
|
||||
~Category.date_error_message
|
||||
|
||||
~Category.delete
|
||||
|
||||
~Category.from_db
|
||||
|
||||
~Category.full_clean
|
||||
|
||||
~Category.get_absolute_url
|
||||
|
||||
~Category.get_ancestors
|
||||
|
||||
~Category.get_children
|
||||
|
||||
~Category.get_deferred_fields
|
||||
|
||||
~Category.get_descendant_count
|
||||
|
||||
~Category.get_descendants
|
||||
|
||||
~Category.get_family
|
||||
|
||||
~Category.get_leafnodes
|
||||
|
||||
~Category.get_level
|
||||
|
||||
~Category.get_next_sibling
|
||||
|
||||
~Category.get_previous_sibling
|
||||
|
||||
~Category.get_related_content_type
|
||||
|
||||
~Category.get_relation_type
|
||||
|
||||
~Category.get_root
|
||||
|
||||
~Category.get_siblings
|
||||
|
||||
~Category.insert_at
|
||||
|
||||
~Category.is_ancestor_of
|
||||
|
||||
~Category.is_child_node
|
||||
|
||||
~Category.is_descendant_of
|
||||
|
||||
~Category.is_leaf_node
|
||||
|
||||
~Category.is_root_node
|
||||
|
||||
~Category.move_to
|
||||
|
||||
~Category.prepare_database_save
|
||||
|
||||
~Category.refresh_from_db
|
||||
|
||||
~Category.save
|
||||
|
||||
~Category.save_base
|
||||
|
||||
~Category.serializable_value
|
||||
|
||||
~Category.unique_error_message
|
||||
|
||||
~Category.validate_unique
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Attributes
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~Category.active
|
||||
|
||||
~Category.alternate_title
|
||||
|
||||
~Category.alternate_url
|
||||
|
||||
~Category.categoryrelation_set
|
||||
|
||||
~Category.children
|
||||
|
||||
~Category.description
|
||||
|
||||
~Category.flatpage_set
|
||||
|
||||
~Category.id
|
||||
|
||||
~Category.level
|
||||
|
||||
~Category.lft
|
||||
|
||||
~Category.m2mcats
|
||||
|
||||
~Category.meta_extra
|
||||
|
||||
~Category.meta_keywords
|
||||
|
||||
~Category.more_cats
|
||||
|
||||
~Category.name
|
||||
|
||||
~Category.objects
|
||||
|
||||
~Category.order
|
||||
|
||||
~Category.other_cats
|
||||
|
||||
~Category.parent
|
||||
|
||||
~Category.parent_id
|
||||
|
||||
~Category.pk
|
||||
|
||||
~Category.rght
|
||||
|
||||
~Category.short_title
|
||||
|
||||
~Category.simpletext_sec_cat
|
||||
|
||||
~Category.simpletext_set
|
||||
|
||||
~Category.slug
|
||||
|
||||
~Category.thumbnail
|
||||
|
||||
~Category.thumbnail_height
|
||||
|
||||
~Category.thumbnail_width
|
||||
|
||||
~Category.tree
|
||||
|
||||
~Category.tree_id
|
||||
|
||||
|
||||
77
_sources/api/categories.models.CategoryRelation.rst.txt
Normal file
77
_sources/api/categories.models.CategoryRelation.rst.txt
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.models.CategoryRelation
|
||||
|
||||
CategoryRelation
|
||||
================
|
||||
|
||||
.. currentmodule:: categories.models
|
||||
|
||||
.. autoclass:: CategoryRelation
|
||||
|
||||
|
||||
|
||||
.. rubric:: Methods
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~CategoryRelation.check
|
||||
|
||||
~CategoryRelation.clean
|
||||
|
||||
~CategoryRelation.clean_fields
|
||||
|
||||
~CategoryRelation.date_error_message
|
||||
|
||||
~CategoryRelation.delete
|
||||
|
||||
~CategoryRelation.from_db
|
||||
|
||||
~CategoryRelation.full_clean
|
||||
|
||||
~CategoryRelation.get_deferred_fields
|
||||
|
||||
~CategoryRelation.prepare_database_save
|
||||
|
||||
~CategoryRelation.refresh_from_db
|
||||
|
||||
~CategoryRelation.save
|
||||
|
||||
~CategoryRelation.save_base
|
||||
|
||||
~CategoryRelation.serializable_value
|
||||
|
||||
~CategoryRelation.unique_error_message
|
||||
|
||||
~CategoryRelation.validate_unique
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Attributes
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~CategoryRelation.category
|
||||
|
||||
~CategoryRelation.category_id
|
||||
|
||||
~CategoryRelation.content_object
|
||||
|
||||
~CategoryRelation.content_type
|
||||
|
||||
~CategoryRelation.content_type_id
|
||||
|
||||
~CategoryRelation.id
|
||||
|
||||
~CategoryRelation.object_id
|
||||
|
||||
~CategoryRelation.objects
|
||||
|
||||
~CategoryRelation.pk
|
||||
|
||||
~CategoryRelation.relation_type
|
||||
|
||||
|
||||
135
_sources/api/categories.models.CategoryRelationManager.rst.txt
Normal file
135
_sources/api/categories.models.CategoryRelationManager.rst.txt
Normal file
|
|
@ -0,0 +1,135 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.models.CategoryRelationManager
|
||||
|
||||
CategoryRelationManager
|
||||
=======================
|
||||
|
||||
.. currentmodule:: categories.models
|
||||
|
||||
.. autoclass:: CategoryRelationManager
|
||||
|
||||
|
||||
|
||||
.. rubric:: Methods
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~CategoryRelationManager.aggregate
|
||||
|
||||
~CategoryRelationManager.alias
|
||||
|
||||
~CategoryRelationManager.all
|
||||
|
||||
~CategoryRelationManager.annotate
|
||||
|
||||
~CategoryRelationManager.bulk_create
|
||||
|
||||
~CategoryRelationManager.bulk_update
|
||||
|
||||
~CategoryRelationManager.check
|
||||
|
||||
~CategoryRelationManager.complex_filter
|
||||
|
||||
~CategoryRelationManager.contribute_to_class
|
||||
|
||||
~CategoryRelationManager.count
|
||||
|
||||
~CategoryRelationManager.create
|
||||
|
||||
~CategoryRelationManager.dates
|
||||
|
||||
~CategoryRelationManager.datetimes
|
||||
|
||||
~CategoryRelationManager.db_manager
|
||||
|
||||
~CategoryRelationManager.deconstruct
|
||||
|
||||
~CategoryRelationManager.defer
|
||||
|
||||
~CategoryRelationManager.difference
|
||||
|
||||
~CategoryRelationManager.distinct
|
||||
|
||||
~CategoryRelationManager.earliest
|
||||
|
||||
~CategoryRelationManager.exclude
|
||||
|
||||
~CategoryRelationManager.exists
|
||||
|
||||
~CategoryRelationManager.explain
|
||||
|
||||
~CategoryRelationManager.extra
|
||||
|
||||
~CategoryRelationManager.filter
|
||||
|
||||
~CategoryRelationManager.first
|
||||
|
||||
~CategoryRelationManager.from_queryset
|
||||
|
||||
~CategoryRelationManager.get
|
||||
|
||||
~CategoryRelationManager.get_content_type
|
||||
|
||||
~CategoryRelationManager.get_or_create
|
||||
|
||||
~CategoryRelationManager.get_queryset
|
||||
|
||||
~CategoryRelationManager.get_relation_type
|
||||
|
||||
~CategoryRelationManager.in_bulk
|
||||
|
||||
~CategoryRelationManager.intersection
|
||||
|
||||
~CategoryRelationManager.iterator
|
||||
|
||||
~CategoryRelationManager.last
|
||||
|
||||
~CategoryRelationManager.latest
|
||||
|
||||
~CategoryRelationManager.none
|
||||
|
||||
~CategoryRelationManager.only
|
||||
|
||||
~CategoryRelationManager.order_by
|
||||
|
||||
~CategoryRelationManager.prefetch_related
|
||||
|
||||
~CategoryRelationManager.raw
|
||||
|
||||
~CategoryRelationManager.reverse
|
||||
|
||||
~CategoryRelationManager.select_for_update
|
||||
|
||||
~CategoryRelationManager.select_related
|
||||
|
||||
~CategoryRelationManager.union
|
||||
|
||||
~CategoryRelationManager.update
|
||||
|
||||
~CategoryRelationManager.update_or_create
|
||||
|
||||
~CategoryRelationManager.using
|
||||
|
||||
~CategoryRelationManager.values
|
||||
|
||||
~CategoryRelationManager.values_list
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Attributes
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~CategoryRelationManager.auto_created
|
||||
|
||||
~CategoryRelationManager.creation_counter
|
||||
|
||||
~CategoryRelationManager.db
|
||||
|
||||
~CategoryRelationManager.use_in_migrations
|
||||
|
||||
|
||||
23
_sources/api/categories.models.rst.txt
Normal file
23
_sources/api/categories.models.rst.txt
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.models
|
||||
|
||||
models
|
||||
======
|
||||
.. currentmodule:: categories.models
|
||||
|
||||
|
||||
.. automodule:: categories.models
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Classes
|
||||
|
||||
.. autosummary::
|
||||
:toctree:
|
||||
|
||||
Category
|
||||
CategoryRelation
|
||||
CategoryRelationManager
|
||||
29
_sources/api/categories.registration.Registry.rst.txt
Normal file
29
_sources/api/categories.registration.Registry.rst.txt
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.registration.Registry
|
||||
|
||||
Registry
|
||||
========
|
||||
|
||||
.. currentmodule:: categories.registration
|
||||
|
||||
.. autoclass:: Registry
|
||||
|
||||
|
||||
|
||||
.. rubric:: Methods
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~Registry.register_fk
|
||||
|
||||
~Registry.register_m2m
|
||||
|
||||
~Registry.register_model
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
21
_sources/api/categories.registration.rst.txt
Normal file
21
_sources/api/categories.registration.rst.txt
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.registration
|
||||
|
||||
registration
|
||||
============
|
||||
.. currentmodule:: categories.registration
|
||||
|
||||
|
||||
.. automodule:: categories.registration
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Classes
|
||||
|
||||
.. autosummary::
|
||||
:toctree:
|
||||
|
||||
Registry
|
||||
40
_sources/api/categories.rst.txt
Normal file
40
_sources/api/categories.rst.txt
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories
|
||||
|
||||
categories
|
||||
==========
|
||||
.. currentmodule:: categories
|
||||
|
||||
|
||||
.. automodule:: categories
|
||||
|
||||
|
||||
|
||||
.. rubric:: Submodules
|
||||
|
||||
.. autosummary::
|
||||
:toctree:
|
||||
:recursive:
|
||||
|
||||
categories.admin
|
||||
categories.api
|
||||
categories.apps
|
||||
categories.base
|
||||
categories.editor
|
||||
categories.fields
|
||||
categories.genericcollection
|
||||
categories.management
|
||||
categories.migration
|
||||
|
||||
categories.models
|
||||
categories.registration
|
||||
categories.settings
|
||||
categories.templatetags
|
||||
|
||||
categories.urls
|
||||
categories.utils
|
||||
categories.views
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.settings.SLUG_TRANSLITERATOR
|
||||
|
||||
SLUG\_TRANSLITERATOR
|
||||
====================
|
||||
|
||||
.. currentmodule:: categories.settings
|
||||
.. autofunction:: SLUG_TRANSLITERATOR
|
||||
21
_sources/api/categories.settings.rst.txt
Normal file
21
_sources/api/categories.settings.rst.txt
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.settings
|
||||
|
||||
settings
|
||||
========
|
||||
.. currentmodule:: categories.settings
|
||||
|
||||
|
||||
.. automodule:: categories.settings
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Functions
|
||||
|
||||
.. autosummary::
|
||||
:toctree:
|
||||
|
||||
SLUG_TRANSLITERATOR
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.templatetags.category_tags.CategoryDrillDownNode
|
||||
|
||||
CategoryDrillDownNode
|
||||
=====================
|
||||
|
||||
.. currentmodule:: categories.templatetags.category_tags
|
||||
|
||||
.. autoclass:: CategoryDrillDownNode
|
||||
|
||||
|
||||
|
||||
.. rubric:: Methods
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~CategoryDrillDownNode.get_nodes_by_type
|
||||
|
||||
~CategoryDrillDownNode.render
|
||||
|
||||
~CategoryDrillDownNode.render_annotated
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Attributes
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~CategoryDrillDownNode.child_nodelists
|
||||
|
||||
~CategoryDrillDownNode.must_be_first
|
||||
|
||||
~CategoryDrillDownNode.token
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.templatetags.category_tags.LatestObjectsNode
|
||||
|
||||
LatestObjectsNode
|
||||
=================
|
||||
|
||||
.. currentmodule:: categories.templatetags.category_tags
|
||||
|
||||
.. autoclass:: LatestObjectsNode
|
||||
|
||||
|
||||
|
||||
.. rubric:: Methods
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~LatestObjectsNode.get_nodes_by_type
|
||||
|
||||
~LatestObjectsNode.render
|
||||
|
||||
~LatestObjectsNode.render_annotated
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Attributes
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~LatestObjectsNode.child_nodelists
|
||||
|
||||
~LatestObjectsNode.must_be_first
|
||||
|
||||
~LatestObjectsNode.token
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.templatetags.category_tags.TopLevelCategoriesNode
|
||||
|
||||
TopLevelCategoriesNode
|
||||
======================
|
||||
|
||||
.. currentmodule:: categories.templatetags.category_tags
|
||||
|
||||
.. autoclass:: TopLevelCategoriesNode
|
||||
|
||||
|
||||
|
||||
.. rubric:: Methods
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~TopLevelCategoriesNode.get_nodes_by_type
|
||||
|
||||
~TopLevelCategoriesNode.render
|
||||
|
||||
~TopLevelCategoriesNode.render_annotated
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Attributes
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~TopLevelCategoriesNode.child_nodelists
|
||||
|
||||
~TopLevelCategoriesNode.must_be_first
|
||||
|
||||
~TopLevelCategoriesNode.token
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.templatetags.category_tags.breadcrumbs
|
||||
|
||||
breadcrumbs
|
||||
===========
|
||||
|
||||
.. currentmodule:: categories.templatetags.category_tags
|
||||
.. autofunction:: breadcrumbs
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.templatetags.category_tags.display_drilldown_as_ul
|
||||
|
||||
display\_drilldown\_as\_ul
|
||||
==========================
|
||||
|
||||
.. currentmodule:: categories.templatetags.category_tags
|
||||
.. autofunction:: display_drilldown_as_ul
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.templatetags.category_tags.display_path_as_ul
|
||||
|
||||
display\_path\_as\_ul
|
||||
=====================
|
||||
|
||||
.. currentmodule:: categories.templatetags.category_tags
|
||||
.. autofunction:: display_path_as_ul
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.templatetags.category_tags.do_get_latest_objects_by_category
|
||||
|
||||
do\_get\_latest\_objects\_by\_category
|
||||
======================================
|
||||
|
||||
.. currentmodule:: categories.templatetags.category_tags
|
||||
.. autofunction:: do_get_latest_objects_by_category
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.templatetags.category_tags.get_cat_model
|
||||
|
||||
get\_cat\_model
|
||||
===============
|
||||
|
||||
.. currentmodule:: categories.templatetags.category_tags
|
||||
.. autofunction:: get_cat_model
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.templatetags.category_tags.get_category
|
||||
|
||||
get\_category
|
||||
=============
|
||||
|
||||
.. currentmodule:: categories.templatetags.category_tags
|
||||
.. autofunction:: get_category
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.templatetags.category_tags.get_category_drilldown
|
||||
|
||||
get\_category\_drilldown
|
||||
========================
|
||||
|
||||
.. currentmodule:: categories.templatetags.category_tags
|
||||
.. autofunction:: get_category_drilldown
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.templatetags.category_tags.get_latest_objects_by_category
|
||||
|
||||
get\_latest\_objects\_by\_category
|
||||
==================================
|
||||
|
||||
.. currentmodule:: categories.templatetags.category_tags
|
||||
.. autofunction:: get_latest_objects_by_category
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.templatetags.category_tags.get_top_level_categories
|
||||
|
||||
get\_top\_level\_categories
|
||||
===========================
|
||||
|
||||
.. currentmodule:: categories.templatetags.category_tags
|
||||
.. autofunction:: get_top_level_categories
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.templatetags.category_tags.recursetree
|
||||
|
||||
recursetree
|
||||
===========
|
||||
|
||||
.. currentmodule:: categories.templatetags.category_tags
|
||||
.. autofunction:: recursetree
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.templatetags.category_tags.resolve
|
||||
|
||||
resolve
|
||||
=======
|
||||
|
||||
.. currentmodule:: categories.templatetags.category_tags
|
||||
.. autofunction:: resolve
|
||||
41
_sources/api/categories.templatetags.category_tags.rst.txt
Normal file
41
_sources/api/categories.templatetags.category_tags.rst.txt
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.templatetags.category_tags
|
||||
|
||||
category\_tags
|
||||
==============
|
||||
.. currentmodule:: categories.templatetags.category_tags
|
||||
|
||||
|
||||
.. automodule:: categories.templatetags.category_tags
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Functions
|
||||
|
||||
.. autosummary::
|
||||
:toctree:
|
||||
|
||||
breadcrumbs
|
||||
display_drilldown_as_ul
|
||||
display_path_as_ul
|
||||
do_get_latest_objects_by_category
|
||||
get_cat_model
|
||||
get_category
|
||||
get_category_drilldown
|
||||
get_latest_objects_by_category
|
||||
get_top_level_categories
|
||||
recursetree
|
||||
resolve
|
||||
tree_queryset
|
||||
|
||||
.. rubric:: Classes
|
||||
|
||||
.. autosummary::
|
||||
:toctree:
|
||||
|
||||
CategoryDrillDownNode
|
||||
LatestObjectsNode
|
||||
TopLevelCategoriesNode
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.templatetags.category_tags.tree_queryset
|
||||
|
||||
tree\_queryset
|
||||
==============
|
||||
|
||||
.. currentmodule:: categories.templatetags.category_tags
|
||||
.. autofunction:: tree_queryset
|
||||
23
_sources/api/categories.templatetags.rst.txt
Normal file
23
_sources/api/categories.templatetags.rst.txt
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.templatetags
|
||||
|
||||
templatetags
|
||||
============
|
||||
.. currentmodule:: categories.templatetags
|
||||
|
||||
|
||||
.. automodule:: categories.templatetags
|
||||
|
||||
|
||||
|
||||
.. rubric:: Submodules
|
||||
|
||||
.. autosummary::
|
||||
:toctree:
|
||||
:recursive:
|
||||
|
||||
categories.templatetags.category_tags
|
||||
|
||||
|
||||
|
||||
14
_sources/api/categories.urls.rst.txt
Normal file
14
_sources/api/categories.urls.rst.txt
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.urls
|
||||
|
||||
urls
|
||||
====
|
||||
.. currentmodule:: categories.urls
|
||||
|
||||
|
||||
.. automodule:: categories.urls
|
||||
|
||||
|
||||
|
||||
|
||||
21
_sources/api/categories.utils.rst.txt
Normal file
21
_sources/api/categories.utils.rst.txt
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.utils
|
||||
|
||||
utils
|
||||
=====
|
||||
.. currentmodule:: categories.utils
|
||||
|
||||
|
||||
.. automodule:: categories.utils
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Functions
|
||||
|
||||
.. autosummary::
|
||||
:toctree:
|
||||
|
||||
slugify
|
||||
9
_sources/api/categories.utils.slugify.rst.txt
Normal file
9
_sources/api/categories.utils.slugify.rst.txt
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.utils.slugify
|
||||
|
||||
slugify
|
||||
=======
|
||||
|
||||
.. currentmodule:: categories.utils
|
||||
.. autofunction:: slugify
|
||||
81
_sources/api/categories.views.CategoryDetailView.rst.txt
Normal file
81
_sources/api/categories.views.CategoryDetailView.rst.txt
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
.. rst-class:: h4 text-secondary
|
||||
|
||||
categories.views.CategoryDetailView
|
||||
|
||||
CategoryDetailView
|
||||
==================
|
||||
|
||||
.. currentmodule:: categories.views
|
||||
|
||||
.. autoclass:: CategoryDetailView
|
||||
|
||||
|
||||
|
||||
.. rubric:: Methods
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~CategoryDetailView.as_view
|
||||
|
||||
~CategoryDetailView.dispatch
|
||||
|
||||
~CategoryDetailView.get
|
||||
|
||||
~CategoryDetailView.get_context_data
|
||||
|
||||
~CategoryDetailView.get_context_object_name
|
||||
|
||||
~CategoryDetailView.get_object
|
||||
|
||||
~CategoryDetailView.get_queryset
|
||||
|
||||
~CategoryDetailView.get_slug_field
|
||||
|
||||
~CategoryDetailView.get_template_names
|
||||
|
||||
~CategoryDetailView.http_method_not_allowed
|
||||
|
||||
~CategoryDetailView.options
|
||||
|
||||
~CategoryDetailView.render_to_response
|
||||
|
||||
~CategoryDetailView.setup
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.. rubric:: Attributes
|
||||
|
||||
.. autosummary::
|
||||
|
||||
~CategoryDetailView.content_type
|
||||
|
||||
~CategoryDetailView.context_object_name
|
||||
|
||||
~CategoryDetailView.extra_context
|
||||
|
||||
~CategoryDetailView.http_method_names
|
||||
|
||||
~CategoryDetailView.path_field
|
||||
|
||||
~CategoryDetailView.pk_url_kwarg
|
||||
|
||||
~CategoryDetailView.query_pk_and_slug
|
||||
|
||||
~CategoryDetailView.queryset
|
||||
|
||||
~CategoryDetailView.slug_field
|
||||
|
||||
~CategoryDetailView.slug_url_kwarg
|
||||
|
||||
~CategoryDetailView.template_engine
|
||||
|
||||
~CategoryDetailView.template_name
|
||||
|
||||
~CategoryDetailView.template_name_field
|
||||
|
||||
~CategoryDetailView.template_name_suffix
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue