nautobot 1.6.26__py3-none-any.whl → 1.6.28__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4235,8 +4235,7 @@
4235
4235
 
4236
4236
  <details class="quote">
4237
4237
  <summary>Source code in <code>nautobot/utilities/tables.py</code></summary>
4238
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-23"> 23</a></span>
4239
- <span class="normal"><a href="#__codelineno-0-24"> 24</a></span>
4238
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-24"> 24</a></span>
4240
4239
  <span class="normal"><a href="#__codelineno-0-25"> 25</a></span>
4241
4240
  <span class="normal"><a href="#__codelineno-0-26"> 26</a></span>
4242
4241
  <span class="normal"><a href="#__codelineno-0-27"> 27</a></span>
@@ -4364,136 +4363,147 @@
4364
4363
  <span class="normal"><a href="#__codelineno-0-149">149</a></span>
4365
4364
  <span class="normal"><a href="#__codelineno-0-150">150</a></span>
4366
4365
  <span class="normal"><a href="#__codelineno-0-151">151</a></span>
4367
- <span class="normal"><a href="#__codelineno-0-152">152</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-23" name="__codelineno-0-23"></a><span class="k">class</span> <span class="nc">BaseTable</span><span class="p">(</span><span class="n">tables</span><span class="o">.</span><span class="n">Table</span><span class="p">):</span>
4368
- <a id="__codelineno-0-24" name="__codelineno-0-24"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
4369
- <a id="__codelineno-0-25" name="__codelineno-0-25"></a><span class="sd"> Default table for object lists</span>
4370
- <a id="__codelineno-0-26" name="__codelineno-0-26"></a>
4371
- <a id="__codelineno-0-27" name="__codelineno-0-27"></a><span class="sd"> :param user: Personalize table display for the given user (optional). Has no effect if AnonymousUser is passed.</span>
4372
- <a id="__codelineno-0-28" name="__codelineno-0-28"></a><span class="sd"> &quot;&quot;&quot;</span>
4373
- <a id="__codelineno-0-29" name="__codelineno-0-29"></a>
4374
- <a id="__codelineno-0-30" name="__codelineno-0-30"></a> <span class="k">class</span> <span class="nc">Meta</span><span class="p">:</span>
4375
- <a id="__codelineno-0-31" name="__codelineno-0-31"></a> <span class="n">attrs</span> <span class="o">=</span> <span class="p">{</span>
4376
- <a id="__codelineno-0-32" name="__codelineno-0-32"></a> <span class="s2">&quot;class&quot;</span><span class="p">:</span> <span class="s2">&quot;table table-hover table-headings&quot;</span><span class="p">,</span>
4377
- <a id="__codelineno-0-33" name="__codelineno-0-33"></a> <span class="p">}</span>
4378
- <a id="__codelineno-0-34" name="__codelineno-0-34"></a>
4379
- <a id="__codelineno-0-35" name="__codelineno-0-35"></a> <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="n">user</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>
4380
- <a id="__codelineno-0-36" name="__codelineno-0-36"></a> <span class="kn">from</span> <span class="nn">nautobot.dcim.tables.template_code</span> <span class="kn">import</span> <span class="n">MPTT_LINK_WITHOUT_NESTING</span> <span class="c1"># Avoid Circular Import</span>
4381
- <a id="__codelineno-0-37" name="__codelineno-0-37"></a>
4382
- <a id="__codelineno-0-38" name="__codelineno-0-38"></a> <span class="c1"># Add custom field columns</span>
4383
- <a id="__codelineno-0-39" name="__codelineno-0-39"></a> <span class="n">obj_type</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">get_for_model</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_meta</span><span class="o">.</span><span class="n">model</span><span class="p">)</span>
4384
- <a id="__codelineno-0-40" name="__codelineno-0-40"></a>
4385
- <a id="__codelineno-0-41" name="__codelineno-0-41"></a> <span class="k">for</span> <span class="n">cf</span> <span class="ow">in</span> <span class="n">CustomField</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">content_types</span><span class="o">=</span><span class="n">obj_type</span><span class="p">):</span>
4386
- <a id="__codelineno-0-42" name="__codelineno-0-42"></a> <span class="n">name</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;cf_</span><span class="si">{</span><span class="n">cf</span><span class="o">.</span><span class="n">slug</span><span class="si">}</span><span class="s2">&quot;</span>
4387
- <a id="__codelineno-0-43" name="__codelineno-0-43"></a> <span class="bp">self</span><span class="o">.</span><span class="n">base_columns</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">CustomFieldColumn</span><span class="p">(</span><span class="n">cf</span><span class="p">)</span>
4388
- <a id="__codelineno-0-44" name="__codelineno-0-44"></a>
4389
- <a id="__codelineno-0-45" name="__codelineno-0-45"></a> <span class="k">for</span> <span class="n">cpf</span> <span class="ow">in</span> <span class="n">ComputedField</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">content_type</span><span class="o">=</span><span class="n">obj_type</span><span class="p">):</span>
4390
- <a id="__codelineno-0-46" name="__codelineno-0-46"></a> <span class="bp">self</span><span class="o">.</span><span class="n">base_columns</span><span class="p">[</span><span class="sa">f</span><span class="s2">&quot;cpf_</span><span class="si">{</span><span class="n">cpf</span><span class="o">.</span><span class="n">slug</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">ComputedFieldColumn</span><span class="p">(</span><span class="n">cpf</span><span class="p">)</span>
4391
- <a id="__codelineno-0-47" name="__codelineno-0-47"></a>
4392
- <a id="__codelineno-0-48" name="__codelineno-0-48"></a> <span class="k">for</span> <span class="n">relationship</span> <span class="ow">in</span> <span class="n">Relationship</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">source_type</span><span class="o">=</span><span class="n">obj_type</span><span class="p">):</span>
4393
- <a id="__codelineno-0-49" name="__codelineno-0-49"></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">relationship</span><span class="o">.</span><span class="n">symmetric</span><span class="p">:</span>
4394
- <a id="__codelineno-0-50" name="__codelineno-0-50"></a> <span class="bp">self</span><span class="o">.</span><span class="n">base_columns</span><span class="p">[</span><span class="sa">f</span><span class="s2">&quot;cr_</span><span class="si">{</span><span class="n">relationship</span><span class="o">.</span><span class="n">slug</span><span class="si">}</span><span class="s2">_src&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">RelationshipColumn</span><span class="p">(</span>
4395
- <a id="__codelineno-0-51" name="__codelineno-0-51"></a> <span class="n">relationship</span><span class="p">,</span> <span class="n">side</span><span class="o">=</span><span class="n">RelationshipSideChoices</span><span class="o">.</span><span class="n">SIDE_SOURCE</span>
4396
- <a id="__codelineno-0-52" name="__codelineno-0-52"></a> <span class="p">)</span>
4397
- <a id="__codelineno-0-53" name="__codelineno-0-53"></a> <span class="k">else</span><span class="p">:</span>
4398
- <a id="__codelineno-0-54" name="__codelineno-0-54"></a> <span class="bp">self</span><span class="o">.</span><span class="n">base_columns</span><span class="p">[</span><span class="sa">f</span><span class="s2">&quot;cr_</span><span class="si">{</span><span class="n">relationship</span><span class="o">.</span><span class="n">slug</span><span class="si">}</span><span class="s2">_peer&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">RelationshipColumn</span><span class="p">(</span>
4399
- <a id="__codelineno-0-55" name="__codelineno-0-55"></a> <span class="n">relationship</span><span class="p">,</span> <span class="n">side</span><span class="o">=</span><span class="n">RelationshipSideChoices</span><span class="o">.</span><span class="n">SIDE_PEER</span>
4400
- <a id="__codelineno-0-56" name="__codelineno-0-56"></a> <span class="p">)</span>
4401
- <a id="__codelineno-0-57" name="__codelineno-0-57"></a>
4402
- <a id="__codelineno-0-58" name="__codelineno-0-58"></a> <span class="k">for</span> <span class="n">relationship</span> <span class="ow">in</span> <span class="n">Relationship</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">destination_type</span><span class="o">=</span><span class="n">obj_type</span><span class="p">):</span>
4403
- <a id="__codelineno-0-59" name="__codelineno-0-59"></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">relationship</span><span class="o">.</span><span class="n">symmetric</span><span class="p">:</span>
4404
- <a id="__codelineno-0-60" name="__codelineno-0-60"></a> <span class="bp">self</span><span class="o">.</span><span class="n">base_columns</span><span class="p">[</span><span class="sa">f</span><span class="s2">&quot;cr_</span><span class="si">{</span><span class="n">relationship</span><span class="o">.</span><span class="n">slug</span><span class="si">}</span><span class="s2">_dst&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">RelationshipColumn</span><span class="p">(</span>
4405
- <a id="__codelineno-0-61" name="__codelineno-0-61"></a> <span class="n">relationship</span><span class="p">,</span> <span class="n">side</span><span class="o">=</span><span class="n">RelationshipSideChoices</span><span class="o">.</span><span class="n">SIDE_DESTINATION</span>
4406
- <a id="__codelineno-0-62" name="__codelineno-0-62"></a> <span class="p">)</span>
4407
- <a id="__codelineno-0-63" name="__codelineno-0-63"></a> <span class="c1"># symmetric relationships are already handled above in the source_type case</span>
4408
- <a id="__codelineno-0-64" name="__codelineno-0-64"></a>
4409
- <a id="__codelineno-0-65" name="__codelineno-0-65"></a> <span class="n">model</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">Meta</span><span class="p">,</span> <span class="s2">&quot;model&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
4410
- <a id="__codelineno-0-66" name="__codelineno-0-66"></a> <span class="c1"># Disable ordering on these TreeNode Models Table because TreeNode do not support sorting</span>
4411
- <a id="__codelineno-0-67" name="__codelineno-0-67"></a> <span class="k">if</span> <span class="n">model</span> <span class="ow">and</span> <span class="nb">issubclass</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">TreeNode</span><span class="p">):</span>
4412
- <a id="__codelineno-0-68" name="__codelineno-0-68"></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;orderable&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">False</span>
4413
- <a id="__codelineno-0-69" name="__codelineno-0-69"></a>
4414
- <a id="__codelineno-0-70" name="__codelineno-0-70"></a> <span class="c1"># Init table</span>
4415
- <a id="__codelineno-0-71" name="__codelineno-0-71"></a> <span class="nb">super</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>
4416
- <a id="__codelineno-0-72" name="__codelineno-0-72"></a>
4417
- <a id="__codelineno-0-73" name="__codelineno-0-73"></a> <span class="c1"># The name nesting is removed when sorting on the UI because it results in rows appearing as children of the wrong parent rows.</span>
4418
- <a id="__codelineno-0-74" name="__codelineno-0-74"></a> <span class="k">if</span> <span class="n">model</span> <span class="ow">and</span> <span class="nb">issubclass</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">MPTTModel</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">order_by</span><span class="p">:</span>
4419
- <a id="__codelineno-0-75" name="__codelineno-0-75"></a> <span class="bp">self</span><span class="o">.</span><span class="n">columns</span><span class="p">[</span><span class="s2">&quot;name&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">column</span><span class="o">.</span><span class="n">template_code</span> <span class="o">=</span> <span class="n">MPTT_LINK_WITHOUT_NESTING</span>
4420
- <a id="__codelineno-0-76" name="__codelineno-0-76"></a>
4421
- <a id="__codelineno-0-77" name="__codelineno-0-77"></a> <span class="c1"># Set default empty_text if none was provided</span>
4422
- <a id="__codelineno-0-78" name="__codelineno-0-78"></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">empty_text</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
4423
- <a id="__codelineno-0-79" name="__codelineno-0-79"></a> <span class="bp">self</span><span class="o">.</span><span class="n">empty_text</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;No </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_meta</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_plural</span><span class="si">}</span><span class="s2"> found&quot;</span>
4424
- <a id="__codelineno-0-80" name="__codelineno-0-80"></a>
4425
- <a id="__codelineno-0-81" name="__codelineno-0-81"></a> <span class="c1"># Hide non-default columns</span>
4426
- <a id="__codelineno-0-82" name="__codelineno-0-82"></a> <span class="n">default_columns</span> <span class="o">=</span> <span class="nb">list</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">Meta</span><span class="p">,</span> <span class="s2">&quot;default_columns&quot;</span><span class="p">,</span> <span class="p">[]))</span>
4427
- <a id="__codelineno-0-83" name="__codelineno-0-83"></a> <span class="n">extra_columns</span> <span class="o">=</span> <span class="p">[</span><span class="n">c</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;extra_columns&quot;</span><span class="p">,</span> <span class="p">[])]</span> <span class="c1"># extra_columns is a list of tuples</span>
4428
- <a id="__codelineno-0-84" name="__codelineno-0-84"></a> <span class="k">if</span> <span class="n">default_columns</span><span class="p">:</span>
4429
- <a id="__codelineno-0-85" name="__codelineno-0-85"></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">columns</span><span class="p">:</span>
4430
- <a id="__codelineno-0-86" name="__codelineno-0-86"></a> <span class="k">if</span> <span class="n">column</span><span class="o">.</span><span class="n">name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">default_columns</span> <span class="ow">and</span> <span class="n">column</span><span class="o">.</span><span class="n">name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">extra_columns</span><span class="p">:</span>
4431
- <a id="__codelineno-0-87" name="__codelineno-0-87"></a> <span class="c1"># Hide the column if it is non-default *and* not manually specified as an extra column</span>
4432
- <a id="__codelineno-0-88" name="__codelineno-0-88"></a> <span class="bp">self</span><span class="o">.</span><span class="n">columns</span><span class="o">.</span><span class="n">hide</span><span class="p">(</span><span class="n">column</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
4433
- <a id="__codelineno-0-89" name="__codelineno-0-89"></a>
4434
- <a id="__codelineno-0-90" name="__codelineno-0-90"></a> <span class="c1"># Apply custom column ordering for user</span>
4435
- <a id="__codelineno-0-91" name="__codelineno-0-91"></a> <span class="k">if</span> <span class="n">user</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">user</span><span class="p">,</span> <span class="n">AnonymousUser</span><span class="p">):</span>
4436
- <a id="__codelineno-0-92" name="__codelineno-0-92"></a> <span class="n">columns</span> <span class="o">=</span> <span class="n">user</span><span class="o">.</span><span class="n">get_config</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;tables.</span><span class="si">{</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="si">}</span><span class="s2">.columns&quot;</span><span class="p">)</span>
4437
- <a id="__codelineno-0-93" name="__codelineno-0-93"></a> <span class="k">if</span> <span class="n">columns</span><span class="p">:</span>
4438
- <a id="__codelineno-0-94" name="__codelineno-0-94"></a> <span class="n">pk</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">base_columns</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">&quot;pk&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
4439
- <a id="__codelineno-0-95" name="__codelineno-0-95"></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">base_columns</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">&quot;actions&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
4440
- <a id="__codelineno-0-96" name="__codelineno-0-96"></a>
4441
- <a id="__codelineno-0-97" name="__codelineno-0-97"></a> <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">column</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">base_columns</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
4442
- <a id="__codelineno-0-98" name="__codelineno-0-98"></a> <span class="k">if</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">columns</span><span class="p">:</span>
4443
- <a id="__codelineno-0-99" name="__codelineno-0-99"></a> <span class="bp">self</span><span class="o">.</span><span class="n">columns</span><span class="o">.</span><span class="n">show</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
4444
- <a id="__codelineno-0-100" name="__codelineno-0-100"></a> <span class="k">else</span><span class="p">:</span>
4445
- <a id="__codelineno-0-101" name="__codelineno-0-101"></a> <span class="bp">self</span><span class="o">.</span><span class="n">columns</span><span class="o">.</span><span class="n">hide</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
4446
- <a id="__codelineno-0-102" name="__codelineno-0-102"></a> <span class="bp">self</span><span class="o">.</span><span class="n">sequence</span> <span class="o">=</span> <span class="p">[</span><span class="n">c</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">columns</span> <span class="k">if</span> <span class="n">c</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">base_columns</span><span class="p">]</span>
4447
- <a id="__codelineno-0-103" name="__codelineno-0-103"></a>
4448
- <a id="__codelineno-0-104" name="__codelineno-0-104"></a> <span class="c1"># Always include PK and actions column, if defined on the table</span>
4449
- <a id="__codelineno-0-105" name="__codelineno-0-105"></a> <span class="k">if</span> <span class="n">pk</span><span class="p">:</span>
4450
- <a id="__codelineno-0-106" name="__codelineno-0-106"></a> <span class="bp">self</span><span class="o">.</span><span class="n">base_columns</span><span class="p">[</span><span class="s2">&quot;pk&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">pk</span>
4451
- <a id="__codelineno-0-107" name="__codelineno-0-107"></a> <span class="bp">self</span><span class="o">.</span><span class="n">sequence</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="s2">&quot;pk&quot;</span><span class="p">)</span>
4452
- <a id="__codelineno-0-108" name="__codelineno-0-108"></a> <span class="k">if</span> <span class="n">actions</span><span class="p">:</span>
4453
- <a id="__codelineno-0-109" name="__codelineno-0-109"></a> <span class="bp">self</span><span class="o">.</span><span class="n">base_columns</span><span class="p">[</span><span class="s2">&quot;actions&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">actions</span>
4454
- <a id="__codelineno-0-110" name="__codelineno-0-110"></a> <span class="bp">self</span><span class="o">.</span><span class="n">sequence</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;actions&quot;</span><span class="p">)</span>
4455
- <a id="__codelineno-0-111" name="__codelineno-0-111"></a>
4456
- <a id="__codelineno-0-112" name="__codelineno-0-112"></a> <span class="c1"># Dynamically update the table&#39;s QuerySet to ensure related fields are pre-fetched</span>
4457
- <a id="__codelineno-0-113" name="__codelineno-0-113"></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="p">,</span> <span class="n">TableQuerysetData</span><span class="p">):</span>
4458
- <a id="__codelineno-0-114" name="__codelineno-0-114"></a> <span class="c1"># v2 TODO(jathan): Replace prefetch_related with select_related</span>
4459
- <a id="__codelineno-0-115" name="__codelineno-0-115"></a> <span class="n">prefetch_fields</span> <span class="o">=</span> <span class="p">[]</span>
4460
- <a id="__codelineno-0-116" name="__codelineno-0-116"></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">columns</span><span class="p">:</span>
4461
- <a id="__codelineno-0-117" name="__codelineno-0-117"></a> <span class="k">if</span> <span class="n">column</span><span class="o">.</span><span class="n">visible</span><span class="p">:</span>
4462
- <a id="__codelineno-0-118" name="__codelineno-0-118"></a> <span class="n">model</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">Meta</span><span class="p">,</span> <span class="s2">&quot;model&quot;</span><span class="p">)</span>
4463
- <a id="__codelineno-0-119" name="__codelineno-0-119"></a> <span class="n">accessor</span> <span class="o">=</span> <span class="n">column</span><span class="o">.</span><span class="n">accessor</span>
4464
- <a id="__codelineno-0-120" name="__codelineno-0-120"></a> <span class="n">prefetch_path</span> <span class="o">=</span> <span class="p">[]</span>
4465
- <a id="__codelineno-0-121" name="__codelineno-0-121"></a> <span class="k">for</span> <span class="n">field_name</span> <span class="ow">in</span> <span class="n">accessor</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">accessor</span><span class="o">.</span><span class="n">SEPARATOR</span><span class="p">):</span>
4466
- <a id="__codelineno-0-122" name="__codelineno-0-122"></a> <span class="k">try</span><span class="p">:</span>
4467
- <a id="__codelineno-0-123" name="__codelineno-0-123"></a> <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>
4468
- <a id="__codelineno-0-124" name="__codelineno-0-124"></a> <span class="k">except</span> <span class="n">FieldDoesNotExist</span><span class="p">:</span>
4469
- <a id="__codelineno-0-125" name="__codelineno-0-125"></a> <span class="k">break</span>
4470
- <a id="__codelineno-0-126" name="__codelineno-0-126"></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="n">RelatedField</span><span class="p">):</span>
4471
- <a id="__codelineno-0-127" name="__codelineno-0-127"></a> <span class="c1"># Follow ForeignKeys to the related model</span>
4472
- <a id="__codelineno-0-128" name="__codelineno-0-128"></a> <span class="n">prefetch_path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">field_name</span><span class="p">)</span>
4473
- <a id="__codelineno-0-129" name="__codelineno-0-129"></a> <span class="n">model</span> <span class="o">=</span> <span class="n">field</span><span class="o">.</span><span class="n">remote_field</span><span class="o">.</span><span class="n">model</span>
4474
- <a id="__codelineno-0-130" name="__codelineno-0-130"></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="n">GenericForeignKey</span><span class="p">):</span>
4475
- <a id="__codelineno-0-131" name="__codelineno-0-131"></a> <span class="c1"># Can&#39;t prefetch beyond a GenericForeignKey</span>
4476
- <a id="__codelineno-0-132" name="__codelineno-0-132"></a> <span class="n">prefetch_path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">field_name</span><span class="p">)</span>
4477
- <a id="__codelineno-0-133" name="__codelineno-0-133"></a> <span class="k">break</span>
4478
- <a id="__codelineno-0-134" name="__codelineno-0-134"></a> <span class="k">if</span> <span class="n">prefetch_path</span><span class="p">:</span>
4479
- <a id="__codelineno-0-135" name="__codelineno-0-135"></a> <span class="n">prefetch_fields</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;__&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">prefetch_path</span><span class="p">))</span>
4480
- <a id="__codelineno-0-136" name="__codelineno-0-136"></a> <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">prefetch_related</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span><span class="o">.</span><span class="n">prefetch_related</span><span class="p">(</span><span class="o">*</span><span class="n">prefetch_fields</span><span class="p">)</span>
4481
- <a id="__codelineno-0-137" name="__codelineno-0-137"></a>
4482
- <a id="__codelineno-0-138" name="__codelineno-0-138"></a> <span class="nd">@property</span>
4483
- <a id="__codelineno-0-139" name="__codelineno-0-139"></a> <span class="k">def</span> <span class="nf">configurable_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
4484
- <a id="__codelineno-0-140" name="__codelineno-0-140"></a> <span class="n">selected_columns</span> <span class="o">=</span> <span class="p">[</span>
4485
- <a id="__codelineno-0-141" name="__codelineno-0-141"></a> <span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">columns</span><span class="p">[</span><span class="n">name</span><span class="p">]</span><span class="o">.</span><span class="n">verbose_name</span><span class="p">)</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">sequence</span> <span class="k">if</span> <span class="n">name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;pk&quot;</span><span class="p">,</span> <span class="s2">&quot;actions&quot;</span><span class="p">]</span>
4486
- <a id="__codelineno-0-142" name="__codelineno-0-142"></a> <span class="p">]</span>
4487
- <a id="__codelineno-0-143" name="__codelineno-0-143"></a> <span class="n">available_columns</span> <span class="o">=</span> <span class="p">[</span>
4488
- <a id="__codelineno-0-144" name="__codelineno-0-144"></a> <span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">column</span><span class="o">.</span><span class="n">verbose_name</span><span class="p">)</span>
4489
- <a id="__codelineno-0-145" name="__codelineno-0-145"></a> <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">column</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">columns</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
4490
- <a id="__codelineno-0-146" name="__codelineno-0-146"></a> <span class="k">if</span> <span class="n">name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">sequence</span> <span class="ow">and</span> <span class="n">name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;pk&quot;</span><span class="p">,</span> <span class="s2">&quot;actions&quot;</span><span class="p">]</span>
4491
- <a id="__codelineno-0-147" name="__codelineno-0-147"></a> <span class="p">]</span>
4492
- <a id="__codelineno-0-148" name="__codelineno-0-148"></a> <span class="k">return</span> <span class="n">selected_columns</span> <span class="o">+</span> <span class="n">available_columns</span>
4493
- <a id="__codelineno-0-149" name="__codelineno-0-149"></a>
4494
- <a id="__codelineno-0-150" name="__codelineno-0-150"></a> <span class="nd">@property</span>
4495
- <a id="__codelineno-0-151" name="__codelineno-0-151"></a> <span class="k">def</span> <span class="nf">visible_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
4496
- <a id="__codelineno-0-152" name="__codelineno-0-152"></a> <span class="k">return</span> <span class="p">[</span><span class="n">name</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">sequence</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">columns</span><span class="p">[</span><span class="n">name</span><span class="p">]</span><span class="o">.</span><span class="n">visible</span><span class="p">]</span>
4366
+ <span class="normal"><a href="#__codelineno-0-152">152</a></span>
4367
+ <span class="normal"><a href="#__codelineno-0-153">153</a></span>
4368
+ <span class="normal"><a href="#__codelineno-0-154">154</a></span>
4369
+ <span class="normal"><a href="#__codelineno-0-155">155</a></span>
4370
+ <span class="normal"><a href="#__codelineno-0-156">156</a></span>
4371
+ <span class="normal"><a href="#__codelineno-0-157">157</a></span>
4372
+ <span class="normal"><a href="#__codelineno-0-158">158</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-24" name="__codelineno-0-24"></a><span class="k">class</span> <span class="nc">BaseTable</span><span class="p">(</span><span class="n">tables</span><span class="o">.</span><span class="n">Table</span><span class="p">):</span>
4373
+ <a id="__codelineno-0-25" name="__codelineno-0-25"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
4374
+ <a id="__codelineno-0-26" name="__codelineno-0-26"></a><span class="sd"> Default table for object lists</span>
4375
+ <a id="__codelineno-0-27" name="__codelineno-0-27"></a>
4376
+ <a id="__codelineno-0-28" name="__codelineno-0-28"></a><span class="sd"> :param user: Personalize table display for the given user (optional). Has no effect if AnonymousUser is passed.</span>
4377
+ <a id="__codelineno-0-29" name="__codelineno-0-29"></a><span class="sd"> &quot;&quot;&quot;</span>
4378
+ <a id="__codelineno-0-30" name="__codelineno-0-30"></a>
4379
+ <a id="__codelineno-0-31" name="__codelineno-0-31"></a> <span class="k">class</span> <span class="nc">Meta</span><span class="p">:</span>
4380
+ <a id="__codelineno-0-32" name="__codelineno-0-32"></a> <span class="n">attrs</span> <span class="o">=</span> <span class="p">{</span>
4381
+ <a id="__codelineno-0-33" name="__codelineno-0-33"></a> <span class="s2">&quot;class&quot;</span><span class="p">:</span> <span class="s2">&quot;table table-hover table-headings&quot;</span><span class="p">,</span>
4382
+ <a id="__codelineno-0-34" name="__codelineno-0-34"></a> <span class="p">}</span>
4383
+ <a id="__codelineno-0-35" name="__codelineno-0-35"></a>
4384
+ <a id="__codelineno-0-36" name="__codelineno-0-36"></a> <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="n">user</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>
4385
+ <a id="__codelineno-0-37" name="__codelineno-0-37"></a> <span class="kn">from</span> <span class="nn">nautobot.dcim.tables.template_code</span> <span class="kn">import</span> <span class="n">MPTT_LINK_WITHOUT_NESTING</span> <span class="c1"># Avoid Circular Import</span>
4386
+ <a id="__codelineno-0-38" name="__codelineno-0-38"></a>
4387
+ <a id="__codelineno-0-39" name="__codelineno-0-39"></a> <span class="c1"># Add custom field columns</span>
4388
+ <a id="__codelineno-0-40" name="__codelineno-0-40"></a> <span class="n">obj_type</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">get_for_model</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_meta</span><span class="o">.</span><span class="n">model</span><span class="p">)</span>
4389
+ <a id="__codelineno-0-41" name="__codelineno-0-41"></a>
4390
+ <a id="__codelineno-0-42" name="__codelineno-0-42"></a> <span class="k">for</span> <span class="n">cf</span> <span class="ow">in</span> <span class="n">CustomField</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">content_types</span><span class="o">=</span><span class="n">obj_type</span><span class="p">):</span>
4391
+ <a id="__codelineno-0-43" name="__codelineno-0-43"></a> <span class="n">name</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;cf_</span><span class="si">{</span><span class="n">cf</span><span class="o">.</span><span class="n">slug</span><span class="si">}</span><span class="s2">&quot;</span>
4392
+ <a id="__codelineno-0-44" name="__codelineno-0-44"></a> <span class="bp">self</span><span class="o">.</span><span class="n">base_columns</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">CustomFieldColumn</span><span class="p">(</span><span class="n">cf</span><span class="p">)</span>
4393
+ <a id="__codelineno-0-45" name="__codelineno-0-45"></a>
4394
+ <a id="__codelineno-0-46" name="__codelineno-0-46"></a> <span class="k">for</span> <span class="n">cpf</span> <span class="ow">in</span> <span class="n">ComputedField</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">content_type</span><span class="o">=</span><span class="n">obj_type</span><span class="p">):</span>
4395
+ <a id="__codelineno-0-47" name="__codelineno-0-47"></a> <span class="bp">self</span><span class="o">.</span><span class="n">base_columns</span><span class="p">[</span><span class="sa">f</span><span class="s2">&quot;cpf_</span><span class="si">{</span><span class="n">cpf</span><span class="o">.</span><span class="n">slug</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">ComputedFieldColumn</span><span class="p">(</span><span class="n">cpf</span><span class="p">)</span>
4396
+ <a id="__codelineno-0-48" name="__codelineno-0-48"></a>
4397
+ <a id="__codelineno-0-49" name="__codelineno-0-49"></a> <span class="k">for</span> <span class="n">relationship</span> <span class="ow">in</span> <span class="n">Relationship</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">source_type</span><span class="o">=</span><span class="n">obj_type</span><span class="p">):</span>
4398
+ <a id="__codelineno-0-50" name="__codelineno-0-50"></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">relationship</span><span class="o">.</span><span class="n">symmetric</span><span class="p">:</span>
4399
+ <a id="__codelineno-0-51" name="__codelineno-0-51"></a> <span class="bp">self</span><span class="o">.</span><span class="n">base_columns</span><span class="p">[</span><span class="sa">f</span><span class="s2">&quot;cr_</span><span class="si">{</span><span class="n">relationship</span><span class="o">.</span><span class="n">slug</span><span class="si">}</span><span class="s2">_src&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">RelationshipColumn</span><span class="p">(</span>
4400
+ <a id="__codelineno-0-52" name="__codelineno-0-52"></a> <span class="n">relationship</span><span class="p">,</span> <span class="n">side</span><span class="o">=</span><span class="n">RelationshipSideChoices</span><span class="o">.</span><span class="n">SIDE_SOURCE</span>
4401
+ <a id="__codelineno-0-53" name="__codelineno-0-53"></a> <span class="p">)</span>
4402
+ <a id="__codelineno-0-54" name="__codelineno-0-54"></a> <span class="k">else</span><span class="p">:</span>
4403
+ <a id="__codelineno-0-55" name="__codelineno-0-55"></a> <span class="bp">self</span><span class="o">.</span><span class="n">base_columns</span><span class="p">[</span><span class="sa">f</span><span class="s2">&quot;cr_</span><span class="si">{</span><span class="n">relationship</span><span class="o">.</span><span class="n">slug</span><span class="si">}</span><span class="s2">_peer&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">RelationshipColumn</span><span class="p">(</span>
4404
+ <a id="__codelineno-0-56" name="__codelineno-0-56"></a> <span class="n">relationship</span><span class="p">,</span> <span class="n">side</span><span class="o">=</span><span class="n">RelationshipSideChoices</span><span class="o">.</span><span class="n">SIDE_PEER</span>
4405
+ <a id="__codelineno-0-57" name="__codelineno-0-57"></a> <span class="p">)</span>
4406
+ <a id="__codelineno-0-58" name="__codelineno-0-58"></a>
4407
+ <a id="__codelineno-0-59" name="__codelineno-0-59"></a> <span class="k">for</span> <span class="n">relationship</span> <span class="ow">in</span> <span class="n">Relationship</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">destination_type</span><span class="o">=</span><span class="n">obj_type</span><span class="p">):</span>
4408
+ <a id="__codelineno-0-60" name="__codelineno-0-60"></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">relationship</span><span class="o">.</span><span class="n">symmetric</span><span class="p">:</span>
4409
+ <a id="__codelineno-0-61" name="__codelineno-0-61"></a> <span class="bp">self</span><span class="o">.</span><span class="n">base_columns</span><span class="p">[</span><span class="sa">f</span><span class="s2">&quot;cr_</span><span class="si">{</span><span class="n">relationship</span><span class="o">.</span><span class="n">slug</span><span class="si">}</span><span class="s2">_dst&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">RelationshipColumn</span><span class="p">(</span>
4410
+ <a id="__codelineno-0-62" name="__codelineno-0-62"></a> <span class="n">relationship</span><span class="p">,</span> <span class="n">side</span><span class="o">=</span><span class="n">RelationshipSideChoices</span><span class="o">.</span><span class="n">SIDE_DESTINATION</span>
4411
+ <a id="__codelineno-0-63" name="__codelineno-0-63"></a> <span class="p">)</span>
4412
+ <a id="__codelineno-0-64" name="__codelineno-0-64"></a> <span class="c1"># symmetric relationships are already handled above in the source_type case</span>
4413
+ <a id="__codelineno-0-65" name="__codelineno-0-65"></a>
4414
+ <a id="__codelineno-0-66" name="__codelineno-0-66"></a> <span class="n">model</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">Meta</span><span class="p">,</span> <span class="s2">&quot;model&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
4415
+ <a id="__codelineno-0-67" name="__codelineno-0-67"></a> <span class="c1"># Disable ordering on these TreeNode Models Table because TreeNode do not support sorting</span>
4416
+ <a id="__codelineno-0-68" name="__codelineno-0-68"></a> <span class="k">if</span> <span class="n">model</span> <span class="ow">and</span> <span class="nb">issubclass</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">TreeNode</span><span class="p">):</span>
4417
+ <a id="__codelineno-0-69" name="__codelineno-0-69"></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;orderable&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">False</span>
4418
+ <a id="__codelineno-0-70" name="__codelineno-0-70"></a>
4419
+ <a id="__codelineno-0-71" name="__codelineno-0-71"></a> <span class="c1"># Init table</span>
4420
+ <a id="__codelineno-0-72" name="__codelineno-0-72"></a> <span class="nb">super</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>
4421
+ <a id="__codelineno-0-73" name="__codelineno-0-73"></a>
4422
+ <a id="__codelineno-0-74" name="__codelineno-0-74"></a> <span class="c1"># The name nesting is removed when sorting on the UI because it results in rows appearing as children of the wrong parent rows.</span>
4423
+ <a id="__codelineno-0-75" name="__codelineno-0-75"></a> <span class="k">if</span> <span class="n">model</span> <span class="ow">and</span> <span class="nb">issubclass</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">MPTTModel</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">order_by</span><span class="p">:</span>
4424
+ <a id="__codelineno-0-76" name="__codelineno-0-76"></a> <span class="bp">self</span><span class="o">.</span><span class="n">columns</span><span class="p">[</span><span class="s2">&quot;name&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">column</span><span class="o">.</span><span class="n">template_code</span> <span class="o">=</span> <span class="n">MPTT_LINK_WITHOUT_NESTING</span>
4425
+ <a id="__codelineno-0-77" name="__codelineno-0-77"></a>
4426
+ <a id="__codelineno-0-78" name="__codelineno-0-78"></a> <span class="c1"># Set default empty_text if none was provided</span>
4427
+ <a id="__codelineno-0-79" name="__codelineno-0-79"></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">empty_text</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
4428
+ <a id="__codelineno-0-80" name="__codelineno-0-80"></a> <span class="bp">self</span><span class="o">.</span><span class="n">empty_text</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;No </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_meta</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_plural</span><span class="si">}</span><span class="s2"> found&quot;</span>
4429
+ <a id="__codelineno-0-81" name="__codelineno-0-81"></a>
4430
+ <a id="__codelineno-0-82" name="__codelineno-0-82"></a> <span class="c1"># Hide non-default columns</span>
4431
+ <a id="__codelineno-0-83" name="__codelineno-0-83"></a> <span class="n">default_columns</span> <span class="o">=</span> <span class="nb">list</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">Meta</span><span class="p">,</span> <span class="s2">&quot;default_columns&quot;</span><span class="p">,</span> <span class="p">[]))</span>
4432
+ <a id="__codelineno-0-84" name="__codelineno-0-84"></a> <span class="n">extra_columns</span> <span class="o">=</span> <span class="p">[</span><span class="n">c</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;extra_columns&quot;</span><span class="p">,</span> <span class="p">[])]</span> <span class="c1"># extra_columns is a list of tuples</span>
4433
+ <a id="__codelineno-0-85" name="__codelineno-0-85"></a> <span class="k">if</span> <span class="n">default_columns</span><span class="p">:</span>
4434
+ <a id="__codelineno-0-86" name="__codelineno-0-86"></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">columns</span><span class="p">:</span>
4435
+ <a id="__codelineno-0-87" name="__codelineno-0-87"></a> <span class="k">if</span> <span class="n">column</span><span class="o">.</span><span class="n">name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">default_columns</span> <span class="ow">and</span> <span class="n">column</span><span class="o">.</span><span class="n">name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">extra_columns</span><span class="p">:</span>
4436
+ <a id="__codelineno-0-88" name="__codelineno-0-88"></a> <span class="c1"># Hide the column if it is non-default *and* not manually specified as an extra column</span>
4437
+ <a id="__codelineno-0-89" name="__codelineno-0-89"></a> <span class="bp">self</span><span class="o">.</span><span class="n">columns</span><span class="o">.</span><span class="n">hide</span><span class="p">(</span><span class="n">column</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
4438
+ <a id="__codelineno-0-90" name="__codelineno-0-90"></a>
4439
+ <a id="__codelineno-0-91" name="__codelineno-0-91"></a> <span class="c1"># Apply custom column ordering for user</span>
4440
+ <a id="__codelineno-0-92" name="__codelineno-0-92"></a> <span class="n">columns</span> <span class="o">=</span> <span class="p">[]</span>
4441
+ <a id="__codelineno-0-93" name="__codelineno-0-93"></a> <span class="n">pk</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">base_columns</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">&quot;pk&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
4442
+ <a id="__codelineno-0-94" name="__codelineno-0-94"></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">base_columns</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">&quot;actions&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
4443
+ <a id="__codelineno-0-95" name="__codelineno-0-95"></a>
4444
+ <a id="__codelineno-0-96" name="__codelineno-0-96"></a> <span class="k">if</span> <span class="n">user</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">user</span><span class="p">,</span> <span class="n">AnonymousUser</span><span class="p">):</span>
4445
+ <a id="__codelineno-0-97" name="__codelineno-0-97"></a> <span class="n">columns</span> <span class="o">=</span> <span class="n">user</span><span class="o">.</span><span class="n">get_config</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;tables.</span><span class="si">{</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="si">}</span><span class="s2">.columns&quot;</span><span class="p">)</span>
4446
+ <a id="__codelineno-0-98" name="__codelineno-0-98"></a> <span class="k">if</span> <span class="n">columns</span><span class="p">:</span>
4447
+ <a id="__codelineno-0-99" name="__codelineno-0-99"></a> <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">column</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">base_columns</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
4448
+ <a id="__codelineno-0-100" name="__codelineno-0-100"></a> <span class="k">if</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">columns</span><span class="p">:</span>
4449
+ <a id="__codelineno-0-101" name="__codelineno-0-101"></a> <span class="bp">self</span><span class="o">.</span><span class="n">columns</span><span class="o">.</span><span class="n">show</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
4450
+ <a id="__codelineno-0-102" name="__codelineno-0-102"></a> <span class="k">else</span><span class="p">:</span>
4451
+ <a id="__codelineno-0-103" name="__codelineno-0-103"></a> <span class="bp">self</span><span class="o">.</span><span class="n">columns</span><span class="o">.</span><span class="n">hide</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
4452
+ <a id="__codelineno-0-104" name="__codelineno-0-104"></a> <span class="bp">self</span><span class="o">.</span><span class="n">sequence</span> <span class="o">=</span> <span class="p">[</span><span class="n">c</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">columns</span> <span class="k">if</span> <span class="n">c</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">base_columns</span><span class="p">]</span>
4453
+ <a id="__codelineno-0-105" name="__codelineno-0-105"></a>
4454
+ <a id="__codelineno-0-106" name="__codelineno-0-106"></a> <span class="c1"># Always include PK and actions column, if defined on the table</span>
4455
+ <a id="__codelineno-0-107" name="__codelineno-0-107"></a> <span class="k">if</span> <span class="n">pk</span><span class="p">:</span>
4456
+ <a id="__codelineno-0-108" name="__codelineno-0-108"></a> <span class="k">with</span> <span class="n">contextlib</span><span class="o">.</span><span class="n">suppress</span><span class="p">(</span><span class="ne">ValueError</span><span class="p">):</span>
4457
+ <a id="__codelineno-0-109" name="__codelineno-0-109"></a> <span class="bp">self</span><span class="o">.</span><span class="n">sequence</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="s2">&quot;pk&quot;</span><span class="p">)</span>
4458
+ <a id="__codelineno-0-110" name="__codelineno-0-110"></a> <span class="bp">self</span><span class="o">.</span><span class="n">base_columns</span><span class="p">[</span><span class="s2">&quot;pk&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">pk</span>
4459
+ <a id="__codelineno-0-111" name="__codelineno-0-111"></a> <span class="bp">self</span><span class="o">.</span><span class="n">sequence</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="s2">&quot;pk&quot;</span><span class="p">)</span>
4460
+ <a id="__codelineno-0-112" name="__codelineno-0-112"></a> <span class="k">if</span> <span class="n">actions</span><span class="p">:</span>
4461
+ <a id="__codelineno-0-113" name="__codelineno-0-113"></a> <span class="k">with</span> <span class="n">contextlib</span><span class="o">.</span><span class="n">suppress</span><span class="p">(</span><span class="ne">ValueError</span><span class="p">):</span>
4462
+ <a id="__codelineno-0-114" name="__codelineno-0-114"></a> <span class="bp">self</span><span class="o">.</span><span class="n">sequence</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="s2">&quot;actions&quot;</span><span class="p">)</span>
4463
+ <a id="__codelineno-0-115" name="__codelineno-0-115"></a> <span class="bp">self</span><span class="o">.</span><span class="n">base_columns</span><span class="p">[</span><span class="s2">&quot;actions&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">actions</span>
4464
+ <a id="__codelineno-0-116" name="__codelineno-0-116"></a> <span class="bp">self</span><span class="o">.</span><span class="n">sequence</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;actions&quot;</span><span class="p">)</span>
4465
+ <a id="__codelineno-0-117" name="__codelineno-0-117"></a>
4466
+ <a id="__codelineno-0-118" name="__codelineno-0-118"></a> <span class="c1"># Dynamically update the table&#39;s QuerySet to ensure related fields are pre-fetched</span>
4467
+ <a id="__codelineno-0-119" name="__codelineno-0-119"></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="p">,</span> <span class="n">TableQuerysetData</span><span class="p">):</span>
4468
+ <a id="__codelineno-0-120" name="__codelineno-0-120"></a> <span class="c1"># v2 TODO(jathan): Replace prefetch_related with select_related</span>
4469
+ <a id="__codelineno-0-121" name="__codelineno-0-121"></a> <span class="n">prefetch_fields</span> <span class="o">=</span> <span class="p">[]</span>
4470
+ <a id="__codelineno-0-122" name="__codelineno-0-122"></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">columns</span><span class="p">:</span>
4471
+ <a id="__codelineno-0-123" name="__codelineno-0-123"></a> <span class="k">if</span> <span class="n">column</span><span class="o">.</span><span class="n">visible</span><span class="p">:</span>
4472
+ <a id="__codelineno-0-124" name="__codelineno-0-124"></a> <span class="n">model</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">Meta</span><span class="p">,</span> <span class="s2">&quot;model&quot;</span><span class="p">)</span>
4473
+ <a id="__codelineno-0-125" name="__codelineno-0-125"></a> <span class="n">accessor</span> <span class="o">=</span> <span class="n">column</span><span class="o">.</span><span class="n">accessor</span>
4474
+ <a id="__codelineno-0-126" name="__codelineno-0-126"></a> <span class="n">prefetch_path</span> <span class="o">=</span> <span class="p">[]</span>
4475
+ <a id="__codelineno-0-127" name="__codelineno-0-127"></a> <span class="k">for</span> <span class="n">field_name</span> <span class="ow">in</span> <span class="n">accessor</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">accessor</span><span class="o">.</span><span class="n">SEPARATOR</span><span class="p">):</span>
4476
+ <a id="__codelineno-0-128" name="__codelineno-0-128"></a> <span class="k">try</span><span class="p">:</span>
4477
+ <a id="__codelineno-0-129" name="__codelineno-0-129"></a> <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>
4478
+ <a id="__codelineno-0-130" name="__codelineno-0-130"></a> <span class="k">except</span> <span class="n">FieldDoesNotExist</span><span class="p">:</span>
4479
+ <a id="__codelineno-0-131" name="__codelineno-0-131"></a> <span class="k">break</span>
4480
+ <a id="__codelineno-0-132" name="__codelineno-0-132"></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="n">RelatedField</span><span class="p">):</span>
4481
+ <a id="__codelineno-0-133" name="__codelineno-0-133"></a> <span class="c1"># Follow ForeignKeys to the related model</span>
4482
+ <a id="__codelineno-0-134" name="__codelineno-0-134"></a> <span class="n">prefetch_path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">field_name</span><span class="p">)</span>
4483
+ <a id="__codelineno-0-135" name="__codelineno-0-135"></a> <span class="n">model</span> <span class="o">=</span> <span class="n">field</span><span class="o">.</span><span class="n">remote_field</span><span class="o">.</span><span class="n">model</span>
4484
+ <a id="__codelineno-0-136" name="__codelineno-0-136"></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="n">GenericForeignKey</span><span class="p">):</span>
4485
+ <a id="__codelineno-0-137" name="__codelineno-0-137"></a> <span class="c1"># Can&#39;t prefetch beyond a GenericForeignKey</span>
4486
+ <a id="__codelineno-0-138" name="__codelineno-0-138"></a> <span class="n">prefetch_path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">field_name</span><span class="p">)</span>
4487
+ <a id="__codelineno-0-139" name="__codelineno-0-139"></a> <span class="k">break</span>
4488
+ <a id="__codelineno-0-140" name="__codelineno-0-140"></a> <span class="k">if</span> <span class="n">prefetch_path</span><span class="p">:</span>
4489
+ <a id="__codelineno-0-141" name="__codelineno-0-141"></a> <span class="n">prefetch_fields</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;__&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">prefetch_path</span><span class="p">))</span>
4490
+ <a id="__codelineno-0-142" name="__codelineno-0-142"></a> <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">prefetch_related</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span><span class="o">.</span><span class="n">prefetch_related</span><span class="p">(</span><span class="o">*</span><span class="n">prefetch_fields</span><span class="p">)</span>
4491
+ <a id="__codelineno-0-143" name="__codelineno-0-143"></a>
4492
+ <a id="__codelineno-0-144" name="__codelineno-0-144"></a> <span class="nd">@property</span>
4493
+ <a id="__codelineno-0-145" name="__codelineno-0-145"></a> <span class="k">def</span> <span class="nf">configurable_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
4494
+ <a id="__codelineno-0-146" name="__codelineno-0-146"></a> <span class="n">selected_columns</span> <span class="o">=</span> <span class="p">[</span>
4495
+ <a id="__codelineno-0-147" name="__codelineno-0-147"></a> <span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">columns</span><span class="p">[</span><span class="n">name</span><span class="p">]</span><span class="o">.</span><span class="n">verbose_name</span><span class="p">)</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">sequence</span> <span class="k">if</span> <span class="n">name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;pk&quot;</span><span class="p">,</span> <span class="s2">&quot;actions&quot;</span><span class="p">]</span>
4496
+ <a id="__codelineno-0-148" name="__codelineno-0-148"></a> <span class="p">]</span>
4497
+ <a id="__codelineno-0-149" name="__codelineno-0-149"></a> <span class="n">available_columns</span> <span class="o">=</span> <span class="p">[</span>
4498
+ <a id="__codelineno-0-150" name="__codelineno-0-150"></a> <span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">column</span><span class="o">.</span><span class="n">verbose_name</span><span class="p">)</span>
4499
+ <a id="__codelineno-0-151" name="__codelineno-0-151"></a> <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">column</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">columns</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
4500
+ <a id="__codelineno-0-152" name="__codelineno-0-152"></a> <span class="k">if</span> <span class="n">name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">sequence</span> <span class="ow">and</span> <span class="n">name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;pk&quot;</span><span class="p">,</span> <span class="s2">&quot;actions&quot;</span><span class="p">]</span>
4501
+ <a id="__codelineno-0-153" name="__codelineno-0-153"></a> <span class="p">]</span>
4502
+ <a id="__codelineno-0-154" name="__codelineno-0-154"></a> <span class="k">return</span> <span class="n">selected_columns</span> <span class="o">+</span> <span class="n">available_columns</span>
4503
+ <a id="__codelineno-0-155" name="__codelineno-0-155"></a>
4504
+ <a id="__codelineno-0-156" name="__codelineno-0-156"></a> <span class="nd">@property</span>
4505
+ <a id="__codelineno-0-157" name="__codelineno-0-157"></a> <span class="k">def</span> <span class="nf">visible_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
4506
+ <a id="__codelineno-0-158" name="__codelineno-0-158"></a> <span class="k">return</span> <span class="p">[</span><span class="n">name</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">sequence</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">columns</span><span class="p">[</span><span class="n">name</span><span class="p">]</span><span class="o">.</span><span class="n">visible</span><span class="p">]</span>
4497
4507
  </code></pre></div></td></tr></table></div>
4498
4508
  </details>
4499
4509
 
@@ -4538,21 +4548,21 @@ character.</p>
4538
4548
 
4539
4549
  <details class="quote">
4540
4550
  <summary>Source code in <code>nautobot/utilities/tables.py</code></summary>
4541
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-177">177</a></span>
4542
- <span class="normal"><a href="#__codelineno-0-178">178</a></span>
4543
- <span class="normal"><a href="#__codelineno-0-179">179</a></span>
4544
- <span class="normal"><a href="#__codelineno-0-180">180</a></span>
4545
- <span class="normal"><a href="#__codelineno-0-181">181</a></span>
4546
- <span class="normal"><a href="#__codelineno-0-182">182</a></span>
4547
- <span class="normal"><a href="#__codelineno-0-183">183</a></span>
4548
- <span class="normal"><a href="#__codelineno-0-184">184</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-177" name="__codelineno-0-177"></a><span class="k">class</span> <span class="nc">BooleanColumn</span><span class="p">(</span><span class="n">tables</span><span class="o">.</span><span class="n">Column</span><span class="p">):</span>
4549
- <a id="__codelineno-0-178" name="__codelineno-0-178"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
4550
- <a id="__codelineno-0-179" name="__codelineno-0-179"></a><span class="sd"> Custom implementation of BooleanColumn to render a nicely-formatted checkmark or X icon instead of a Unicode</span>
4551
- <a id="__codelineno-0-180" name="__codelineno-0-180"></a><span class="sd"> character.</span>
4552
- <a id="__codelineno-0-181" name="__codelineno-0-181"></a><span class="sd"> &quot;&quot;&quot;</span>
4553
- <a id="__codelineno-0-182" name="__codelineno-0-182"></a>
4554
- <a id="__codelineno-0-183" name="__codelineno-0-183"></a> <span class="k">def</span> <span class="nf">render</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
4555
- <a id="__codelineno-0-184" name="__codelineno-0-184"></a> <span class="k">return</span> <span class="n">render_boolean</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
4551
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-183">183</a></span>
4552
+ <span class="normal"><a href="#__codelineno-0-184">184</a></span>
4553
+ <span class="normal"><a href="#__codelineno-0-185">185</a></span>
4554
+ <span class="normal"><a href="#__codelineno-0-186">186</a></span>
4555
+ <span class="normal"><a href="#__codelineno-0-187">187</a></span>
4556
+ <span class="normal"><a href="#__codelineno-0-188">188</a></span>
4557
+ <span class="normal"><a href="#__codelineno-0-189">189</a></span>
4558
+ <span class="normal"><a href="#__codelineno-0-190">190</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-183" name="__codelineno-0-183"></a><span class="k">class</span> <span class="nc">BooleanColumn</span><span class="p">(</span><span class="n">tables</span><span class="o">.</span><span class="n">Column</span><span class="p">):</span>
4559
+ <a id="__codelineno-0-184" name="__codelineno-0-184"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
4560
+ <a id="__codelineno-0-185" name="__codelineno-0-185"></a><span class="sd"> Custom implementation of BooleanColumn to render a nicely-formatted checkmark or X icon instead of a Unicode</span>
4561
+ <a id="__codelineno-0-186" name="__codelineno-0-186"></a><span class="sd"> character.</span>
4562
+ <a id="__codelineno-0-187" name="__codelineno-0-187"></a><span class="sd"> &quot;&quot;&quot;</span>
4563
+ <a id="__codelineno-0-188" name="__codelineno-0-188"></a>
4564
+ <a id="__codelineno-0-189" name="__codelineno-0-189"></a> <span class="k">def</span> <span class="nf">render</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
4565
+ <a id="__codelineno-0-190" name="__codelineno-0-190"></a> <span class="k">return</span> <span class="n">render_boolean</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
4556
4566
  </code></pre></div></td></tr></table></div>
