Modelle aufgeteilt

Das wurde mir zu unübersichtlich…
This commit is contained in:
2026-05-02 08:51:11 +02:00
committed by Hraban
parent 4dc619c07c
commit 1f36f279ce
3 changed files with 126 additions and 121 deletions
+2
View File
@@ -0,0 +1,2 @@
from .person import *
from .contact import *
+123
View File
@@ -0,0 +1,123 @@
from django.db import models
from taggit.managers import TaggableManager
from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation
from django.contrib.contenttypes.models import ContentType
from django.contrib.auth.models import User
from .person import Person
class AuthorURL(models.Model):
person = models.ForeignKey(Person,
blank=False,
on_delete=models.CASCADE,
)
name = models.CharField(
verbose_name='Art',
max_length=15,
blank=False,
default='Homepage',
help_text='z.B. Wikipedia-Eintrag'
)
url = models.URLField(
verbose_name='URL',
blank=False,
help_text='Web-Adresse',
)
class Meta:
verbose_name = 'Autor-Website'
verbose_name_plural = 'Autor-Webseiten'
ordering = ['person', 'name',]
list_display = ['person', 'name', 'url']
class Contact(models.Model):
content_type = models.ForeignKey(ContentType,
on_delete = models.CASCADE,
help_text = 'Person oder Verlag',
default = Person,
blank=False,null=False,
)
object_id = models.PositiveBigIntegerField(
default=1,
blank=False,null=False,
)
content_object = GenericForeignKey("content_type", "object_id")
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',
blank=True,
help_text = 'Postadresse',
)
last_try = models.DateField(
verbose_name = 'letzter Kontaktversuch',
blank=True,null=True,
)
user = models.ForeignKey(User,
verbose_name = 'User',
blank=True,null=True,
on_delete = models.SET_NULL,
help_text = 'Kontakt durch bzw. persönlich bekannt mit Projektmitarbeiter*in'
)
success = models.BooleanField(
verbose_name = 'Kontakt erfolgreich?',
blank=True,null=True,default=None,
help_text = 'War der Kontaktversuch erfolgreich?'
)
remarks = models.TextField(
verbose_name='Anmerkungen',
blank=True,
#help_text='',
)
class Meta:
verbose_name = 'Kontakt'
verbose_name_plural = 'Kontakte'
#ordering = ['content_object', 'last_try']
indexes = [
models.Index(fields=["content_type", "object_id"]),
]
def __str__(self):
return str(self.content_object)
list_display = ['content_object', 'name', 'last_try', 'user', 'success']
class Medium(models.Model):
contact = models.ForeignKey(Contact,
blank=False,
on_delete=models.CASCADE,
)
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'
XMPP = "XMPP", 'XMPP-ID'
key = models.CharField(
verbose_name='Art',
max_length=15,
choices=IDs,
default=IDs.Email,
)
value = models.CharField(
verbose_name='Wert',
max_length=127,
blank=False,
help_text='Adresse bzw. Handle',
)
class Meta:
verbose_name = 'Kontaktmedium'
verbose_name_plural = 'Kontaktmedien'
ordering = ['contact','key']
list_display = ['contact', 'key', 'value']
@@ -1,8 +1,6 @@
from django.db import models from django.db import models
from taggit.managers import TaggableManager from taggit.managers import TaggableManager
from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation from django.contrib.contenttypes.fields import GenericRelation
from django.contrib.contenttypes.models import ContentType
from django.contrib.auth.models import User
class Person(models.Model): class Person(models.Model):
@@ -135,121 +133,3 @@ class AuthorID(models.Model):
ordering = ['person', 'key', 'value'] ordering = ['person', 'key', 'value']
list_display = ['person', 'key', 'value'] list_display = ['person', 'key', 'value']
class AuthorURL(models.Model):
person = models.ForeignKey(Person,
blank=False,
on_delete=models.CASCADE,
)
name = models.CharField(
verbose_name='Art',
max_length=15,
blank=False,
default='Homepage',
help_text='z.B. Wikipedia-Eintrag'
)
url = models.URLField(
verbose_name='URL',
blank=False,
help_text='Web-Adresse',
)
class Meta:
verbose_name = 'Autor-Website'
verbose_name_plural = 'Autor-Webseiten'
ordering = ['person', 'name',]
list_display = ['person', 'name', 'url']
class Contact(models.Model):
content_type = models.ForeignKey(ContentType,
on_delete = models.CASCADE,
help_text = 'Person oder Verlag',
default = Person,
blank=False,null=False,
)
object_id = models.PositiveBigIntegerField(
default=1,
blank=False,null=False,
)
content_object = GenericForeignKey("content_type", "object_id")
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',
blank=True,
help_text = 'Postadresse',
)
last_try = models.DateField(
verbose_name = 'letzter Kontaktversuch',
blank=True,null=True,
)
user = models.ForeignKey(User,
verbose_name = 'User',
blank=True,null=True,
on_delete = models.SET_NULL,
help_text = 'Kontakt durch bzw. persönlich bekannt mit Projektmitarbeiter*in'
)
success = models.BooleanField(
verbose_name = 'Kontakt erfolgreich?',
blank=True,null=True,default=None,
help_text = 'War der Kontaktversuch erfolgreich?'
)
remarks = models.TextField(
verbose_name='Anmerkungen',
blank=True,
#help_text='',
)
class Meta:
verbose_name = 'Kontakt'
verbose_name_plural = 'Kontakte'
#ordering = ['content_object', 'last_try']
indexes = [
models.Index(fields=["content_type", "object_id"]),
]
def __str__(self):
return str(self.content_object)
list_display = ['content_object', 'name', 'last_try', 'user', 'success']
class Medium(models.Model):
contact = models.ForeignKey(Contact,
blank=False,
on_delete=models.CASCADE,
)
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'
XMPP = "XMPP", 'XMPP-ID'
key = models.CharField(
verbose_name='Art',
max_length=15,
choices=IDs,
default=IDs.Email,
)
value = models.CharField(
verbose_name='Wert',
max_length=127,
blank=False,
help_text='Adresse bzw. Handle',
)
class Meta:
verbose_name = 'Kontaktmedium'
verbose_name_plural = 'Kontaktmedien'
ordering = ['contact','key']
list_display = ['contact', 'key', 'value']