Compare commits

..

2 Commits

8 changed files with 3 additions and 60 deletions

2
.gitignore vendored
View File

@@ -8,6 +8,7 @@ include/
keys/ keys/
.venv/ .venv/
.idea/ .idea/
*.kate-swp *.kate-swp
node_modules/ node_modules/
package-lock.json package-lock.json
@@ -15,4 +16,3 @@ package.json
# Diagram cache directory # Diagram cache directory
media/diagram_cache/ media/diagram_cache/
.env .env
data/db.sqlite3

View File

@@ -51,7 +51,6 @@ INSTALLED_APPS = [
'mptt', 'mptt',
'pages', 'pages',
'nested_admin', 'nested_admin',
'revproxy.apps.RevProxyConfig',
] ]
MIDDLEWARE = [ MIDDLEWARE = [

View File

@@ -18,7 +18,6 @@ from django.contrib import admin
from django.urls import include, path, re_path from django.urls import include, path, re_path
from django.conf import settings from django.conf import settings
from django.conf.urls.static import static from django.conf.urls.static import static
from diagramm_proxy.views import DiagrammProxyView
import dokumente.views import dokumente.views
import pages.views import pages.views
import referenzen.views import referenzen.views
@@ -33,7 +32,6 @@ urlpatterns = [
path('stichworte/', include("stichworte.urls")), path('stichworte/', include("stichworte.urls")),
path('referenzen/', referenzen.views.tree, name="referenz_tree"), path('referenzen/', referenzen.views.tree, name="referenz_tree"),
path('referenzen/<str:refid>/', referenzen.views.detail, name="referenz_detail"), path('referenzen/<str:refid>/', referenzen.views.detail, name="referenz_detail"),
re_path(r'^diagramm/(?P<path>.*)$', DiagrammProxyView.as_view()),
] ]
# Serve static files # Serve static files

View File

@@ -25,7 +25,7 @@ spec:
mountPath: /data mountPath: /data
containers: containers:
- name: web - name: web
image: git.baumann.gr/adebaumann/vui:0.943 image: git.baumann.gr/adebaumann/vui:0.945
imagePullPolicy: Always imagePullPolicy: Always
ports: ports:
- containerPort: 8000 - containerPort: 8000

View File

@@ -1 +0,0 @@
# Diagram proxy module

View File

@@ -1,4 +0,0 @@
from revproxy.views import ProxyView
class DiagrammProxyView(ProxyView):
upstream = "http://svckroki:8000/"

View File

@@ -2,7 +2,6 @@ from django.contrib import admin
#from nested_inline.admin import NestedStackedInline, NestedModelAdmin #from nested_inline.admin import NestedStackedInline, NestedModelAdmin
from nested_admin import NestedStackedInline, NestedModelAdmin, NestedTabularInline from nested_admin import NestedStackedInline, NestedModelAdmin, NestedTabularInline
from django import forms from django import forms
from django.utils.html import format_html
from mptt.forms import TreeNodeMultipleChoiceField from mptt.forms import TreeNodeMultipleChoiceField
from mptt.admin import DraggableMPTTAdmin from mptt.admin import DraggableMPTTAdmin
from adminsortable2.admin import SortableInlineAdminMixin, SortableAdminBase from adminsortable2.admin import SortableInlineAdminMixin, SortableAdminBase
@@ -133,57 +132,9 @@ class StichworterklaerungInline(NestedTabularInline):
@admin.register(Stichwort) @admin.register(Stichwort)
class StichwortAdmin(NestedModelAdmin): class StichwortAdmin(NestedModelAdmin):
list_display = ('stichwort', 'vorgaben_count')
search_fields = ('stichwort',) search_fields = ('stichwort',)
ordering=('stichwort',) ordering=('stichwort',)
inlines=[StichworterklaerungInline] inlines=[StichworterklaerungInline]
readonly_fields = ('vorgaben_list',)
fieldsets = (
(None, {
'fields': ('stichwort', 'vorgaben_list')
}),
)
def vorgaben_count(self, obj):
"""Count the number of Vorgaben that have this Stichwort"""
count = obj.vorgabe_set.count()
return f"{count} Vorgabe{'n' if count != 1 else ''}"
vorgaben_count.short_description = "Anzahl Vorgaben"
def vorgaben_list(self, obj):
"""Display list of Vorgaben that use this Stichwort"""
vorgaben = obj.vorgabe_set.select_related('dokument', 'thema').order_by('dokument__nummer', 'nummer')
vorgaben_list = list(vorgaben) # Evaluate queryset once
count = len(vorgaben_list)
if count == 0:
return format_html("<em>Keine Vorgaben gefunden</em><p><strong>Gesamt: 0 Vorgaben</strong></p>")
html = "<div style='max-height: 300px; overflow-y: auto;'>"
html += "<table style='width: 100%; border-collapse: collapse;'>"
html += "<thead><tr style='background-color: #f5f5f5;'>"
html += "<th style='padding: 8px; border: 1px solid #ddd; text-align: left;'>Vorgabe</th>"
html += "<th style='padding: 8px; border: 1px solid #ddd; text-align: left;'>Titel</th>"
html += "<th style='padding: 8px; border: 1px solid #ddd; text-align: left;'>Dokument</th>"
html += "</tr></thead>"
html += "<tbody>"
for vorgabe in vorgaben_list:
html += "<tr>"
html += f"<td style='padding: 6px; border: 1px solid #ddd;'>{vorgabe.Vorgabennummer()}</td>"
html += f"<td style='padding: 6px; border: 1px solid #ddd;'>{vorgabe.titel}</td>"
html += f"<td style='padding: 6px; border: 1px solid #ddd;'>{vorgabe.dokument.nummer} {vorgabe.dokument.name}</td>"
html += "</tr>"
html += "</tbody></table>"
html += f"</div><p><strong>Gesamt: {count} Vorgabe{'n' if count != 1 else ''}</strong></p>"
return format_html(html)
vorgaben_list.short_description = "Zugeordnete Vorgaben"
def get_queryset(self, request):
"""Optimize queryset with related data"""
return super().get_queryset(request).prefetch_related('vorgabe_set')
@admin.register(Person) @admin.register(Person)
class PersonAdmin(admin.ModelAdmin): class PersonAdmin(admin.ModelAdmin):

View File

@@ -31,6 +31,6 @@
<div class="flex-fill">{% block content %}Main Content{% endblock %}</div> <div class="flex-fill">{% block content %}Main Content{% endblock %}</div>
<div class="col-md-2">{% block sidebar_right %}{% endblock %}</div> <div class="col-md-2">{% block sidebar_right %}{% endblock %}</div>
</div> </div>
<div>VorgabenUI v0.943</div> <div>VorgabenUI v0.945</div>
</body> </body>
</html> </html>