4557
4567
  </details>
4558
4568
 
@@ -4599,13 +4609,7 @@ character.</p>
4599
4609
 
4600
4610
  <details class="quote">
4601
4611
  <summary>Source code in <code>nautobot/utilities/tables.py</code></summary>
4602
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-187">187</a></span>
4603
- <span class="normal"><a href="#__codelineno-0-188">188</a></span>
4604
- <span class="normal"><a href="#__codelineno-0-189">189</a></span>
4605
- <span class="normal"><a href="#__codelineno-0-190">190</a></span>
4606
- <span class="normal"><a href="#__codelineno-0-191">191</a></span>
4607
- <span class="normal"><a href="#__codelineno-0-192">192</a></span>
4608
- <span class="normal"><a href="#__codelineno-0-193">193</a></span>
4612
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-193">193</a></span>
4609
4613
  <span class="normal"><a href="#__codelineno-0-194">194</a></span>
4610
4614
  <span class="normal"><a href="#__codelineno-0-195">195</a></span>
4611
4615
  <span class="normal"><a href="#__codelineno-0-196">196</a></span>
@@ -4669,77 +4673,83 @@ character.</p>
4669
4673
  <span class="normal"><a href="#__codelineno-0-254">254</a></span>
4670
4674
  <span class="normal"><a href="#__codelineno-0-255">255</a></span>
