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 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 django.contrib.contenttypes.fields import GenericRelation
class Person(models.Model):
@@ -135,121 +133,3 @@ class AuthorID(models.Model):
ordering = ['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']