plain.admin 0.23.0__py3-none-any.whl → 0.25.0__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.
plain/admin/README.md CHANGED
@@ -9,7 +9,7 @@ in addition to models.
9
9
 
10
10
  - cards
11
11
  - dashboards
12
- - diy forms
12
+ - diy forms - have to install elements if you want to use them (or an app uses them, or maybe plain pkgs should use them just for admin...)
13
13
  - detached from login (do your own login (oauth, passkeys, etc))
14
14
 
15
15
  ## Installation
@@ -58,8 +58,13 @@ jQuery(function($) {
58
58
  // Column already has a link, so don't add another
59
59
  return;
60
60
  }
61
+ var autolinkUrl = $this.data("column-autolink");
62
+ if (!autolinkUrl) {
63
+ // No URL, so don't add a link
64
+ return;
65
+ }
61
66
  var $link = $(document.createElement("a"));
62
- $link.attr("href", $this.data("column-autolink"));
67
+ $link.attr("href", autolinkUrl);
63
68
  $link.addClass("flex p-2 -m-2 text-white/80 hover:no-underline");
64
69
  $(this).wrapInner($link);
65
70
  })
@@ -162,17 +162,6 @@ class AdminModelDetailView(AdminDetailView):
162
162
  def get_object(self):
163
163
  return self.model.objects.get(pk=self.url_kwargs["pk"])
164
164
 
165
- def get_template_names(self) -> list[str]:
166
- template_names = super().get_template_names()
167
-
168
- if not self.template_name and isinstance(self.object, models.Model):
169
- object_meta = self.object._meta
170
- template_names = [
171
- f"admin/{object_meta.package_label}/{object_meta.model_name}{self.template_name_suffix}.html"
172
- ] + template_names
173
-
174
- return template_names
175
-
176
165
 
177
166
  class AdminModelCreateView(AdminCreateView):
178
167
  model: "models.Model"
@@ -191,17 +180,6 @@ class AdminModelCreateView(AdminCreateView):
191
180
 
192
181
  return f"{cls.model._meta.model_name}/create/"
193
182
 
194
- def get_template_names(self):
195
- template_names = super().get_template_names()
196
-
197
- if not self.template_name and issubclass(self.model, models.Model):
198
- model_meta = self.model._meta
199
- template_names = [
200
- f"admin/{model_meta.package_label}/{model_meta.model_name}{self.template_name_suffix}.html"
201
- ] + template_names
202
-
203
- return template_names
204
-
205
183
 
206
184
  class AdminModelUpdateView(AdminUpdateView):
207
185
  model: "models.Model"
@@ -224,17 +202,6 @@ class AdminModelUpdateView(AdminUpdateView):
224
202
  def get_object(self):
225
203
  return self.model.objects.get(pk=self.url_kwargs["pk"])
226
204
 
227
- def get_template_names(self):
228
- template_names = super().get_template_names()
229
-
230
- if not self.template_name and isinstance(self.object, models.Model):
231
- object_meta = self.object._meta
232
- template_names = [
233
- f"admin/{object_meta.package_label}/{object_meta.model_name}{self.template_name_suffix}.html"
234
- ] + template_names
235
-
236
- return template_names
237
-
238
205
 
239
206
  class AdminModelDeleteView(AdminDeleteView):
240
207
  model: "models.Model"
@@ -72,7 +72,7 @@ class AdminListView(HTMXViewMixin, AdminView):
72
72
 
73
73
  if self.is_htmx_request() and not hx_from_this_page and not self._page:
74
74
  # Don't render anything
75
- return Response(status=204)
75
+ return Response(status_code=204)
76
76
 
77
77
  return response
78
78
 
@@ -144,29 +144,29 @@ class AdminListView(HTMXViewMixin, AdminView):
144
144
  "admin/values/default.html",
145
145
  ]
146
146
 