4671
4675
  <span class="normal"><a href="#__codelineno-0-256">256</a></span>
4672
- <span class="normal"><a href="#__codelineno-0-257">257</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-187" name="__codelineno-0-187"></a><span class="k">class</span> <span class="nc">ButtonsColumn</span><span class="p">(</span><span class="n">tables</span><span class="o">.</span><span class="n">TemplateColumn</span><span class="p">):</span>
4673
- <a id="__codelineno-0-188" name="__codelineno-0-188"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
4674
- <a id="__codelineno-0-189" name="__codelineno-0-189"></a><span class="sd"> Render edit, delete, and changelog buttons for an object.</span>
4675
- <a id="__codelineno-0-190" name="__codelineno-0-190"></a>
4676
- <a id="__codelineno-0-191" name="__codelineno-0-191"></a><span class="sd"> :param model: Model class to use for calculating URL view names</span>
4677
- <a id="__codelineno-0-192" name="__codelineno-0-192"></a><span class="sd"> :param prepend_template: Additional template content to render in the column (optional)</span>
4678
- <a id="__codelineno-0-193" name="__codelineno-0-193"></a><span class="sd"> :param return_url_extra: String to append to the return URL (e.g. for specifying a tab) (optional)</span>
4679
- <a id="__codelineno-0-194" name="__codelineno-0-194"></a><span class="sd"> &quot;&quot;&quot;</span>
4680
- <a id="__codelineno-0-195" name="__codelineno-0-195"></a>
4681
- <a id="__codelineno-0-196" name="__codelineno-0-196"></a> <span class="n">buttons</span> <span class="o">=</span> <span class="p">(</span><span class="s2">&quot;changelog&quot;</span><span class="p">,</span> <span class="s2">&quot;edit&quot;</span><span class="p">,</span> <span class="s2">&quot;delete&quot;</span><span class="p">)</span>
4682
- <a id="__codelineno-0-197" name="__codelineno-0-197"></a> <span class="n">attrs</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;td&quot;</span><span class="p">:</span> <span class="p">{</span><span class="s2">&quot;class&quot;</span><span class="p">:</span> <span class="s2">&quot;text-right text-nowrap noprint&quot;</span><span class="p">}}</span>
4683
- <a id="__codelineno-0-198" name="__codelineno-0-198"></a> <span class="c1"># Note that braces are escaped to allow for string formatting prior to template rendering</span>
4684
- <a id="__codelineno-0-199" name="__codelineno-0-199"></a> <span class="n">template_code</span> <span class="o">=</span> <span class="s2">&quot;&quot;&quot;</span>
4685
- <a id="__codelineno-0-200" name="__codelineno-0-200"></a><span class="s2"> {{</span><span class="si">% i</span><span class="s2">f &quot;changelog&quot; in buttons %}}</span>
4686
- <a id="__codelineno-0-201" name="__codelineno-0-201"></a><span class="s2"> &lt;a href=&quot;{{</span><span class="si">% u</span><span class="s2">rl &#39;</span><span class="si">{changelog_route}</span><span class="s2">&#39; </span><span class="si">{pk_field}</span><span class="s2">=record.</span><span class="si">{pk_field}</span><span class="s2"> %}}&quot; class=&quot;btn btn-default btn-xs&quot; title=&quot;Change log&quot;&gt;</span>
4687
- <a id="__codelineno-0-202" name="__codelineno-0-202"></a><span class="s2"> &lt;i class=&quot;mdi mdi-history&quot;&gt;&lt;/i&gt;</span>
4688
- <a id="__codelineno-0-203" name="__codelineno-0-203"></a><span class="s2"> &lt;/a&gt;</span>
4689
- <a id="__codelineno-0-204" name="__codelineno-0-204"></a><span class="s2"> {{</span><span class="si">% e</span><span class="s2">ndif %}}</span>
4690
- <a id="__codelineno-0-205" name="__codelineno-0-205"></a><span class="s2"> {{</span><span class="si">% i</span><span class="s2">f &quot;edit&quot; in buttons and perms.</span><span class="si">{app_label}</span><span class="s2">.change_</span><span class="si">{model_name}</span><span class="s2"> %}}</span>
4691
- <a id="__codelineno-0-206" name="__codelineno-0-206"></a><span class="s2"> &lt;a href=&quot;{{</span><span class="si">% u</span><span class="s2">rl &#39;</span><span class="si">{edit_route}</span><span class="s2">&#39; </span><span class="si">{pk_field}</span><span class="s2">=record.</span><span class="si">{pk_field}</span><span class="s2"> %}}?return_url={{{{ request.path }}}}{{{{ return_url_extra }}}}&quot; class=&quot;btn btn-xs btn-warning&quot; title=&quot;Edit&quot;&gt;</span>
4692
- <a id="__codelineno-0-207" name="__codelineno-0-207"></a><span class="s2"> &lt;i class=&quot;mdi mdi-pencil&quot;&gt;&lt;/i&gt;</span>
4693
- <a id="__codelineno-0-208" name="__codelineno-0-208"></a><span class="s2"> &lt;/a&gt;</span>
4694
- <a id="__codelineno-0-209" name="__codelineno-0-209"></a><span class="s2"> {{</span><span class="si">% e</span><span class="s2">ndif %}}</span>
4695
- <a id="__codelineno-0-210" name="__codelineno-0-210"></a><span class="s2"> {{</span><span class="si">% i</span><span class="s2">f &quot;delete&quot; in buttons and perms.</span><span class="si">{app_label}</span><span class="s2">.delete_</span><span class="si">{model_name}</span><span class="s2"> %}}</span>
4696
- <a id="__codelineno-0-211" name="__codelineno-0-211"></a><span class="s2"> &lt;a href=&quot;{{</span><span class="si">% u</span><span class="s2">rl &#39;</span><span class="si">{delete_route}</span><span class="s2">&#39; </span><span class="si">{pk_field}</span><span class="s2">=record.</span><span class="si">{pk_field}</span><span class="s2"> %}}?return_url={{{{ request.path }}}}{{{{ return_url_extra }}}}&quot; class=&quot;btn btn-xs btn-danger&quot; title=&quot;Delete&quot;&gt;</span>
4697
- <a id="__codelineno-0-212" name="__codelineno-0-212"></a><span class="s2"> &lt;i class=&quot;mdi mdi-trash-can-outline&quot;&gt;&lt;/i&gt;</span>
4698
- <a id="__codelineno-0-213" name="__codelineno-0-213"></a><span class="s2"> &lt;/a&gt;</span>
4699
- <a id="__codelineno-0-214" name="__codelineno-0-214"></a><span class="s2"> {{</span><span class="si">% e</span><span class="s2">ndif %}}</span>
4700
- <a id="__codelineno-0-215" name="__codelineno-0-215"></a><span class="s2"> &quot;&quot;&quot;</span>
4701
- <a id="__codelineno-0-216" name="__codelineno-0-216"></a>
4702
- <a id="__codelineno-0-217" name="__codelineno-0-217"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span>
4703
- <a id="__codelineno-0-218" name="__codelineno-0-218"></a> <span class="bp">self</span><span class="p">,</span>
4704
- <a id="__codelineno-0-219" name="__codelineno-0-219"></a> <span class="n">model</span><span class="p">,</span>
4705
- <a id="__codelineno-0-220" name="__codelineno-0-220"></a> <span class="o">*</span><span class="n">args</span><span class="p">,</span>
4706
- <a id="__codelineno-0-221" name="__codelineno-0-221"></a> <span class="n">pk_field</span><span class="o">=</span><span class="s2">&quot;pk&quot;</span><span class="p">,</span>
4707
- <a id="__codelineno-0-222" name="__codelineno-0-222"></a> <span class="n">buttons</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
4708
- <a id="__codelineno-0-223" name="__codelineno-0-223"></a> <span class="n">prepend_template</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
4709
- <a id="__codelineno-0-224" name="__codelineno-0-224"></a> <span class="n">return_url_extra</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">,</span>
4710
- <a id="__codelineno-0-225" name="__codelineno-0-225"></a> <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span>
4711
- <a id="__codelineno-0-226" name="__codelineno-0-226"></a> <span class="p">):</span>
4712
- <a id="__codelineno-0-227" name="__codelineno-0-227"></a> <span class="k">if</span> <span class="n">prepend_template</span><span class="p">:</span>
4713
- <a id="__codelineno-0-228" name="__codelineno-0-228"></a> <span class="n">prepend_template</span> <span class="o">=</span> <span class="n">prepend_template</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot;{&quot;</span><span class="p">,</span> <span class="s2">&quot;{{&quot;</span><span class="p">)</span>
4714
- <a id="__codelineno-0-229" name="__codelineno-0-229"></a> <span class="n">prepend_template</span> <span class="o">=</span> <span class="n">prepend_template</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot;}&quot;</span><span class="p">,</span> <span class="s2">&quot;}}&quot;</span><span class="p">)</span>
4715
- <a id="__codelineno-0-230" name="__codelineno-0-230"></a> <span class="bp">self</span><span class="o">.</span><span class="n">template_code</span> <span class="o">=</span> <span class="n">prepend_template</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">template_code</span>
4716
- <a id="__codelineno-0-231" name="__codelineno-0-231"></a>
4717
- <a id="__codelineno-0-232" name="__codelineno-0-232"></a> <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>
4718
- <a id="__codelineno-0-233" name="__codelineno-0-233"></a> <span class="n">changelog_route</span> <span class="o">=</span> <span class="n">get_route_for_model</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="s2">&quot;changelog&quot;</span><span class="p">)</span>
4719
- <a id="__codelineno-0-234" name="__codelineno-0-234"></a> <span class="n">edit_route</span> <span class="o">=</span> <span class="n">get_route_for_model</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="s2">&quot;edit&quot;</span><span class="p">)</span>
4720
- <a id="__codelineno-0-235" name="__codelineno-0-235"></a> <span class="n">delete_route</span> <span class="o">=</span> <span class="n">get_route_for_model</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="s2">&quot;delete&quot;</span><span class="p">)</span>
4721
- <a id="__codelineno-0-236" name="__codelineno-0-236"></a>
4722
- <a id="__codelineno-0-237" name="__codelineno-0-237"></a> <span class="n">template_code</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">template_code</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
4723
- <a id="__codelineno-0-238" name="__codelineno-0-238"></a> <span class="n">app_label</span><span class="o">=</span><span class="n">app_label</span><span class="p">,</span>
4724
- <a id="__codelineno-0-239" name="__codelineno-0-239"></a> <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="p">,</span>
4725
- <a id="__codelineno-0-240" name="__codelineno-0-240"></a> <span class="n">changelog_route</span><span class="o">=</span><span class="n">changelog_route</span><span class="p">,</span>
4726
- <a id="__codelineno-0-241" name="__codelineno-0-241"></a> <span class="n">edit_route</span><span class="o">=</span><span class="n">edit_route</span><span class="p">,</span>
4727
- <a id="__codelineno-0-242" name="__codelineno-0-242"></a> <span class="n">delete_route</span><span class="o">=</span><span class="n">delete_route</span><span class="p">,</span>
4728
- <a id="__codelineno-0-243" name="__codelineno-0-243"></a> <span class="n">pk_field</span><span class="o">=</span><span class="n">pk_field</span><span class="p">,</span>
4729
- <a id="__codelineno-0-244" name="__codelineno-0-244"></a> <span class="n">buttons</span><span class="o">=</span><span class="n">buttons</span><span class="p">,</span>
4730
- <a id="__codelineno-0-245" name="__codelineno-0-245"></a> <span class="p">)</span>
4731
- <a id="__codelineno-0-246" name="__codelineno-0-246"></a>
4732
- <a id="__codelineno-0-247" name="__codelineno-0-247"></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">template_code</span><span class="o">=</span><span class="n">template_code</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>
4733
- <a id="__codelineno-0-248" name="__codelineno-0-248"></a>
4734
- <a id="__codelineno-0-249" name="__codelineno-0-249"></a> <span class="bp">self</span><span class="o">.</span><span class="n">extra_context</span><span class="o">.</span><span class="n">update</span><span class="p">(</span>
4735
- <a id="__codelineno-0-250" name="__codelineno-0-250"></a> <span class="p">{</span>
4736
- <a id="__codelineno-0-251" name="__codelineno-0-251"></a> <span class="s2">&quot;buttons&quot;</span><span class="p">:</span> <span class="n">buttons</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">buttons</span><span class="p">,</span>
4737
- <a id="__codelineno-0-252" name="__codelineno-0-252"></a> <span class="s2">&quot;return_url_extra&quot;</span><span class="p">:</span> <span class="n">return_url_extra</span><span class="p">,</span>
4738
- <a id="__codelineno-0-253" name="__codelineno-0-253"></a> <span class="p">}</span>
4739
- <a id="__codelineno-0-254" name="__codelineno-0-254"></a> <span class="p">)</span>
4740
- <a id="__codelineno-0-255" name="__codelineno-0-255"></a>
4741
- <a id="__codelineno-0-256" name="__codelineno-0-256"></a> <span class="k">def</span> <span class="nf">header</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="c1"># pylint: disable=invalid-overridden-method</span>
4742
- <a id="__codelineno-0-257" name="__codelineno-0-257"></a> <span class="k">return</span> <span class="s2">&quot;&quot;</span>
4676
+ <span class="normal"><a href="#__codelineno-0-257">257</a></span>
4677
+ <span class="normal"><a href="#__codelineno-0-258">258</a></span>
4678
+ <span class="normal"><a href="#__codelineno-0-259">259</a></span>
4679
+ <span class="normal"><a href="#__codelineno-0-260">260</a></span>
4680
+ <span class="normal"><a href="#__codelineno-0-261">261</a></span>
4681
+ <span class="normal"><a href="#__codelineno-0-262">262</a></span>
4682
+ <span class="normal"><a href="#__codelineno-0-263">263</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-193" name="__codelineno-0-193"></a><span class="k">class</span> <span class="nc">ButtonsColumn</span><span class="p">(</span><span class="n">tables</span><span class="o">.</span><span class="n">TemplateColumn</span><span class="p">):</span>
4683
+ <a id="__codelineno-0-194" name="__codelineno-0-194"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
4684
+ <a id="__codelineno-0-195" name="__codelineno-0-195"></a><span class="sd"> Render edit, delete, and changelog buttons for an object.</span>
4685
+ <a id="__codelineno-0-196" name="__codelineno-0-196"></a>
4686
+ <a id="__codelineno-0-197" name="__codelineno-0-197"></a><span class="sd"> :param model: Model class to use for calculating URL view names</span>
4687
+ <a id="__codelineno-0-198" name="__codelineno-0-198"></a><span class="sd"> :param prepend_template: Additional template content to render in the column (optional)</span>
4688
+ <a id="__codelineno-0-199" name="__codelineno-0-199"></a><span class="sd"> :param return_url_extra: String to append to the return URL (e.g. for specifying a tab) (optional)</span>
4689
+ <a id="__codelineno-0-200" name="__codelineno-0-200"></a><span class="sd"> &quot;&quot;&quot;</span>
4690
+ <a id="__codelineno-0-201" name="__codelineno-0-201"></a>
4691
+ <a id="__codelineno-0-202" name="__codelineno-0-202"></a> <span class="n">buttons</span> <span class="o">=</span> <span class="p">(</span><span class="s2">&quot;changelog&quot;</span><span class="p">,</span> <span class="s2">&quot;edit&quot;</span><span class="p">,</span> <span class="s2">&quot;delete&quot;</span><span class="p">)</span>
4692
+ <a id="__codelineno-0-203" name="__codelineno-0-203"></a> <span class="n">attrs</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;td&quot;</span><span class="p">:</span> <span class="p">{</span><span class="s2">&quot;class&quot;</span><span class="p">:</span> <span class="s2">&quot;text-right text-nowrap noprint&quot;</span><span class="p">}}</span>
4693
+ <a id="__codelineno-0-204" name="__codelineno-0-204"></a> <span class="c1"># Note that braces are escaped to allow for string formatting prior to template rendering</span>
4694
+ <a id="__codelineno-0-205" name="__codelineno-0-205"></a> <span class="n">template_code</span> <span class="o">=</span> <span class="s2">&quot;&quot;&quot;</span>
4695
+ <a id="__codelineno-0-206" name="__codelineno-0-206"></a><span class="s2"> {{</span><span class="si">% i</span><span class="s2">f &quot;changelog&quot; in buttons %}}</span>
4696
+ <a id="__codelineno-0-207" name="__codelineno-0-207"></a><span class="s2"> &lt;a href=&quot;{{</span><span class="si">% u</span><span class="s2">rl &#39;</span><span class="si">{changelog_route}</span><span class="s2">&#39; </span><span class="si">{pk_field}</span><span class="s2">=record.</span><span class="si">{pk_field}</span><span class="s2"> %}}&quot; class=&quot;btn btn-default btn-xs&quot; title=&quot;Change log&quot;&gt;</span>
4697
+ <a id="__codelineno-0-208" name="__codelineno-0-208"></a><span class="s2"> &lt;i class=&quot;mdi mdi-history&quot;&gt;&lt;/i&gt;</span>
4698
+ <a id="__codelineno-0-209" name="__codelineno-0-209"></a><span class="s2"> &lt;/a&gt;</span>
4699
+ <a id="__codelineno-0-210" name="__codelineno-0-210"></a><span class="s2"> {{</span><span class="si">% e</span><span class="s2">ndif %}}</span>
4700
+ <a id="__codelineno-0-211" name="__codelineno-0-211"></a><span class="s2"> {{</span><span class="si">% i</span><span class="s2">f &quot;edit&quot; in buttons and perms.</span><span class="si">{app_label}</span><span class="s2">.change_</span><span class="si">{model_name}</span><span class="s2"> %}}</span>
4701
+ <a id="__codelineno-0-212" name="__codelineno-0-212"></a><span class="s2"> &lt;a href=&quot;{{</span><span class="si">% u</span><span class="s2">rl &#39;</span><span class="si">{edit_route}</span><span class="s2">&#39; </span><span class="si">{pk_field}</span><span class="s2">=record.</span><span class="si">{pk_field}</span><span class="s2"> %}}?return_url={{{{ request.path }}}}{{{{ return_url_extra }}}}&quot; class=&quot;btn btn-xs btn-warning&quot; title=&quot;Edit&quot;&gt;</span>
4702
+ <a id="__codelineno-0-213" name="__codelineno-0-213"></a><span class="s2"> &lt;i class=&quot;mdi mdi-pencil&quot;&gt;&lt;/i&gt;</span>
4703
+ <a id="__codelineno-0-214" name="__codelineno-0-214"></a><span class="s2"> &lt;/a&gt;</span>
4704
+ <a id="__codelineno-0-215" name="__codelineno-0-215"></a><span class="s2"> {{</span><span class="si">% e</span><span class="s2">ndif %}}</span>
4705
+ <a id="__codelineno-0-216" name="__codelineno-0-216"></a><span class="s2"> {{</span><span class="si">% i</span><span class="s2">f &quot;delete&quot; in buttons and perms.</span><span class="si">{app_label}</span><span class="s2">.delete_</span><span class="si">{model_name}</span><span class="s2"> %}}</span>
4706
+ <a id="__codelineno-0-217" name="__codelineno-0-217"></a><span class="s2"> &lt;a href=&quot;{{</span><span class="si">% u</span><span class="s2">rl &#39;</span><span class="si">{delete_route}</span><span class="s2">&#39; </span><span class="si">{pk_field}</span><span class="s2">=record.</span><span class="si">{pk_field}</span><span class="s2"> %}}?return_url={{{{ request.path }}}}{{{{ return_url_extra }}}}&quot; class=&quot;btn btn-xs btn-danger&quot; title=&quot;Delete&quot;&gt;</span>
4707
+ <a id="__codelineno-0-218" name="__codelineno-0-218"></a><span class="s2"> &lt;i class=&quot;mdi mdi-trash-can-outline&quot;&gt;&lt;/i&gt;</span>
4708
+ <a id="__codelineno-0-219" name="__codelineno-0-219"></a><span class="s2"> &lt;/a&gt;</span>
4709
+ <a id="__codelineno-0-220" name="__codelineno-0-220"></a><span class="s2"> {{</span><span class="si">% e</span><span class="s2">ndif %}}</span>
4710
+ <a id="__codelineno-0-221" name="__codelineno-0-221"></a><span class="s2"> &quot;&quot;&quot;</span>
4711
+ <a id="__codelineno-0-222" name="__codelineno-0-222"></a>
4712
+ <a id="__codelineno-0-223" name="__codelineno-0-223"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span>
4713
+ <a id="__codelineno-0-224" name="__codelineno-0-224"></a> <span class="bp">self</span><span class="p">,</span>
4714
+ <a id="__codelineno-0-225" name="__codelineno-0-225"></a> <span class="n">model</span><span class="p">,</span>
4715
+ <a id="__codelineno-0-226" name="__codelineno-0-226"></a> <span class="o">*</span><span class="n">args</span><span class="p">,</span>
4716
+ <a id="__codelineno-0-227" name="__codelineno-0-227"></a> <span class="n">pk_field</span><span class="o">=</span><span class="s2">&quot;pk&quot;</span><span class="p">,</span>
4717
+ <a id="__codelineno-0-228" name="__codelineno-0-228"></a> <span class="n">buttons</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
4718
+ <a id="__codelineno-0-229" name="__codelineno-0-229"></a> <span class="n">prepend_template</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
4719
+ <a id="__codelineno-0-230" name="__codelineno-0-230"></a> <span class="n">return_url_extra</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">,</span>
4720
+ <a id="__codelineno-0-231" name="__codelineno-0-231"></a> <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span>
4721
+ <a id="__codelineno-0-232" name="__codelineno-0-232"></a> <span class="p">):</span>
4722
+ <a id="__codelineno-0-233" name="__codelineno-0-233"></a> <span class="k">if</span> <span class="n">prepend_template</span><span class="p">:</span>
4723
+ <a id="__codelineno-0-234" name="__codelineno-0-234"></a> <span class="n">prepend_template</span> <span class="o">=</span> <span class="n">prepend_template</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot;{&quot;</span><span class="p">,</span> <span class="s2">&quot;{{&quot;</span><span class="p">)</span>
4724
+ <a id="__codelineno-0-235" name="__codelineno-0-235"></a> <span class="n">prepend_template</span> <span class="o">=</span> <span class="n">prepend_template</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot;}&quot;</span><span class="p">,</span> <span class="s2">&quot;}}&quot;</span><span class="p">)</span>
4725
+ <a id="__codelineno-0-236" name="__codelineno-0-236"></a> <span class="bp">self</span><span class="o">.</span><span class="n">template_code</span> <span class="o">=</span> <span class="n">prepend_template</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">template_code</span>
4726
+ <a id="__codelineno-0-237" name="__codelineno-0-237"></a>
4727
+ <a id="__codelineno-0-238" name="__codelineno-0-238"></a> <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>
4728
+ <a id="__codelineno-0-239" name="__codelineno-0-239"></a> <span class="n">changelog_route</span> <span class="o">=</span> <span class="n">get_route_for_model</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="s2">&quot;changelog&quot;</span><span class="p">)</span>
4729
+ <a id="__codelineno-0-240" name="__codelineno-0-240"></a> <span class="n">edit_route</span> <span class="o">=</span> <span class="n">get_route_for_model</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="s2">&quot;edit&quot;</span><span class="p">)</span>
4730
+ <a id="__codelineno-0-241" name="__codelineno-0-241"></a> <span class="n">delete_route</span> <span class="o">=</span> <span class="n">get_route_for_model</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="s2">&quot;delete&quot;</span><span class="p">)</span>
4731
+ <a id="__codelineno-0-242" name="__codelineno-0-242"></a>
4732
+ <a id="__codelineno-0-243" name="__codelineno-0-243"></a> <span class="n">template_code</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">template_code</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
4733
+ <a id="__codelineno-0-244" name="__codelineno-0-244"></a> <span class="n">app_label</span><span class="o">=</span><span class="n">app_label</span><span class="p">,</span>
4734
+ <a id="__codelineno-0-245" name="__codelineno-0-245"></a> <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="p">,</span>
4735
+ <a id="__codelineno-0-246" name="__codelineno-0-246"></a> <span class="n">changelog_route</span><span class="o">=</span><span class="n">changelog_route</span><span class="p">,</span>
4736
+ <a id="__codelineno-0-247" name="__codelineno-0-247"></a> <span class="n">edit_route</span><span class="o">=</span><span class="n">edit_route</span><span class="p">,</span>
4737
+ <a id="__codelineno-0-248" name="__codelineno-0-248"></a> <span class="n">delete_route</span><span class="o">=</span><span class="n">delete_route</span><span class="p">,</span>
4738
+ <a id="__codelineno-0-249" name="__codelineno-0-249"></a> <span class="n">pk_field</span><span class="o">=</span><span class="n">pk_field</span><span class="p">,</span>
4739
+ <a id="__codelineno-0-250" name="__codelineno-0-250"></a> <span class="n">buttons</span><span class="o">=</span><span class="n">buttons</span><span class="p">,</span>
4740
+ <a id="__codelineno-0-251" name="__codelineno-0-251"></a> <span class="p">)</span>
4741
+ <a id="__codelineno-0-252" name="__codelineno-0-252"></a>
4742
+ <a id="__codelineno-0-253" name="__codelineno-0-253"></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">template_code</span><span class="o">=</span><span class="n">template_code</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>
4743
+ <a id="__codelineno-0-254" name="__codelineno-0-254"></a>
4744
+ <a id="__codelineno-0-255" name="__codelineno-0-255"></a> <span class="bp">self</span><span class="o">.</span><span class="n">extra_context</span><span class="o">.</span><span class="n">update</span><span class="p">(</span>
4745
+ <a id="__codelineno-0-256" name="__codelineno-0-256"></a> <span class="p">{</span>
4746
+ <a id="__codelineno-0-257" name="__codelineno-0-257"></a> <span class="s2">&quot;buttons&quot;</span><span class="p">:</span> <span class="n">buttons</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">buttons</span><span class="p">,</span>
4747
+ <a id="__codelineno-0-258" name="__codelineno-0-258"></a> <span class="s2">&quot;return_url_extra&quot;</span><span class="p">:</span> <span class="n">return_url_extra</span><span class="p">,</span>
4748
+ <a id="__codelineno-0-259" name="__codelineno-0-259"></a> <span class="p">}</span>
4749
+ <a id="__codelineno-0-260" name="__codelineno-0-260"></a> <span class="p">)</span>
4750
+ <a id="__codelineno-0-261" name="__codelineno-0-261"></a>
4751
+ <a id="__codelineno-0-262" name="__codelineno-0-262"></a> <span class="k">def</span> <span class="nf">header</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="c1"># pylint: disable=invalid-overridden-method</span>
4752
+ <a id="__codelineno-0-263" name="__codelineno-0-263"></a> <span class="k">return</span> <span class="s2">&quot;&quot;</span>
4743
4753
  </code></pre></div></td></tr></table></div>
