Browse Source

Added "shared" prefix.

master
Erik Stein 8 years ago
parent
commit
2c7df796fb
  1. 83
      people/migrations/0001_initial.py
  2. 0
      people/migrations/__init__.py
  3. 13
      setup.py
  4. 2
      shared/__init__.py
  5. 0
      shared/people/__init__.py
  6. 7
      shared/people/admin.py
  7. 0
      shared/people/apps.py
  8. 0
      shared/people/controllers.py
  9. 30
      shared/people/model_examples.py
  10. 19
      shared/people/models.py
  11. 0
      shared/people/templates/people/person_list.html
  12. 0
      shared/people/tests.py
  13. 0
      shared/people/urls.py
  14. 0
      shared/people/views.py

83
people/migrations/0001_initial.py

@ -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
people/migrations/__init__.py

13
setup.py

@ -2,10 +2,16 @@
import os
from io import open
from setuptools import find_packages, setup
def get_version(prefix):
import re
with open(os.path.join(prefix, '__init__.py')) as fd:
metadata = dict(re.findall("__([a-z]+)__ = '([^']+)'", fd.read()))
return metadata['version']
def read(filename):
path = os.path.join(os.path.dirname(__file__), filename)
with open(path, encoding='utf-8') as handle:
@ -13,8 +19,8 @@ def read(filename):
setup(
name='django-people',
version=__import__('people').__version__,
name='django-shared-people',
version=get_version('shared/people'),
description='Person model, mixins and helpers for Django',
long_description=read('README.md'),
author='Erik Stein',
@ -25,6 +31,7 @@ setup(
packages=find_packages(
exclude=['tests', 'testapp']
),
namespace_packages=['shared'],
include_package_data=True,
install_requires=[
# 'Django>=1.9', commented out to make `pip install -U` easier

2
shared/__init__.py

@ -0,0 +1,2 @@
__import__('pkg_resources').declare_namespace(__name__)

0
people/__init__.py → shared/people/__init__.py

7
people/admin.py → shared/people/admin.py

@ -8,8 +8,6 @@ from django.utils.translation import ugettext_lazy as _
from admin_steroids.options import ImproveRawIdFieldsFormTabularInline
from .models import PersonRole, Person, GenericParticipationRel
class PersonRoleAdmin(admin.ModelAdmin):
list_display = ['get_name', 'id_text', 'label_de', 'label_en']
@ -36,7 +34,7 @@ class PersonAdmin(PersonAdminBase):
parameter_name = 'group'
def lookups(self, request, model_admin):
return Person.objects.filter(is_group=True).values_list('slug', 'name')
return model_admin.model.objects.filter(is_group=True).values_list('slug', 'name')
def queryset(self, request, queryset):
if self.value():
@ -83,7 +81,7 @@ class PersonAdmin(PersonAdminBase):
class GenericParticipationInline(ImproveRawIdFieldsFormTabularInline, GenericTabularInline):
model = GenericParticipationRel
model = 'GenericParticipationRel'
verbose_name = _("Teilnehmer/in")
verbose_name_plural = _("Teilnehmer/innen")
fields = ('role', 'person', 'label', 'order_index',)
@ -94,5 +92,6 @@ class GenericParticipationInline(ImproveRawIdFieldsFormTabularInline, GenericTab
extra = 0
# from .models import PersonRole, Person, GenericParticipationRel
# admin.site.register(PersonRole, PersonRoleAdmin)
# admin.site.register(Person, PersonAdmin)

0
people/apps.py → shared/people/apps.py

0
people/controllers.py → shared/people/controllers.py

30
shared/people/model_examples.py

@ -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'

19
people/models.py → shared/people/models.py

@ -5,7 +5,6 @@ from __future__ import unicode_literals
from django.contrib.contenttypes.fields import GenericForeignKey
from django.contrib.contenttypes.models import ContentType
from django.core.urlresolvers import reverse
from django.db import models
from django.utils.encoding import python_2_unicode_compatible
from django.utils.translation import ugettext_lazy as _
@ -82,16 +81,8 @@ class BasePerson(PolymorphicModel):
super(BasePerson, self).save(*args, **kwargs)
class Person(PersonController, PseudonymMixin, GroupMixin, BasePerson):
class Meta(BasePerson.Meta):
pass
def get_absolute_url(self):
return reverse('person-detail', kwargs={'slug': self.slug})
@python_2_unicode_compatible
class PersonRole(models.Model):
class PersonRoleBase(models.Model):
"""
Fixtures, non-deletable:
author
@ -107,6 +98,7 @@ class PersonRole(models.Model):
order_index = models.IntegerField(_("Sortierung"), default=0, blank=False, null=False)
class Meta:
abstract = True
verbose_name = _("Funktion")
verbose_name_plural = _("Funktionen")
ordering = ['order_index', 'name_de', 'name_en']
@ -124,17 +116,18 @@ class PersonRole(models.Model):
@python_2_unicode_compatible
class GenericParticipationRel(models.Model):
class GenericParticipationRelBase(models.Model):
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey('content_type', 'object_id')
person = models.ForeignKey(Person, verbose_name=_("Person"), related_name='participations', related_query_name='participations')
role = models.ForeignKey(PersonRole, verbose_name=_("Funktion"))
person = models.ForeignKey('Person', verbose_name=_("Person"), related_name='participations', related_query_name='participations')
role = models.ForeignKey('PersonRole', verbose_name=_("Funktion"))
order_index = models.IntegerField(_("Sortierung"), default=0, blank=False, null=False)
label = models.CharField(_("Weitere Angaben"), null=True, blank=True, max_length=2000)
# TODO Add label_en
class Meta:
abstract = True
verbose_name = _("Rolle/Funktion")
verbose_name_plural = _("Rollen/Funktionen")
ordering = ['role', 'order_index', 'person__sort_name']

0
people/templates/people/person_list.html → shared/people/templates/people/person_list.html

0
people/tests.py → shared/people/tests.py

0
people/urls.py → shared/people/urls.py

0
people/views.py → shared/people/views.py

Loading…
Cancel
Save