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 import os
from io import open from io import open
from setuptools import find_packages, setup 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): def read(filename):
path = os.path.join(os.path.dirname(__file__), filename) path = os.path.join(os.path.dirname(__file__), filename)
with open(path, encoding='utf-8') as handle: with open(path, encoding='utf-8') as handle:
@ -13,8 +19,8 @@ def read(filename):
setup( setup(
name='django-people', name='django-shared-people',
version=__import__('people').__version__, version=get_version('shared/people'),
description='Person model, mixins and helpers for Django', description='Person model, mixins and helpers for Django',
long_description=read('README.md'), long_description=read('README.md'),
author='Erik Stein', author='Erik Stein',
@ -25,6 +31,7 @@ setup(
packages=find_packages( packages=find_packages(
exclude=['tests', 'testapp'] exclude=['tests', 'testapp']
), ),
namespace_packages=['shared'],
include_package_data=True, include_package_data=True,
install_requires=[ install_requires=[
# 'Django>=1.9', commented out to make `pip install -U` easier # '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 admin_steroids.options import ImproveRawIdFieldsFormTabularInline
from .models import PersonRole, Person, GenericParticipationRel
class PersonRoleAdmin(admin.ModelAdmin): class PersonRoleAdmin(admin.ModelAdmin):
list_display = ['get_name', 'id_text', 'label_de', 'label_en'] list_display = ['get_name', 'id_text', 'label_de', 'label_en']
@ -36,7 +34,7 @@ class PersonAdmin(PersonAdminBase):
parameter_name = 'group' parameter_name = 'group'
def lookups(self, request, model_admin): 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): def queryset(self, request, queryset):
if self.value(): if self.value():
@ -83,7 +81,7 @@ class PersonAdmin(PersonAdminBase):
class GenericParticipationInline(ImproveRawIdFieldsFormTabularInline, GenericTabularInline): class GenericParticipationInline(ImproveRawIdFieldsFormTabularInline, GenericTabularInline):
model = GenericParticipationRel model = 'GenericParticipationRel'
verbose_name = _("Teilnehmer/in") verbose_name = _("Teilnehmer/in")
verbose_name_plural = _("Teilnehmer/innen") verbose_name_plural = _("Teilnehmer/innen")
fields = ('role', 'person', 'label', 'order_index',) fields = ('role', 'person', 'label', 'order_index',)
@ -94,5 +92,6 @@ class GenericParticipationInline(ImproveRawIdFieldsFormTabularInline, GenericTab
extra = 0 extra = 0
# from .models import PersonRole, Person, GenericParticipationRel
# admin.site.register(PersonRole, PersonRoleAdmin) # admin.site.register(PersonRole, PersonRoleAdmin)
# admin.site.register(Person, PersonAdmin) # 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.fields import GenericForeignKey
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
from django.core.urlresolvers import reverse
from django.db import models from django.db import models
from django.utils.encoding import python_2_unicode_compatible from django.utils.encoding import python_2_unicode_compatible
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
@ -82,16 +81,8 @@ class BasePerson(PolymorphicModel):
super(BasePerson, self).save(*args, **kwargs) 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 @python_2_unicode_compatible
class PersonRole(models.Model): class PersonRoleBase(models.Model):
""" """
Fixtures, non-deletable: Fixtures, non-deletable:
author author
@ -107,6 +98,7 @@ class PersonRole(models.Model):
order_index = models.IntegerField(_("Sortierung"), default=0, blank=False, null=False) order_index = models.IntegerField(_("Sortierung"), default=0, blank=False, null=False)
class Meta: class Meta:
abstract = True
verbose_name = _("Funktion") verbose_name = _("Funktion")
verbose_name_plural = _("Funktionen") verbose_name_plural = _("Funktionen")
ordering = ['order_index', 'name_de', 'name_en'] ordering = ['order_index', 'name_de', 'name_en']
@ -124,17 +116,18 @@ class PersonRole(models.Model):
@python_2_unicode_compatible @python_2_unicode_compatible
class GenericParticipationRel(models.Model): class GenericParticipationRelBase(models.Model):
content_type = models.ForeignKey(ContentType) content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField() object_id = models.PositiveIntegerField()
content_object = GenericForeignKey('content_type', 'object_id') content_object = GenericForeignKey('content_type', 'object_id')
person = models.ForeignKey(Person, verbose_name=_("Person"), related_name='participations', related_query_name='participations') person = models.ForeignKey('Person', verbose_name=_("Person"), related_name='participations', related_query_name='participations')
role = models.ForeignKey(PersonRole, verbose_name=_("Funktion")) role = models.ForeignKey('PersonRole', verbose_name=_("Funktion"))
order_index = models.IntegerField(_("Sortierung"), default=0, blank=False, null=False) order_index = models.IntegerField(_("Sortierung"), default=0, blank=False, null=False)
label = models.CharField(_("Weitere Angaben"), null=True, blank=True, max_length=2000) label = models.CharField(_("Weitere Angaben"), null=True, blank=True, max_length=2000)
# TODO Add label_en # TODO Add label_en
class Meta: class Meta:
abstract = True
verbose_name = _("Rolle/Funktion") verbose_name = _("Rolle/Funktion")
verbose_name_plural = _("Rollen/Funktionen") verbose_name_plural = _("Rollen/Funktionen")
ordering = ['role', 'order_index', 'person__sort_name'] 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