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 django.contrib import admin
from .models import Person, Identity, AuthorID, Contact, Medium 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) @admin.register(Person)
class PersonAdmin(admin.ModelAdmin): 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) @admin.register(Identity)
class IdentityAdmin(admin.ModelAdmin): 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) @admin.register(AuthorID)
class AuthorIDAdmin(admin.ModelAdmin): class AuthorIDAdmin(admin.ModelAdmin):
list_display = ['person','key','value'] list_display = ['person','key','value']
search_fields = ('value',)
@admin.register(Contact) @admin.register(Contact)
class ContactAdmin(admin.ModelAdmin): class ContactAdmin(admin.ModelAdmin):
date_hierarchy = 'last_try' date_hierarchy = 'last_try'
list_display = ['reference',] list_display = ['reference', 'name',]
search_fields = ('name', 'address', 'remarks')
#prepopulated_fields = {'user': ('',)}
@admin.register(Medium) @admin.register(Medium)
class MediumAdmin(admin.ModelAdmin): class MediumAdmin(admin.ModelAdmin):
list_display = ['contact','key','value'] list_display = ['contact','key','value']
search_fields = ('value',)

View File

@@ -16,6 +16,11 @@ class Person(models.Model):
max_length=255, blank=True, max_length=255, blank=True,
help_text='Name mit zusätzlichen Vornamen, Titeln usw.', 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( birth_name = models.CharField(
verbose_name='Geburtsname', verbose_name='Geburtsname',
max_length=127, blank=True, max_length=127, blank=True,
@@ -41,6 +46,7 @@ class Person(models.Model):
blank=True, blank=True,
#help_text='', #help_text='',
) )
# TODO: URLs wie Tags?
class Meta: class Meta:
verbose_name = 'Person' verbose_name = 'Person'
@@ -69,7 +75,17 @@ class Identity(models.Model):
blank=True, blank=True,
help_text='Fahrtenname, Künstlername o.ä.; Spitznamen nur, wenn sie mehr sind als eine Vornamensvariante.', 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: class Meta:
verbose_name = 'Identität' verbose_name = 'Identität'
@@ -87,6 +103,7 @@ class AuthorID(models.Model):
blank=False, blank=False,
on_delete=models.CASCADE, on_delete=models.CASCADE,
) )
# TODO: Medien in eigene Tabelle ausgliedern
class IDs(models.TextChoices): class IDs(models.TextChoices):
DISCOGS = "DISCOGS", 'Discogs' DISCOGS = "DISCOGS", 'Discogs'
GND = "GND", 'DNB GND' GND = "GND", 'DNB GND'
@@ -121,6 +138,13 @@ class Contact(models.Model):
reference = models.ForeignKey(ContentType, reference = models.ForeignKey(ContentType,
on_delete = models.CASCADE, on_delete = models.CASCADE,
help_text = 'Person oder Verlag' 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( address = models.TextField(
verbose_name = 'Adresse', verbose_name = 'Adresse',
@@ -135,7 +159,7 @@ class Contact(models.Model):
verbose_name = 'User', verbose_name = 'User',
blank=True,null=True, blank=True,null=True,
on_delete = models.SET_NULL, 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( success = models.BooleanField(
verbose_name = 'Kontakt erfolgreich?', verbose_name = 'Kontakt erfolgreich?',
@@ -161,9 +185,11 @@ class Medium(models.Model):
blank=False, blank=False,
on_delete=models.CASCADE, on_delete=models.CASCADE,
) )
# TODO: Medien in eigene Tabelle ausgliedern
class IDs(models.TextChoices): class IDs(models.TextChoices):
Email = "Email", 'E-Mail' Email = "Email", 'E-Mail'
Phone = "Phone", 'Telefon' Phone = "Phone", 'Telefon'
Web = "Web", 'Homepage'
Signal = "Signal", 'Signal-ID' Signal = "Signal", 'Signal-ID'
Fedi = "Fedi", 'Fediverse-Handle' Fedi = "Fedi", 'Fediverse-Handle'
Matrix = "Matrix", 'Matrix-ID' Matrix = "Matrix", 'Matrix-ID'
@@ -182,8 +208,8 @@ class Medium(models.Model):
) )
class Meta: class Meta:
verbose_name = 'Medium' verbose_name = 'Kontaktmedium'
verbose_name_plural = 'Medien' verbose_name_plural = 'Kontaktmedien'
ordering = ['contact','key'] ordering = ['contact','key']
list_display = ['contact', 'key', 'value'] list_display = ['contact', 'key', 'value']

View File

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