Skip to content
Snippets Groups Projects
Commit ec678cca authored by Tomáš Valenta's avatar Tomáš Valenta
Browse files

fieldset and inline ordering enums

parent 81ba9b8d
No related branches found
No related tags found
No related merge requests found
Pipeline #12050 passed
......@@ -5,18 +5,26 @@ from django.contrib import admin
from django.contrib.auth.models import Permission
from django.utils.html import format_html
from import_export import resources
from nested_admin import (NestedModelAdmin, NestedStackedInline,
NestedTabularInline)
from nested_admin import NestedModelAdmin, NestedStackedInline, NestedTabularInline
from rangefilter.filters import DateRangeFilter
from shared.admin import MarkdownxGuardedModelAdmin
from shared.admin import FieldsetInlineOrder, MarkdownxGuardedModelAdmin
from .forms import ContractAdminForm, ContractFileAdminForm, SigneeAdminForm
from .models import (Contract, Contractee, ContracteeSignature,
ContracteeSignatureRepresentative, ContractFile,
ContractFilingArea, ContractIntent, ContractIssue,
ContractType, Signee, SigneeSignature,
SigneeSignatureRepresentative)
from .models import (
Contract,
Contractee,
ContracteeSignature,
ContracteeSignatureRepresentative,
ContractFile,
ContractFilingArea,
ContractIntent,
ContractIssue,
ContractType,
Signee,
SigneeSignature,
SigneeSignatureRepresentative,
)
class ContractResource(resources.ModelResource):
......@@ -259,23 +267,20 @@ class ContractAdmin(
def get_fieldsets_and_inlines_order(self, context) -> list:
order = [
"f",
"f",
"f",
"i",
"i",
"i",
"f",
"i",
"f",
"f",
FieldsetInlineOrder.FIELDSET,
FieldsetInlineOrder.FIELDSET,
FieldsetInlineOrder.FIELDSET,
FieldsetInlineOrder.INLINE,
FieldsetInlineOrder.INLINE,
FieldsetInlineOrder.INLINE,
FieldsetInlineOrder.FIELDSET,
FieldsetInlineOrder.INLINE,
FieldsetInlineOrder.FIELDSET,
FieldsetInlineOrder.FIELDSET,
]
if context["user"].has_perm("approve", self):
order.insert(
10,
"f"
)
order.insert(10, FieldsetInlineOrder.FIELDSET)
return order
......@@ -459,10 +464,11 @@ class SigneeSignatureRepresentativeAdmin(
get_obj_signee_contract,
get_obj_signee_contract,
),
permissions_mixin_factory(
permissions_mixin_factory(
"contracts.edit_others",
"contracts.delete_others",
lambda request, obj: get_obj_contractee_contract(obj).created_by != request.user,
lambda request, obj: get_obj_contractee_contract(obj).created_by
!= request.user,
get_obj_signee_contract,
get_obj_signee_contract,
),
......@@ -479,10 +485,11 @@ class ContracteeSignatureRepresentativeAdmin(
get_obj_contractee_contract,
get_obj_contractee_contract,
),
permissions_mixin_factory(
permissions_mixin_factory(
"contracts.edit_others",
"contracts.delete_others",
lambda request, obj: get_obj_contractee_contract(obj).created_by != request.user,
lambda request, obj: get_obj_contractee_contract(obj).created_by
!= request.user,
get_obj_contractee_contract,
get_obj_contractee_contract,
),
......@@ -511,7 +518,9 @@ for model in (
admin.site.register(model, ContractSubmodelAdmin)
admin.site.register(SigneeSignatureRepresentative, SigneeSignatureRepresentativeAdmin)
admin.site.register(ContracteeSignatureRepresentative, ContracteeSignatureRepresentativeAdmin)
admin.site.register(
ContracteeSignatureRepresentative, ContracteeSignatureRepresentativeAdmin
)
admin.site.register(ContractType, ContractTypeAdmin)
admin.site.register(ContractIssue, ContractIssueAdmin)
......
......@@ -4,14 +4,22 @@ from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('contracts', '0014_alter_contracteesignaturerepresentative_options_and_more'),
("contracts", "0014_alter_contracteesignaturerepresentative_options_and_more"),
]
operations = [
migrations.AlterModelOptions(
name='contract',
options={'permissions': [('approve', 'Schválit / zrušit schválení'), ('view_confidential', 'Zobrazit tajné informace'), ('edit_others', 'Upravit cizí'), ('delete_others', 'Odstranit cizí')], 'verbose_name': 'Smlouva', 'verbose_name_plural': 'Smlouvy'},
name="contract",
options={
"permissions": [
("approve", "Schválit / zrušit schválení"),
("view_confidential", "Zobrazit tajné informace"),
("edit_others", "Upravit cizí"),
("delete_others", "Odstranit cizí"),
],
"verbose_name": "Smlouva",
"verbose_name_plural": "Smlouvy",
},
),
]
......@@ -4,18 +4,31 @@ from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('contracts', '0015_alter_contract_options'),
("contracts", "0015_alter_contract_options"),
]
operations = [
migrations.AlterModelOptions(
name='contractee',
options={'permissions': [('edit_others', 'Upravit cizí'), ('delete_others', 'Odstranit cizí')], 'verbose_name': 'Naše smluvní strana', 'verbose_name_plural': 'Naše smluvní strany'},
name="contractee",
options={
"permissions": [
("edit_others", "Upravit cizí"),
("delete_others", "Odstranit cizí"),
],
"verbose_name": "Naše smluvní strana",
"verbose_name_plural": "Naše smluvní strany",
},
),
migrations.AlterModelOptions(
name='signee',
options={'permissions': [('edit_others', 'Upravit cizí'), ('delete_others', 'Odstranit cizí')], 'verbose_name': 'Jiná smluvní strana', 'verbose_name_plural': 'Ostatní smluvní strany'},
name="signee",
options={
"permissions": [
("edit_others", "Upravit cizí"),
("delete_others", "Odstranit cizí"),
],
"verbose_name": "Jiná smluvní strana",
"verbose_name_plural": "Ostatní smluvní strany",
},
),
]
......@@ -4,14 +4,24 @@ from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('contracts', '0016_alter_contractee_options_alter_signee_options'),
("contracts", "0016_alter_contractee_options_alter_signee_options"),
]
operations = [
migrations.AlterModelOptions(
name='contract',
options={'permissions': [('approve', 'Schválit / zrušit schválení'), ('view_confidential', 'Zobrazit tajné informace'), ('edit_when_approved', 'Upravit schválené'), ('delete_when_approved', 'Odstranit schválené'), ('edit_others', 'Upravit cizí'), ('delete_others', 'Odstranit cizí')], 'verbose_name': 'Smlouva', 'verbose_name_plural': 'Smlouvy'},
name="contract",
options={
"permissions": [
("approve", "Schválit / zrušit schválení"),
("view_confidential", "Zobrazit tajné informace"),
("edit_when_approved", "Upravit schválené"),
("delete_when_approved", "Odstranit schválené"),
("edit_others", "Upravit cizí"),
("delete_others", "Odstranit cizí"),
],
"verbose_name": "Smlouva",
"verbose_name_plural": "Smlouvy",
},
),
]
# Generated by Django 4.1.4 on 2023-03-26 18:45
import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('contracts', '0017_alter_contract_options'),
("contracts", "0017_alter_contract_options"),
]
operations = [
migrations.AddField(
model_name='contractee',
name='created_by',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Vytvořeno uživatelem'),
model_name="contractee",
name="created_by",
field=models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="+",
to=settings.AUTH_USER_MODEL,
verbose_name="Vytvořeno uživatelem",
),
),
migrations.AddField(
model_name='signee',
name='created_by',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Vytvořeno uživatelem'),
model_name="signee",
name="created_by",
field=models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="+",
to=settings.AUTH_USER_MODEL,
verbose_name="Vytvořeno uživatelem",
),
),
]
......@@ -184,7 +184,9 @@ class Signee(CreatedByMixin, OwnPermissionsMixin, SignatureCountMixin, models.Mo
permissions = OwnPermissionsMixin.Meta.permissions
class Contractee(CreatedByMixin, OwnPermissionsMixin, SignatureCountMixin, models.Model):
class Contractee(
CreatedByMixin, OwnPermissionsMixin, SignatureCountMixin, models.Model
):
name = models.CharField(
max_length=256,
default=settings.DEFAULT_CONTRACTEE_NAME,
......
......@@ -5,11 +5,11 @@
{% block field_sets %}
{% get_fieldsets_and_inlines as fieldsets_and_inlines %}
{% for type, fieldset_or_inline in fieldsets_and_inlines %}
{% if type == 'f' %}
{% if type.value == "fieldset" %}
{% with fieldset=fieldset_or_inline %}
{% include "admin/includes/fieldset.html" %}
{% endwith %}
{% elif type == 'i' %}
{% elif type.value == "inline" %}
{% with inline_admin_formset=fieldset_or_inline %}
{% include inline_admin_formset.opts.template %}
{% endwith %}
......@@ -17,4 +17,4 @@
{% endfor %}
{% endblock %}
{% block inline_field_sets %}{% endblock %}
{% block inline_field_sets %}{% endblock %}
import enum
from django.contrib import admin
from guardian.admin import GuardedModelAdmin
from markdownx.admin import MarkdownxModelAdmin
......@@ -5,3 +7,8 @@ from markdownx.admin import MarkdownxModelAdmin
class MarkdownxGuardedModelAdmin(MarkdownxModelAdmin, GuardedModelAdmin):
pass
class FieldsetInlineOrder(enum.Enum):
FIELDSET = "fieldset"
INLINE = "inline"
from django.template import Library
from shared.admin import FieldsetInlineOrder
register = Library()
......@@ -8,6 +10,7 @@ register = Library()
def get_fieldsets_and_inlines(context):
adminform = context["adminform"]
model_admin = adminform.model_admin
adminform = iter(adminform)
inlines = iter(context["inline_admin_formsets"])
......@@ -18,14 +21,35 @@ def get_fieldsets_and_inlines(context):
if hasattr(model_admin, "get_fieldsets_and_inlines_order")
else model_admin.fieldsets_and_inlines_order
):
if choice == "f":
fieldsets_and_inlines.append(("f", next(adminform)))
elif choice == "i":
fieldsets_and_inlines.append(("i", next(inlines)))
if choice == FieldsetInlineOrder.FIELDSET:
fieldsets_and_inlines.append(
(
FieldsetInlineOrder.FIELDSET,
next(adminform)
)
)
elif choice == FieldsetInlineOrder.INLINE:
fieldsets_and_inlines.append(
(
FieldsetInlineOrder.INLINE,
next(inlines)
)
)
for fieldset in adminform:
fieldsets_and_inlines.append(("f", fieldset))
fieldsets_and_inlines.append(
(
FieldsetInlineOrder.FIELDSET,
fieldset
)
)
for inline in inlines:
fieldsets_and_inlines.append(("i", inline))
fieldsets_and_inlines.append(
(
FieldsetInlineOrder.INLINE,
inline
)
)
return fieldsets_and_inlines
......@@ -21,7 +21,7 @@ class User(pirates_models.AbstractUser):
default=True,
verbose_name="Administrační přístup dle členství ve skupině",
help_text=(
"Určuje, zda bude \"Administrační přístup\" uživatele "
'Určuje, zda bude "Administrační přístup" uživatele '
"definován dle členství ve skupinách, nebo podle "
"speciálního nastavení zde."
),
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment