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