4744
4754
  </details>
4745
4755
 
@@ -4783,29 +4793,29 @@ character.</p>
4783
4793
 
4784
4794
  <details class="quote">
4785
4795
  <summary>Source code in <code>nautobot/utilities/tables.py</code></summary>
4786
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-284">284</a></span>
4787
- <span class="normal"><a href="#__codelineno-0-285">285</a></span>
4788
- <span class="normal"><a href="#__codelineno-0-286">286</a></span>
4789
- <span class="normal"><a href="#__codelineno-0-287">287</a></span>
4790
- <span class="normal"><a href="#__codelineno-0-288">288</a></span>
4791
- <span class="normal"><a href="#__codelineno-0-289">289</a></span>
4792
- <span class="normal"><a href="#__codelineno-0-290">290</a></span>
4796
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-290">290</a></span>
4793
4797
  <span class="normal"><a href="#__codelineno-0-291">291</a></span>
4794
4798
  <span class="normal"><a href="#__codelineno-0-292">292</a></span>
4795
4799
  <span class="normal"><a href="#__codelineno-0-293">293</a></span>
4796
4800
  <span class="normal"><a href="#__codelineno-0-294">294</a></span>
4797
- <span class="normal"><a href="#__codelineno-0-295">295</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-284" name="__codelineno-0-284"></a><span class="k">class</span> <span class="nc">ColoredLabelColumn</span><span class="p">(</span><span class="n">tables</span><span class="o">.</span><span class="n">TemplateColumn</span><span class="p">):</span>
4798
- <a id="__codelineno-0-285" name="__codelineno-0-285"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
4799
- <a id="__codelineno-0-286" name="__codelineno-0-286"></a><span class="sd"> Render a colored label (e.g. for DeviceRoles).</span>
4800
- <a id="__codelineno-0-287" name="__codelineno-0-287"></a><span class="sd"> &quot;&quot;&quot;</span>
4801
- <a id="__codelineno-0-288" name="__codelineno-0-288"></a>
4802
- <a id="__codelineno-0-289" name="__codelineno-0-289"></a> <span class="n">template_code</span> <span class="o">=</span> <span class="s2">&quot;&quot;&quot;</span>
4803
- <a id="__codelineno-0-290" name="__codelineno-0-290"></a><span class="s2"> {</span><span class="si">% lo</span><span class="s2">ad helpers %}</span>
4804
- <a id="__codelineno-0-291" name="__codelineno-0-291"></a><span class="s2"> {</span><span class="si">% i</span><span class="s2">f value %}&lt;label class=&quot;label&quot; style=&quot;color: {{ value.color|fgcolor }}; background-color: #{{ value.color }}&quot;&gt;{{ value }}&lt;/label&gt;{</span><span class="si">% e</span><span class="s2">lse %}&amp;mdash;{</span><span class="si">% e</span><span class="s2">ndif %}</span>
4805
- <a id="__codelineno-0-292" name="__codelineno-0-292"></a><span class="s2"> &quot;&quot;&quot;</span>
4806
- <a id="__codelineno-0-293" name="__codelineno-0-293"></a>
4807
- <a id="__codelineno-0-294" name="__codelineno-0-294"></a> <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>
4808
- <a id="__codelineno-0-295" name="__codelineno-0-295"></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">template_code</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">template_code</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>
4801
+ <span class="normal"><a href="#__codelineno-0-295">295</a></span>
4802
+ <span class="normal"><a href="#__codelineno-0-296">296</a></span>
4803
+ <span class="normal"><a href="#__codelineno-0-297">297</a></span>
4804
+ <span class="normal"><a href="#__codelineno-0-298">298</a></span>
4805
+ <span class="normal"><a href="#__codelineno-0-299">299</a></span>
4806
+ <span class="normal"><a href="#__codelineno-0-300">300</a></span>
4807
+ <span class="normal"><a href="#__codelineno-0-301">301</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-290" name="__codelineno-0-290"></a><span class="k">class</span> <span class="nc">ColoredLabelColumn</span><span class="p">(</span><span class="n">tables</span><span class="o">.</span><span class="n">TemplateColumn</span><span class="p">):</span>
4808
+ <a id="__codelineno-0-291" name="__codelineno-0-291"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
4809
+ <a id="__codelineno-0-292" name="__codelineno-0-292"></a><span class="sd"> Render a colored label (e.g. for DeviceRoles).</span>
4810
+ <a id="__codelineno-0-293" name="__codelineno-0-293"></a><span class="sd"> &quot;&quot;&quot;</span>
4811
+ <a id="__codelineno-0-294" name="__codelineno-0-294"></a>
4812
+ <a id="__codelineno-0-295" name="__codelineno-0-295"></a> <span class="n">template_code</span> <span class="o">=</span> <span class="s2">&quot;&quot;&quot;</span>
4813
+ <a id="__codelineno-0-296" name="__codelineno-0-296"></a><span class="s2"> {</span><span class="si">% lo</span><span class="s2">ad helpers %}</span>
4814
+ <a id="__codelineno-0-297" name="__codelineno-0-297"></a><span class="s2"> {</span><span class="si">% i</span><span class="s2">f value %}&lt;label class=&quot;label&quot; style=&quot;color: {{ value.color|fgcolor }}; background-color: #{{ value.color }}&quot;&gt;{{ value }}&lt;/label&gt;{</span><span class="si">% e</span><span class="s2">lse %}&amp;mdash;{</span><span class="si">% e</span><span class="s2">ndif %}</span>
4815
+ <a id="__codelineno-0-298" name="__codelineno-0-298"></a><span class="s2"> &quot;&quot;&quot;</span>
4816
+ <a id="__codelineno-0-299" name="__codelineno-0-299"></a>
4817
+ <a id="__codelineno-0-300" name="__codelineno-0-300"></a> <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>
4818
+ <a id="__codelineno-0-301" name="__codelineno-0-301"></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">template_code</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">template_code</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>
4809
4819
  </code></pre></div></td></tr></table></div>
