WIP Quellen/Admin

This commit is contained in:
2026-01-25 18:55:04 +01:00
parent 92ebd062b4
commit e48f9174c2
3 changed files with 60 additions and 7 deletions

View File

@@ -1,28 +1,54 @@
from django.contrib import admin
from .models import Person, Identity, AuthorID, Contact, Medium
from taggit_helpers.admin import TaggitListFilter, TaggitTabularInline
# TODO: Links zu Suchseiten mit Vorbelegungen
class IdentityTabularInline(admin.TabularInline):
model = Identity
#ordering_field = ['slideshow', 'weight']
ordering_field_hide_input = False
#fields = ['weight', 'display_title', 'target', 'image', 'overlay_image']
# exclude = ['display_content', 'overlay_tilt', 'overlay_class', 'activated']
@admin.register(Person)
class PersonAdmin(admin.ModelAdmin):
list_display = ['name',]
list_display = ['name', 'full_name', 'birth_year']
search_fields = ('name', 'full_name', 'name_native', 'birth_name')
inlines = [
IdentityTabularInline
]
@admin.register(Identity)
class IdentityAdmin(admin.ModelAdmin):
list_display = ['person','author_id','alias']
list_display = ['person', 'author_id', 'alias', 'organization']
search_fields = ('alias', 'organization')
list_filter = ['person', 'organization', TaggitListFilter]
exclude = ('tags',)
inlines = [
TaggitTabularInline,
]
@admin.register(AuthorID)
class AuthorIDAdmin(admin.ModelAdmin):
list_display = ['person','key','value']
search_fields = ('value',)
@admin.register(Contact)
class ContactAdmin(admin.ModelAdmin):
date_hierarchy = 'last_try'
list_display = ['reference',]
list_display = ['reference', 'name',]
search_fields = ('name', 'address', 'remarks')
#prepopulated_fields = {'user': ('',)}
@admin.register(Medium)
class MediumAdmin(admin.ModelAdmin):
list_display = ['contact','key','value']
search_fields = ('value',)

View File

@@ -16,6 +16,11 @@ class Person(models.Model):
max_length=255, blank=True,
help_text='Name mit zusätzlichen Vornamen, Titeln usw.',
)
name_native = models.CharField(
verbose_name='Name in Originalschreibweise',
max_length=255, blank=True,
help_text='Name in nichtlateinischer Schrift',
)
birth_name = models.CharField(
verbose_name='Geburtsname',
max_length=127, blank=True,
@@ -41,6 +46,7 @@ class Person(models.Model):
blank=True,
#help_text='',
)
# TODO: URLs wie Tags?
class Meta:
verbose_name = 'Person'
@@ -69,7 +75,17 @@ class Identity(models.Model):
blank=True,
help_text='Fahrtenname, Künstlername o.ä.; Spitznamen nur, wenn sie mehr sind als eine Vornamensvariante.',
)
tags = TaggableManager()
organization = models.CharField(
verbose_name='Organisation',
max_length=127,
blank=True,
help_text='Bund (mit Stamm/Orden), Band o.ä. wie am Lied anzuzeigen bitte zusätzlich taggen!',
)
tags = TaggableManager(
blank=True,
help_text='Kommaseparierte Stichwörter zu dieser Identität, z.B. "Bund:DPB,Band:Schlagsaite"',
verbose_name='Stichwörter'
)
class Meta:
verbose_name = 'Identität'
@@ -87,6 +103,7 @@ class AuthorID(models.Model):
blank=False,
on_delete=models.CASCADE,
)
# TODO: Medien in eigene Tabelle ausgliedern
class IDs(models.TextChoices):
DISCOGS = "DISCOGS", 'Discogs'
GND = "GND", 'DNB GND'
@@ -121,6 +138,13 @@ class Contact(models.Model):
reference = models.ForeignKey(ContentType,
on_delete = models.CASCADE,
help_text = 'Person oder Verlag'
# TODO: Das stimmt so nicht, ID des Objekts fehlt
)
name = models.CharField(
verbose_name = 'Kontaktperson',
blank=True,
max_length=127,
help_text = 'Name der Kontaktperson, falls nicht mit der Person identisch'
)
address = models.TextField(
verbose_name = 'Adresse',
@@ -135,7 +159,7 @@ class Contact(models.Model):
verbose_name = 'User',
blank=True,null=True,
on_delete = models.SET_NULL,
help_text = 'Kontakt durch Projektmitarbeiter*in'
help_text = 'Kontakt durch bzw. persönlich bekannt mit Projektmitarbeiter*in'
)
success = models.BooleanField(
verbose_name = 'Kontakt erfolgreich?',
@@ -161,9 +185,11 @@ class Medium(models.Model):
blank=False,
on_delete=models.CASCADE,
)
# TODO: Medien in eigene Tabelle ausgliedern
class IDs(models.TextChoices):
Email = "Email", 'E-Mail'
Phone = "Phone", 'Telefon'
Web = "Web", 'Homepage'
Signal = "Signal", 'Signal-ID'
Fedi = "Fedi", 'Fediverse-Handle'
Matrix = "Matrix", 'Matrix-ID'
@@ -182,8 +208,8 @@ class Medium(models.Model):
)
class Meta:
verbose_name = 'Medium'
verbose_name_plural = 'Medien'
verbose_name = 'Kontaktmedium'
verbose_name_plural = 'Kontaktmedien'
ordering = ['contact','key']
list_display = ['contact', 'key', 'value']

View File

@@ -3,3 +3,4 @@ Pillow
django-dotenv
django-taggit
django-taggit-helpers