WIP Quellen/Admin
This commit is contained in:
@@ -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',)
|
||||
|
||||
@@ -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']
|
||||
|
||||
@@ -3,3 +3,4 @@ Pillow
|
||||
|
||||
django-dotenv
|
||||
django-taggit
|
||||
django-taggit-helpers
|
||||
|
||||
Reference in New Issue
Block a user