4810
4820
  </details>
4811
4821
 
@@ -4855,13 +4865,7 @@ set <code>sort_items=False</code>.</p>
4855
4865
 
4856
4866
  <details class="quote">
4857
4867
  <summary>Source code in <code>nautobot/utilities/tables.py</code></summary>
4858
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-339">339</a></span>
4859
- <span class="normal"><a href="#__codelineno-0-340">340</a></span>
4860
- <span class="normal"><a href="#__codelineno-0-341">341</a></span>
4861
- <span class="normal"><a href="#__codelineno-0-342">342</a></span>
4862
- <span class="normal"><a href="#__codelineno-0-343">343</a></span>
4863
- <span class="normal"><a href="#__codelineno-0-344">344</a></span>
4864
- <span class="normal"><a href="#__codelineno-0-345">345</a></span>
4868
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-345">345</a></span>
4865
4869
  <span class="normal"><a href="#__codelineno-0-346">346</a></span>
4866
4870
  <span class="normal"><a href="#__codelineno-0-347">347</a></span>
4867
4871
  <span class="normal"><a href="#__codelineno-0-348">348</a></span>
@@ -4885,37 +4889,43 @@ set <code>sort_items=False</code>.</p>
4885
4889
  <span class="normal"><a href="#__codelineno-0-366">366</a></span>
4886
4890
  <span class="normal"><a href="#__codelineno-0-367">367</a></span>
4887
4891
  <span class="normal"><a href="#__codelineno-0-368">368</a></span>
