Clean up template

This commit is contained in:
Jeremy Stretch 2025-04-09 09:20:54 -04:00
parent a1f0c3a37d
commit e128198ec4
4 changed files with 51 additions and 23 deletions

View File

@ -310,6 +310,13 @@ class TableConfigForm(forms.ModelForm):
label=_('Object type'), label=_('Object type'),
queryset=ObjectType.objects.all() queryset=ObjectType.objects.all()
) )
ordering = SimpleArrayField(
base_field=forms.CharField(),
label=_('Ordering'),
help_text=_(
"Enter a comma-separated list of column names. Prepend a name with a hyphen to reverse the order."
)
)
available_columns = SimpleArrayField( available_columns = SimpleArrayField(
base_field=forms.CharField(), base_field=forms.CharField(),
required=False, required=False,
@ -326,14 +333,6 @@ class TableConfigForm(forms.ModelForm):
label=_('Selected Columns') label=_('Selected Columns')
) )
fieldsets = (
FieldSet(
'name', 'slug', 'object_type', 'table', 'description', 'weight', 'enabled', 'shared',
name=_('Table Config')
),
FieldSet('columns', 'ordering', name=_('Configuration')),
)
class Meta: class Meta:
model = TableConfig model = TableConfig
exclude = ('user',) exclude = ('user',)

View File

@ -599,6 +599,18 @@ class TableConfig(ChangeLoggedModel):
def table_class(self): def table_class(self):
return get_table_for_model(self.object_type.model_class(), name=self.table) return get_table_for_model(self.object_type.model_class(), name=self.table)
@property
def ordering_items(self):
items = []
for col in self.ordering or []:
if col.startswith('-'):
ascending = False
col = col[1:]
else:
ascending = True
items.append((col, ascending))
return items
class ImageAttachment(ChangeLoggedModel): class ImageAttachment(ChangeLoggedModel):
""" """

View File

@ -353,6 +353,12 @@ class TableConfigListView(SharedObjectViewMixin, generic.ObjectListView):
class TableConfigView(SharedObjectViewMixin, generic.ObjectView): class TableConfigView(SharedObjectViewMixin, generic.ObjectView):
queryset = TableConfig.objects.all() queryset = TableConfig.objects.all()
def get_extra_context(self, request, instance):
table = instance.table_class([])
return {
'columns': dict(table.columns.items()),
}
@register_model_view(TableConfig, 'add', detail=False) @register_model_view(TableConfig, 'add', detail=False)
@register_model_view(TableConfig, 'edit') @register_model_view(TableConfig, 'edit')

View File

@ -47,25 +47,36 @@
</div> </div>
<div class="col col-md-6"> <div class="col col-md-6">
<div class="card"> <div class="card">
<h2 class="card-header">{% trans "Columns" %}</h2> <h2 class="card-header">{% trans "Columns Displayed" %}</h2>
<div class="card-body"> <ul class="list-group list-group-flush" role="presentation">
<ul> {% for name in object.columns %}
{% for column in object.columns %} <li class="list-group-item list-group-item-action">
<li>{{ column }}</li> {% with column=columns|get_key:name %}
{{ column.verbose_name }}
{% endwith %}
</li>
{% endfor %} {% endfor %}
</ul> </ul>
</div> </div>
</div>
<div class="card"> <div class="card">
<h2 class="card-header">{% trans "Ordering" %}</h2> <h2 class="card-header">{% trans "Ordering" %}</h2>
<div class="card-body"> <ul class="list-group list-group-flush" role="presentation">
<ul> {% for column, ascending in object.ordering_items %}
{% for column in object.ordering %} <li class="list-group-item">
<li>{{ column }}</li> {% with column=columns|get_key:column %}
{% if ascending %}
<i class="mdi mdi-arrow-down-thick"></i>
{% else %}
<i class="mdi mdi-arrow-up-thick"></i>
{% endif %}
{{ column.verbose_name }}
{% endwith %}
</li>
{% empty %}
<li class="list-group-item text-muted">{% trans "Default" %}</li>
{% endfor %} {% endfor %}
</ul> </ul>
</div> </div>
</div>
{% plugin_right_page object %} {% plugin_right_page object %}
</div> </div>
</div> </div>