14 changed files with 51 additions and 103 deletions
@ -1,83 +0,0 @@ |
|||||||
# -*- coding: utf-8 -*- |
|
||||||
# Generated by Django 1.11.5 on 2017-09-28 18:50 |
|
||||||
from __future__ import unicode_literals |
|
||||||
|
|
||||||
from django.db import migrations, models |
|
||||||
import django.db.models.deletion |
|
||||||
import people.controllers |
|
||||||
import shared.utils.fields |
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration): |
|
||||||
|
|
||||||
initial = True |
|
||||||
|
|
||||||
dependencies = [ |
|
||||||
('contenttypes', '0002_remove_content_type_name'), |
|
||||||
] |
|
||||||
|
|
||||||
operations = [ |
|
||||||
migrations.CreateModel( |
|
||||||
name='GenericParticipationRel', |
|
||||||
fields=[ |
|
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
|
||||||
('object_id', models.PositiveIntegerField()), |
|
||||||
('order_index', models.IntegerField(default=0, verbose_name='Sortierung')), |
|
||||||
('label', models.CharField(blank=True, max_length=2000, null=True, verbose_name='Weitere Angaben')), |
|
||||||
('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType')), |
|
||||||
], |
|
||||||
options={ |
|
||||||
'verbose_name': 'Rolle/Funktion', |
|
||||||
'verbose_name_plural': 'Rollen/Funktionen', |
|
||||||
'ordering': ['role', 'order_index', 'person__sort_name'], |
|
||||||
}, |
|
||||||
), |
|
||||||
migrations.CreateModel( |
|
||||||
name='Person', |
|
||||||
fields=[ |
|
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
|
||||||
('is_group', models.BooleanField(default=False, help_text='Bitte ankreuzen, wenn es sich um eine Gruppe handelt, und unten die Gruppenmitglieder auswählen', verbose_name='Gruppe')), |
|
||||||
('_is_main_person', models.BooleanField(default=False, editable=False, verbose_name='Haupteintrag')), |
|
||||||
('name', models.CharField(max_length=200, unique=True, verbose_name='Name')), |
|
||||||
('slug', shared.utils.fields.AutoSlugField(help_text='Kurzfassung des Namens für die Adresszeile im Browser. Vorzugsweise englisch, keine Umlaute, nur Bindestrich als Sonderzeichen.', max_length=200, verbose_name='URL-Name')), |
|
||||||
('sort_name', models.CharField(blank=True, max_length=200, verbose_name='Name sortierbar')), |
|
||||||
('main_person', models.ForeignKey(blank=True, help_text='Wenn es sich um eine alternative Schreibweise oder ein Pseudonym handelt, hier den Hauptpersoneneintrag auswählen.', null=True, on_delete=django.db.models.deletion.PROTECT, related_name='pseudonym_set', to='people.Person', verbose_name='Haupteintrag')), |
|
||||||
('members', models.ManyToManyField(blank=True, related_name='groups', to='people.Person', verbose_name='Gruppenmitglieder')), |
|
||||||
('polymorphic_ctype', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_people.person_set+', to='contenttypes.ContentType')), |
|
||||||
], |
|
||||||
options={ |
|
||||||
'verbose_name': 'Person', |
|
||||||
'verbose_name_plural': 'Personen', |
|
||||||
'ordering': ['sort_name', 'name'], |
|
||||||
'abstract': False, |
|
||||||
}, |
|
||||||
bases=(people.controllers.PersonController, models.Model), |
|
||||||
), |
|
||||||
migrations.CreateModel( |
|
||||||
name='PersonRole', |
|
||||||
fields=[ |
|
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
|
||||||
('id_text', models.CharField(max_length=20, verbose_name='Bezeichner (intern)')), |
|
||||||
('name_de', models.CharField(max_length=50, verbose_name='Bezeichnung (de)')), |
|
||||||
('name_en', models.CharField(blank=True, max_length=50, null=True, verbose_name='Bezeichnung (en)')), |
|
||||||
('label_de', models.CharField(blank=True, help_text='In der Bibliografie', max_length=200, null=True, verbose_name='Ausgabetext (de)')), |
|
||||||
('label_en', models.CharField(blank=True, max_length=200, null=True, verbose_name='Ausgabetext (en)')), |
|
||||||
('order_index', models.IntegerField(default=0, verbose_name='Sortierung')), |
|
||||||
], |
|
||||||
options={ |
|
||||||
'verbose_name': 'Funktion', |
|
||||||
'verbose_name_plural': 'Funktionen', |
|
||||||
'ordering': ['order_index', 'name_de', 'name_en'], |
|
||||||
}, |
|
||||||
), |
|
||||||
migrations.AddField( |
|
||||||
model_name='genericparticipationrel', |
|
||||||
name='person', |
|
||||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='participations', related_query_name='participations', to='people.Person', verbose_name='Person'), |
|
||||||
), |
|
||||||
migrations.AddField( |
|
||||||
model_name='genericparticipationrel', |
|
||||||
name='role', |
|
||||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='people.PersonRole', verbose_name='Funktion'), |
|
||||||
), |
|
||||||
] |
|
@ -0,0 +1,2 @@ |
|||||||
|
__import__('pkg_resources').declare_namespace(__name__) |
||||||
|
|
@ -0,0 +1,30 @@ |
|||||||
|
from django.core.urlresolvers import reverse |
||||||
|
from django.utils.translation import ugettext_lazy as _ |
||||||
|
|
||||||
|
from shared.utils.translation import get_translated_field |
||||||
|
|
||||||
|
from .controllers import PersonController |
||||||
|
from .models import PseudonymMixin, GroupMixin, BasePerson, PersonRoleBase, GenericParticipationRelBase |
||||||
|
|
||||||
|
|
||||||
|
class Person(PersonController, PseudonymMixin, GroupMixin, BasePerson): |
||||||
|
class Meta(BasePerson.Meta): |
||||||
|
app_label = 'people' |
||||||
|
|
||||||
|
def get_absolute_url(self): |
||||||
|
return reverse('person-detail', kwargs={'slug': self.slug}) |
||||||
|
|
||||||
|
|
||||||
|
class PersonRole(PersonRoleBase): |
||||||
|
class Meta(PersonRoleBase.Meta): |
||||||
|
verbose_name = _("Funktion") |
||||||
|
verbose_name_plural = _("Funktionen") |
||||||
|
ordering = ['order_index', 'name_de', 'name_en'] |
||||||
|
|
||||||
|
def __str__(self): |
||||||
|
return self.name |
||||||
|
|
||||||
|
|
||||||
|
class GenericParticipationRel(GenericParticipationRelBase): |
||||||
|
class Meta(GenericParticipationRelBase.Meta): |
||||||
|
app_label = 'people' |
Loading…
Reference in new issue