4888
- <span class="normal"><a href="#__codelineno-0-369">369</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-339" name="__codelineno-0-339"></a><span class="k">class</span> <span class="nc">ContentTypesColumn</span><span class="p">(</span><span class="n">tables</span><span class="o">.</span><span class="n">ManyToManyColumn</span><span class="p">):</span>
4889
- <a id="__codelineno-0-340" name="__codelineno-0-340"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
4890
- <a id="__codelineno-0-341" name="__codelineno-0-341"></a><span class="sd"> Display a list of `content_types` m2m assigned to an object.</span>
4891
- <a id="__codelineno-0-342" name="__codelineno-0-342"></a>
4892
- <a id="__codelineno-0-343" name="__codelineno-0-343"></a><span class="sd"> Default sorting of content-types is by pk. This sorting comes at a per-row</span>
4893
- <a id="__codelineno-0-344" name="__codelineno-0-344"></a><span class="sd"> performance hit to querysets for table views. If this becomes an issue,</span>
4894
- <a id="__codelineno-0-345" name="__codelineno-0-345"></a><span class="sd"> set `sort_items=False`.</span>
4895
- <a id="__codelineno-0-346" name="__codelineno-0-346"></a>
4896
- <a id="__codelineno-0-347" name="__codelineno-0-347"></a><span class="sd"> :param sort_items: Whether to sort by `(app_label, name)`. (default: True)</span>
4897
- <a id="__codelineno-0-348" name="__codelineno-0-348"></a><span class="sd"> :param truncate_words:</span>
4898
- <a id="__codelineno-0-349" name="__codelineno-0-349"></a><span class="sd"> Number of words at which to truncate, or `None` to disable. (default: None)</span>
4899
- <a id="__codelineno-0-350" name="__codelineno-0-350"></a><span class="sd"> &quot;&quot;&quot;</span>
4900
- <a id="__codelineno-0-351" name="__codelineno-0-351"></a>
4901
- <a id="__codelineno-0-352" name="__codelineno-0-352"></a> <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">sort_items</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">truncate_words</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>
4902
- <a id="__codelineno-0-353" name="__codelineno-0-353"></a> <span class="nb">super</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>
4903
- <a id="__codelineno-0-354" name="__codelineno-0-354"></a> <span class="bp">self</span><span class="o">.</span><span class="n">sort_items</span> <span class="o">=</span> <span class="n">sort_items</span>
4904
- <a id="__codelineno-0-355" name="__codelineno-0-355"></a> <span class="bp">self</span><span class="o">.</span><span class="n">truncate_words</span> <span class="o">=</span> <span class="n">truncate_words</span>
4905
- <a id="__codelineno-0-356" name="__codelineno-0-356"></a>
4906
- <a id="__codelineno-0-357" name="__codelineno-0-357"></a> <span class="k">def</span> <span class="nf">filter</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">qs</span><span class="p">):</span>
4907
- <a id="__codelineno-0-358" name="__codelineno-0-358"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Overload filter to optionally sort items.&quot;&quot;&quot;</span>
4908
- <a id="__codelineno-0-359" name="__codelineno-0-359"></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">sort_items</span><span class="p">:</span>
4909
- <a id="__codelineno-0-360" name="__codelineno-0-360"></a> <span class="n">qs</span> <span class="o">=</span> <span class="n">qs</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s2">&quot;app_label&quot;</span><span class="p">,</span> <span class="s2">&quot;model&quot;</span><span class="p">)</span>
4910
- <a id="__codelineno-0-361" name="__codelineno-0-361"></a> <span class="k">return</span> <span class="n">qs</span><span class="o">.</span><span class="n">all</span><span class="p">()</span>
4892
+ <span class="normal"><a href="#__codelineno-0-369">369</a></span>
4893
+ <span class="normal"><a href="#__codelineno-0-370">370</a></span>
4894
+ <span class="normal"><a href="#__codelineno-0-371">371</a></span>
4895
+ <span class="normal"><a href="#__codelineno-0-372">372</a></span>
4896
+ <span class="normal"><a href="#__codelineno-0-373">373</a></span>
4897
+ <span class="normal"><a href="#__codelineno-0-374">374</a></span>
4898
+ <span class="normal"><a href="#__codelineno-0-375">375</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-345" name="__codelineno-0-345"></a><span class="k">class</span> <span class="nc">ContentTypesColumn</span><span class="p">(</span><span class="n">tables</span><span class="o">.</span><span class="n">ManyToManyColumn</span><span class="p">):</span>
4899
+ <a id="__codelineno-0-346" name="__codelineno-0-346"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
4900
+ <a id="__codelineno-0-347" name="__codelineno-0-347"></a><span class="sd"> Display a list of `content_types` m2m assigned to an object.</span>
4901
+ <a id="__codelineno-0-348" name="__codelineno-0-348"></a>
4902
+ <a id="__codelineno-0-349" name="__codelineno-0-349"></a><span class="sd"> Default sorting of content-types is by pk. This sorting comes at a per-row</span>
4903
+ <a id="__codelineno-0-350" name="__codelineno-0-350"></a><span class="sd"> performance hit to querysets for table views. If this becomes an issue,</span>
4904
+ <a id="__codelineno-0-351" name="__codelineno-0-351"></a><span class="sd"> set `sort_items=False`.</span>
4905
+ <a id="__codelineno-0-352" name="__codelineno-0-352"></a>
4906
+ <a id="__codelineno-0-353" name="__codelineno-0-353"></a><span class="sd"> :param sort_items: Whether to sort by `(app_label, name)`. (default: True)</span>
4907
+ <a id="__codelineno-0-354" name="__codelineno-0-354"></a><span class="sd"> :param truncate_words:</span>
4908
+ <a id="__codelineno-0-355" name="__codelineno-0-355"></a><span class="sd"> Number of words at which to truncate, or `None` to disable. (default: None)</span>
4909
+ <a id="__codelineno-0-356" name="__codelineno-0-356"></a><span class="sd"> &quot;&quot;&quot;</span>
4910
+ <a id="__codelineno-0-357" name="__codelineno-0-357"></a>
4911
+ <a id="__codelineno-0-358" name="__codelineno-0-358"></a> <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">sort_items</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">truncate_words</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>
4912
+ <a id="__codelineno-0-359" name="__codelineno-0-359"></a> <span class="nb">super</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>
4913
+ <a id="__codelineno-0-360" name="__codelineno-0-360"></a> <span class="bp">self</span><span class="o">.</span><span class="n">sort_items</span> <span class="o">=</span> <span class="n">sort_items</span>
4914
+ <a id="__codelineno-0-361" name="__codelineno-0-361"></a> <span class="bp">self</span><span class="o">.</span><span class="n">truncate_words</span> <span class="o">=</span> <span class="n">truncate_words</span>
4911
4915
  <a id="__codelineno-0-362" name="__codelineno-0-362"></a>
4912
- <a id="__codelineno-0-363" name="__codelineno-0-363"></a> <span class="k">def</span> <span class="nf">render</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
4913
- <a id="__codelineno-0-364" name="__codelineno-0-364"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Overload render to optionally truncate words.&quot;&quot;&quot;</span>
4914
- <a id="__codelineno-0-365" name="__codelineno-0-365"></a> <span class="n">value</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
4915
- <a id="__codelineno-0-366" name="__codelineno-0-366"></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">truncate_words</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
4916
- <a id="__codelineno-0-367" name="__codelineno-0-367"></a> <span class="n">trunc</span> <span class="o">=</span> <span class="n">Truncator</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
4917
- <a id="__codelineno-0-368" name="__codelineno-0-368"></a> <span class="n">value</span> <span class="o">=</span> <span class="n">trunc</span><span class="o">.</span><span class="n">words</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">truncate_words</span><span class="p">)</span>
4918
- <a id="__codelineno-0-369" name="__codelineno-0-369"></a> <span class="k">return</span> <span class="n">value</span>
4916
+ <a id="__codelineno-0-363" name="__codelineno-0-363"></a> <span class="k">def</span> <span class="nf">filter</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">qs</span><span class="p">):</span>
4917
+ <a id="__codelineno-0-364" name="__codelineno-0-364"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Overload filter to optionally sort items.&quot;&quot;&quot;</span>
4918
+ <a id="__codelineno-0-365" name="__codelineno-0-365"></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">sort_items</span><span class="p">:</span>
4919
+ <a id="__codelineno-0-366" name="__codelineno-0-366"></a> <span class="n">qs</span> <span class="o">=</span> <span class="n">qs</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s2">&quot;app_label&quot;</span><span class="p">,</span> <span class="s2">&quot;model&quot;</span><span class="p">)</span>
4920
+ <a id="__codelineno-0-367" name="__codelineno-0-367"></a> <span class="k">return</span> <span class="n">qs</span><span class="o">.</span><span class="n">all</span><span class="p">()</span>
4921
+ <a id="__codelineno-0-368" name="__codelineno-0-368"></a>
4922
+ <a id="__codelineno-0-369" name="__codelineno-0-369"></a> <span class="k">def</span> <span class="nf">render</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
4923
+ <a id="__codelineno-0-370" name="__codelineno-0-370"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Overload render to optionally truncate words.&quot;&quot;&quot;</span>
4924
+ <a id="__codelineno-0-371" name="__codelineno-0-371"></a> <span class="n">value</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
4925
+ <a id="__codelineno-0-372" name="__codelineno-0-372"></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">truncate_words</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
4926
+ <a id="__codelineno-0-373" name="__codelineno-0-373"></a> <span class="n">trunc</span> <span class="o">=</span> <span class="n">Truncator</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
4927
+ <a id="__codelineno-0-374" name="__codelineno-0-374"></a> <span class="n">value</span> <span class="o">=</span> <span class="n">trunc</span><span class="o">.</span><span class="n">words</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">truncate_words</span><span class="p">)</span>
4928
+ <a id="__codelineno-0-375" name="__codelineno-0-375"></a> <span class="k">return</span> <span class="n">value</span>
4919
4929
  </code></pre></div></td></tr></table></div>
4920
4930
  </details>
4921
4931
 
@@ -4948,15 +4958,15 @@ set <code>sort_items=False</code>.</p>
4948
4958
 
4949
4959
  <details class="quote">
4950
4960
  <summary>Source code in <code>nautobot/utilities/tables.py</code></summary>
4951
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-357">357</a></span>
4952
- <span class="normal"><a href="#__codelineno-0-358">358</a></span>
4953
- <span class="normal"><a href="#__codelineno-0-359">359</a></span>
4954
- <span class="normal"><a href="#__codelineno-0-360">360</a></span>
4955
- <span class="normal"><a href="#__codelineno-0-361">361</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-357" name="__codelineno-0-357"></a><span class="k">def</span> <span class="nf">filter</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">qs</span><span class="p">):</span>
4956
- <a id="__codelineno-0-358" name="__codelineno-0-358"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Overload filter to optionally sort items.&quot;&quot;&quot;</span>
4957
- <a id="__codelineno-0-359" name="__codelineno-0-359"></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">sort_items</span><span class="p">:</span>
4958
- <a id="__codelineno-0-360" name="__codelineno-0-360"></a> <span class="n">qs</span> <span class="o">=</span> <span class="n">qs</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s2">&quot;app_label&quot;</span><span class="p">,</span> <span class="s2">&quot;model&quot;</span><span class="p">)</span>
4959
- <a id="__codelineno-0-361" name="__codelineno-0-361"></a> <span class="k">return</span> <span class="n">qs</span><span class="o">.</span><span class="n">all</span><span class="p">()</span>
4961
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-363">363</a></span>
4962
+ <span class="normal"><a href="#__codelineno-0-364">364</a></span>
4963
+ <span class="normal"><a href="#__codelineno-0-365">365</a></span>
4964
+ <span class="normal"><a href="#__codelineno-0-366">366</a></span>
4965
+ <span class="normal"><a href="#__codelineno-0-367">367</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-363" name="__codelineno-0-363"></a><span class="k">def</span> <span class="nf">filter</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">qs</span><span class="p">):</span>
4966
+ <a id="__codelineno-0-364" name="__codelineno-0-364"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Overload filter to optionally sort items.&quot;&quot;&quot;</span>
4967
+ <a id="__codelineno-0-365" name="__codelineno-0-365"></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">sort_items</span><span class="p">:</span>
4968
+ <a id="__codelineno-0-366" name="__codelineno-0-366"></a> <span class="n">qs</span> <span class="o">=</span> <span class="n">qs</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s2">&quot;app_label&quot;</span><span class="p">,</span> <span class="s2">&quot;model&quot;</span><span class="p">)</span>
4969
+ <a id="__codelineno-0-367" name="__codelineno-0-367"></a> <span class="k">return</span> <span class="n">qs</span><span class="o">.</span><span class="n">all</span><span class="p">()</span>
4960
4970
  </code></pre></div></td></tr></table></div>
4961
4971
  </details>
4962
4972
  </div>
@@ -4980,19 +4990,19 @@ set <code>sort_items=False</code>.</p>
4980
4990
 
4981
4991
  <details class="quote">
4982
4992
  <summary>Source code in <code>nautobot/utilities/tables.py</code></summary>
4983
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-363">363</a></span>
4984
- <span class="normal"><a href="#__codelineno-0-364">364</a></span>
4985
- <span class="normal"><a href="#__codelineno-0-365">365</a></span>
4986
- <span class="normal"><a href="#__codelineno-0-366">366</a></span>
4987
- <span class="normal"><a href="#__codelineno-0-367">367</a></span>
4988
- <span class="normal"><a href="#__codelineno-0-368">368</a></span>
4989
- <span class="normal"><a href="#__codelineno-0-369">369</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-363" name="__codelineno-0-363"></a><span class="k">def</span> <span class="nf">render</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
4990
- <a id="__codelineno-0-364" name="__codelineno-0-364"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Overload render to optionally truncate words.&quot;&quot;&quot;</span>
4991
- <a id="__codelineno-0-365" name="__codelineno-0-365"></a> <span class="n">value</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
4992
- <a id="__codelineno-0-366" name="__codelineno-0-366"></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">truncate_words</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
4993
- <a id="__codelineno-0-367" name="__codelineno-0-367"></a> <span class="n">trunc</span> <span class="o">=</span> <span class="n">Truncator</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
4994
- <a id="__codelineno-0-368" name="__codelineno-0-368"></a> <span class="n">value</span> <span class="o">=</span> <span class="n">trunc</span><span class="o">.</span><span class="n">words</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">truncate_words</span><span class="p">)</span>
4995
- <a id="__codelineno-0-369" name="__codelineno-0-369"></a> <span class="k">return</span> <span class="n">value</span>
4993
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-369">369</a></span>
4994
+ <span class="normal"><a href="#__codelineno-0-370">370</a></span>
4995
+ <span class="normal"><a href="#__codelineno-0-371">371</a></span>
4996
+ <span class="normal"><a href="#__codelineno-0-372">372</a></span>
4997
+ <span class="normal"><a href="#__codelineno-0-373">373</a></span>
4998
+ <span class="normal"><a href="#__codelineno-0-374">374</a></span>
4999
+ <span class="normal"><a href="#__codelineno-0-375">375</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-369" name="__codelineno-0-369"></a><span class="k">def</span> <span class="nf">render</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
5000
+ <a id="__codelineno-0-370" name="__codelineno-0-370"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Overload render to optionally truncate words.&quot;&quot;&quot;</span>
5001
+ <a id="__codelineno-0-371" name="__codelineno-0-371"></a> <span class="n">value</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
5002
+ <a id="__codelineno-0-372" name="__codelineno-0-372"></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">truncate_words</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
5003
+ <a id="__codelineno-0-373" name="__codelineno-0-373"></a> <span class="n">trunc</span> <span class="o">=</span> <span class="n">Truncator</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
5004
+ <a id="__codelineno-0-374" name="__codelineno-0-374"></a> <span class="n">value</span> <span class="o">=</span> <span class="n">trunc</span><span class="o">.</span><span class="n">words</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">truncate_words</span><span class="p">)</span>
5005
+ <a id="__codelineno-0-375" name="__codelineno-0-375"></a> <span class="k">return</span> <span class="n">value</span>
4996
5006
  </code></pre></div></td></tr></table></div>
4997
5007
  </details>
4998
5008
  </div>
@@ -5027,13 +5037,13 @@ set <code>sort_items=False</code>.</p>
5027
5037
 
5028
5038
  <details class="quote">
5029
5039
  <summary>Source code in <code>nautobot/extras/tables.py</code></summary>