147
- def get_list_url(self) -> str | None:
148
- return None
147
+ def get_list_url(self) -> str:
148
+ return ""
149
149
 
150
- def get_create_url(self) -> str | None:
151
- return None
150
+ def get_create_url(self) -> str:
151
+ return ""
152
152
 
153
- def get_detail_url(self, obj) -> str | None:
154
- return None
153
+ def get_detail_url(self, obj) -> str:
154
+ return ""
155
155
 
156
- def get_update_url(self, obj) -> str | None:
157
- return None
156
+ def get_update_url(self, obj) -> str:
157
+ return ""
158
158
 
159
- def get_delete_url(self, obj) -> str | None:
160
- return None
159
+ def get_delete_url(self, obj) -> str:
160
+ return ""
161
161
 
162
- def get_object_url(self, obj) -> str | None:
162
+ def get_object_url(self, obj) -> str:
163
163
  if url := self.get_detail_url(obj):
164
164
  return url
165
165
  if url := self.get_update_url(obj):
166
166
  return url
167
167
  if url := self.get_delete_url(obj):
168
168
  return url
169
- return None
169
+ return ""
170
170
 
171
171
  def get_object_links(self, obj) -> dict[str]:
172
172
  links = {}
@@ -191,20 +191,20 @@ class AdminListView(HTMXViewMixin, AdminView):
191
191
  class AdminCreateView(AdminView, CreateView):
192
192
  template_name = None
193
193
 
194
- def get_list_url(self) -> str | None:
195
- return None
194
+ def get_list_url(self) -> str:
195
+ return ""
196
196
 
197
- def get_create_url(self) -> str | None:
198
- return None
197
+ def get_create_url(self) -> str:
198
+ return ""
199
199
 
200
- def get_detail_url(self, obj) -> str | None:
201
- return None
200
+ def get_detail_url(self, obj) -> str:
201
+ return ""
202
202
 
203
- def get_update_url(self, obj) -> str | None:
204
- return None
203
+ def get_update_url(self, obj) -> str:
204
+ return ""
205
205
 
206
- def get_delete_url(self, obj) -> str | None:
207
- return None
206
+ def get_delete_url(self, obj) -> str:
207
+ return ""
208
208
 
209
209
  def get_success_url(self, form):
210
210
  if list_url := self.get_list_url():
@@ -227,7 +227,7 @@ class AdminDetailView(AdminView, DetailView):
227
227
 
228
228
  def get_template_names(self) -> list[str]:
229
229
  return super().get_template_names() + [
230
- "admin/detail.html",
230
+ "admin/detail.html", # A generic detail view for rendering any object
231
231
  ]
232
232
 
233
233
  def get_description(self):
@@ -274,20 +274,20 @@ class AdminDetailView(AdminView, DetailView):
274
274
 
275
275
  return templates
276
276
 
277
- def get_list_url(self) -> str | None:
278
- return None
277
+ def get_list_url(self) -> str:
278
+ return ""
279
279
 
280
- def get_create_url(self) -> str | None:
281
- return None
280
+ def get_create_url(self) -> str:
281
+ return ""
282
282
 
283
- def get_detail_url(self, obj) -> str | None:
284
- return None
283
+ def get_detail_url(self, obj) -> str:
284
+ return ""
285
285
 
286
- def get_update_url(self, obj) -> str | None:
287
- return None
286
+ def get_update_url(self, obj) -> str:
287
+ return ""
288
288
 
289
- def get_delete_url(self, obj) -> str | None:
290
- return None
289
+ def get_delete_url(self, obj) -> str:
290
+ return ""
291
291
 
292
292
  def get_fields(self):
293
293
  return self.fields.copy() # Avoid mutating the class attribute itself
@@ -311,20 +311,20 @@ class AdminUpdateView(AdminView, UpdateView):
311
311
  template_name = None
312
312
  nav_section = ""
313
313
 
