Compare commits
3 Commits
ed5953fe94
...
5968ae69d1
| Author | SHA1 | Date |
|---|---|---|
|
|
5968ae69d1 | 9 months ago |
|
|
31b8d83576 | 9 months ago |
|
|
667c3e1446 | 9 months ago |
@ -1,39 +1,95 @@
|
|||||||
|
from django import forms
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
import main.models as MainDB
|
import main.models as MainDB
|
||||||
from datetime import date, datetime
|
from datetime import date, datetime
|
||||||
|
from django.utils.html import format_html
|
||||||
|
from import_export import resources
|
||||||
|
from import_export.admin import ExportMixin, ImportMixin, ImportExportModelAdmin
|
||||||
|
|
||||||
|
|
||||||
|
class contributorsResource(resources.ModelResource):
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = MainDB.contributors
|
||||||
|
|
||||||
# Register your models here.
|
# Register your models here.
|
||||||
@admin.register(MainDB.contributors)
|
@admin.register(MainDB.contributors)
|
||||||
class MainDB_contributorsAdmin(admin.ModelAdmin):
|
# class DeinModellAdmin(ImportExportModelAdmin):
|
||||||
|
# pass # Damit hast du Import/Export-Funktionalität im Django Admin
|
||||||
|
class MainDB_contributorsAdmin(ExportMixin, ImportMixin, admin.ModelAdmin):
|
||||||
|
|
||||||
list_display = ('full_name', 'da_approval', 'teamleader', 'second_teamleader', 'gender', 'birthday_year', 'get_congregation', 'pioneer', 'get_deparment', 'mobilnumber', 'email')
|
resource_class = contributorsResource
|
||||||
|
|
||||||
|
list_display = ('full_name', 'actual', 'da_approval', 'leader', 'tage_anzeige', 'gender', 'birthday_year', 'get_congregation', 'pioneer', 'get_deparment', 'mobilnumber', 'email')
|
||||||
|
|
||||||
list_filter = ('gender', 'roles', 'deparment', 'da_approval')
|
list_filter = ('gender', 'roles', 'deparment', 'da_approval')
|
||||||
|
|
||||||
search_fields = ('name', 'firstname', 'congregation__title', 'deparment__title', 'mobilnumber', 'email')
|
search_fields = ('name', 'firstname', 'congregation__title', 'deparment__title', 'mobilnumber', 'email')
|
||||||
|
|
||||||
def get_congregation(self, obj):
|
|
||||||
# Gebe eine durch Komma getrennte Liste der Namen der contributors zurück
|
|
||||||
return ", ".join([str(congregation) for congregation in obj.congregation.all()])
|
|
||||||
get_congregation.short_description = 'Versammlung' # Optional: Benennung der Spalte
|
|
||||||
|
|
||||||
|
def get_congregation(self, obj):
|
||||||
|
return obj.congregation
|
||||||
|
get_congregation.short_description = 'Versammlung'
|
||||||
|
get_congregation.admin_order_field = 'congregation__title'
|
||||||
|
|
||||||
def get_deparment(self, obj):
|
def get_deparment(self, obj):
|
||||||
# Gebe eine durch Komma getrennte Liste der Namen der contributors zurück
|
# Gebe eine durch Komma getrennte Liste der Namen der contributors zurück
|
||||||
return ", ".join([str(deparment) for deparment in obj.deparment.all()])
|
return ", ".join([str(deparment) for deparment in obj.deparment.all()])
|
||||||
get_deparment.short_description = 'Abteilung' # Optional: Benennung der Spalte
|
get_deparment.short_description = 'Abteilung' # Optional: Benennung der Spalte
|
||||||
|
|
||||||
# Methode, um den vollständigen Namen zu kombinieren
|
|
||||||
def full_name(self, obj):
|
|
||||||
return f"{obj.name}, {obj.firstname}"
|
|
||||||
full_name.short_description = 'Name' # Spaltenüberschrift im Admin ändern
|
|
||||||
|
|
||||||
# Methode, um nur das Jahr des Birthdays anzuzeigen
|
# Methode, um nur das Jahr des Birthdays anzuzeigen
|
||||||
def birthday_year(self, obj):
|
def birthday_year(self, obj):
|
||||||
year = obj.birthday.year if obj.birthday else None
|
year = obj.birthday.year if obj.birthday != None else 0
|
||||||
return int(datetime.strftime(date.today(), "%Y")) - year
|
return int(datetime.strftime(date.today(), "%Y")) - year
|
||||||
birthday_year.short_description = 'Alter'
|
birthday_year.short_description = 'Alter'
|
||||||
|
|
||||||
|
# Teamleiter ansicht
|
||||||
|
def leader(self, obj):
|
||||||
|
if obj.teamleader:
|
||||||
|
color = "green"
|
||||||
|
elif not obj.teamleader and obj.second_teamleader:
|
||||||
|
color = "gold"
|
||||||
|
else:
|
||||||
|
color = "gray"
|
||||||
|
|
||||||
|
status = f'<span style="color: {color}; font-size: 16px;">●</span>'
|
||||||
|
return format_html(status)
|
||||||
|
|
||||||
|
# Verfügbarkeit anzeigen
|
||||||
|
def tage_anzeige(self, obj):
|
||||||
|
""" Kompakte Anzeige mit 2er-Gruppen in farbigen Punkten """
|
||||||
|
tage_pairs = [
|
||||||
|
("MiV", "MiN"),
|
||||||
|
("DoV", "DoN"),
|
||||||
|
("FrV", "FrN"),
|
||||||
|
("SaV", "SaN"),
|
||||||
|
("SoV", "SoN"),
|
||||||
|
("Abbau", None) # Extra2 hat keinen Partner, wird einzeln bewertet
|
||||||
|
]
|
||||||
|
|
||||||
|
symbols = []
|
||||||
|
for tag1, tag2 in tage_pairs:
|
||||||
|
active1 = obj.tage & obj.TAGE[tag1]
|
||||||
|
active2 = obj.TAGE.get(tag2, 0) and obj.tage & obj.TAGE[tag2] if tag2 else None # Sicherstellen, dass None nicht bewertet wird
|
||||||
|
|
||||||
|
if tag2 is None: # Falls nur ein Eintrag in der Gruppe existiert
|
||||||
|
color = "green" if active1 else "red" # Entweder Grün oder Rot
|
||||||
|
else:
|
||||||
|
if active1 and active2:
|
||||||
|
color = "green" # 🟢 beide aktiv
|
||||||
|
elif active1 or active2:
|
||||||
|
color = "gold" # 🟡 nur einer aktiv
|
||||||
|
else:
|
||||||
|
color = "red" # 🔴 beide inaktiv
|
||||||
|
|
||||||
|
symbols.append(f'<span style="color: {color}; font-size: 16px;">●</span>')
|
||||||
|
|
||||||
|
return format_html(" ".join(symbols))
|
||||||
|
|
||||||
|
|
||||||
admin.site.register(MainDB.department)
|
admin.site.register(MainDB.department)
|
||||||
admin.site.register(MainDB.congregation)
|
|
||||||
|
@admin.register(MainDB.congregation)
|
||||||
|
class MainDB_congregationAdmin(admin.ModelAdmin):
|
||||||
|
list_display = ('id', 'title')
|
||||||
|
|
||||||
admin.site.register(MainDB.role)
|
admin.site.register(MainDB.role)
|
||||||
Loading…
Reference in new issue