--- /dev/null
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.11 on 2017-03-13 11:24
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+import mezzanine.core.fields
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('organization-network', '0089_auto_20170303_1637'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='OrganizationContact',
+ fields=[
+ ('person_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='organization-network.Person')),
+ ],
+ options={
+ 'verbose_name': 'Organization contact',
+ 'verbose_name_plural': 'Organization contacts',
+ },
+ bases=('organization-network.person',),
+ ),
+ migrations.CreateModel(
+ name='OrganizationUserImage',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('_order', mezzanine.core.fields.OrderField(null=True, verbose_name='Order')),
+ ('title', models.CharField(max_length=1024, verbose_name='title')),
+ ('description', models.TextField(blank=True, verbose_name='description')),
+ ('file', models.FileField(max_length=1024, upload_to='images', verbose_name='Image')),
+ ('credits', models.CharField(blank=True, max_length=256, null=True, verbose_name='credits')),
+ ],
+ options={
+ 'ordering': ('_order',),
+ },
+ ),
+ migrations.AddField(
+ model_name='organization',
+ name='role',
+ field=models.CharField(blank=True, choices=[('coordinator', 'coordinator'), ('producer', 'producer')], max_length=128, null=True, verbose_name='role'),
+ ),
+ migrations.AddField(
+ model_name='organizationuserimage',
+ name='organization',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='user_images', to='organization-network.Organization', verbose_name='organization'),
+ ),
+ migrations.AddField(
+ model_name='organizationcontact',
+ name='organization',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='contacts', to='organization-network.Organization', verbose_name='organization'),
+ ),
+ ]
(6, 6),
]
+ORGANIZATION_ROLE_CHOICES = [
+ ('coordinator', _('coordinator')),
+ ('producer', _('producer')),
+]
+
class Organization(Named, Address, URL, AdminThumbRelatedMixin, Orderable):
"""(Organization description)"""
bio = models.TextField(_('bio'), blank=True)
site = models.ForeignKey("sites.Site", blank=True, null=True, on_delete=models.SET_NULL)
admin_thumb_type = 'logo'
+ role = models.CharField(_('role'), max_length=128, blank=True, null=True, choices=ORGANIZATION_ROLE_CHOICES)
class Meta:
verbose_name = _('organization')
super(Organization, self).save()
+class Team(Named, URL):
+ """(Team description)"""
+
+ organization = models.ForeignKey('Organization', verbose_name=_('organization'), related_name="teams", blank=True, null=True, on_delete=models.SET_NULL)
+ department = models.ForeignKey('Department', verbose_name=_('department'), related_name="teams", blank=True, null=True, on_delete=models.SET_NULL)
+ code = models.CharField(_('code'), max_length=64, blank=True, null=True)
+ is_legacy = models.BooleanField(_('is legacy'), default=False)
+ parent = models.ForeignKey('Team', verbose_name=_('parent team'), related_name="children", blank=True, null=True, on_delete=models.SET_NULL)
+
+ class Meta:
+ verbose_name = _('team')
+ ordering = ['name',]
+
+ def __str__(self):
+ if self.organization:
+ return ' - '.join((self.organization.name, self.name))
+ elif self.department:
+ if self.department.organization:
+ return ' - '.join((self.department.organization.name, self.department.name, self.name))
+ else:
+ return ' - '.join((self.department.name, self.name))
+ return self.name
+
+ @property
+ def short(self):
+ if self.organization:
+ return ' - '.join((self.organization.name, self.name))
+ elif self.department:
+ if self.department.organization:
+ return ' - '.join((self.department.organization.name, self.name))
+ else:
+ return ' - '.join((self.department.name, self.name))
+ return self.name
+
+
+class Person(Displayable, AdminThumbMixin, Address):
+ """(Person description)"""
+
+ user = models.OneToOneField(User, verbose_name=_('user'), blank=True, null=True, on_delete=models.SET_NULL)
+ person_title = models.CharField(_('title'), max_length=16, choices=TITLE_CHOICES, blank=True)
+ gender = models.CharField(_('gender'), max_length=16, choices=GENDER_CHOICES, blank=True)
+ first_name = models.CharField(_('first name'), max_length=255, blank=True, null=True)
+ last_name = models.CharField(_('last name'), max_length=255, blank=True, null=True)
+ email = models.EmailField(_('email'), blank=True, null=True)
+ telephone = models.CharField(_('telephone'), max_length=64, blank=True, null=True)
+ register_id = models.CharField(_('register ID'), blank=True, null=True, max_length=128)
+ birthday = models.DateField(_('birthday'), blank=True, null=True)
+ bio = RichTextField(_('biography'), blank=True)
+ external_id = models.CharField(_('external ID'), blank=True, null=True, max_length=128)
+
+ class Meta:
+ verbose_name = _('person')
+ ordering = ['last_name',]
+
+ def __str__(self):
+ return self.title
+
+ def get_absolute_url(self):
+ return reverse("organization-network-person-detail", kwargs={'slug': self.slug})
+
+ def set_names(self):
+ names = self.title.split(' ')
+ if len(names) == 1:
+ self.first_name = ''
+ self.last_name = names[0]
+ elif len(names) == 2:
+ self.first_name = names[0]
+ self.last_name = names[1]
+ else:
+ self.first_name = names[0]
+ self.last_name = ' '.join(names[1:])
+
+ def save(self, *args, **kwargs):
+ super(Person, self).save(args, kwargs)
+ for activity in self.activities.all():
+ update_activity(activity)
+
+
class OrganizationLinkedBlockInline(Titled, Orderable):
organization_linked = models.ForeignKey('OrganizationLinked', verbose_name=_('organization list'), related_name='organization_linked_block_inline_list', blank=True, null=True)
organization_main = models.ForeignKey('Organization', verbose_name=_('organization'), related_name='organization_linked_block', blank=True, null=True, on_delete=models.SET_NULL)
ordering = ['name',]
+class OrganizationContact(Person):
+
+ organization = models.ForeignKey(Organization, verbose_name=_('organization'), related_name='contacts', blank=True, null=True, on_delete=models.SET_NULL)
+
+ class Meta:
+ verbose_name = 'Organization contact'
+ verbose_name_plural = 'Organization contacts'
+
+
+class OrganizationUserImage(UserImage):
+
+ organization = models.ForeignKey(Organization, verbose_name=_('organization'), related_name='user_images', blank=True, null=True, on_delete=models.SET_NULL)
+
+
class Department(Named):
"""(Department description)"""
verbose_name = _('department page')
-class Team(Named, URL):
- """(Team description)"""
-
- organization = models.ForeignKey('Organization', verbose_name=_('organization'), related_name="teams", blank=True, null=True, on_delete=models.SET_NULL)
- department = models.ForeignKey('Department', verbose_name=_('department'), related_name="teams", blank=True, null=True, on_delete=models.SET_NULL)
- code = models.CharField(_('code'), max_length=64, blank=True, null=True)
- is_legacy = models.BooleanField(_('is legacy'), default=False)
- parent = models.ForeignKey('Team', verbose_name=_('parent team'), related_name="children", blank=True, null=True, on_delete=models.SET_NULL)
-
- class Meta:
- verbose_name = _('team')
- ordering = ['name',]
-
- def __str__(self):
- if self.organization:
- return ' - '.join((self.organization.name, self.name))
- elif self.department:
- if self.department.organization:
- return ' - '.join((self.department.organization.name, self.department.name, self.name))
- else:
- return ' - '.join((self.department.name, self.name))
- return self.name
-
- @property
- def short(self):
- if self.organization:
- return ' - '.join((self.organization.name, self.name))
- elif self.department:
- if self.department.organization:
- return ' - '.join((self.department.organization.name, self.name))
- else:
- return ' - '.join((self.department.name, self.name))
- return self.name
-
-
class TeamPage(Page, SubTitled, RichText):
"""(Team description)"""
team = models.ForeignKey(Team, verbose_name=_('team'), related_name='links', blank=True, null=True, on_delete=models.SET_NULL)
-class Person(Displayable, AdminThumbMixin, Address):
- """(Person description)"""
-
- user = models.OneToOneField(User, verbose_name=_('user'), blank=True, null=True, on_delete=models.SET_NULL)
- person_title = models.CharField(_('title'), max_length=16, choices=TITLE_CHOICES, blank=True)
- gender = models.CharField(_('gender'), max_length=16, choices=GENDER_CHOICES, blank=True)
- first_name = models.CharField(_('first name'), max_length=255, blank=True, null=True)
- last_name = models.CharField(_('last name'), max_length=255, blank=True, null=True)
- email = models.EmailField(_('email'), blank=True, null=True)
- telephone = models.CharField(_('telephone'), max_length=64, blank=True, null=True)
- register_id = models.CharField(_('register ID'), blank=True, null=True, max_length=128)
- birthday = models.DateField(_('birthday'), blank=True, null=True)
- bio = RichTextField(_('biography'), blank=True)
- external_id = models.CharField(_('external ID'), blank=True, null=True, max_length=128)
-
- class Meta:
- verbose_name = _('person')
- ordering = ['last_name',]
-
- def __str__(self):
- return self.title
-
- def get_absolute_url(self):
- return reverse("organization-network-person-detail", kwargs={'slug': self.slug})
-
- def set_names(self):
- names = self.title.split(' ')
- if len(names) == 1:
- self.first_name = ''
- self.last_name = names[0]
- elif len(names) == 2:
- self.first_name = names[0]
- self.last_name = names[1]
- else:
- self.first_name = names[0]
- self.last_name = ' '.join(names[1:])
-
- def save(self, *args, **kwargs):
- super(Person, self).save(args, kwargs)
- for activity in self.activities.all():
- update_activity(activity)
-
-
class PersonPlaylist(PlaylistRelated):
person = models.ForeignKey(Person, verbose_name=_('person'), related_name='playlists', blank=True, null=True, on_delete=models.SET_NULL)