314
- def get_list_url(self) -> str | None:
315
- return None
314
+ def get_list_url(self) -> str:
315
+ return ""
316
316
 
317
- def get_create_url(self) -> str | None:
318
- return None
317
+ def get_create_url(self) -> str:
318
+ return ""
319
319
 
320
- def get_detail_url(self, obj) -> str | None:
321
- return None
320
+ def get_detail_url(self, obj) -> str:
321
+ return ""
322
322
 
323
- def get_update_url(self, obj) -> str | None:
324
- return None
323
+ def get_update_url(self, obj) -> str:
324
+ return ""
325
325
 
326
- def get_delete_url(self, obj) -> str | None:
327
- return None
326
+ def get_delete_url(self, obj) -> str:
327
+ return ""
328
328
 
329
329
  def get_description(self):
330
330
  return repr(self.object)
@@ -363,20 +363,20 @@ class AdminDeleteView(AdminView, DeleteView):
363
363
  def get_description(self):
364
364
  return repr(self.object)
365
365
 
366
- def get_list_url(self) -> str | None:
367
- return None
366
+ def get_list_url(self) -> str:
367
+ return ""
368
368
 
369
- def get_create_url(self) -> str | None:
370
- return None
369
+ def get_create_url(self) -> str:
370
+ return ""
371
371
 
372
- def get_detail_url(self, obj) -> str | None:
373
- return None
372
+ def get_detail_url(self, obj) -> str:
373
+ return ""
374
374
 
375
- def get_update_url(self, obj) -> str | None:
376
- return None
375
+ def get_update_url(self, obj) -> str:
376
+ return ""
377
377
 
378
- def get_delete_url(self, obj) -> str | None:
379
- return None
378
+ def get_delete_url(self, obj) -> str:
379
+ return ""
380
380
 
381
381
  def get_links(self):
382
382
  links = super().get_links()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: plain.admin
3
- Version: 0.23.0
3
+ Version: 0.25.0
4
4
  Summary: Admin dashboard and tools for Plain.
5
5
  Author-email: Dave Gaeddert <dave.gaeddert@dropseed.dev>
6
6
  License-Expression: BSD-3-Clause
@@ -24,7 +24,7 @@ in addition to models.
24
24
 
25
25
  - cards
26
26
  - dashboards
27
- - diy forms
27
+ - diy forms - have to install elements if you want to use them (or an app uses them, or maybe plain pkgs should use them just for admin...)
28
28
  - detached from login (do your own login (oauth, passkeys, etc))
29
29
 
30
30
  ## Installation
@@ -1,4 +1,4 @@
1
- plain/admin/README.md,sha256=tdzHNyl6-dllbkEniCg0iw9PkcqkqvdiPiKuGs8ogEQ,7225
1
+ plain/admin/README.md,sha256=ln0toiRsIQ_BbHRNlz1OfC31km1DBHRdgAvfHSlujXo,7353
2
2
  plain/admin/__init__.py,sha256=bPv9iftT8aLqBH6dDy-HTVXW66dQUhfIiEZ-LIUMC0Y,78
3
3
  plain/admin/config.py,sha256=TDYmJe4UYmKw4bz0x5s9PkDa-X4V-9JoJlka162-J7M,676
4
4
  plain/admin/dates.py,sha256=EEhcQhHt3-k6kE9yvPdH5X6EecmUQ259xywbDBec3Dg,10253
@@ -8,7 +8,7 @@ plain/admin/templates.py,sha256=jLhJkuvqnPMBQTP-kzojFaqmFi50GZHvrVzuZCLc3rk,836
8
8
  plain/admin/toolbar.py,sha256=dsZa_I-tTbaeOluCbvHGEqy4_Suw6Q_JSrKl8Eu08qY,973
9
9
  plain/admin/urls.py,sha256=HtYsTDyV6s-k6ClT2H2oZqUDIANLq-PACpZfrR538js,1292