5030
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-962">962</a></span>
5031
- <span class="normal"><a href="#__codelineno-0-963">963</a></span>
5032
- <span class="normal"><a href="#__codelineno-0-964">964</a></span>
5033
- <span class="normal"><a href="#__codelineno-0-965">965</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-962" name="__codelineno-0-962"></a><span class="k">class</span> <span class="nc">StatusTableMixin</span><span class="p">(</span><span class="n">BaseTable</span><span class="p">):</span>
5034
- <a id="__codelineno-0-963" name="__codelineno-0-963"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Mixin to add a `status` field to a table.&quot;&quot;&quot;</span>
5035
- <a id="__codelineno-0-964" name="__codelineno-0-964"></a>
5036
- <a id="__codelineno-0-965" name="__codelineno-0-965"></a> <span class="n">status</span> <span class="o">=</span> <span class="n">ColoredLabelColumn</span><span class="p">()</span>
5040
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-965">965</a></span>
5041
+ <span class="normal"><a href="#__codelineno-0-966">966</a></span>
5042
+ <span class="normal"><a href="#__codelineno-0-967">967</a></span>
5043
+ <span class="normal"><a href="#__codelineno-0-968">968</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-965" name="__codelineno-0-965"></a><span class="k">class</span> <span class="nc">StatusTableMixin</span><span class="p">(</span><span class="n">BaseTable</span><span class="p">):</span>
5044
+ <a id="__codelineno-0-966" name="__codelineno-0-966"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Mixin to add a `status` field to a table.&quot;&quot;&quot;</span>
5045
+ <a id="__codelineno-0-967" name="__codelineno-0-967"></a>
5046
+ <a id="__codelineno-0-968" name="__codelineno-0-968"></a> <span class="n">status</span> <span class="o">=</span> <span class="n">ColoredLabelColumn</span><span class="p">()</span>
5037
5047
  </code></pre></div></td></tr></table></div>
5038
5048
  </details>
5039
5049
 
@@ -5077,13 +5087,7 @@ set <code>sort_items=False</code>.</p>
5077
5087
 
5078
5088
  <details class="quote">
5079
5089
  <summary>Source code in <code>nautobot/utilities/tables.py</code></summary>
5080
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-322">322</a></span>
5081
- <span class="normal"><a href="#__codelineno-0-323">323</a></span>
5082
- <span class="normal"><a href="#__codelineno-0-324">324</a></span>
5083
- <span class="normal"><a href="#__codelineno-0-325">325</a></span>
5084
- <span class="normal"><a href="#__codelineno-0-326">326</a></span>
5085
- <span class="normal"><a href="#__codelineno-0-327">327</a></span>
5086
- <span class="normal"><a href="#__codelineno-0-328">328</a></span>
5090
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-328">328</a></span>
5087
5091
  <span class="normal"><a href="#__codelineno-0-329">329</a></span>
5088
5092
  <span class="normal"><a href="#__codelineno-0-330">330</a></span>
5089
5093
  <span class="normal"><a href="#__codelineno-0-331">331</a></span>
@@ -5091,21 +5095,27 @@ set <code>sort_items=False</code>.</p>
5091
5095
  <span class="normal"><a href="#__codelineno-0-333">333</a></span>
5092
5096
  <span class="normal"><a href="#__codelineno-0-334">334</a></span>
5093
5097
  <span class="normal"><a href="#__codelineno-0-335">335</a></span>
5094
- <span class="normal"><a href="#__codelineno-0-336">336</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-322" name="__codelineno-0-322"></a><span class="k">class</span> <span class="nc">TagColumn</span><span class="p">(</span><span class="n">tables</span><span class="o">.</span><span class="n">TemplateColumn</span><span class="p">):</span>
5095
- <a id="__codelineno-0-323" name="__codelineno-0-323"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
5096
- <a id="__codelineno-0-324" name="__codelineno-0-324"></a><span class="sd"> Display a list of tags assigned to the object.</span>
5097
- <a id="__codelineno-0-325" name="__codelineno-0-325"></a><span class="sd"> &quot;&quot;&quot;</span>
5098
- <a id="__codelineno-0-326" name="__codelineno-0-326"></a>
5099
- <a id="__codelineno-0-327" name="__codelineno-0-327"></a> <span class="n">template_code</span> <span class="o">=</span> <span class="s2">&quot;&quot;&quot;</span>
5100
- <a id="__codelineno-0-328" name="__codelineno-0-328"></a><span class="s2"> {</span><span class="si">% f</span><span class="s2">or tag in value.all %}</span>
5101
- <a id="__codelineno-0-329" name="__codelineno-0-329"></a><span class="s2"> {</span><span class="si">% i</span><span class="s2">nclude &#39;utilities/templatetags/tag.html&#39; %}</span>
5102
- <a id="__codelineno-0-330" name="__codelineno-0-330"></a><span class="s2"> {</span><span class="si">% e</span><span class="s2">mpty %}</span>
5103
- <a id="__codelineno-0-331" name="__codelineno-0-331"></a><span class="s2"> &lt;span class=&quot;text-muted&quot;&gt;&amp;mdash;&lt;/span&gt;</span>
5104
- <a id="__codelineno-0-332" name="__codelineno-0-332"></a><span class="s2"> {</span><span class="si">% e</span><span class="s2">ndfor %}</span>
5105
- <a id="__codelineno-0-333" name="__codelineno-0-333"></a><span class="s2"> &quot;&quot;&quot;</span>
5106
- <a id="__codelineno-0-334" name="__codelineno-0-334"></a>
5107
- <a id="__codelineno-0-335" name="__codelineno-0-335"></a> <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">url_name</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
5108
- <a id="__codelineno-0-336" name="__codelineno-0-336"></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">template_code</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">template_code</span><span class="p">,</span> <span class="n">extra_context</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;url_name&quot;</span><span class="p">:</span> <span class="n">url_name</span><span class="p">})</span>
5098
+ <span class="normal"><a href="#__codelineno-0-336">336</a></span>
5099
+ <span class="normal"><a href="#__codelineno-0-337">337</a></span>
5100
+ <span class="normal"><a href="#__codelineno-0-338">338</a></span>
5101
+ <span class="normal"><a href="#__codelineno-0-339">339</a></span>
5102
+ <span class="normal"><a href="#__codelineno-0-340">340</a></span>
5103
+ <span class="normal"><a href="#__codelineno-0-341">341</a></span>
5104
+ <span class="normal"><a href="#__codelineno-0-342">342</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-328" name="__codelineno-0-328"></a><span class="k">class</span> <span class="nc">TagColumn</span><span class="p">(</span><span class="n">tables</span><span class="o">.</span><span class="n">TemplateColumn</span><span class="p">):</span>
5105
+ <a id="__codelineno-0-329" name="__codelineno-0-329"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
5106
+ <a id="__codelineno-0-330" name="__codelineno-0-330"></a><span class="sd"> Display a list of tags assigned to the object.</span>
5107
+ <a id="__codelineno-0-331" name="__codelineno-0-331"></a><span class="sd"> &quot;&quot;&quot;</span>
5108
+ <a id="__codelineno-0-332" name="__codelineno-0-332"></a>
5109
+ <a id="__codelineno-0-333" name="__codelineno-0-333"></a> <span class="n">template_code</span> <span class="o">=</span> <span class="s2">&quot;&quot;&quot;</span>
5110
+ <a id="__codelineno-0-334" name="__codelineno-0-334"></a><span class="s2"> {</span><span class="si">% f</span><span class="s2">or tag in value.all %}</span>
5111
+ <a id="__codelineno-0-335" name="__codelineno-0-335"></a><span class="s2"> {</span><span class="si">% i</span><span class="s2">nclude &#39;utilities/templatetags/tag.html&#39; %}</span>
5112
+ <a id="__codelineno-0-336" name="__codelineno-0-336"></a><span class="s2"> {</span><span class="si">% e</span><span class="s2">mpty %}</span>
5113
+ <a id="__codelineno-0-337" name="__codelineno-0-337"></a><span class="s2"> &lt;span class=&quot;text-muted&quot;&gt;&amp;mdash;&lt;/span&gt;</span>
5114
+ <a id="__codelineno-0-338" name="__codelineno-0-338"></a><span class="s2"> {</span><span class="si">% e</span><span class="s2">ndfor %}</span>
5115
+ <a id="__codelineno-0-339" name="__codelineno-0-339"></a><span class="s2"> &quot;&quot;&quot;</span>
5116
+ <a id="__codelineno-0-340" name="__codelineno-0-340"></a>
5117
+ <a id="__codelineno-0-341" name="__codelineno-0-341"></a> <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">url_name</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
5118
+ <a id="__codelineno-0-342" name="__codelineno-0-342"></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">template_code</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">template_code</span><span class="p">,</span> <span class="n">extra_context</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;url_name&quot;</span><span class="p">:</span> <span class="n">url_name</span><span class="p">})</span>
5109
5119
  </code></pre></div></td></tr></table></div>
5110
5120
  </details>
5111
5121
 
@@ -5149,13 +5159,7 @@ set <code>sort_items=False</code>.</p>
5149
5159
 
5150
5160
  <details class="quote">
5151
5161
  <summary>Source code in <code>nautobot/utilities/tables.py</code></summary>
5152
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-160">160</a></span>
5153
- <span class="normal"><a href="#__codelineno-0-161">161</a></span>
5154
- <span class="normal"><a href="#__codelineno-0-162">162</a></span>
5155
- <span class="normal"><a href="#__codelineno-0-163">163</a></span>
5156
- <span class="normal"><a href="#__codelineno-0-164">164</a></span>
5157
- <span class="normal"><a href="#__codelineno-0-165">165</a></span>
5158
- <span class="normal"><a href="#__codelineno-0-166">166</a></span>
5162
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-166">166</a></span>
5159
5163
  <span class="normal"><a href="#__codelineno-0-167">167</a></span>
5160
5164
  <span class="normal"><a href="#__codelineno-0-168">168</a></span>
5161
5165
  <span class="normal"><a href="#__codelineno-0-169">169</a></span>
@@ -5163,21 +5167,27 @@ set <code>sort_items=False</code>.</p>
5163
5167
  <span class="normal"><a href="#__codelineno-0-171">171</a></span>
5164
5168
  <span class="normal"><a href="#__codelineno-0-172">172</a></span>
5165
5169
  <span class="normal"><a href="#__codelineno-0-173">173</a></span>
5166
- <span class="normal"><a href="#__codelineno-0-174">174</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-160" name="__codelineno-0-160"></a><span class="k">class</span> <span class="nc">ToggleColumn</span><span class="p">(</span><span class="n">tables</span><span class="o">.</span><span class="n">CheckBoxColumn</span><span class="p">):</span>
5167
- <a id="__codelineno-0-161" name="__codelineno-0-161"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
5168
- <a id="__codelineno-0-162" name="__codelineno-0-162"></a><span class="sd"> Extend CheckBoxColumn to add a &quot;toggle all&quot; checkbox in the column header.</span>
5169
- <a id="__codelineno-0-163" name="__codelineno-0-163"></a><span class="sd"> &quot;&quot;&quot;</span>
5170
- <a id="__codelineno-0-164" name="__codelineno-0-164"></a>
5171
- <a id="__codelineno-0-165" name="__codelineno-0-165"></a> <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>
5172
- <a id="__codelineno-0-166" name="__codelineno-0-166"></a> <span class="n">default</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">&quot;default&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">)</span>
5173
- <a id="__codelineno-0-167" name="__codelineno-0-167"></a> <span class="n">visible</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">&quot;visible&quot;</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
5174
- <a id="__codelineno-0-168" name="__codelineno-0-168"></a> <span class="k">if</span> <span class="s2">&quot;attrs&quot;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
5175
- <a id="__codelineno-0-169" name="__codelineno-0-169"></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;attrs&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;td&quot;</span><span class="p">:</span> <span class="p">{</span><span class="s2">&quot;class&quot;</span><span class="p">:</span> <span class="s2">&quot;min-width&quot;</span><span class="p">}}</span>
5176
- <a id="__codelineno-0-170" name="__codelineno-0-170"></a> <span class="nb">super</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="n">default</span><span class="o">=</span><span class="n">default</span><span class="p">,</span> <span class="n">visible</span><span class="o">=</span><span class="n">visible</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
5177
- <a id="__codelineno-0-171" name="__codelineno-0-171"></a>
5178
- <a id="__codelineno-0-172" name="__codelineno-0-172"></a> <span class="nd">@property</span>
5179
- <a id="__codelineno-0-173" name="__codelineno-0-173"></a> <span class="k">def</span> <span class="nf">header</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
5180
- <a id="__codelineno-0-174" name="__codelineno-0-174"></a> <span class="k">return</span> <span class="n">mark_safe</span><span class="p">(</span><span class="s1">&#39;&lt;input type=&quot;checkbox&quot; class=&quot;toggle&quot; title=&quot;Toggle all&quot; /&gt;&#39;</span><span class="p">)</span> <span class="c1"># noqa: S308</span>
5170
+ <span class="normal"><a href="#__codelineno-0-174">174</a></span>
5171
+ <span class="normal"><a href="#__codelineno-0-175">175</a></span>
5172
+ <span class="normal"><a href="#__codelineno-0-176">176</a></span>
5173
+ <span class="normal"><a href="#__codelineno-0-177">177</a></span>
5174
+ <span class="normal"><a href="#__codelineno-0-178">178</a></span>
5175
+ <span class="normal"><a href="#__codelineno-0-179">179</a></span>
5176
+ <span class="normal"><a href="#__codelineno-0-180">180</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-166" name="__codelineno-0-166"></a><span class="k">class</span> <span class="nc">ToggleColumn</span><span class="p">(</span><span class="n">tables</span><span class="o">.</span><span class="n">CheckBoxColumn</span><span class="p">):</span>
5177
+ <a id="__codelineno-0-167" name="__codelineno-0-167"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
5178
+ <a id="__codelineno-0-168" name="__codelineno-0-168"></a><span class="sd"> Extend CheckBoxColumn to add a &quot;toggle all&quot; checkbox in the column header.</span>
5179
+ <a id="__codelineno-0-169" name="__codelineno-0-169"></a><span class="sd"> &quot;&quot;&quot;</span>
5180
+ <a id="__codelineno-0-170" name="__codelineno-0-170"></a>
5181
+ <a id="__codelineno-0-171" name="__codelineno-0-171"></a> <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>
5182
+ <a id="__codelineno-0-172" name="__codelineno-0-172"></a> <span class="n">default</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">&quot;default&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">)</span>
5183
+ <a id="__codelineno-0-173" name="__codelineno-0-173"></a> <span class="n">visible</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">&quot;visible&quot;</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
5184
+ <a id="__codelineno-0-174" name="__codelineno-0-174"></a> <span class="k">if</span> <span class="s2">&quot;attrs&quot;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
5185
+ <a id="__codelineno-0-175" name="__codelineno-0-175"></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;attrs&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;td&quot;</span><span class="p">:</span> <span class="p">{</span><span class="s2">&quot;class&quot;</span><span class="p">:</span> <span class="s2">&quot;min-width&quot;</span><span class="p">}}</span>
5186
+ <a id="__codelineno-0-176" name="__codelineno-0-176"></a> <span class="nb">super</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="n">default</span><span class="o">=</span><span class="n">default</span><span class="p">,</span> <span class="n">visible</span><span class="o">=</span><span class="n">visible</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
5187
+ <a id="__codelineno-0-177" name="__codelineno-0-177"></a>
5188
+ <a id="__codelineno-0-178" name="__codelineno-0-178"></a> <span class="nd">@property</span>
5189
+ <a id="__codelineno-0-179" name="__codelineno-0-179"></a> <span class="k">def</span> <span class="nf">header</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
5190
+ <a id="__codelineno-0-180" name="__codelineno-0-180"></a> <span class="k">return</span> <span class="n">mark_safe</span><span class="p">(</span><span class="s1">&#39;&lt;input type=&quot;checkbox&quot; class=&quot;toggle&quot; title=&quot;Toggle all&quot; /&gt;&#39;</span><span class="p">)</span> <span class="c1"># noqa: S308</span>
5181
5191
  </code></pre></div></td></tr></table></div>
5182
5192
  </details>
5183
5193