Modelle aufgeteilt
Das wurde mir zu unübersichtlich…
This commit is contained in:
@@ -0,0 +1,2 @@
|
|||||||
|
from .person import *
|
||||||
|
from .contact import *
|
||||||
@@ -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']
|
|
||||||
Reference in New Issue
Block a user