10
10
  plain/admin/assets/admin/admin.css,sha256=-KdI7geASBsSbTve26VeJ-wCrdHWyD3EdjDZ9o393Yc,2653
11
- plain/admin/assets/admin/admin.js,sha256=AWD6UqPxGqJFaUhYTDWe4niTgk0thzU4gRl7qK41KNc,2759
11
+ plain/admin/assets/admin/admin.js,sha256=8R4VestYByRd2THe5gg8I35Zu3rokm6TQTkEf2mEB1c,2919
12
12
  plain/admin/assets/admin/chart.js,sha256=GZiCYXjL6SmyuSCGE0Df80QvOUkw6H2YD-zsVID05lo,205089
13
13
  plain/admin/assets/admin/jquery-3.6.1.slim.min.js,sha256=W2eb4M1jdKpuZ_-_KnDgqI9X9SwGLrXtO0dknpNPJyE,72534
14
14
  plain/admin/assets/admin/list.js,sha256=_DPneRvk3VSzjVzfEaxyif4vLD75sCWz7bkHYp89uL8,1826
@@ -71,12 +71,12 @@ plain/admin/templates/querystats/toolbar.html,sha256=dePs614akVWUD8IlgzvQ0TREThv
71
71
  plain/admin/templates/toolbar/toolbar.html,sha256=KcGAG6kRmx60wfqEsdD5C4nDMilH-JvPjHoU6EktfaY,5985
72
72
  plain/admin/views/__init__.py,sha256=nF6AENZ3Xxyi08OTRrF6e-HYBkZSFj7XBK2mVzMYqN4,846
73
73
  plain/admin/views/base.py,sha256=S1oaMUXnMOwRozbn2K-tk9tL4BMimemfMagZD9QxrJw,3512
74
- plain/admin/views/models.py,sha256=gos3KBPvOovULG8xZYKOO4ENrQlUIGrlIkRPO99wkDw,7196
75
- plain/admin/views/objects.py,sha256=Wcw7_k4BDz4h49e4BGtq6g-3jo5-T0fJU9CfMcvMQK4,11319
74
+ plain/admin/views/models.py,sha256=mq_c13bdTs7WQ_MShVvTo3uCy09FOlBCrGIrGeK0sEo,5946
75
+ plain/admin/views/objects.py,sha256=7BXrDpHbdZ0vpzTHoLbSNdXO-rYSRw5YOBTiTK12E1U,11140
76
76
  plain/admin/views/registry.py,sha256=Lxib4YSQCMHb_zACnLKymJakV8jCZPWYll7J8-aV9Xw,3712
77
77
  plain/admin/views/types.py,sha256=ONMMdUoapgMoUVYgSIe-4YCdfvaVMQ4jgPWYiMo0pDk,178
78
78
  plain/admin/views/viewsets.py,sha256=dqMlQ6kLn9iqd9BwBWAZT1S271wH1FdfM5HXbOgBMEw,1655
79
- plain_admin-0.23.0.dist-info/METADATA,sha256=X-l_n3uxqdrg_kFn8ycJdfXUkMST-GZl7HBLqMRhs8k,7662
80
- plain_admin-0.23.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
81
- plain_admin-0.23.0.dist-info/licenses/LICENSE,sha256=cvKM3OlqHx3ijD6e34zsSUkPvzl-ya3Dd63A6EHL94U,1500
82
- plain_admin-0.23.0.dist-info/RECORD,,
79
+ plain_admin-0.25.0.dist-info/METADATA,sha256=eIkWBWIZCXM3Y2otclnUElQI8jDUxOLt_bcBKG3h4_c,7790
80
+ plain_admin-0.25.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
81
+ plain_admin-0.25.0.dist-info/licenses/LICENSE,sha256=cvKM3OlqHx3ijD6e34zsSUkPvzl-ya3Dd63A6EHL94U,1500
82
+ plain_admin-0.25.0.dist-info/RECORD,,