django-smartbase-admin 1.0.35__py3-none-any.whl → 1.0.37__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.
@@ -309,6 +309,10 @@ class SBAdminListAction(SBAdminAction):
309
309
  values = [self.get_pk_field().name]
310
310
  visible_column_fields = self.get_visible_column_fields()
311
311
  values.extend([field.field for field in visible_column_fields])
312
+ # Include supporting_annotates keys for visible columns
313
+ for field in visible_column_fields:
314
+ if field.supporting_annotates:
315
+ values.extend(field.supporting_annotates.keys())
312
316
  if self.view.sbadmin_list_display_data:
313
317
  values.extend(self.view.sbadmin_list_display_data)
314
318
  values.extend(
@@ -22,7 +22,7 @@ from django.core.exceptions import (
22
22
  PermissionDenied,
23
23
  )
24
24
  from django.db import models
25
- from django.db.models import QuerySet, Q
25
+ from django.db.models import QuerySet, Q, Model
26
26
  from django.forms import HiddenInput
27
27
  from django.forms.models import (
28
28
  ModelFormMetaclass,
@@ -729,7 +729,7 @@ class SBAdmin(
729
729
 
730
730
  def get_sbadmin_fieldsets(
731
731
  self, request, object_id=None
732
- ) -> Iterable[tuple[str | None, dict[str, Any]]]:
732
+ ) -> list[tuple[str | None, dict[str, Any]]]:
733
733
  fieldsets = self.sbadmin_fieldsets or self.fieldsets
734
734
  if fieldsets:
735
735
  return fieldsets
@@ -1019,6 +1019,11 @@ class SBAdminInline(
1019
1019
  all_base_fields_form = None
1020
1020
  sb_admin_add_modal = False
1021
1021
 
1022
+ def get_instance_label(self, request, obj: Model | None = None) -> str | None:
1023
+ if obj:
1024
+ return str(obj)
1025
+ return None
1026
+
1022
1027
  def get_readonly_fields(self, request, obj=None):
1023
1028
  readonly_fields = super().get_readonly_fields(request, obj)
1024
1029
  if ROW_CLASS_FIELD not in readonly_fields:
@@ -64,6 +64,7 @@ class SBAdminBaseView(object):
64
64
  global_filter_data_map = None
65
65
  field_cache = None
66
66
  sbadmin_detail_actions = None
67
+ add_label = None
67
68
  delete_confirmation_template = "sb_admin/actions/delete_confirmation.html"
68
69
 
69
70
  def init_view_static(self, configuration, model, admin_site):
@@ -221,6 +222,9 @@ class SBAdminBaseView(object):
221
222
  "color_scheme_form": color_scheme_form,
222
223
  }
223
224
 
225
+ def get_add_label(self, request, object_id: int | str | None = None):
226
+ return self.add_label
227
+
224
228
  def get_global_context(
225
229
  self, request, object_id: int | str | None = None
226
230
  ) -> dict[str, Any]:
@@ -228,6 +232,7 @@ class SBAdminBaseView(object):
228
232
  "view_id": self.get_id(),
229
233
  "configuration": request.request_data.configuration,
230
234
  "request_data": request.request_data,
235
+ "add_label": self.get_add_label(request, object_id),
231
236
  "DETAIL_STRUCTURE_RIGHT_CLASS": DETAIL_STRUCTURE_RIGHT_CLASS,
232
237
  "OVERRIDE_CONTENT_OF_NOTIFICATION": OVERRIDE_CONTENT_OF_NOTIFICATION,
233
238
  "username_data": self.get_username_data(request),
@@ -88,7 +88,7 @@
88
88
  <svg class="w-20 h-20 md:mr-8">
89
89
  <use xlink:href="#Plus"></use>
90
90
  </svg>
91
- <span>{% trans 'Add' %} {{ model_name }}</span>
91
+ <span>{% trans 'Add' %}{% if add_label %} {{ add_label }}{% endif %}</span>
92
92
  </a>
93
93
  </li>
94
94
  {% endif %}
@@ -1,7 +1,7 @@
1
1
  {% load i18n %}
2
2
 
3
3
  {% if add %}
4
- {% blocktrans with name=opts.verbose_name %}Add {{ name }}{% endblocktrans %}
4
+ {% trans 'Add' %}{% if add_label %} {{ add_label }}{% endif %}
5
5
  {% else %}
6
6
  {{ original|truncatewords:"18" }}
7
7
  {% endif %}
@@ -60,7 +60,14 @@
60
60
  <svg class="w-20 h-20 text-dark-400"><use xlink:href="#Drag"></use></svg>
61
61
  </div>
62
62
  {% endif %}
63
- <span class="text-dark-900 font-semibold">{% if inline_admin_form.original %}{{ inline_admin_form.original }}{% else %}#{{ forloop.counter }}{% endif %}</span>
63
+ <span class="text-dark-900 font-semibold">
64
+ {% call_method inline_opts "get_instance_label" request inline_admin_form.original as instance_label %}
65
+ {% if instance_label %}
66
+ {{ instance_label }}
67
+ {% else %}
68
+ #{{ forloop.counter }}
69
+ {% endif %}
70
+ </span>
64
71
  <div class="ml-auto">
65
72
  {% if inline_admin_form.original and inline_admin_form.model_admin.show_change_link and inline_admin_form.model_admin.has_registered_model %}
66
73
  <a href="{% url inline_admin_form.model_admin.opts|admin_urlname:'change' inline_admin_form.original.pk|admin_urlquote %}" class="{% if inline_admin_formset.has_change_permission %}inlinechangelink{% else %}inlineviewlink{% endif %}">
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: django-smartbase-admin
3
- Version: 1.0.35
3
+ Version: 1.0.37
4
4
  Summary:
5
5
  Home-page: https://smartbase-sk.github.io/django-smartbase-admin-docs/
6
6
  License: MIT
@@ -152,11 +152,15 @@ MIDDLEWARE = [
152
152
  ]
153
153
  ```
154
154
 
155
+ ## 🤖 AI/Developer Reference
156
+
157
+ See [AGENTS.md](./AGENTS.md) for development patterns, gotchas, and AI assistant instructions.
158
+
155
159
  ## 🤝 Need Help with Development?
156
160
  We at SmartBase are experts in Django and custom software.
157
161
 
158
162
  Whether you're building a new platform or modernizing an internal tool —
159
163
  💡 We can help you design, build, and scale it.
160
164
 
161
- 📬 [Lets talk](https://en.smartbase.sk/contact-us/) — Wed love to work with you.
165
+ 📬 [Let's talk](https://en.smartbase.sk/contact-us/) — We'd love to work with you.
162
166
 
@@ -1,16 +1,16 @@
1
1
  django_smartbase_admin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
2
  django_smartbase_admin/actions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- django_smartbase_admin/actions/admin_action_list.py,sha256=SzJQBCTj9xhVnbQi8h7LlQowzdZrNOUG1GRBgp2YFCI,19609
3
+ django_smartbase_admin/actions/admin_action_list.py,sha256=VzC1ghdYPXXYDd_6JCqy41M8M2kkOLJGc8QIwPvvdEs,19825
4
4
  django_smartbase_admin/actions/advanced_filters.py,sha256=Vm8b6TAwNehR8INjolFG7pEYL4ADO7XUiVOWpb0btM0,13481
5
5
  django_smartbase_admin/admin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- django_smartbase_admin/admin/admin_base.py,sha256=9UwjWsZ2i-nGvNSGT7TtzdfJA_3yO2MpJCAv_BsFzbM,49413
6
+ django_smartbase_admin/admin/admin_base.py,sha256=_LhpECtcP0NDb-0PEI3AY6WFYw94aCWGviCrrSl-R-s,49564
7
7
  django_smartbase_admin/admin/site.py,sha256=bU71Zcts2hRcusZq1l44q9Mlr8jOEjGHeM6MNAaS6Gc,9903
8
8
  django_smartbase_admin/admin/widgets.py,sha256=T2_haNKqky_D6tHkzDcxjZzqHeP9DEDi0thcVFiaYCI,34241
9
9
  django_smartbase_admin/apps.py,sha256=heZq5O2GHlkJdhUCHbRR7Nmm0irSxnL9NMqY43_O7V4,599
10
10
  django_smartbase_admin/compilemessages.py,sha256=-_FEFQlOvE4L8UzSuUxSxZQjgGlwL9IZtmg59fW_kIQ,342
11
11
  django_smartbase_admin/engine/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
12
  django_smartbase_admin/engine/actions.py,sha256=vmwMmo1mxxHSLTlbNwbH6h9ulxwDVJnF3r8d-axiKPI,2084
13
- django_smartbase_admin/engine/admin_base_view.py,sha256=NNHAnVVFCEZQq1_pkmb8jZPrw0xlD7ByfeDTIAagLWo,32460
13
+ django_smartbase_admin/engine/admin_base_view.py,sha256=3gqk0TwSfgYINqzUAZYXWPEm7s-e8D9pXt0KtsOwYQY,32651
14
14
  django_smartbase_admin/engine/admin_entrypoint_view.py,sha256=jfMfcYPfdre2abHfC4KIxaP_epJFuCeTcujGhGd4Tl4,624
15
15
  django_smartbase_admin/engine/admin_view.py,sha256=9wGffahDR3IYmhL9ZbX8uitwGdXdw5DIL5GnWBawmJM,4238
16
16
  django_smartbase_admin/engine/configuration.py,sha256=DcmEh-FR3pn6H-_mNBuiml-ILi2v3KEZPC2YYPvnbFE,8752
@@ -566,7 +566,7 @@ django_smartbase_admin/templates/sb_admin/actions/change_password.html,sha256=Lh
566
566
  django_smartbase_admin/templates/sb_admin/actions/dashboard.html,sha256=ur4OFSKJrB71Sl8O5fF0BsV86zLq1tyiadmrDUy9aJ0,297
567
567
  django_smartbase_admin/templates/sb_admin/actions/delete_confirmation.html,sha256=4AeJLqGGPVBYXS9XQSNTnMvsT3I6QttyNLThE8gEZHE,3205
568
568
  django_smartbase_admin/templates/sb_admin/actions/delete_selected_confirmation.html,sha256=hQl8C3j22LI6fVPAMqRd4d_kXNKzcCNJDuhOzEZKBGE,3308
569
- django_smartbase_admin/templates/sb_admin/actions/list.html,sha256=SUXoRQtaqw6vpjry0bkzXTPa8KWQonXubcJlDH7-SKM,6905
569
+ django_smartbase_admin/templates/sb_admin/actions/list.html,sha256=I8AuLeE4_yo5I5HG0fQPt-8Q1u-7pap9pE4FoLJyipU,6933
570
570
  django_smartbase_admin/templates/sb_admin/actions/media.html,sha256=UYe6QzEuqCFZOj1J9vVFHFKvUZDaVBBLFOzHHI8SEyk,122
571
571
  django_smartbase_admin/templates/sb_admin/actions/object_history.html,sha256=7EdXW3oa3kFfWb2ICyKDJmTlTWmjAA3SgONd26QFDzA,1949
572
572
  django_smartbase_admin/templates/sb_admin/actions/partials/action_link.html,sha256=k8ygmP8zPzazUQn7cabdNGQ9Kla_zrIlCDUHuRKILKs,684
@@ -624,7 +624,7 @@ django_smartbase_admin/templates/sb_admin/filter_widgets/string_field.html,sha25
624
624
  django_smartbase_admin/templates/sb_admin/filter_widgets/tree_select_filter.html,sha256=6-jUnM9-UW4xKTilF8UgjT0zkafZh2xsR0M1N0obNj8,1243
625
625
  django_smartbase_admin/templates/sb_admin/fonts.html,sha256=TX6dIrqFKTnPL3Gsi8wAIWIW1szze1IhBEAHeRz9wOU,1121
626
626
  django_smartbase_admin/templates/sb_admin/includes/attrs.html,sha256=UFPgCXXCAkbumxZE1NM-aJVE4VCe2RjCrHLNseibv3I,165
627
- django_smartbase_admin/templates/sb_admin/includes/change_form_title.html,sha256=cfhZmKFfIt47iEGz3X3TcB1BOMRr1rsUlEaY2Oja3Vo,172
627
+ django_smartbase_admin/templates/sb_admin/includes/change_form_title.html,sha256=tesNery1Kqz79MOLAhRFEXUrLhtsKFImKdXSTT8oOi4,157
628
628
  django_smartbase_admin/templates/sb_admin/includes/components.html,sha256=ixhN__EcMbCfjXQXdCElda18sqWZYj9scV3nsR9nXts,18822
629
629
  django_smartbase_admin/templates/sb_admin/includes/confirmation.html,sha256=F2lgUPCIF6pveCSyS7L4k8ifZxa_DoJp-NZb4uwmtyI,1844
630
630
  django_smartbase_admin/templates/sb_admin/includes/fieldset.html,sha256=cSaqkdB2OOMXW4UFysoDQP4x-Wm4fgMtClPHqHepv1o,280
@@ -635,7 +635,7 @@ django_smartbase_admin/templates/sb_admin/includes/notifications.html,sha256=ug4
635
635
  django_smartbase_admin/templates/sb_admin/includes/readonly_boolean_field.html,sha256=sCU7DKBeWVD7ILcOAd20APS3gTBLBwXJpDjzTETwp5M,412
636
636
  django_smartbase_admin/templates/sb_admin/includes/readonly_field.html,sha256=uGysgcSJJRIwG-AW9Vtfysulz4HOKUNH9Wx0f8sZkuE,291
637
637
  django_smartbase_admin/templates/sb_admin/includes/table_inline_delete_button.html,sha256=aAkU6-T3tUrgshrZxny5QSqFUxPI59EKynxfKOMShNc,1170
638
- django_smartbase_admin/templates/sb_admin/inlines/stacked_inline.html,sha256=VwAqL9oULOMdKvsOF83W_eTW06P1VC6cneAg1l7sMVo,9285
638
+ django_smartbase_admin/templates/sb_admin/inlines/stacked_inline.html,sha256=f8GFJcLfd8hQG4jOiHHdITlF6OVwRuM7BnBzjGVqu_k,9599
639
639
  django_smartbase_admin/templates/sb_admin/inlines/table_inline.html,sha256=o35YgaxSdYA6MORuyHJDi3GzE8qwWrXkGCYoMJyAmP0,17530
640
640
  django_smartbase_admin/templates/sb_admin/inlines/table_inline_paginated.html,sha256=2I59KWM_7yvchNjlIWHaHklrklnNsJBwaLlp9mZUYfQ,3046
641
641
  django_smartbase_admin/templates/sb_admin/integrations/cms/page_list.html,sha256=juoU5UaqPozIgRX5EJyWpm2-mb1hqM2pfBoePZ1Vs-I,18190
@@ -715,7 +715,7 @@ django_smartbase_admin/views/global_filter_view.py,sha256=eYo1moJGyi7jc2cPDA5ZBi
715
715
  django_smartbase_admin/views/media_view.py,sha256=5BLWXuzynF7nM34t-mf2BQSRN5ojY8HxpLIqt7Jiq9g,292
716
716
  django_smartbase_admin/views/translations_view.py,sha256=hktmkJIZ0EJxgnzjHLIoRDY0ckFa5wkbaoFZg32UWYw,20441
717
717
  django_smartbase_admin/views/user_config_view.py,sha256=hUSmwxgGXJog7vhiD-zGpm6smo31sLNzW2VoXapHIjc,1865
718
- django_smartbase_admin-1.0.35.dist-info/LICENSE.md,sha256=okRGMBOYvyhprt2eTpX_QXqpzC0MODF-U7zX-4fKPjQ,1078
719
- django_smartbase_admin-1.0.35.dist-info/METADATA,sha256=5DRA-Ffw5B6GNUiV1lS0wAVMEHi_pX3MeMQ5VKCNQoM,6573
720
- django_smartbase_admin-1.0.35.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
721
- django_smartbase_admin-1.0.35.dist-info/RECORD,,
718
+ django_smartbase_admin-1.0.37.dist-info/LICENSE.md,sha256=okRGMBOYvyhprt2eTpX_QXqpzC0MODF-U7zX-4fKPjQ,1078
719
+ django_smartbase_admin-1.0.37.dist-info/METADATA,sha256=loyJRQ0DZmmjsxPqDwnJo8v80nuadXuzD05oOisoIAI,6697
720
+ django_smartbase_admin-1.0.37.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
721
+ django_smartbase_admin-1.0.37.dist-info/RECORD,,