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

wip - app ordering

parent 006c7f5e
No related branches found
No related tags found
No related merge requests found
from dal_admin_filters import AutocompleteFilter from dal_admin_filters import AutocompleteFilter
from django.contrib import admin from django.contrib import admin
from django.utils.html import format_html from django.utils.html import format_html
from fieldsets_with_inlines import FieldsetsInlineMixin
from import_export import resources from import_export import resources
from rangefilter.filters import DateRangeFilter from rangefilter.filters import DateRangeFilter
...@@ -84,20 +85,11 @@ class ContractSigneeRepresentativeInline(admin.TabularInline): ...@@ -84,20 +85,11 @@ class ContractSigneeRepresentativeInline(admin.TabularInline):
extra = 0 extra = 0
class ContractAdmin(MarkdownxGuardedModelAdmin): class ContractAdmin(FieldsetsInlineMixin, MarkdownxGuardedModelAdmin):
form = ContractAdminForm form = ContractAdminForm
readonly_fields = ("created_by",) readonly_fields = ("created_by",)
inlines = (
ContracteeSignatureInline,
SigneeSignatureInline,
ContractFileInline,
ContractIntentInline,
ContractContracteeRepresentativeInline,
ContractSigneeRepresentativeInline,
)
#def __init__(self, *args, **kwargs): #def __init__(self, *args, **kwargs):
#from .models import Contract #from .models import Contract
...@@ -110,8 +102,7 @@ class ContractAdmin(MarkdownxGuardedModelAdmin): ...@@ -110,8 +102,7 @@ class ContractAdmin(MarkdownxGuardedModelAdmin):
#.filter(contract=self.instance) #.filter(contract=self.instance)
#) #)
def get_fieldsets(self, request, obj=None): fieldsets_with_inlines = [
fieldsets = [
( (
"Základní informace", "Základní informace",
{ {
...@@ -137,14 +128,21 @@ class ContractAdmin(MarkdownxGuardedModelAdmin): ...@@ -137,14 +128,21 @@ class ContractAdmin(MarkdownxGuardedModelAdmin):
} }
), ),
( (
"Fyzický dokument", "Náklady",
{ {
"fields": [ "fields": [
"paper_form_state", "cost_amount",
"filing_area", "cost_unit",
] ]
} }
), ),
ContractFileInline,
ContracteeSignatureInline,
ContractContracteeRepresentativeInline,
SigneeSignatureInline,
ContractSigneeRepresentativeInline,
( (
"Odkazy", "Odkazy",
{ {
...@@ -154,12 +152,15 @@ class ContractAdmin(MarkdownxGuardedModelAdmin): ...@@ -154,12 +152,15 @@ class ContractAdmin(MarkdownxGuardedModelAdmin):
] ]
} }
), ),
ContractIntentInline,
( (
"Náklady", "Fyzický dokument",
{ {
"fields": [ "fields": [
"cost_amount", "paper_form_state",
"cost_unit", "filing_area",
] ]
} }
), ),
...@@ -174,9 +175,10 @@ class ContractAdmin(MarkdownxGuardedModelAdmin): ...@@ -174,9 +175,10 @@ class ContractAdmin(MarkdownxGuardedModelAdmin):
) )
] ]
def get_fieldsets(self, request, obj=None):
if request.user.is_superuser or request.user.has_perm("approve", self): if request.user.is_superuser or request.user.has_perm("approve", self):
fieldsets.insert( self.fieldsets_with_inlines.insert(
0, 8,
( (
"Schválení", "Schválení",
{ {
...@@ -185,7 +187,7 @@ class ContractAdmin(MarkdownxGuardedModelAdmin): ...@@ -185,7 +187,7 @@ class ContractAdmin(MarkdownxGuardedModelAdmin):
), ),
) )
return fieldsets return super().get_fieldsets(request, obj)
def save_model(self, request, obj, form, change) -> None: def save_model(self, request, obj, form, change) -> None:
if obj.created_by is None: if obj.created_by is None:
...@@ -269,7 +271,6 @@ for model in ( ...@@ -269,7 +271,6 @@ for model in (
ContracteeSignature, ContracteeSignature,
ContractSigneeRepresentative, ContractSigneeRepresentative,
ContractContracteeRepresentative, ContractContracteeRepresentative,
ContractType,
ContractIntent, ContractIntent,
): ):
admin.site.register(model, IndexHiddenModelAdmin) admin.site.register(model, IndexHiddenModelAdmin)
...@@ -278,8 +279,9 @@ admin.site.register(ContractFile, ContractFileAdmin) ...@@ -278,8 +279,9 @@ admin.site.register(ContractFile, ContractFileAdmin)
for model in ( for model in (
Contractee, Contractee,
ContractIssue,
ContractFilingArea, ContractFilingArea,
ContractIssue,
ContractType,
): ):
admin.site.register(model, MarkdownxGuardedModelAdmin) admin.site.register(model, MarkdownxGuardedModelAdmin)
......
...@@ -196,7 +196,7 @@ class ContractType(NameStrMixin, models.Model): ...@@ -196,7 +196,7 @@ class ContractType(NameStrMixin, models.Model):
app_label = "contracts" app_label = "contracts"
verbose_name = "Typ smlouvy" verbose_name = "Typ smlouvy"
verbose_name_plural = "Typy smlouvy" verbose_name_plural = "Typy smluv"
class ContractIssue(NameStrMixin, models.Model): class ContractIssue(NameStrMixin, models.Model):
...@@ -504,8 +504,8 @@ class ContractSigneeRepresentative(RepresentativeMixin, models.Model): ...@@ -504,8 +504,8 @@ class ContractSigneeRepresentative(RepresentativeMixin, models.Model):
class Meta: class Meta:
app_label = "contracts" app_label = "contracts"
verbose_name = "Zástupce druhé smluvní strany" verbose_name = "Zástupce jiné smluvní strany"
verbose_name_plural = "Zástupci druhé smluvní strany" verbose_name_plural = "Zástupci jiných smluvních stran"
class ContractFile(NameStrMixin, models.Model): class ContractFile(NameStrMixin, models.Model):
...@@ -565,7 +565,7 @@ class ContracteeSignature(models.Model): ...@@ -565,7 +565,7 @@ class ContracteeSignature(models.Model):
verbose_name_plural = "Podpisy našich smluvních stran" verbose_name_plural = "Podpisy našich smluvních stran"
def __str__(self) -> str: def __str__(self) -> str:
return f"{self.contractee.name} - {self.date}" return f"{str(self.contractee)} - {self.date}"
class SigneeSignature(models.Model): class SigneeSignature(models.Model):
...@@ -591,10 +591,10 @@ class SigneeSignature(models.Model): ...@@ -591,10 +591,10 @@ class SigneeSignature(models.Model):
app_label = "contracts" app_label = "contracts"
verbose_name = "Podpis jiné smluvní strany" verbose_name = "Podpis jiné smluvní strany"
verbose_name_plural = "Podpisy ostatních smluvních stran" verbose_name_plural = "Podpisy jiných smluvních stran"
def __str__(self) -> str: def __str__(self) -> str:
return f"{self.signee.name} - {self.date}" return f"{str(self.signee)} - {self.date}"
class ContractIntent(NameStrMixin, models.Model): class ContractIntent(NameStrMixin, models.Model):
......
from django_admin_index.models import AppGroup, AppGroupQuerySet
from django.conf import settings
from django.contrib import admin
def get_app_list(self, request):
app_dict = self._build_app_dict(request)
for app_name, object_list in app_dict.items():
if app_name in settings.ADMIN_ORDERING:
app = app_dict[app_name]
app["models"].sort(
key=lambda model: settings.ADMIN_ORDERING[app_name].index(model["object_name"])
)
app_dict[app_name]
yield app
else:
yield app_dict[app_name]
admin.AdminSite.get_app_list = get_app_list
class CustomOrderAppGroupQuerySet(AppGroupQuerySet):
def as_list(self, request, include_remaining=True):
result = super().as_list(request, include_remaining=include_remaining)
for item in result:
if app_label not in settings.ADMIN_ORDERING:
continue
item["models"].sort(
key=lambda model: settings.ADMIN_ORDERING[app_name].index(model["name"])
)
return result
AppGroup.objects = AppGroupQuerySet.as_manager()
...@@ -206,6 +206,19 @@ ADMIN_INDEX_AUTO_CREATE_APP_GROUP = True ...@@ -206,6 +206,19 @@ ADMIN_INDEX_AUTO_CREATE_APP_GROUP = True
ADMIN_INDEX_SHOW_REMAINING_APPS = True ADMIN_INDEX_SHOW_REMAINING_APPS = True
ADMIN_ORDERING = {
"contracts": [
"Contract",
"Signee",
"Contractee",
"ContractType",
"ContractIssue",
"ContractFilingArea",
],
}
## App-specific ## App-specific
DEFAULT_CONTRACTEE_NAME = env.str("DEFAULT_CONTRACTEE_NAME") DEFAULT_CONTRACTEE_NAME = env.str("DEFAULT_CONTRACTEE_NAME")
......
...@@ -70,5 +70,10 @@ ...@@ -70,5 +70,10 @@
border-radius: var(--admin-interface-module-border-radius) !important; border-radius: var(--admin-interface-module-border-radius) !important;
text-decoration: none !important; text-decoration: none !important;
} }
.module caption, .inline-group h2 {
text-transform: none;
}
</style> </style>
{% endblock %} {% endblock %}
...@@ -20,6 +20,8 @@ from django.urls import include, path, re_path ...@@ -20,6 +20,8 @@ from django.urls import include, path, re_path
from django.views.static import serve from django.views.static import serve
from pirates.urls import urlpatterns as pirates_urlpatterns from pirates.urls import urlpatterns as pirates_urlpatterns
import registry.admin
urlpatterns = [ urlpatterns = [
path("", include("contracts.urls")), path("", include("contracts.urls")),
path("", include("users.urls")), path("", include("users.urls")),
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment