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 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']
|
||||
Reference in New Issue
Block a user