(_('Media'), ('organization-media.Video', 'organization-media.VideoCategory', 'organization-media.Audio', 'organization-media.Playlist', (_('Media Library'), 'fb_browse'),)),
(_('Events'), ('mezzanine_agenda.Event', 'mezzanine_agenda.EventLocation', 'mezzanine_agenda.EventPrice',)),
(_('Magazine'), ('organization-magazine.Article', 'organization-magazine.Brief',)),
- (_('Organization'), ('organization-team.Organization', 'organization-team.Department', 'organization-team.Team', 'organization-team.Person', 'organization-team.Activity', 'organization-team.OrganizationType',)),
- (_('Projects'), ('organization-project.Project',)),
+ (_('Network'), ('organization-network.Organization', 'organization-network.Department', 'organization-network.Team', 'organization-network.Person', 'organization-network.Activity', 'organization-network.OrganizationType',)),
+ (_('Projects'), ('organization-projects.Project',)),
(_('Festival'), ('organization-festival.Artist',)),
(_('Users'), ('auth.User', 'auth.Group',)),
(_('Site'), ('sites.Site', 'redirects.Redirect', 'conf.Setting')),
GRAPPELLI_INSTALLED = True
# JQUERY_FILENAME = 'jquery-3.1.0.min.js'
-# JQUERY_UI_FILENAME = 'jquery-ui-1.12.0.min.js'
+JQUERY_UI_FILENAME = 'jquery-ui-1.9.2.min.js'
--- /dev/null
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-08-23 11:59
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('organization-core', '0012_auto_20160818_1656'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='category',
+ name='description',
+ field=models.TextField(blank=True, verbose_name='description'),
+ ),
+ migrations.AddField(
+ model_name='pageblock',
+ name='description',
+ field=models.TextField(blank=True, verbose_name='description'),
+ ),
+ ]
"""Abstract model providing a name field"""
name = models.CharField(_('name'), max_length=512)
+ description = models.TextField(_('description'), blank=True)
class Meta:
abstract = True
"""Abstract model providing a title field"""
title = models.CharField(_('title'), max_length=1024)
+ description = models.TextField(_('description'), blank=True)
class Meta:
abstract = True
#from orderable.models import Orderable
from organization.core.models import Named, Description, Image, Photo
+
class ArticleImage(Image):
article_fk = models.ForeignKey("Article", verbose_name=_('article'))
from dal_select2_queryset_sequence.views import Select2QuerySetSequenceView
from mezzanine_agenda.models import Event
from organization.magazine.models import Article, Topic, Brief
-from organization.team.models import Department
+from organization.network.models import Department
from organization.core.models import BasicPage
from organization.core.views import SlugMixin
from django.template.defaultfilters import slugify
--- /dev/null
+"""
+Provides abstract models and admin features used throughout the various
+Mezzanine apps.
+"""
+from __future__ import unicode_literals
+
+from mezzanine import __version__ # noqa
+
+
+default_app_config = 'organization.network.apps.NetworkConfig'
--- /dev/null
+from django.contrib import admin
+from django import forms
+from copy import deepcopy
+from mezzanine.core.admin import *
+from mezzanine.pages.admin import PageAdmin
+
+from organization.network.models import *
+from organization.core.admin import *
+
+
+class OrganizationAdmin(BaseTranslationModelAdmin):
+
+ model = Organization
+
+
+class PersonActivityInline(StackedDynamicInlineAdmin):
+
+ model = PersonActivity
+ fk_name = 'person'
+
+
+class DepartmentAdmin(BaseTranslationModelAdmin):
+
+ model = Department
+
+
+class DepartmentPageAdmin(PageAdmin):
+
+ inlines = [PageBlockInline, PageImageInline]
+
+
+class TeamAdmin(BaseTranslationModelAdmin):
+
+ model = Team
+
+
+class TeamPageAdmin(PageAdmin):
+
+ inlines = [PageBlockInline, PageImageInline]
+
+
+class PersonAdminBase(BaseTranslationModelAdmin):
+
+ model = Person
+
+
+class PersonLinkInline(StackedDynamicInlineAdmin):
+
+ model = PersonLink
+
+
+class PersonAdmin(BaseTranslationModelAdmin):
+
+ model = Person
+ inlines = [PersonActivityInline, PersonLinkInline, ]
+ first_fields = ['last_name', 'first_name', 'title', 'gender', 'user']
+
+ def get_fieldsets(self, request, obj = None):
+ res = super(PersonAdmin, self).get_fieldsets(request, obj)
+ for field in reversed(self.first_fields):
+ index = res[0][1]['fields'].index(field)
+ res[0][1]['fields'].insert(0, res[0][1]['fields'].pop(index))
+ return res
+
+
+admin.site.register(Organization, OrganizationAdmin)
+admin.site.register(OrganizationType)
+admin.site.register(Department, DepartmentAdmin)
+admin.site.register(Team, TeamAdmin)
+admin.site.register(DepartmentPage, DepartmentPageAdmin)
+admin.site.register(TeamPage, TeamPageAdmin)
+admin.site.register(Person, PersonAdmin)
--- /dev/null
+from __future__ import unicode_literals
+
+from django.apps import AppConfig
+
+
+class NetworkConfig(AppConfig):
+
+ name = 'organization.network'
+ label = 'organization-network'
--- /dev/null
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-08-23 12:25
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+import django_countries.fields
+import mezzanine.core.fields
+import mezzanine.utils.models
+
+
+class Migration(migrations.Migration):
+
+ initial = True
+
+ dependencies = [
+ ('pages', '0004_auto_20160804_1547'),
+ ('organization-core', '0013_auto_20160823_1359'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='ActivityFramework',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=512, verbose_name='name')),
+ ('description', models.TextField(blank=True, verbose_name='description')),
+ ],
+ options={
+ 'verbose_name': 'activity framework',
+ },
+ ),
+ migrations.CreateModel(
+ name='ActivityGrade',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=512, verbose_name='name')),
+ ('description', models.TextField(blank=True, verbose_name='description')),
+ ],
+ options={
+ 'verbose_name': 'activity grade',
+ },
+ ),
+ migrations.CreateModel(
+ name='ActivityStatus',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=512, verbose_name='name')),
+ ('description', models.TextField(blank=True, verbose_name='description')),
+ ],
+ options={
+ 'verbose_name': 'activity status',
+ },
+ ),
+ migrations.CreateModel(
+ name='Address',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('address', models.TextField(blank=True, verbose_name='address')),
+ ('postal_code', models.CharField(blank=True, max_length=16, verbose_name='postal code')),
+ ('country', django_countries.fields.CountryField(max_length=2, verbose_name='country')),
+ ],
+ ),
+ migrations.CreateModel(
+ name='BudgetCode',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=512, verbose_name='name')),
+ ('description', models.TextField(blank=True, verbose_name='description')),
+ ],
+ options={
+ 'verbose_name': 'budget code',
+ },
+ ),
+ migrations.CreateModel(
+ name='Department',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=512, verbose_name='name')),
+ ('name_fr', models.CharField(max_length=512, null=True, verbose_name='name')),
+ ('name_en', models.CharField(max_length=512, null=True, verbose_name='name')),
+ ('description', models.TextField(blank=True, verbose_name='description')),
+ ('description_fr', models.TextField(blank=True, null=True, verbose_name='description')),
+ ('description_en', models.TextField(blank=True, null=True, verbose_name='description')),
+ ],
+ options={
+ 'verbose_name': 'department',
+ },
+ ),
+ migrations.CreateModel(
+ name='DepartmentPage',
+ fields=[
+ ('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='pages.Page')),
+ ('content', mezzanine.core.fields.RichTextField(verbose_name='Content')),
+ ('content_fr', mezzanine.core.fields.RichTextField(null=True, verbose_name='Content')),
+ ('content_en', mezzanine.core.fields.RichTextField(null=True, verbose_name='Content')),
+ ('sub_title', models.TextField(blank=True, max_length=1024, verbose_name='sub title')),
+ ('sub_title_fr', models.TextField(blank=True, max_length=1024, null=True, verbose_name='sub title')),
+ ('sub_title_en', models.TextField(blank=True, max_length=1024, null=True, verbose_name='sub title')),
+ ('photo', mezzanine.core.fields.FileField(blank=True, max_length=1024, verbose_name='photo')),
+ ('photo_credits', models.CharField(blank=True, max_length=255, null=True, verbose_name='photo credits')),
+ ('photo_alignment', models.CharField(blank=True, choices=[('left', 'left'), ('center', 'center'), ('right', 'right')], default='left', max_length=32, verbose_name='photo alignment')),
+ ('photo_description', models.TextField(blank=True, verbose_name='photo description')),
+ ('photo_card', mezzanine.core.fields.FileField(blank=True, max_length=1024, verbose_name='card photo')),
+ ('photo_card_credits', models.CharField(blank=True, max_length=255, null=True, verbose_name='photo card credits')),
+ ('photo_slider', mezzanine.core.fields.FileField(blank=True, max_length=1024, verbose_name='slider photo')),
+ ('photo_slider_credits', models.CharField(blank=True, max_length=255, null=True, verbose_name='photo slider credits')),
+ ('weaving_css_class', models.CharField(blank=True, choices=[('pattern-bg--circles', 'circles'), ('pattern-bg--squares', 'squares'), ('pattern-bg--stripes', 'stripes'), ('pattern-bg--triangles', 'triangles')], max_length=64, verbose_name='background pattern')),
+ ],
+ options={
+ 'ordering': ('_order',),
+ 'verbose_name': 'department page',
+ },
+ bases=('pages.page', models.Model),
+ ),
+ migrations.CreateModel(
+ name='OrganizationType',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=512, verbose_name='name')),
+ ('description', models.TextField(blank=True, verbose_name='description')),
+ ],
+ options={
+ 'verbose_name': 'organization type',
+ },
+ ),
+ migrations.CreateModel(
+ name='Person',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('keywords_string', models.CharField(blank=True, editable=False, max_length=500)),
+ ('title', models.CharField(max_length=500, verbose_name='Title')),
+ ('slug', models.CharField(blank=True, help_text='Leave blank to have the URL auto-generated from the title.', max_length=2000, null=True, verbose_name='URL')),
+ ('_meta_title', models.CharField(blank=True, help_text='Optional title to be used in the HTML title tag. If left blank, the main title field will be used.', max_length=500, null=True, verbose_name='Title')),
+ ('description', models.TextField(blank=True, verbose_name='Description')),
+ ('gen_description', models.BooleanField(default=True, help_text='If checked, the description will be automatically generated from content. Uncheck if you want to manually set a custom description.', verbose_name='Generate description')),
+ ('created', models.DateTimeField(editable=False, null=True)),
+ ('updated', models.DateTimeField(editable=False, null=True)),
+ ('status', models.IntegerField(choices=[(1, 'Draft'), (2, 'Published')], default=2, help_text='With Draft chosen, will only be shown for admin users on the site.', verbose_name='Status')),
+ ('publish_date', models.DateTimeField(blank=True, db_index=True, help_text="With Published chosen, won't be shown until this time", null=True, verbose_name='Published from')),
+ ('expiry_date', models.DateTimeField(blank=True, help_text="With Published chosen, won't be shown after this time", null=True, verbose_name='Expires on')),
+ ('short_url', models.URLField(blank=True, null=True)),
+ ('in_sitemap', models.BooleanField(default=True, verbose_name='Show in sitemap')),
+ ('photo', mezzanine.core.fields.FileField(blank=True, max_length=1024, verbose_name='photo')),
+ ('photo_credits', models.CharField(blank=True, max_length=255, null=True, verbose_name='photo credits')),
+ ('photo_alignment', models.CharField(blank=True, choices=[('left', 'left'), ('center', 'center'), ('right', 'right')], default='left', max_length=32, verbose_name='photo alignment')),
+ ('photo_description', models.TextField(blank=True, verbose_name='photo description')),
+ ('photo_card', mezzanine.core.fields.FileField(blank=True, max_length=1024, verbose_name='card photo')),
+ ('photo_card_credits', models.CharField(blank=True, max_length=255, null=True, verbose_name='photo card credits')),
+ ('photo_slider', mezzanine.core.fields.FileField(blank=True, max_length=1024, verbose_name='slider photo')),
+ ('photo_slider_credits', models.CharField(blank=True, max_length=255, null=True, verbose_name='photo slider credits')),
+ ('person_title', models.CharField(blank=True, choices=[('Dr', 'Dr'), ('Prof', 'Prof'), ('Prof Dr', 'Prof Dr')], max_length=16, verbose_name='title')),
+ ('gender', models.CharField(blank=True, choices=[('male', 'male'), ('female', 'female')], max_length=16, verbose_name='gender')),
+ ('first_name', models.CharField(blank=True, max_length=255, null=True, verbose_name='first name')),
+ ('last_name', models.CharField(blank=True, max_length=255, null=True, verbose_name='last name')),
+ ('birthday', models.DateField(blank=True, null=True, verbose_name='birthday')),
+ ('bio', mezzanine.core.fields.RichTextField(blank=True, verbose_name='biography')),
+ ('bio_fr', mezzanine.core.fields.RichTextField(blank=True, null=True, verbose_name='biography')),
+ ('bio_en', mezzanine.core.fields.RichTextField(blank=True, null=True, verbose_name='biography')),
+ ('permanent', models.BooleanField(default=False, verbose_name='permanent')),
+ ],
+ options={
+ 'ordering': ['last_name'],
+ 'verbose_name': 'person',
+ },
+ bases=(mezzanine.utils.models.AdminThumbMixin, models.Model),
+ ),
+ migrations.CreateModel(
+ name='PersonActivity',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('content', mezzanine.core.fields.RichTextField(verbose_name='Content')),
+ ('content_fr', mezzanine.core.fields.RichTextField(null=True, verbose_name='Content')),
+ ('content_en', mezzanine.core.fields.RichTextField(null=True, verbose_name='Content')),
+ ('description', models.TextField(blank=True, verbose_name='description')),
+ ('description_fr', models.TextField(blank=True, null=True, verbose_name='description')),
+ ('description_en', models.TextField(blank=True, null=True, verbose_name='description')),
+ ('date_begin', models.DateField(blank=True, null=True, verbose_name='begin date')),
+ ('date_end', models.DateField(blank=True, null=True, verbose_name='end date')),
+ ('function', models.CharField(blank=True, max_length=1024, verbose_name='fonction')),
+ ('hdr', models.BooleanField(default=False, verbose_name='HDR')),
+ ('rd_quota', models.IntegerField(blank=True, null=True, verbose_name='R&D quota')),
+ ('rd_program', models.TextField(blank=True, verbose_name='R&D program')),
+ ('phd_defense_date', models.DateField(blank=True, null=True, verbose_name='PhD defense date')),
+ ('phd_title', models.TextField(blank=True, verbose_name='PhD title')),
+ ('phd_postdoctoralsituation', models.CharField(blank=True, max_length=256, verbose_name='post-doctoral situation')),
+ ('training_title', models.TextField(blank=True, verbose_name='Training title')),
+ ('comments', models.TextField(blank=True, verbose_name='comments')),
+ ('date_added', models.DateTimeField(auto_now_add=True, verbose_name='add date')),
+ ('date_modified', models.DateTimeField(auto_now=True, verbose_name='modification date')),
+ ('date_modified_manual', models.DateTimeField(blank=True, null=True, verbose_name='manual modification date')),
+ ('budget_code', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-network.BudgetCode')),
+ ('framework', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-network.ActivityFramework', verbose_name='framework')),
+ ('grade', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-network.ActivityGrade', verbose_name='grade')),
+ ('person', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization-network.Person', verbose_name='person')),
+ ('phd_director', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='phd_director_activity', to='organization-network.Person', verbose_name='PhD director')),
+ ('phd_officer_1', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='phd_officer_1_activity', to='organization-network.Person', verbose_name='PhD officer 1')),
+ ('phd_officer_2', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='phd_officer_2_activity', to='organization-network.Person', verbose_name='PhD officer 2')),
+ ],
+ options={
+ 'verbose_name_plural': 'activities',
+ 'verbose_name': 'activity',
+ },
+ ),
+ migrations.CreateModel(
+ name='PersonLink',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('url', models.URLField(verbose_name='URL')),
+ ('link_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization-core.LinkType', verbose_name='link type')),
+ ('person', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization-network.Person', verbose_name='person')),
+ ],
+ options={
+ 'verbose_name': 'person link',
+ },
+ ),
+ migrations.CreateModel(
+ name='RecordPiece',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=512, verbose_name='name')),
+ ('description', models.TextField(blank=True, verbose_name='description')),
+ ],
+ options={
+ 'verbose_name': 'record piece',
+ },
+ ),
+ migrations.CreateModel(
+ name='Team',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=512, verbose_name='name')),
+ ('name_fr', models.CharField(max_length=512, null=True, verbose_name='name')),
+ ('name_en', models.CharField(max_length=512, null=True, verbose_name='name')),
+ ('description', models.TextField(blank=True, verbose_name='description')),
+ ('description_fr', models.TextField(blank=True, null=True, verbose_name='description')),
+ ('description_en', models.TextField(blank=True, null=True, verbose_name='description')),
+ ('web_site', models.URLField(blank=True, max_length=512, verbose_name='web site')),
+ ('department', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='teams', to='organization-network.Department', verbose_name='department')),
+ ],
+ options={
+ 'verbose_name': 'team',
+ },
+ ),
+ migrations.CreateModel(
+ name='TeamLink',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('url', models.URLField(verbose_name='URL')),
+ ('link_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization-core.LinkType', verbose_name='link type')),
+ ('team', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization-network.Team', verbose_name='links')),
+ ],
+ options={
+ 'verbose_name_plural': 'links',
+ 'abstract': False,
+ 'verbose_name': 'link',
+ },
+ ),
+ migrations.CreateModel(
+ name='TeamPage',
+ fields=[
+ ('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='pages.Page')),
+ ('content', mezzanine.core.fields.RichTextField(verbose_name='Content')),
+ ('content_fr', mezzanine.core.fields.RichTextField(null=True, verbose_name='Content')),
+ ('content_en', mezzanine.core.fields.RichTextField(null=True, verbose_name='Content')),
+ ('sub_title', models.TextField(blank=True, max_length=1024, verbose_name='sub title')),
+ ('sub_title_fr', models.TextField(blank=True, max_length=1024, null=True, verbose_name='sub title')),
+ ('sub_title_en', models.TextField(blank=True, max_length=1024, null=True, verbose_name='sub title')),
+ ('photo', mezzanine.core.fields.FileField(blank=True, max_length=1024, verbose_name='photo')),
+ ('photo_credits', models.CharField(blank=True, max_length=255, null=True, verbose_name='photo credits')),
+ ('photo_alignment', models.CharField(blank=True, choices=[('left', 'left'), ('center', 'center'), ('right', 'right')], default='left', max_length=32, verbose_name='photo alignment')),
+ ('photo_description', models.TextField(blank=True, verbose_name='photo description')),
+ ('photo_card', mezzanine.core.fields.FileField(blank=True, max_length=1024, verbose_name='card photo')),
+ ('photo_card_credits', models.CharField(blank=True, max_length=255, null=True, verbose_name='photo card credits')),
+ ('photo_slider', mezzanine.core.fields.FileField(blank=True, max_length=1024, verbose_name='slider photo')),
+ ('photo_slider_credits', models.CharField(blank=True, max_length=255, null=True, verbose_name='photo slider credits')),
+ ('team', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization-network.Team', verbose_name='team')),
+ ],
+ options={
+ 'ordering': ('_order',),
+ 'verbose_name': 'team page',
+ },
+ bases=('pages.page', models.Model),
+ ),
+ migrations.CreateModel(
+ name='TrainingLevel',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=512, verbose_name='name')),
+ ('description', models.TextField(blank=True, verbose_name='description')),
+ ],
+ options={
+ 'verbose_name': 'training level',
+ },
+ ),
+ migrations.CreateModel(
+ name='TrainingSpectiality',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=512, verbose_name='name')),
+ ('description', models.TextField(blank=True, verbose_name='description')),
+ ],
+ options={
+ 'verbose_name': 'training speciality',
+ },
+ ),
+ migrations.CreateModel(
+ name='TrainingTopic',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=512, verbose_name='name')),
+ ('description', models.TextField(blank=True, verbose_name='description')),
+ ],
+ options={
+ 'verbose_name': 'training topic',
+ },
+ ),
+ migrations.CreateModel(
+ name='TrainingType',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=512, verbose_name='name')),
+ ('description', models.TextField(blank=True, verbose_name='description')),
+ ],
+ options={
+ 'verbose_name': 'training type',
+ },
+ ),
+ migrations.CreateModel(
+ name='Organization',
+ fields=[
+ ('address_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='organization-network.Address')),
+ ('title', models.CharField(max_length=500, verbose_name='Title')),
+ ('slug', models.CharField(blank=True, help_text='Leave blank to have the URL auto-generated from the title.', max_length=2000, null=True, verbose_name='URL')),
+ ('description', models.TextField(blank=True, verbose_name='description')),
+ ('description_fr', models.TextField(blank=True, null=True, verbose_name='description')),
+ ('description_en', models.TextField(blank=True, null=True, verbose_name='description')),
+ ('photo', mezzanine.core.fields.FileField(blank=True, max_length=1024, verbose_name='photo')),
+ ('photo_credits', models.CharField(blank=True, max_length=255, null=True, verbose_name='photo credits')),
+ ('photo_alignment', models.CharField(blank=True, choices=[('left', 'left'), ('center', 'center'), ('right', 'right')], default='left', max_length=32, verbose_name='photo alignment')),
+ ('photo_description', models.TextField(blank=True, verbose_name='photo description')),
+ ('photo_card', mezzanine.core.fields.FileField(blank=True, max_length=1024, verbose_name='card photo')),
+ ('photo_card_credits', models.CharField(blank=True, max_length=255, null=True, verbose_name='photo card credits')),
+ ('photo_slider', mezzanine.core.fields.FileField(blank=True, max_length=1024, verbose_name='slider photo')),
+ ('photo_slider_credits', models.CharField(blank=True, max_length=255, null=True, verbose_name='photo slider credits')),
+ ('website', models.URLField(blank=True, max_length=512, verbose_name='website')),
+ ('is_on_map', models.BooleanField(default=True, verbose_name='is on map')),
+ ],
+ options={
+ 'verbose_name': 'organization',
+ },
+ bases=('organization-network.address', models.Model),
+ ),
+ ]
--- /dev/null
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-08-23 12:25
+from __future__ import unicode_literals
+
+from django.conf import settings
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ initial = True
+
+ dependencies = [
+ ('organization-network', '0001_initial'),
+ ('sites', '0002_alter_domain_unique'),
+ ('organization-projects', '0001_initial'),
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='personactivity',
+ name='project',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-projects.Project', verbose_name='project'),
+ ),
+ migrations.AddField(
+ model_name='personactivity',
+ name='record_piece',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-network.RecordPiece'),
+ ),
+ migrations.AddField(
+ model_name='personactivity',
+ name='second_team',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='second_team_activity', to='organization-network.Team', verbose_name='second team'),
+ ),
+ migrations.AddField(
+ model_name='personactivity',
+ name='status',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-network.ActivityStatus', verbose_name='status'),
+ ),
+ migrations.AddField(
+ model_name='personactivity',
+ name='team',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='team_activity', to='organization-network.Team', verbose_name='team'),
+ ),
+ migrations.AddField(
+ model_name='personactivity',
+ name='training_level',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-network.TrainingLevel', verbose_name='training level'),
+ ),
+ migrations.AddField(
+ model_name='personactivity',
+ name='training_speciality',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-network.TrainingSpectiality', verbose_name='training speciality'),
+ ),
+ migrations.AddField(
+ model_name='personactivity',
+ name='training_topic',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-network.TrainingTopic', verbose_name='training topic'),
+ ),
+ migrations.AddField(
+ model_name='personactivity',
+ name='training_type',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-network.TrainingType', verbose_name='training type'),
+ ),
+ migrations.AddField(
+ model_name='person',
+ name='site',
+ field=models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.Site'),
+ ),
+ migrations.AddField(
+ model_name='person',
+ name='user',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='user'),
+ ),
+ migrations.AddField(
+ model_name='departmentpage',
+ name='department',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization-network.Department', verbose_name='department'),
+ ),
+ migrations.AddField(
+ model_name='team',
+ name='organization',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='teams', to='organization-network.Organization', verbose_name='organization'),
+ ),
+ migrations.AddField(
+ model_name='personactivity',
+ name='attachment_organization',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='attachment_activity', to='organization-network.Organization', verbose_name='attachment organization'),
+ ),
+ migrations.AddField(
+ model_name='personactivity',
+ name='employer',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='employer_activity', to='organization-network.Organization', verbose_name='employer'),
+ ),
+ migrations.AddField(
+ model_name='personactivity',
+ name='phd_doctoral_school',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-network.Organization', verbose_name='doctoral school'),
+ ),
+ migrations.AddField(
+ model_name='personactivity',
+ name='second_employer',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='second_employer_activity', to='organization-network.Organization', verbose_name='second employer'),
+ ),
+ migrations.AddField(
+ model_name='organization',
+ name='site',
+ field=models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.Site'),
+ ),
+ migrations.AddField(
+ model_name='organization',
+ name='type',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-network.OrganizationType', verbose_name='organization type'),
+ ),
+ migrations.AddField(
+ model_name='department',
+ name='organization',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='departments', to='organization-network.Organization', verbose_name='organization'),
+ ),
+ ]
--- /dev/null
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-08-23 12:38
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('organization-network', '0002_auto_20160823_1425'),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name='organization',
+ name='site',
+ ),
+ migrations.RemoveField(
+ model_name='organization',
+ name='slug',
+ ),
+ migrations.RemoveField(
+ model_name='organization',
+ name='title',
+ ),
+ migrations.RemoveField(
+ model_name='organization',
+ name='website',
+ ),
+ migrations.AddField(
+ model_name='organization',
+ name='name',
+ field=models.CharField(default='', max_length=512, verbose_name='name'),
+ preserve_default=False,
+ ),
+ migrations.AddField(
+ model_name='organization',
+ name='web_site',
+ field=models.URLField(blank=True, max_length=512, verbose_name='web site'),
+ ),
+ ]
--- /dev/null
+from __future__ import unicode_literals
+
+import os
+import re
+import pwd
+import time
+import urllib
+import string
+import datetime
+import mimetypes
+
+from django.db import models
+from django.utils.translation import ugettext_lazy as _
+from django.core.urlresolvers import reverse, reverse_lazy
+from django.conf import settings
+from django.contrib.auth.models import User
+
+from mezzanine.pages.models import Page
+from mezzanine.core.models import RichText, Displayable, Slugged
+from mezzanine.core.fields import RichTextField, OrderField, FileField
+from mezzanine.utils.models import AdminThumbMixin, upload_to
+from mezzanine.galleries.models import BaseGallery
+
+from organization.core.models import *
+
+from django_countries.fields import CountryField
+# from .nationalities.fields import NationalityField
+
+# Hack to have these strings translated
+mr = _('Mr')
+mrs = _('Ms')
+
+GENDER_CHOICES = [
+ ('male', _('male')),
+ ('female', _('female')),
+]
+
+TITLE_CHOICES = [
+ ('Dr', _('Dr')),
+ ('Prof', _('Prof')),
+ ('Prof Dr', _('Prof Dr')),
+]
+
+PATTERN_CHOICES = [
+ ('pattern-bg--circles', _('circles')),
+ ('pattern-bg--squares', _('squares')),
+ ('pattern-bg--stripes', _('stripes')),
+ ('pattern-bg--triangles', _('triangles')),
+]
+
+ALIGNMENT_CHOICES = (('left', _('left')), ('left', _('left')), ('right', _('right')))
+
+
+class Address(models.Model):
+ """(Address description)"""
+
+ address = models.TextField(_('address'), blank=True)
+ postal_code = models.CharField(_('postal code'), max_length=16, blank=True)
+ country = CountryField(_('country'))
+
+ def __str__(self):
+ return ' '.join((self.address, self.postal_code))
+
+ class Meta:
+ abstract = True
+
+
+class Organization(Named, Address, Photo):
+ """(Organization description)"""
+
+ type = models.ForeignKey('OrganizationType', verbose_name=_('organization type'), blank=True, null=True, on_delete=models.SET_NULL)
+ web_site = models.URLField(_('web site'), max_length=512, blank=True)
+ is_on_map = models.BooleanField(_('is on map'), default=True)
+
+ class Meta:
+ verbose_name = _('organization')
+
+
+class OrganizationType(Named):
+ """(OrganizationType description)"""
+
+ class Meta:
+ verbose_name = _('organization type')
+
+
+class Department(Named):
+ """(Department description)"""
+
+ organization = models.ForeignKey('Organization', verbose_name=_('organization'), related_name="departments")
+
+ class Meta:
+ verbose_name = _('department')
+
+ def __str__(self):
+ if self.organization:
+ return ' - '.join((self.organization.name, self.name))
+ return self.name
+
+
+class DepartmentPage(Page, SubTitle, RichText, Photo):
+ """(Department description)"""
+
+ department = models.ForeignKey('Department', verbose_name=_('department'))
+ weaving_css_class = models.CharField(_('background pattern'), choices=PATTERN_CHOICES, max_length=64, blank=True)
+
+ class Meta:
+ verbose_name = _('department page')
+
+
+class Team(Named):
+ """(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)
+ web_site = models.URLField(_('web site'), max_length=512, blank=True)
+
+ class Meta:
+ verbose_name = _('team')
+
+ 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
+
+
+class TeamPage(Page, SubTitle, RichText, Photo):
+ """(Team description)"""
+
+ team = models.ForeignKey('Team', verbose_name=_('team'))
+
+ class Meta:
+ verbose_name = _('team page')
+
+
+class Person(Displayable, AdminThumbMixin, Photo):
+ """(Person description)"""
+
+ user = models.ForeignKey(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)
+ birthday = models.DateField(_('birthday'), blank=True, null=True)
+ bio = RichTextField(_('biography'), blank=True)
+ permanent = models.BooleanField(_('permanent'), default=False)
+
+ class Meta:
+ verbose_name = _('person')
+ ordering = ['last_name',]
+
+ def __str__(self):
+ return ' '.join((self.first_name, self.last_name))
+
+ # def get_absolute_url(self):
+ # return reverse("festival-artist-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 clean(self):
+ super(Person, self).clean()
+ self.set_names()
+
+ def save(self, *args, **kwargs):
+ self.set_names()
+ super(Person, self).save(*args, **kwargs)
+
+
+class TeamLink(Link):
+
+ team = models.ForeignKey(Team, verbose_name=_('links'))
+
+ def __str__(self):
+ return self.url
+
+
+class ActivityStatus(Named):
+
+ class Meta:
+ verbose_name = _('activity status')
+
+
+class ActivityGrade(Named):
+
+ class Meta:
+ verbose_name = _('activity grade')
+
+
+class ActivityFramework(Named):
+
+ class Meta:
+ verbose_name = _('activity framework')
+
+
+class BudgetCode(Named):
+
+ class Meta:
+ verbose_name = _('budget code')
+
+
+class RecordPiece(Named):
+
+ class Meta:
+ verbose_name = _('record piece')
+
+
+class TrainingType(Named):
+
+ class Meta:
+ verbose_name = _('training type')
+
+
+class TrainingLevel(Named):
+
+ class Meta:
+ verbose_name = _('training level')
+
+
+class TrainingTopic(Named):
+
+ class Meta:
+ verbose_name = _('training topic')
+
+
+class TrainingSpectiality(Named):
+
+ class Meta:
+ verbose_name = _('training speciality')
+
+
+class PersonActivity(Description, Period, RichText):
+ """(Activity description)"""
+
+ person = models.ForeignKey('Person', verbose_name=_('person'))
+ team = models.ForeignKey('Team', verbose_name=_('team'), related_name='team_activity', blank=True, null=True, on_delete=models.SET_NULL)
+ second_team = models.ForeignKey('Team', verbose_name=_('second team'), related_name='second_team_activity', blank=True, null=True, on_delete=models.SET_NULL)
+ function = models.CharField(_('fonction'), blank=True, max_length=1024)
+
+ status = models.ForeignKey(ActivityStatus, verbose_name=_('status'), blank=True, null=True, on_delete=models.SET_NULL)
+ grade = models.ForeignKey(ActivityGrade, verbose_name=_('grade'), blank=True, null=True, on_delete=models.SET_NULL)
+ framework = models.ForeignKey(ActivityFramework, verbose_name=_('framework'), blank=True, null=True, on_delete=models.SET_NULL)
+ hdr = models.BooleanField(_('HDR'), default=False)
+
+ employer = models.ForeignKey(Organization, verbose_name=_('employer'), related_name='employer_activity', blank=True, null=True, on_delete=models.SET_NULL)
+ second_employer = models.ForeignKey(Organization, verbose_name=_('second employer'), related_name='second_employer_activity', blank=True, null=True, on_delete=models.SET_NULL)
+ attachment_organization = models.ForeignKey(Organization, verbose_name=_('attachment organization'), related_name='attachment_activity', blank=True, null=True, on_delete=models.SET_NULL)
+
+ project = models.ForeignKey('organization-projects.Project', verbose_name=_('project'), blank=True, null=True, on_delete=models.SET_NULL)
+ rd_quota = models.IntegerField(_('R&D quota'), blank=True, null=True)
+ rd_program = models.TextField(_('R&D program'), blank=True)
+ budget_code = models.ForeignKey(BudgetCode, blank=True, null=True, on_delete=models.SET_NULL)
+
+ phd_doctoral_school = models.ForeignKey(Organization, verbose_name=_('doctoral school'), blank=True, null=True, on_delete=models.SET_NULL)
+ phd_director = models.ForeignKey('Person', verbose_name=_('PhD director'), related_name='phd_director_activity', blank=True, null=True, on_delete=models.SET_NULL)
+ phd_officer_1 = models.ForeignKey('Person', verbose_name=_('PhD officer 1'), related_name='phd_officer_1_activity', blank=True, null=True, on_delete=models.SET_NULL)
+ phd_officer_2 = models.ForeignKey('Person', verbose_name=_('PhD officer 2'), related_name='phd_officer_2_activity', blank=True, null=True, on_delete=models.SET_NULL)
+ phd_defense_date = models.DateField(_('PhD defense date'), blank=True, null=True)
+ phd_title = models.TextField(_('PhD title'), blank=True)
+ phd_postdoctoralsituation = models.CharField(_('post-doctoral situation'), blank=True, max_length=256)
+
+ training_type = models.ForeignKey(TrainingType, verbose_name=_('training type'), blank=True, null=True, on_delete=models.SET_NULL)
+ training_level = models.ForeignKey(TrainingLevel, verbose_name=_('training level'), blank=True, null=True, on_delete=models.SET_NULL)
+ training_topic = models.ForeignKey(TrainingTopic, verbose_name=_('training topic'), blank=True, null=True, on_delete=models.SET_NULL)
+ training_speciality = models.ForeignKey(TrainingSpectiality, verbose_name=_('training speciality'), blank=True, null=True, on_delete=models.SET_NULL)
+ training_title = models.TextField(_('Training title'), blank=True)
+
+ comments = models.TextField(_('comments'), blank=True)
+
+ record_piece = models.ForeignKey(RecordPiece, blank=True, null=True, on_delete=models.SET_NULL)
+ date_added = models.DateTimeField(_('add date'), auto_now_add=True)
+ date_modified = models.DateTimeField(_('modification date'), auto_now=True)
+ date_modified_manual = models.DateTimeField(_('manual modification date'), blank=True, null=True)
+
+ class Meta:
+ verbose_name = _('activity')
+ verbose_name_plural = _('activities')
+
+ def __unicode__(self):
+ return ' - '.join((self.person, self.role, self.date_begin, self.date_end))
+
+
+class PersonLink(Link):
+ """A person can have many links."""
+
+ person = models.ForeignKey('Person', verbose_name=_('person'))
+
+ class Meta:
+ verbose_name = _('person link')
--- /dev/null
+from django.db.models.fields import CharField
+
+class Nationality(object):
+ """
+ Class represents a nationality.
+
+ >>> hungarian = Nationality('HU')
+ >>> hungarian.code
+ u'HU'
+ >>> hungarian.name
+ u'Hungarian'
+
+ """
+
+ def __init__(self, code):
+ """
+ Constructor accepts ISO 3166-1 country code.
+ """
+ self.code = code
+
+ def __unicode__(self):
+ return str(self.code or '')
+
+ def __eq__(self, other):
+ return self.code == str(other)
+
+ def __ne__(self, other):
+ return not self.__eq__(other)
+
+ def __cmp__(self, other):
+ return cmp(self.code, str(other))
+
+ def __hash__(self):
+ return hash(self.code)
+
+ @property
+ def name(self):
+ """
+ Return verbose name of nationality.
+ """
+ from .nationalities import NATIONALITIES
+ for code, name in NATIONALITIES:
+ if self.code == code:
+ return name
+ return None
+
+
+class NationalityDescriptor(object):
+ """
+ A descriptor for nationality fields on model instances. Returns a
+ Nationality when accessed.
+
+ >>> instance.nationality.name
+ u'Hungarian'
+
+ """
+
+ def __init__(self, field):
+ self.field = field
+
+ def __get__(self, instance=None, owner=None):
+ if instance is None:
+ raise AttributeError(
+ "The '%s' attribute can only be accessed from %s instances."
+ % (self.field.name, owner.__name__))
+ return Nationality(code=instance.__dict__[self.field.name])
+
+ def __set__(self, instance, value):
+ instance.__dict__[self.field.name] = str(value)
+
+
+class NationalityField(CharField):
+ """
+ A nationality field for Django models that provides all nationalities as
+ choices.
+ """
+
+ descriptor_class = NationalityDescriptor
+
+ def __init__(self, *args, **kwargs):
+ from .nationalities import NATIONALITIES
+ kwargs.setdefault('max_length', 2)
+ kwargs.setdefault('choices', NATIONALITIES)
+ super(CharField, self).__init__(*args, **kwargs)
+
+ def get_internal_type(self):
+ return 'CharField'
+
+ def contribute_to_class(self, cls, name):
+ super(NationalityField, self).contribute_to_class(cls, name)
+ setattr(cls, self.name, self.descriptor_class(self))
+
+ def get_prep_lookup(self, lookup_type, value):
+ if hasattr(value, 'code'):
+ value = value.code
+ return super(NationalityField, self).get_prep_lookup(lookup_type, value)
+
+ def pre_save(self, *args, **kwargs):
+ "Returns field's value just before saving."
+ value = super(CharField, self).pre_save(*args, **kwargs)
+ return self.get_prep_value(value)
+
+ def get_prep_value(self, value):
+ "Returns field's value prepared for saving into a database."
+ # Convert the Nationality to unicode for database insertion.
+ if value is None:
+ return None
+ return str(value)
+
+
+# If south is installed, ensure that NationalityField will be introspected just
+# like a normal CharField.
+try:
+ from south.modelsinspector import add_introspection_rules
+ add_introspection_rules([], ["^nationalities\.fields\.NationalityField"])
+except ImportError:
+ pass
--- /dev/null
+from django.utils.translation import ugettext_lazy as _
+
+
+# source: http://www.englishclub.com/vocabulary/world-countries-nationality.htm
+NATIONALITIES = (
+ ('AF', _(u'Afghan')),
+ ('AL', _(u'Albanian')),
+ ('DZ', _(u'Algerian')),
+ ('AD', _(u'Andorran')),
+ ('AO', _(u'Angolan')),
+ ('AR', _(u'Argentinian')),
+ ('AM', _(u'Armenian')),
+ ('AU', _(u'Australian')),
+ ('AT', _(u'Austrian')),
+ ('AZ', _(u'Azerbaijani')),
+ ('BS', _(u'Bahamian')),
+ ('BH', _(u'Bahraini')),
+ ('BD', _(u'Bangladeshi')),
+ ('BB', _(u'Barbadian')),
+ ('BY', _(u'Belorussian')),
+ ('BE', _(u'Belgian')),
+ ('BZ', _(u'Belizian')),
+ ('BJ', _(u'Beninese')),
+ ('BT', _(u'Bhutanese')),
+ ('BO', _(u'Bolivian')),
+ ('BA', _(u'Bosnian')),
+ ('BW', _(u'Botswanan')),
+ ('BR', _(u'Brazilian')),
+ ('GB', _(u'British')),
+ ('BN', _(u'Bruneian')),
+ ('BG', _(u'Bulgarian')),
+ ('BF', _(u'Burkinese')),
+ ('MM', _(u'Burmese')),
+ ('BF', _(u'Burundian')),
+ ('BI', _(u'Cambodian')),
+ ('CM', _(u'Cameroonian')),
+ ('CA', _(u'Canadian')),
+ ('CV', _(u'Cape Verdean')),
+ ('TD', _(u'Chadian')),
+ ('CL', _(u'Chilean')),
+ ('CN', _(u'Chinese')),
+ ('CO', _(u'Colombian')),
+ ('CG', _(u'Congolese')),
+ ('CR', _(u'Costa Rican')),
+ ('HR', _(u'Croatian')),
+ ('CU', _(u'Cuban')),
+ ('CY', _(u'Cypriot')),
+ ('CZ', _(u'Czech')),
+ ('DK', _(u'Danish')),
+ ('DJ', _(u'Djiboutian')),
+ ('DM', _(u'Dominican')),
+ ('DO', _(u'Dominican')),
+ ('EC', _(u'Ecuadorean')),
+ ('EG', _(u'Egyptian')),
+ ('SV', _(u'Salvadorean')),
+ ('GB', _(u'English')),
+ ('ER', _(u'Eritrean')),
+ ('EE', _(u'Estonian')),
+ ('ET', _(u'Ethiopian')),
+ ('FJ', _(u'Fijian')),
+ ('FI', _(u'Finnish')),
+ ('FR', _(u'French')),
+ ('GA', _(u'Gabonese')),
+ ('GM', _(u'Gambian')),
+ ('GE', _(u'Georgian')),
+ ('DE', _(u'German')),
+ ('GH', _(u'Ghanaian')),
+ ('GR', _(u'Greek')),
+ ('GD', _(u'Grenadian')),
+ ('GT', _(u'Guatemalan')),
+ ('GQ', _(u'Guinean')),
+ ('GY', _(u'Guyanese')),
+ ('HT', _(u'Haitian')),
+ ('NL', _(u'Dutch')),
+ ('HN', _(u'Honduran')),
+ ('HU', _(u'Hungarian')),
+ ('IS', _(u'Icelandic')),
+ ('IO', _(u'Indian')),
+ ('ID', _(u'Indonesian')),
+ ('IR', _(u'Iranian')),
+ ('IQ', _(u'Iraqi')),
+ ('IE', _(u'Irish')),
+ ('IL', _(u'Israeli')),
+ ('IT', _(u'Italian')),
+ ('JM', _(u'Jamaican')),
+ ('JP', _(u'Japanese')),
+ ('JO', _(u'Jordanian')),
+ ('KZ', _(u'Kazakh')),
+ ('KE', _(u'Kenyan')),
+ ('KW', _(u'Kuwaiti')),
+ ('LA', _(u'Laotian')),
+ ('LV', _(u'Latvian')),
+ ('LB', _(u'Lebanese')),
+ ('LR', _(u'Liberian')),
+ ('LY', _(u'Libyan')),
+ ('LT', _(u'Lithuanian')),
+ ('MK', _(u'Macedonian')),
+ ('MG', _(u'Malagasay')),
+ ('MW', _(u'Malawian')),
+ ('MY', _(u'Malaysian')),
+ ('MV', _(u'Maldivian')),
+ ('ML', _(u'Malian')),
+ ('MT', _(u'Maltese')),
+ ('MR', _(u'Mauritanian')),
+ ('MU', _(u'Mauritian')),
+ ('MX', _(u'Mexican')),
+ ('MD', _(u'Moldovan')),
+ ('MC', _(u'Monacan')),
+ ('MN', _(u'Mongolian')),
+ ('ME', _(u'Montenegrin')),
+ ('MA', _(u'Moroccan')),
+ ('MZ', _(u'Mozambican')),
+ ('NA', _(u'Namibian')),
+ ('NP', _(u'Nepalese')),
+ ('NI', _(u'Nicaraguan')),
+ ('NE', _(u'Nigerien')),
+ ('NG', _(u'Nigerian')),
+ ('KP', _(u'North Korean')),
+ ('NO', _(u'Norwegian')),
+ ('OM', _(u'Omani')),
+ ('PK', _(u'Pakistani')),
+ ('PA', _(u'Panamanian')),
+ ('PG', _(u'Guinean')),
+ ('PY', _(u'Paraguayan')),
+ ('PE', _(u'Peruvian')),
+ ('PH', _(u'Philippine')),
+ ('PL', _(u'Polish')),
+ ('PT', _(u'Portuguese')),
+ ('QA', _(u'Qatari')),
+ ('RO', _(u'Romanian')),
+ ('RU', _(u'Russian')),
+ ('RW', _(u'Rwandan')),
+ ('SA', _(u'Saudi')),
+ ('AE', _(u'Scottish')),
+ ('SN', _(u'Senegalese')),
+ ('RS', _(u'Serbian')),
+ ('SC', _(u'Seychellois')),
+ ('SL', _(u'Sierra Leonian')),
+ ('SG', _(u'Singaporean')),
+ ('SK', _(u'Slovak')),
+ ('SI', _(u'Slovenian')),
+ ('SO', _(u'Somali')),
+ ('ZA', _(u'South African')),
+ ('KR', _(u'South Korean')),
+ ('ES', _(u'Spanish')),
+ ('LK', _(u'Sri Lankan')),
+ ('SD', _(u'Sudanese')),
+ ('SR', _(u'Surinamese')),
+ ('SZ', _(u'Swazi')),
+ ('SE', _(u'Swedish')),
+ ('CH', _(u'Swiss')),
+ ('SY', _(u'Syrian')),
+ ('TW', _(u'Taiwanese')),
+ ('TJ', _(u'Tadjik')),
+ ('TZ', _(u'Tanzanian')),
+ ('TH', _(u'Thai')),
+ ('TG', _(u'Togolese')),
+ ('TT', _(u'Trinidadian')),
+ ('TN', _(u'Tunisian')),
+ ('TR', _(u'Turkish')),
+ ('TM', _(u'Turkmen')),
+ ('TV', _(u'Tuvaluan')),
+ ('UG', _(u'Ugandan')),
+ ('UA', _(u'Ukrainian')),
+ ('UY', _(u'Uruguayan')),
+ ('UZ', _(u'Uzbek')),
+ ('VU', _(u'Vanuatuan')),
+ ('VE', _(u'Venezuelan')),
+ ('VN', _(u'Vietnamese')),
+ ('GB', _(u'Welsh')),
+ ('YE', _(u'Yemeni')),
+ ('ZM', _(u'Zambian')),
+ ('ZW', _(u'Zimbabwean')),
+)
--- /dev/null
+from django.test import TestCase
+
+# Create your tests here.
--- /dev/null
+from modeltranslation.translator import translator, register, TranslationOptions
+
+from organization.network.models import *
+
+
+@register(Organization)
+class OrganizationTranslationOptions(TranslationOptions):
+
+ fields = ('description',)
+
+
+@register(Department)
+class DepartmentTranslationOptions(TranslationOptions):
+
+ fields = ('name', 'description')
+
+@register(Team)
+class TeamTranslationOptions(TranslationOptions):
+
+ fields = ('name', 'description')
+
+
+@register(DepartmentPage)
+class DepartmentTranslationOptions(TranslationOptions):
+
+ fields = ('sub_title', 'content',)
+
+@register(TeamPage)
+class TeamTranslationOptions(TranslationOptions):
+
+ fields = ('sub_title', 'content',)
+
+
+@register(Person)
+class PersonTranslationOptions(TranslationOptions):
+
+ fields = ('bio',)
+
+
+@register(PersonActivity)
+class PersonActivityTranslationOptions(TranslationOptions):
+
+ fields = ('description', 'content')
+
+
+@register(PersonLink)
+class PersonTranslationOptions(TranslationOptions):
+
+ pass
--- /dev/null
+from __future__ import unicode_literals
+
+import django.views.i18n
+from django.conf.urls import patterns, include, url
+from django.conf.urls.i18n import i18n_patterns
+
+from mezzanine.core.views import direct_to_template
+from mezzanine.conf import settings
+
+from organization.network.views import *
+
+
+urlpatterns = [
+ url(r'^(?P<department>.*)/teams/$', TeamListView.as_view(), name="organization-network-team-list"),
+]
--- /dev/null
+from django.shortcuts import render
+
+from organization.network.models import *
+from organization.core.views import *
+
+
+class DepartmentListView(ListView):
+
+ model = Department
+ template_name='team/department_list.html'
+
+
+class DepartmentDetailView(SlugMixin, DetailView):
+
+ model = Department
+ template_name='team/department_detail.html'
+ context_object_name = 'department'
+
+
+class TeamListView(ListView):
+
+ model = Team
+ template_name='team/team_list.html'
+
+
+class TeamDetailView(SlugMixin, DetailView):
+
+ model = Team
+ template_name='team/team_detail.html'
+ context_object_name = 'team'
+
+ def get_context_data(self, **kwargs):
+ context = super(TeamListView, self).get_context_data(**kwargs)
+ partners = []
+
+ for partner in self.object.partner_organizations:
+ partners.append(partner)
+ for partner in self.object.partner_teams:
+ partners.append(partner)
+
+ for project in team.project_leader.all():
+ for partner in project.partner_organizations:
+ partners.append(partner)
+ for partner in project.partner_teams:
+ partners.append(partner)
+
+ context['partners'] = partners
+ return context
+
+
+class PersonListView(ListView):
+
+ model = Person
+ template_name='team/person_list.html'
+
+
+class PersonDetailView(SlugMixin, DetailView):
+
+ model = Person
+ template_name='team/person_detail.html'
+ context_object_name = 'person'
+++ /dev/null
-"""
-Provides abstract models and admin features used throughout the various
-Mezzanine apps.
-"""
-from __future__ import unicode_literals
-
-from mezzanine import __version__ # noqa
-
-
-default_app_config = 'organization.project.apps.ProjectConfig'
+++ /dev/null
-from copy import deepcopy
-
-from django.contrib import admin
-from django.utils.translation import ugettext_lazy as _
-
-from mezzanine.core.admin import *
-
-from organization.project.models import *
-
-
-class ProjectLinkInline(StackedDynamicInlineAdmin):
-
- model = ProjectLink
-
-
-class ProjectImageInline(TabularDynamicInlineAdmin):
-
- model = ProjectImage
-
-
-class ProjectBlockInline(StackedDynamicInlineAdmin):
-
- model = ProjectBlock
-
-
-class ProjectAdmin(admin.ModelAdmin):
-
- model = Project
-
-
-class ProjectAdminDisplayable(DisplayableAdmin):
-
- fieldsets = deepcopy(ProjectAdmin.fieldsets)
- inlines = [ProjectImageInline, ProjectBlockInline, ProjectLinkInline, ]
- filter_horizontal = ['persons', 'teams', 'organizations']
-
-
-admin.site.register(Project, ProjectAdminDisplayable)
+++ /dev/null
-from __future__ import unicode_literals
-
-from django.apps import AppConfig
-
-
-class ProjectConfig(AppConfig):
-
- name = 'organization.project'
- label = 'organization-project'
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-07-14 16:54
-from __future__ import unicode_literals
-
-from django.db import migrations, models
-import django.db.models.deletion
-import mezzanine.core.fields
-
-
-class Migration(migrations.Migration):
-
- initial = True
-
- dependencies = [
- ('organization-team', '__first__'),
- ('sites', '0002_alter_domain_unique'),
- ]
-
- operations = [
- migrations.CreateModel(
- name='Project',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('keywords_string', models.CharField(blank=True, editable=False, max_length=500)),
- ('title', models.CharField(max_length=500, verbose_name='Title')),
- ('title_fr', models.CharField(max_length=500, null=True, verbose_name='Title')),
- ('title_en', models.CharField(max_length=500, null=True, verbose_name='Title')),
- ('slug', models.CharField(blank=True, help_text='Leave blank to have the URL auto-generated from the title.', max_length=2000, null=True, verbose_name='URL')),
- ('_meta_title', models.CharField(blank=True, help_text='Optional title to be used in the HTML title tag. If left blank, the main title field will be used.', max_length=500, null=True, verbose_name='Title')),
- ('description', models.TextField(blank=True, verbose_name='Description')),
- ('description_fr', models.TextField(blank=True, null=True, verbose_name='Description')),
- ('description_en', models.TextField(blank=True, null=True, verbose_name='Description')),
- ('gen_description', models.BooleanField(default=True, help_text='If checked, the description will be automatically generated from content. Uncheck if you want to manually set a custom description.', verbose_name='Generate description')),
- ('created', models.DateTimeField(editable=False, null=True)),
- ('updated', models.DateTimeField(editable=False, null=True)),
- ('status', models.IntegerField(choices=[(1, 'Draft'), (2, 'Published')], default=2, help_text='With Draft chosen, will only be shown for admin users on the site.', verbose_name='Status')),
- ('publish_date', models.DateTimeField(blank=True, db_index=True, help_text="With Published chosen, won't be shown until this time", null=True, verbose_name='Published from')),
- ('expiry_date', models.DateTimeField(blank=True, help_text="With Published chosen, won't be shown after this time", null=True, verbose_name='Expires on')),
- ('short_url', models.URLField(blank=True, null=True)),
- ('in_sitemap', models.BooleanField(default=True, verbose_name='Show in sitemap')),
- ('content', mezzanine.core.fields.RichTextField(verbose_name='Content')),
- ('content_fr', mezzanine.core.fields.RichTextField(null=True, verbose_name='Content')),
- ('content_en', mezzanine.core.fields.RichTextField(null=True, verbose_name='Content')),
- ('partners', models.ManyToManyField(to='organization-team.Organization', verbose_name='organizations')),
- ('persons', models.ManyToManyField(to='organization-team.Person', verbose_name='persons')),
- ('site', models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.Site')),
- ],
- options={
- 'abstract': False,
- },
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-07-15 16:07
-from __future__ import unicode_literals
-
-from django.db import migrations, models
-import django.db.models.deletion
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-team', '0004_auto_20160715_1807'),
- ('organization-project', '0001_initial'),
- ]
-
- operations = [
- migrations.RemoveField(
- model_name='project',
- name='partners',
- ),
- migrations.RemoveField(
- model_name='project',
- name='persons',
- ),
- migrations.AddField(
- model_name='project',
- name='leader_team',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='project_leader', to='organization-team.Team', verbose_name='lead team'),
- ),
- migrations.AddField(
- model_name='project',
- name='partner_organizations',
- field=models.ManyToManyField(blank=True, to='organization-team.Organization', verbose_name='partner organizations'),
- ),
- migrations.AddField(
- model_name='project',
- name='partner_persons',
- field=models.ManyToManyField(blank=True, to='organization-team.Person', verbose_name='partner persons'),
- ),
- migrations.AddField(
- model_name='project',
- name='partner_teams',
- field=models.ManyToManyField(blank=True, related_name='project_partners', to='organization-team.Team', verbose_name='partner teams'),
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-08-07 23:18
-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-core', '0010_auto_20160808_0118'),
- ('organization-project', '0002_auto_20160715_1807'),
- ]
-
- operations = [
- migrations.CreateModel(
- name='ProjectBlock',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('content', mezzanine.core.fields.RichTextField(verbose_name='Content')),
- ('title', models.CharField(max_length=1024, verbose_name='title')),
- ('with_separator', models.BooleanField(default=False)),
- ('background_color', models.CharField(blank=True, choices=[('black', 'black'), ('yellow', 'yellow'), ('red', 'red')], max_length=32, verbose_name='background color')),
- ],
- options={
- 'verbose_name': 'project block',
- },
- ),
- migrations.CreateModel(
- name='ProjectImage',
- 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')),
- ('file', mezzanine.core.fields.FileField(max_length=1024, verbose_name='Image')),
- ('description', models.TextField(blank=True, verbose_name='photo description')),
- ('credits', models.CharField(blank=True, max_length=256, null=True, verbose_name='photo credits')),
- ],
- options={
- 'ordering': ('_order',),
- 'verbose_name': 'project image',
- },
- ),
- migrations.CreateModel(
- name='ProjectLink',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('url', models.URLField(verbose_name='URL')),
- ('link_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization-core.LinkType', verbose_name='link type')),
- ],
- options={
- 'verbose_name': 'project link',
- },
- ),
- migrations.AlterModelOptions(
- name='project',
- options={'verbose_name': 'project'},
- ),
- migrations.AddField(
- model_name='project',
- name='website',
- field=models.URLField(blank=True, max_length=512, verbose_name='website'),
- ),
- migrations.AddField(
- model_name='projectlink',
- name='project',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization-project.Project'),
- ),
- migrations.AddField(
- model_name='projectimage',
- name='project',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization-project.Project'),
- ),
- migrations.AddField(
- model_name='projectblock',
- name='project',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-project.Project', verbose_name='project'),
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-08-09 12:13
-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-project', '0003_auto_20160808_0118'),
- ]
-
- operations = [
- migrations.AlterModelOptions(
- name='projectblock',
- options={},
- ),
- migrations.AlterModelOptions(
- name='projectimage',
- options={'ordering': ('_order',)},
- ),
- migrations.AlterModelOptions(
- name='projectlink',
- options={'verbose_name': 'link', 'verbose_name_plural': 'links'},
- ),
- migrations.AddField(
- model_name='projectblock',
- name='content_en',
- field=mezzanine.core.fields.RichTextField(null=True, verbose_name='Content'),
- ),
- migrations.AddField(
- model_name='projectblock',
- name='content_fr',
- field=mezzanine.core.fields.RichTextField(null=True, verbose_name='Content'),
- ),
- migrations.AddField(
- model_name='projectblock',
- name='title_en',
- field=models.CharField(max_length=1024, null=True, verbose_name='title'),
- ),
- migrations.AddField(
- model_name='projectblock',
- name='title_fr',
- field=models.CharField(max_length=1024, null=True, verbose_name='title'),
- ),
- migrations.AddField(
- model_name='projectimage',
- name='description_en',
- field=models.TextField(blank=True, null=True, verbose_name='description'),
- ),
- migrations.AddField(
- model_name='projectimage',
- name='description_fr',
- field=models.TextField(blank=True, null=True, verbose_name='description'),
- ),
- migrations.AlterField(
- model_name='projectblock',
- name='project',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='blocks', to='organization-project.Project', verbose_name='project'),
- ),
- migrations.AlterField(
- model_name='projectimage',
- name='credits',
- field=models.CharField(blank=True, max_length=256, null=True, verbose_name='credits'),
- ),
- migrations.AlterField(
- model_name='projectimage',
- name='description',
- field=models.TextField(blank=True, verbose_name='description'),
- ),
- migrations.AlterField(
- model_name='projectimage',
- name='project',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='images', to='organization-project.Project'),
- ),
- migrations.AlterField(
- model_name='projectlink',
- name='project',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='links', to='organization-project.Project'),
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-08-18 13:39
-from __future__ import unicode_literals
-
-from django.db import migrations, models
-import django.db.models.deletion
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-team', '0016_auto_20160812_1521'),
- ('organization-project', '0004_auto_20160809_1413'),
- ]
-
- operations = [
- migrations.RemoveField(
- model_name='project',
- name='leader_team',
- ),
- migrations.RemoveField(
- model_name='project',
- name='partner_organizations',
- ),
- migrations.RemoveField(
- model_name='project',
- name='partner_persons',
- ),
- migrations.RemoveField(
- model_name='project',
- name='partner_teams',
- ),
- migrations.AddField(
- model_name='project',
- name='lead_team',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='leader_projects', to='organization-team.Team', verbose_name='lead team'),
- ),
- migrations.AddField(
- model_name='project',
- name='organizations',
- field=models.ManyToManyField(blank=True, to='organization-team.Organization', verbose_name='organizations'),
- ),
- migrations.AddField(
- model_name='project',
- name='persons',
- field=models.ManyToManyField(blank=True, to='organization-team.Person', verbose_name='persons'),
- ),
- migrations.AddField(
- model_name='project',
- name='teams',
- field=models.ManyToManyField(blank=True, related_name='patner_projects', to='organization-team.Team', verbose_name='teams'),
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-08-18 14:56
-from __future__ import unicode_literals
-
-from django.db import migrations
-import mezzanine.core.fields
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-project', '0005_auto_20160818_1539'),
- ]
-
- operations = [
- migrations.AlterModelOptions(
- name='projectblock',
- options={'ordering': ('_order',)},
- ),
- migrations.AddField(
- model_name='projectblock',
- name='_order',
- field=mezzanine.core.fields.OrderField(null=True, verbose_name='Order'),
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-08-19 17:20
-from __future__ import unicode_literals
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-project', '0006_auto_20160818_1656'),
- ]
-
- operations = [
- migrations.AddField(
- model_name='project',
- name='date_begin',
- field=models.DateField(blank=True, null=True, verbose_name='begin date'),
- ),
- migrations.AddField(
- model_name='project',
- name='date_end',
- field=models.DateField(blank=True, null=True, verbose_name='end date'),
- ),
- ]
+++ /dev/null
-from __future__ import unicode_literals
-
-from django.db import models
-from django.utils.translation import ugettext_lazy as _
-
-from mezzanine.core.models import RichText, Displayable, Slugged, Orderable
-
-from organization.core.models import *
-
-
-class Project(Displayable, Period, RichText):
- """(Project description)"""
-
- lead_team = models.ForeignKey('organization-team.Team', verbose_name=_('lead team'), related_name='leader_projects', blank=True, null=True)
- persons = models.ManyToManyField('organization-team.Person', verbose_name=_('persons'), blank=True)
- teams = models.ManyToManyField('organization-team.Team', verbose_name=_('teams'), related_name='patner_projects', blank=True)
- organizations = models.ManyToManyField('organization-team.Organization', verbose_name=_('organizations'), blank=True)
- website = models.URLField(_('website'), max_length=512, blank=True)
-
- class Meta:
- verbose_name = _('project')
-
- def __str__(self):
- return self.title
-
- def get_absolute_url(self):
- return reverse("organization-project-detail", kwargs={"slug": self.slug})
-
-
-class ProjectBlock(Block):
-
- project = models.ForeignKey(Project, verbose_name=_('project'), related_name='blocks', blank=True, null=True, on_delete=models.SET_NULL)
-
-
-class ProjectImage(Image):
-
- project = models.ForeignKey(Project, related_name='images')
-
-
-class ProjectLink(Link):
-
- project = models.ForeignKey(Project, related_name='links')
+++ /dev/null
-from django.test import TestCase
-
-# Create your tests here.
+++ /dev/null
-from modeltranslation.translator import translator, register, TranslationOptions
-
-from organization.project.models import *
-
-
-@register(Project)
-class ProjectTranslationOptions(TranslationOptions):
-
- fields = ('title', 'description', 'content')
-
-
-@register(ProjectImage)
-class ProjectImageTranslationOptions(TranslationOptions):
-
- fields = ('description',)
-
-
-@register(ProjectLink)
-class ProjectLinkTranslationOptions(TranslationOptions):
- pass
-
-
-@register(ProjectBlock)
-class ProjectBlockTranslationOptions(TranslationOptions):
-
- fields = ('title', 'content', )
+++ /dev/null
-from __future__ import unicode_literals
-
-import django.views.i18n
-from django.conf.urls import patterns, include, url
-from django.conf.urls.i18n import i18n_patterns
-
-from mezzanine.core.views import direct_to_template
-from mezzanine.conf import settings
-
-from organization.project.views import *
-
-urlpatterns = [
- url("^project/detail/(?P<slug>.*)/$", ProjectDetailView.as_view(), name='organization-project-detail'),
-]
+++ /dev/null
-from django.shortcuts import render
-
-from organization.project.models import *
-from organization.core.views import *
-
-
-class ProjectListView(ListView):
-
- model = Project
- template_name='project/project_list.html'
-
-
-class ProjectDetailView(SlugMixin, DetailView):
-
- model = Project
- template_name='project/project_detail.html'
- context_object_name = 'project'
--- /dev/null
+"""
+Provides abstract models and admin features used throughout the various
+Mezzanine apps.
+"""
+from __future__ import unicode_literals
+
+from mezzanine import __version__ # noqa
+
+
+default_app_config = 'organization.projects.apps.ProjectsConfig'
--- /dev/null
+from copy import deepcopy
+
+from django.contrib import admin
+from django.utils.translation import ugettext_lazy as _
+
+from mezzanine.core.admin import *
+
+from organization.projects.models import *
+
+
+class ProjectLinkInline(StackedDynamicInlineAdmin):
+
+ model = ProjectLink
+
+
+class ProjectImageInline(TabularDynamicInlineAdmin):
+
+ model = ProjectImage
+
+
+class ProjectBlockInline(StackedDynamicInlineAdmin):
+
+ model = ProjectBlock
+
+
+class ProjectAdmin(admin.ModelAdmin):
+
+ model = Project
+
+
+class ProjectAdminDisplayable(DisplayableAdmin):
+
+ fieldsets = deepcopy(ProjectAdmin.fieldsets)
+ inlines = [ProjectImageInline, ProjectBlockInline, ProjectLinkInline, ]
+ filter_horizontal = ['persons', 'teams', 'organizations']
+
+
+admin.site.register(Project, ProjectAdminDisplayable)
--- /dev/null
+from __future__ import unicode_literals
+
+from django.apps import AppConfig
+
+
+class ProjectsConfig(AppConfig):
+
+ name = 'organization.projects'
+ label = 'organization-projects'
--- /dev/null
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-08-23 12:25
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+import mezzanine.core.fields
+
+
+class Migration(migrations.Migration):
+
+ initial = True
+
+ dependencies = [
+ ('organization-network', '0001_initial'),
+ ('sites', '0002_alter_domain_unique'),
+ ('organization-core', '0013_auto_20160823_1359'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='Project',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('keywords_string', models.CharField(blank=True, editable=False, max_length=500)),
+ ('title', models.CharField(max_length=500, verbose_name='Title')),
+ ('title_fr', models.CharField(max_length=500, null=True, verbose_name='Title')),
+ ('title_en', models.CharField(max_length=500, null=True, verbose_name='Title')),
+ ('slug', models.CharField(blank=True, help_text='Leave blank to have the URL auto-generated from the title.', max_length=2000, null=True, verbose_name='URL')),
+ ('_meta_title', models.CharField(blank=True, help_text='Optional title to be used in the HTML title tag. If left blank, the main title field will be used.', max_length=500, null=True, verbose_name='Title')),
+ ('description', models.TextField(blank=True, verbose_name='Description')),
+ ('description_fr', models.TextField(blank=True, null=True, verbose_name='Description')),
+ ('description_en', models.TextField(blank=True, null=True, verbose_name='Description')),
+ ('gen_description', models.BooleanField(default=True, help_text='If checked, the description will be automatically generated from content. Uncheck if you want to manually set a custom description.', verbose_name='Generate description')),
+ ('created', models.DateTimeField(editable=False, null=True)),
+ ('updated', models.DateTimeField(editable=False, null=True)),
+ ('status', models.IntegerField(choices=[(1, 'Draft'), (2, 'Published')], default=2, help_text='With Draft chosen, will only be shown for admin users on the site.', verbose_name='Status')),
+ ('publish_date', models.DateTimeField(blank=True, db_index=True, help_text="With Published chosen, won't be shown until this time", null=True, verbose_name='Published from')),
+ ('expiry_date', models.DateTimeField(blank=True, help_text="With Published chosen, won't be shown after this time", null=True, verbose_name='Expires on')),
+ ('short_url', models.URLField(blank=True, null=True)),
+ ('in_sitemap', models.BooleanField(default=True, verbose_name='Show in sitemap')),
+ ('content', mezzanine.core.fields.RichTextField(verbose_name='Content')),
+ ('content_fr', mezzanine.core.fields.RichTextField(null=True, verbose_name='Content')),
+ ('content_en', mezzanine.core.fields.RichTextField(null=True, verbose_name='Content')),
+ ('date_begin', models.DateField(blank=True, null=True, verbose_name='begin date')),
+ ('date_end', models.DateField(blank=True, null=True, verbose_name='end date')),
+ ('website', models.URLField(blank=True, max_length=512, verbose_name='website')),
+ ('lead_team', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='leader_projects', to='organization-network.Team', verbose_name='lead team')),
+ ('organizations', models.ManyToManyField(blank=True, to='organization-network.Organization', verbose_name='organizations')),
+ ('persons', models.ManyToManyField(blank=True, to='organization-network.Person', verbose_name='persons')),
+ ('site', models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.Site')),
+ ('teams', models.ManyToManyField(blank=True, related_name='patner_projects', to='organization-network.Team', verbose_name='teams')),
+ ],
+ options={
+ 'verbose_name': 'project',
+ },
+ ),
+ migrations.CreateModel(
+ name='ProjectBlock',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('content', mezzanine.core.fields.RichTextField(verbose_name='Content')),
+ ('content_fr', mezzanine.core.fields.RichTextField(null=True, verbose_name='Content')),
+ ('content_en', mezzanine.core.fields.RichTextField(null=True, verbose_name='Content')),
+ ('_order', mezzanine.core.fields.OrderField(null=True, verbose_name='Order')),
+ ('title', models.CharField(max_length=1024, verbose_name='title')),
+ ('title_fr', models.CharField(max_length=1024, null=True, verbose_name='title')),
+ ('title_en', models.CharField(max_length=1024, null=True, verbose_name='title')),
+ ('description', models.TextField(blank=True, verbose_name='description')),
+ ('with_separator', models.BooleanField(default=False)),
+ ('background_color', models.CharField(blank=True, choices=[('black', 'black'), ('yellow', 'yellow'), ('red', 'red')], max_length=32, verbose_name='background color')),
+ ('project', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='blocks', to='organization-projects.Project', verbose_name='project')),
+ ],
+ options={
+ 'ordering': ('_order',),
+ },
+ ),
+ migrations.CreateModel(
+ name='ProjectImage',
+ 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')),
+ ('description', models.TextField(blank=True, verbose_name='description')),
+ ('description_fr', models.TextField(blank=True, null=True, verbose_name='description')),
+ ('description_en', models.TextField(blank=True, null=True, verbose_name='description')),
+ ('file', mezzanine.core.fields.FileField(max_length=1024, verbose_name='Image')),
+ ('credits', models.CharField(blank=True, max_length=256, null=True, verbose_name='credits')),
+ ('project', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='images', to='organization-projects.Project')),
+ ],
+ options={
+ 'ordering': ('_order',),
+ },
+ ),
+ migrations.CreateModel(
+ name='ProjectLink',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('url', models.URLField(verbose_name='URL')),
+ ('link_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization-core.LinkType', verbose_name='link type')),
+ ('project', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='links', to='organization-projects.Project')),
+ ],
+ options={
+ 'verbose_name_plural': 'links',
+ 'abstract': False,
+ 'verbose_name': 'link',
+ },
+ ),
+ ]
--- /dev/null
+from __future__ import unicode_literals
+
+from django.db import models
+from django.utils.translation import ugettext_lazy as _
+
+from mezzanine.core.models import RichText, Displayable, Slugged, Orderable
+
+from organization.core.models import *
+
+
+class Project(Displayable, Period, RichText):
+ """(Project description)"""
+
+ lead_team = models.ForeignKey('organization-network.Team', verbose_name=_('lead team'), related_name='leader_projects', blank=True, null=True)
+ persons = models.ManyToManyField('organization-network.Person', verbose_name=_('persons'), blank=True)
+ teams = models.ManyToManyField('organization-network.Team', verbose_name=_('teams'), related_name='patner_projects', blank=True)
+ organizations = models.ManyToManyField('organization-network.Organization', verbose_name=_('organizations'), blank=True)
+ website = models.URLField(_('website'), max_length=512, blank=True)
+
+ class Meta:
+ verbose_name = _('project')
+
+ def __str__(self):
+ return self.title
+
+ def get_absolute_url(self):
+ return reverse("organization-project-detail", kwargs={"slug": self.slug})
+
+
+class ProjectBlock(Block):
+
+ project = models.ForeignKey(Project, verbose_name=_('project'), related_name='blocks', blank=True, null=True, on_delete=models.SET_NULL)
+
+
+class ProjectImage(Image):
+
+ project = models.ForeignKey(Project, related_name='images')
+
+
+class ProjectLink(Link):
+
+ project = models.ForeignKey(Project, related_name='links')
--- /dev/null
+from django.test import TestCase
+
+# Create your tests here.
--- /dev/null
+from modeltranslation.translator import translator, register, TranslationOptions
+
+from organization.projects.models import *
+
+
+@register(Project)
+class ProjectTranslationOptions(TranslationOptions):
+
+ fields = ('title', 'description', 'content')
+
+
+@register(ProjectImage)
+class ProjectImageTranslationOptions(TranslationOptions):
+
+ fields = ('description',)
+
+
+@register(ProjectLink)
+class ProjectLinkTranslationOptions(TranslationOptions):
+ pass
+
+
+@register(ProjectBlock)
+class ProjectBlockTranslationOptions(TranslationOptions):
+
+ fields = ('title', 'content', )
--- /dev/null
+from __future__ import unicode_literals
+
+import django.views.i18n
+from django.conf.urls import patterns, include, url
+from django.conf.urls.i18n import i18n_patterns
+
+from mezzanine.core.views import direct_to_template
+from mezzanine.conf import settings
+
+from organization.projects.views import *
+
+urlpatterns = [
+ url("^project/detail/(?P<slug>.*)/$", ProjectDetailView.as_view(), name='organization-projects-project-detail'),
+]
--- /dev/null
+from django.shortcuts import render
+
+from organization.projects.models import *
+from organization.core.views import *
+
+
+class ProjectListView(ListView):
+
+ model = Project
+ template_name='project/project_list.html'
+
+
+class ProjectDetailView(SlugMixin, DetailView):
+
+ model = Project
+ template_name='project/project_detail.html'
+ context_object_name = 'project'
+++ /dev/null
-"""
-Provides abstract models and admin features used throughout the various
-Mezzanine apps.
-"""
-from __future__ import unicode_literals
-
-from mezzanine import __version__ # noqa
-
-
-default_app_config = 'organization.team.apps.teamConfig'
+++ /dev/null
-from django.contrib import admin
-from django import forms
-from copy import deepcopy
-from mezzanine.core.admin import *
-from mezzanine.pages.admin import PageAdmin
-
-from organization.team.models import *
-from organization.core.admin import *
-
-
-class OrganizationAdmin(BaseTranslationModelAdmin):
-
- model = Organization
-
-
-class PersonActivityInline(StackedDynamicInlineAdmin):
-
- model = PersonActivity
- fk_name = 'person'
-
-
-class TeamAdmin(PageAdmin):
-
- inlines = [PageBlockInline, PageImageInline]
-
-
-class DepartmentAdmin(PageAdmin):
-
- inlines = [PageBlockInline, PageImageInline]
-
-
-class PersonAdminBase(admin.ModelAdmin):
-
- model = Person
-
-
-class PersonLinkInline(StackedDynamicInlineAdmin):
-
- model = PersonLink
-
-
-class PersonAdmin(BaseTranslationModelAdmin):
-
- model = Person
- inlines = [PersonActivityInline, PersonLinkInline, ]
- first_fields = ['last_name', 'first_name', 'title', 'gender', 'user']
-
- def get_fieldsets(self, request, obj = None):
- res = super(PersonAdmin, self).get_fieldsets(request, obj)
- for field in reversed(self.first_fields):
- index = res[0][1]['fields'].index(field)
- res[0][1]['fields'].insert(0, res[0][1]['fields'].pop(index))
- return res
-
-
-admin.site.register(Organization, OrganizationAdmin)
-admin.site.register(OrganizationType)
-admin.site.register(Department, DepartmentAdmin)
-# admin.site.register(Team, TeamAdmin)
-admin.site.register(Person, PersonAdmin)
+++ /dev/null
-from __future__ import unicode_literals
-
-from django.apps import AppConfig
-
-
-class teamConfig(AppConfig):
-
- name = 'organization.team'
- label = 'organization-team'
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-07-14 16:55
-from __future__ import unicode_literals
-
-from django.conf import settings
-from django.db import migrations, models
-import django.db.models.deletion
-import django_countries.fields
-import mezzanine.core.fields
-import mezzanine.utils.models
-
-
-class Migration(migrations.Migration):
-
- initial = True
-
- dependencies = [
- migrations.swappable_dependency(settings.AUTH_USER_MODEL),
- ('sites', '0002_alter_domain_unique'),
- ]
-
- operations = [
- migrations.CreateModel(
- name='Activity',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('content', mezzanine.core.fields.RichTextField(verbose_name='Content')),
- ('content_fr', mezzanine.core.fields.RichTextField(null=True, verbose_name='Content')),
- ('content_en', mezzanine.core.fields.RichTextField(null=True, verbose_name='Content')),
- ('date_begin', models.DateField(blank=True, null=True, verbose_name='begin date')),
- ('date_end', models.DateField(blank=True, null=True, verbose_name='end date')),
- ('role', models.CharField(blank=True, max_length=512, verbose_name='role')),
- ('description', models.TextField(blank=True, verbose_name='work')),
- ('description_fr', models.TextField(blank=True, null=True, verbose_name='work')),
- ('description_en', models.TextField(blank=True, null=True, verbose_name='work')),
- ],
- options={
- 'abstract': False,
- },
- ),
- migrations.CreateModel(
- name='Address',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('address', models.TextField(blank=True, verbose_name='address')),
- ('postal_code', models.CharField(blank=True, max_length=16, verbose_name='postal code')),
- ('country', django_countries.fields.CountryField(max_length=2, verbose_name='country')),
- ],
- ),
- migrations.CreateModel(
- name='Department',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('name', models.CharField(max_length=512, verbose_name='name')),
- ('name_fr', models.CharField(max_length=512, null=True, verbose_name='name')),
- ('name_en', models.CharField(max_length=512, null=True, verbose_name='name')),
- ('description', models.TextField(blank=True, verbose_name='description')),
- ('description_fr', models.TextField(blank=True, null=True, verbose_name='description')),
- ('description_en', models.TextField(blank=True, null=True, verbose_name='description')),
- ('url', models.URLField(blank=True, max_length=512, verbose_name='URL')),
- ('weaving_css_class', models.CharField(blank=True, max_length=64, verbose_name='weaving CSS class')),
- ],
- options={
- 'verbose_name': 'department',
- },
- ),
- migrations.CreateModel(
- name='Link',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('url', models.URLField(verbose_name='URL')),
- ],
- ),
- migrations.CreateModel(
- name='LinkType',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('name', models.CharField(max_length=256, verbose_name='Name')),
- ('slug', models.SlugField(blank=True, help_text='Use this field to define a simple identifier that can be used to style the different link types (i.e. assign social media icons to them)', max_length=256, verbose_name='Slug')),
- ('ordering', models.PositiveIntegerField(blank=True, null=True, verbose_name='Ordering')),
- ],
- options={
- 'ordering': ['ordering'],
- },
- ),
- migrations.CreateModel(
- name='Nationality',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('name', models.CharField(max_length=128, verbose_name='name')),
- ],
- ),
- migrations.CreateModel(
- name='OrganizationType',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('name', models.CharField(max_length=512, verbose_name='name')),
- ('description', models.TextField(blank=True, verbose_name='description')),
- ],
- options={
- 'verbose_name': 'organization type',
- },
- ),
- migrations.CreateModel(
- name='Person',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('keywords_string', models.CharField(blank=True, editable=False, max_length=500)),
- ('title', models.CharField(max_length=500, verbose_name='Title')),
- ('slug', models.CharField(blank=True, help_text='Leave blank to have the URL auto-generated from the title.', max_length=2000, null=True, verbose_name='URL')),
- ('_meta_title', models.CharField(blank=True, help_text='Optional title to be used in the HTML title tag. If left blank, the main title field will be used.', max_length=500, null=True, verbose_name='Title')),
- ('description', models.TextField(blank=True, verbose_name='Description')),
- ('gen_description', models.BooleanField(default=True, help_text='If checked, the description will be automatically generated from content. Uncheck if you want to manually set a custom description.', verbose_name='Generate description')),
- ('created', models.DateTimeField(editable=False, null=True)),
- ('updated', models.DateTimeField(editable=False, null=True)),
- ('status', models.IntegerField(choices=[(1, 'Draft'), (2, 'Published')], default=2, help_text='With Draft chosen, will only be shown for admin users on the site.', verbose_name='Status')),
- ('publish_date', models.DateTimeField(blank=True, db_index=True, help_text="With Published chosen, won't be shown until this time", null=True, verbose_name='Published from')),
- ('expiry_date', models.DateTimeField(blank=True, help_text="With Published chosen, won't be shown after this time", null=True, verbose_name='Expires on')),
- ('short_url', models.URLField(blank=True, null=True)),
- ('in_sitemap', models.BooleanField(default=True, verbose_name='Show in sitemap')),
- ('photo', mezzanine.core.fields.FileField(blank=True, max_length=1024, verbose_name='photo')),
- ('photo_credits', models.CharField(blank=True, max_length=255, null=True, verbose_name='photo credits')),
- ('photo_alignment', models.CharField(blank=True, choices=[('left', 'left'), ('center', 'center'), ('right', 'right')], default='left', max_length=32, verbose_name='photo alignment')),
- ('photo_description', models.TextField(blank=True, verbose_name='photo description')),
- ('photo_card', mezzanine.core.fields.FileField(blank=True, max_length=1024, verbose_name='card photo')),
- ('photo_card_credits', models.CharField(blank=True, max_length=255, null=True, verbose_name='photo card credits')),
- ('photo_slider', mezzanine.core.fields.FileField(blank=True, max_length=1024, verbose_name='slider photo')),
- ('photo_slider_credits', models.CharField(blank=True, max_length=255, null=True, verbose_name='photo slider credits')),
- ('person_title', models.CharField(blank=True, choices=[('Dr', 'Dr'), ('Prof', 'Prof'), ('Prof Dr', 'Prof Dr')], max_length=16, verbose_name='title')),
- ('gender', models.CharField(blank=True, choices=[('male', 'male'), ('female', 'female')], max_length=16, verbose_name='gender')),
- ('first_name', models.CharField(blank=True, max_length=255, null=True, verbose_name='first name')),
- ('last_name', models.CharField(blank=True, max_length=255, null=True, verbose_name='last name')),
- ('birthday', models.DateField(blank=True, verbose_name='birthday')),
- ('bio', mezzanine.core.fields.RichTextField(blank=True, verbose_name='biography')),
- ('bio_fr', mezzanine.core.fields.RichTextField(blank=True, null=True, verbose_name='biography')),
- ('bio_en', mezzanine.core.fields.RichTextField(blank=True, null=True, verbose_name='biography')),
- ('site', models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.Site')),
- ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='user')),
- ],
- options={
- 'verbose_name': 'person',
- 'ordering': ['last_name'],
- },
- bases=(mezzanine.utils.models.AdminThumbMixin, models.Model),
- ),
- migrations.CreateModel(
- name='Team',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('name', models.CharField(max_length=512, verbose_name='name')),
- ('name_fr', models.CharField(max_length=512, null=True, verbose_name='name')),
- ('name_en', models.CharField(max_length=512, null=True, verbose_name='name')),
- ('description', models.TextField(blank=True, verbose_name='description')),
- ('description_fr', models.TextField(blank=True, null=True, verbose_name='description')),
- ('description_en', models.TextField(blank=True, null=True, verbose_name='description')),
- ('department', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-team.Department', verbose_name='department')),
- ],
- options={
- 'abstract': False,
- },
- ),
- migrations.CreateModel(
- name='Organization',
- fields=[
- ('address_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='organization-team.Address')),
- ('name', models.CharField(max_length=512, verbose_name='name')),
- ('description', models.TextField(blank=True, verbose_name='description')),
- ('description_fr', models.TextField(blank=True, null=True, verbose_name='description')),
- ('description_en', models.TextField(blank=True, null=True, verbose_name='description')),
- ('url', models.URLField(blank=True, max_length=512, verbose_name='URL')),
- ('type', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-team.OrganizationType', verbose_name='organization type')),
- ],
- options={
- 'verbose_name': 'organization',
- },
- bases=('organization-team.address', models.Model),
- ),
- migrations.AddField(
- model_name='link',
- name='link_type',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization-team.LinkType', verbose_name='Link type'),
- ),
- migrations.AddField(
- model_name='link',
- name='person',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization-team.Person', verbose_name='Person'),
- ),
- migrations.AddField(
- model_name='activity',
- name='person',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization-team.Person', verbose_name='person'),
- ),
- migrations.AddField(
- model_name='activity',
- name='teams',
- field=models.ManyToManyField(to='organization-team.Team', verbose_name='teams'),
- ),
- migrations.AddField(
- model_name='person',
- name='organization',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-team.Organization', verbose_name='organization'),
- ),
- migrations.AddField(
- model_name='department',
- name='organization',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization-team.Organization', verbose_name='organization'),
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-07-14 17:05
-from __future__ import unicode_literals
-
-from django.db import migrations
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-team', '0001_initial'),
- ]
-
- operations = [
- migrations.RemoveField(
- model_name='person',
- name='_meta_title',
- ),
- migrations.RemoveField(
- model_name='person',
- name='created',
- ),
- migrations.RemoveField(
- model_name='person',
- name='description',
- ),
- migrations.RemoveField(
- model_name='person',
- name='expiry_date',
- ),
- migrations.RemoveField(
- model_name='person',
- name='gen_description',
- ),
- migrations.RemoveField(
- model_name='person',
- name='in_sitemap',
- ),
- migrations.RemoveField(
- model_name='person',
- name='keywords_string',
- ),
- migrations.RemoveField(
- model_name='person',
- name='publish_date',
- ),
- migrations.RemoveField(
- model_name='person',
- name='short_url',
- ),
- migrations.RemoveField(
- model_name='person',
- name='site',
- ),
- migrations.RemoveField(
- model_name='person',
- name='slug',
- ),
- migrations.RemoveField(
- model_name='person',
- name='status',
- ),
- migrations.RemoveField(
- model_name='person',
- name='title',
- ),
- migrations.RemoveField(
- model_name='person',
- name='updated',
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-07-14 17:43
-from __future__ import unicode_literals
-
-from django.db import migrations
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-team', '0002_auto_20160714_1905'),
- ]
-
- operations = [
- migrations.RenameField(
- model_name='person',
- old_name='person_title',
- new_name='title',
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-07-15 16:07
-from __future__ import unicode_literals
-
-from django.db import migrations, models
-import django.db.models.deletion
-import mezzanine.core.fields
-import organization.team.nationalities.fields
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-team', '0003_auto_20160714_1943'),
- ]
-
- operations = [
- migrations.DeleteModel(
- name='Nationality',
- ),
- migrations.AlterModelOptions(
- name='activity',
- options={'verbose_name': 'activity'},
- ),
- migrations.AlterModelOptions(
- name='link',
- options={'verbose_name': 'link'},
- ),
- migrations.AlterModelOptions(
- name='team',
- options={'verbose_name': 'team'},
- ),
- migrations.AddField(
- model_name='organization',
- name='photo',
- field=mezzanine.core.fields.FileField(blank=True, max_length=1024, verbose_name='photo'),
- ),
- migrations.AddField(
- model_name='organization',
- name='photo_alignment',
- field=models.CharField(blank=True, choices=[('left', 'left'), ('center', 'center'), ('right', 'right')], default='left', max_length=32, verbose_name='photo alignment'),
- ),
- migrations.AddField(
- model_name='organization',
- name='photo_card',
- field=mezzanine.core.fields.FileField(blank=True, max_length=1024, verbose_name='card photo'),
- ),
- migrations.AddField(
- model_name='organization',
- name='photo_card_credits',
- field=models.CharField(blank=True, max_length=255, null=True, verbose_name='photo card credits'),
- ),
- migrations.AddField(
- model_name='organization',
- name='photo_credits',
- field=models.CharField(blank=True, max_length=255, null=True, verbose_name='photo credits'),
- ),
- migrations.AddField(
- model_name='organization',
- name='photo_description',
- field=models.TextField(blank=True, verbose_name='photo description'),
- ),
- migrations.AddField(
- model_name='organization',
- name='photo_slider',
- field=mezzanine.core.fields.FileField(blank=True, max_length=1024, verbose_name='slider photo'),
- ),
- migrations.AddField(
- model_name='organization',
- name='photo_slider_credits',
- field=models.CharField(blank=True, max_length=255, null=True, verbose_name='photo slider credits'),
- ),
- migrations.AddField(
- model_name='person',
- name='nationality',
- field=organization.team.nationalities.fields.NationalityField(blank=True, choices=[('AF', 'Afghan'), ('AL', 'Albanian'), ('DZ', 'Algerian'), ('AD', 'Andorran'), ('AO', 'Angolan'), ('AR', 'Argentinian'), ('AM', 'Armenian'), ('AU', 'Australian'), ('AT', 'Austrian'), ('AZ', 'Azerbaijani'), ('BS', 'Bahamian'), ('BH', 'Bahraini'), ('BD', 'Bangladeshi'), ('BB', 'Barbadian'), ('BY', 'Belorussian'), ('BE', 'Belgian'), ('BZ', 'Belizian'), ('BJ', 'Beninese'), ('BT', 'Bhutanese'), ('BO', 'Bolivian'), ('BA', 'Bosnian'), ('BW', 'Botswanan'), ('BR', 'Brazilian'), ('GB', 'British'), ('BN', 'Bruneian'), ('BG', 'Bulgarian'), ('BF', 'Burkinese'), ('MM', 'Burmese'), ('BF', 'Burundian'), ('BI', 'Cambodian'), ('CM', 'Cameroonian'), ('CA', 'Canadian'), ('CV', 'Cape Verdean'), ('TD', 'Chadian'), ('CL', 'Chilean'), ('CN', 'Chinese'), ('CO', 'Colombian'), ('CG', 'Congolese'), ('CR', 'Costa Rican'), ('HR', 'Croatian'), ('CU', 'Cuban'), ('CY', 'Cypriot'), ('CZ', 'Czech'), ('DK', 'Danish'), ('DJ', 'Djiboutian'), ('DM', 'Dominican'), ('DO', 'Dominican'), ('EC', 'Ecuadorean'), ('EG', 'Egyptian'), ('SV', 'Salvadorean'), ('GB', 'English'), ('ER', 'Eritrean'), ('EE', 'Estonian'), ('ET', 'Ethiopian'), ('FJ', 'Fijian'), ('FI', 'Finnish'), ('FR', 'French'), ('GA', 'Gabonese'), ('GM', 'Gambian'), ('GE', 'Georgian'), ('DE', 'German'), ('GH', 'Ghanaian'), ('GR', 'Greek'), ('GD', 'Grenadian'), ('GT', 'Guatemalan'), ('GQ', 'Guinean'), ('GY', 'Guyanese'), ('HT', 'Haitian'), ('NL', 'Dutch'), ('HN', 'Honduran'), ('HU', 'Hungarian'), ('IS', 'Icelandic'), ('IO', 'Indian'), ('ID', 'Indonesian'), ('IR', 'Iranian'), ('IQ', 'Iraqi'), ('IE', 'Irish'), ('IL', 'Israeli'), ('IT', 'Italian'), ('JM', 'Jamaican'), ('JP', 'Japanese'), ('JO', 'Jordanian'), ('KZ', 'Kazakh'), ('KE', 'Kenyan'), ('KW', 'Kuwaiti'), ('LA', 'Laotian'), ('LV', 'Latvian'), ('LB', 'Lebanese'), ('LR', 'Liberian'), ('LY', 'Libyan'), ('LT', 'Lithuanian'), ('MK', 'Macedonian'), ('MG', 'Malagasay'), ('MW', 'Malawian'), ('MY', 'Malaysian'), ('MV', 'Maldivian'), ('ML', 'Malian'), ('MT', 'Maltese'), ('MR', 'Mauritanian'), ('MU', 'Mauritian'), ('MX', 'Mexican'), ('MD', 'Moldovan'), ('MC', 'Monacan'), ('MN', 'Mongolian'), ('ME', 'Montenegrin'), ('MA', 'Moroccan'), ('MZ', 'Mozambican'), ('NA', 'Namibian'), ('NP', 'Nepalese'), ('NI', 'Nicaraguan'), ('NE', 'Nigerien'), ('NG', 'Nigerian'), ('KP', 'North Korean'), ('NO', 'Norwegian'), ('OM', 'Omani'), ('PK', 'Pakistani'), ('PA', 'Panamanian'), ('PG', 'Guinean'), ('PY', 'Paraguayan'), ('PE', 'Peruvian'), ('PH', 'Philippine'), ('PL', 'Polish'), ('PT', 'Portuguese'), ('QA', 'Qatari'), ('RO', 'Romanian'), ('RU', 'Russian'), ('RW', 'Rwandan'), ('SA', 'Saudi'), ('AE', 'Scottish'), ('SN', 'Senegalese'), ('RS', 'Serbian'), ('SC', 'Seychellois'), ('SL', 'Sierra Leonian'), ('SG', 'Singaporean'), ('SK', 'Slovak'), ('SI', 'Slovenian'), ('SO', 'Somali'), ('ZA', 'South African'), ('KR', 'South Korean'), ('ES', 'Spanish'), ('LK', 'Sri Lankan'), ('SD', 'Sudanese'), ('SR', 'Surinamese'), ('SZ', 'Swazi'), ('SE', 'Swedish'), ('CH', 'Swiss'), ('SY', 'Syrian'), ('TW', 'Taiwanese'), ('TJ', 'Tadjik'), ('TZ', 'Tanzanian'), ('TH', 'Thai'), ('TG', 'Togolese'), ('TT', 'Trinidadian'), ('TN', 'Tunisian'), ('TR', 'Turkish'), ('TM', 'Turkmen'), ('TV', 'Tuvaluan'), ('UG', 'Ugandan'), ('UA', 'Ukrainian'), ('UY', 'Uruguayan'), ('UZ', 'Uzbek'), ('VU', 'Vanuatuan'), ('VE', 'Venezuelan'), ('VN', 'Vietnamese'), ('GB', 'Welsh'), ('YE', 'Yemeni'), ('ZM', 'Zambian'), ('ZW', 'Zimbabwean')], max_length=2, verbose_name='nationality'),
- ),
- migrations.AddField(
- model_name='team',
- name='partner_organizations',
- field=models.ManyToManyField(blank=True, to='organization-team.Organization', verbose_name='partner organizations'),
- ),
- migrations.AddField(
- model_name='team',
- name='partner_teams',
- field=models.ManyToManyField(blank=True, to='organization-team.Team', verbose_name='partner teams'),
- ),
- migrations.AlterField(
- model_name='activity',
- name='description',
- field=models.TextField(blank=True, verbose_name='description'),
- ),
- migrations.AlterField(
- model_name='activity',
- name='description_en',
- field=models.TextField(blank=True, null=True, verbose_name='description'),
- ),
- migrations.AlterField(
- model_name='activity',
- name='description_fr',
- field=models.TextField(blank=True, null=True, verbose_name='description'),
- ),
- migrations.AlterField(
- model_name='link',
- name='link_type',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization-team.LinkType', verbose_name='link type'),
- ),
- migrations.AlterField(
- model_name='link',
- name='person',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization-team.Person', verbose_name='person'),
- ),
- migrations.AlterField(
- model_name='linktype',
- name='name',
- field=models.CharField(max_length=256, verbose_name='name'),
- ),
- migrations.AlterField(
- model_name='linktype',
- name='ordering',
- field=models.PositiveIntegerField(blank=True, null=True, verbose_name='ordering'),
- ),
- migrations.AlterField(
- model_name='linktype',
- name='slug',
- field=models.SlugField(blank=True, help_text='Use this field to define a simple identifier that can be used to style the different link types (i.e. assign social media icons to them)', max_length=256, verbose_name='slug'),
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-07-15 16:15
-from __future__ import unicode_literals
-
-from django.db import migrations
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-team', '0004_auto_20160715_1807'),
- ]
-
- operations = [
- migrations.RemoveField(
- model_name='person',
- name='nationality',
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-07-20 19:36
-from __future__ import unicode_literals
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-team', '0005_remove_person_nationality'),
- ]
-
- operations = [
- migrations.AddField(
- model_name='organization',
- name='is_on_map',
- field=models.BooleanField(default=True, verbose_name='is on map'),
- ),
- migrations.AlterField(
- model_name='person',
- name='birthday',
- field=models.DateField(blank=True, null=True, verbose_name='birthday'),
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-07-21 11:51
-from __future__ import unicode_literals
-
-from django.db import migrations, models
-import django.db.models.deletion
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('sites', '0002_alter_domain_unique'),
- ('organization-team', '0006_auto_20160720_2136'),
- ]
-
- operations = [
- migrations.RemoveField(
- model_name='department',
- name='name',
- ),
- migrations.RemoveField(
- model_name='department',
- name='name_en',
- ),
- migrations.RemoveField(
- model_name='department',
- name='name_fr',
- ),
- migrations.RemoveField(
- model_name='organization',
- name='name',
- ),
- migrations.RemoveField(
- model_name='team',
- name='name',
- ),
- migrations.RemoveField(
- model_name='team',
- name='name_en',
- ),
- migrations.RemoveField(
- model_name='team',
- name='name_fr',
- ),
- migrations.AddField(
- model_name='department',
- name='site',
- field=models.ForeignKey(default=1, editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.Site'),
- preserve_default=False,
- ),
- migrations.AddField(
- model_name='department',
- name='slug',
- field=models.CharField(blank=True, help_text='Leave blank to have the URL auto-generated from the title.', max_length=2000, null=True, verbose_name='URL'),
- ),
- migrations.AddField(
- model_name='department',
- name='title',
- field=models.CharField(default='', max_length=500, verbose_name='Title'),
- preserve_default=False,
- ),
- migrations.AddField(
- model_name='department',
- name='title_en',
- field=models.CharField(max_length=500, null=True, verbose_name='Title'),
- ),
- migrations.AddField(
- model_name='department',
- name='title_fr',
- field=models.CharField(max_length=500, null=True, verbose_name='Title'),
- ),
- migrations.AddField(
- model_name='organization',
- name='site',
- field=models.ForeignKey(default=1, editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.Site'),
- preserve_default=False,
- ),
- migrations.AddField(
- model_name='organization',
- name='slug',
- field=models.CharField(blank=True, help_text='Leave blank to have the URL auto-generated from the title.', max_length=2000, null=True, verbose_name='URL'),
- ),
- migrations.AddField(
- model_name='organization',
- name='title',
- field=models.CharField(default='', max_length=500, verbose_name='Title'),
- preserve_default=False,
- ),
- migrations.AddField(
- model_name='team',
- name='site',
- field=models.ForeignKey(default=1, editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.Site'),
- preserve_default=False,
- ),
- migrations.AddField(
- model_name='team',
- name='slug',
- field=models.CharField(blank=True, help_text='Leave blank to have the URL auto-generated from the title.', max_length=2000, null=True, verbose_name='URL'),
- ),
- migrations.AddField(
- model_name='team',
- name='title',
- field=models.CharField(default='', max_length=500, verbose_name='Title'),
- preserve_default=False,
- ),
- migrations.AddField(
- model_name='team',
- name='title_en',
- field=models.CharField(max_length=500, null=True, verbose_name='Title'),
- ),
- migrations.AddField(
- model_name='team',
- name='title_fr',
- field=models.CharField(max_length=500, null=True, verbose_name='Title'),
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-07-24 23:17
-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 = [
- ('pages', '0001_initial'),
- ('sites', '0002_alter_domain_unique'),
- ('organization-team', '0007_auto_20160721_1351'),
- ]
-
- operations = [
- migrations.AlterModelOptions(
- name='department',
- options={'ordering': ('_order',), 'verbose_name': 'department'},
- ),
- migrations.AlterModelOptions(
- name='team',
- options={'ordering': ('_order',), 'verbose_name': 'team'},
- ),
- migrations.RemoveField(
- model_name='department',
- name='description',
- ),
- migrations.RemoveField(
- model_name='department',
- name='description_en',
- ),
- migrations.RemoveField(
- model_name='department',
- name='description_fr',
- ),
- migrations.RemoveField(
- model_name='department',
- name='id',
- ),
- migrations.RemoveField(
- model_name='department',
- name='site',
- ),
- migrations.RemoveField(
- model_name='department',
- name='slug',
- ),
- migrations.RemoveField(
- model_name='department',
- name='title',
- ),
- migrations.RemoveField(
- model_name='department',
- name='title_en',
- ),
- migrations.RemoveField(
- model_name='department',
- name='title_fr',
- ),
- migrations.RemoveField(
- model_name='organizationtype',
- name='description',
- ),
- migrations.RemoveField(
- model_name='team',
- name='department',
- ),
- migrations.RemoveField(
- model_name='team',
- name='description',
- ),
- migrations.RemoveField(
- model_name='team',
- name='description_en',
- ),
- migrations.RemoveField(
- model_name='team',
- name='description_fr',
- ),
- migrations.RemoveField(
- model_name='team',
- name='id',
- ),
- migrations.RemoveField(
- model_name='team',
- name='site',
- ),
- migrations.RemoveField(
- model_name='team',
- name='slug',
- ),
- migrations.RemoveField(
- model_name='team',
- name='title',
- ),
- migrations.RemoveField(
- model_name='team',
- name='title_en',
- ),
- migrations.RemoveField(
- model_name='team',
- name='title_fr',
- ),
- migrations.AddField(
- model_name='department',
- name='content',
- field=mezzanine.core.fields.RichTextField(default='', verbose_name='Content'),
- preserve_default=False,
- ),
- migrations.AddField(
- model_name='department',
- name='page_ptr',
- field=models.OneToOneField(auto_created=True, default=1, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='pages.Page'),
- preserve_default=False,
- ),
- migrations.AddField(
- model_name='department',
- name='sub_title',
- field=models.TextField(blank=True, max_length=1024, verbose_name='sub title'),
- ),
- migrations.AddField(
- model_name='person',
- name='_meta_title',
- field=models.CharField(blank=True, help_text='Optional title to be used in the HTML title tag. If left blank, the main title field will be used.', max_length=500, null=True, verbose_name='Title'),
- ),
- migrations.AddField(
- model_name='person',
- name='created',
- field=models.DateTimeField(editable=False, null=True),
- ),
- migrations.AddField(
- model_name='person',
- name='description',
- field=models.TextField(blank=True, verbose_name='Description'),
- ),
- migrations.AddField(
- model_name='person',
- name='expiry_date',
- field=models.DateTimeField(blank=True, help_text="With Published chosen, won't be shown after this time", null=True, verbose_name='Expires on'),
- ),
- migrations.AddField(
- model_name='person',
- name='gen_description',
- field=models.BooleanField(default=True, help_text='If checked, the description will be automatically generated from content. Uncheck if you want to manually set a custom description.', verbose_name='Generate description'),
- ),
- migrations.AddField(
- model_name='person',
- name='in_sitemap',
- field=models.BooleanField(default=True, verbose_name='Show in sitemap'),
- ),
- migrations.AddField(
- model_name='person',
- name='keywords_string',
- field=models.CharField(blank=True, editable=False, max_length=500),
- ),
- migrations.AddField(
- model_name='person',
- name='person_title',
- field=models.CharField(blank=True, choices=[('Dr', 'Dr'), ('Prof', 'Prof'), ('Prof Dr', 'Prof Dr')], max_length=16, verbose_name='title'),
- ),
- migrations.AddField(
- model_name='person',
- name='publish_date',
- field=models.DateTimeField(blank=True, db_index=True, help_text="With Published chosen, won't be shown until this time", null=True, verbose_name='Published from'),
- ),
- migrations.AddField(
- model_name='person',
- name='short_url',
- field=models.URLField(blank=True, null=True),
- ),
- migrations.AddField(
- model_name='person',
- name='site',
- field=models.ForeignKey(default=1, editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.Site'),
- preserve_default=False,
- ),
- migrations.AddField(
- model_name='person',
- name='slug',
- field=models.CharField(blank=True, help_text='Leave blank to have the URL auto-generated from the title.', max_length=2000, null=True, verbose_name='URL'),
- ),
- migrations.AddField(
- model_name='person',
- name='status',
- field=models.IntegerField(choices=[(1, 'Draft'), (2, 'Published')], default=2, help_text='With Draft chosen, will only be shown for admin users on the site.', verbose_name='Status'),
- ),
- migrations.AddField(
- model_name='person',
- name='updated',
- field=models.DateTimeField(editable=False, null=True),
- ),
- migrations.AddField(
- model_name='team',
- name='content',
- field=mezzanine.core.fields.RichTextField(default='', verbose_name='Content'),
- preserve_default=False,
- ),
- migrations.AddField(
- model_name='team',
- name='page_ptr',
- field=models.OneToOneField(auto_created=True, default=1, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='pages.Page'),
- preserve_default=False,
- ),
- migrations.AddField(
- model_name='team',
- name='sub_title',
- field=models.TextField(blank=True, max_length=1024, verbose_name='sub title'),
- ),
- migrations.AlterField(
- model_name='person',
- name='title',
- field=models.CharField(max_length=500, verbose_name='Title'),
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-07-24 23:43
-from __future__ import unicode_literals
-
-from django.db import migrations
-import mezzanine.core.fields
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-team', '0008_auto_20160725_0117'),
- ]
-
- operations = [
- migrations.AddField(
- model_name='department',
- name='content_en',
- field=mezzanine.core.fields.RichTextField(null=True, verbose_name='Content'),
- ),
- migrations.AddField(
- model_name='department',
- name='content_fr',
- field=mezzanine.core.fields.RichTextField(null=True, verbose_name='Content'),
- ),
- migrations.AddField(
- model_name='team',
- name='content_en',
- field=mezzanine.core.fields.RichTextField(null=True, verbose_name='Content'),
- ),
- migrations.AddField(
- model_name='team',
- name='content_fr',
- field=mezzanine.core.fields.RichTextField(null=True, verbose_name='Content'),
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-07-25 00:01
-from __future__ import unicode_literals
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-team', '0009_auto_20160725_0143'),
- ]
-
- operations = [
- migrations.AddField(
- model_name='department',
- name='sub_title_en',
- field=models.TextField(blank=True, max_length=1024, null=True, verbose_name='sub title'),
- ),
- migrations.AddField(
- model_name='department',
- name='sub_title_fr',
- field=models.TextField(blank=True, max_length=1024, null=True, verbose_name='sub title'),
- ),
- migrations.AddField(
- model_name='team',
- name='sub_title_en',
- field=models.TextField(blank=True, max_length=1024, null=True, verbose_name='sub title'),
- ),
- migrations.AddField(
- model_name='team',
- name='sub_title_fr',
- field=models.TextField(blank=True, max_length=1024, null=True, verbose_name='sub title'),
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-07-27 14:31
-from __future__ import unicode_literals
-
-from django.db import migrations, models
-import mezzanine.core.fields
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-team', '0010_auto_20160725_0201'),
- ]
-
- operations = [
- migrations.AddField(
- model_name='department',
- name='photo',
- field=mezzanine.core.fields.FileField(blank=True, max_length=1024, verbose_name='photo'),
- ),
- migrations.AddField(
- model_name='department',
- name='photo_alignment',
- field=models.CharField(blank=True, choices=[('left', 'left'), ('center', 'center'), ('right', 'right')], default='left', max_length=32, verbose_name='photo alignment'),
- ),
- migrations.AddField(
- model_name='department',
- name='photo_card',
- field=mezzanine.core.fields.FileField(blank=True, max_length=1024, verbose_name='card photo'),
- ),
- migrations.AddField(
- model_name='department',
- name='photo_card_credits',
- field=models.CharField(blank=True, max_length=255, null=True, verbose_name='photo card credits'),
- ),
- migrations.AddField(
- model_name='department',
- name='photo_credits',
- field=models.CharField(blank=True, max_length=255, null=True, verbose_name='photo credits'),
- ),
- migrations.AddField(
- model_name='department',
- name='photo_description',
- field=models.TextField(blank=True, verbose_name='photo description'),
- ),
- migrations.AddField(
- model_name='department',
- name='photo_slider',
- field=mezzanine.core.fields.FileField(blank=True, max_length=1024, verbose_name='slider photo'),
- ),
- migrations.AddField(
- model_name='department',
- name='photo_slider_credits',
- field=models.CharField(blank=True, max_length=255, null=True, verbose_name='photo slider credits'),
- ),
- migrations.AddField(
- model_name='team',
- name='photo',
- field=mezzanine.core.fields.FileField(blank=True, max_length=1024, verbose_name='photo'),
- ),
- migrations.AddField(
- model_name='team',
- name='photo_alignment',
- field=models.CharField(blank=True, choices=[('left', 'left'), ('center', 'center'), ('right', 'right')], default='left', max_length=32, verbose_name='photo alignment'),
- ),
- migrations.AddField(
- model_name='team',
- name='photo_card',
- field=mezzanine.core.fields.FileField(blank=True, max_length=1024, verbose_name='card photo'),
- ),
- migrations.AddField(
- model_name='team',
- name='photo_card_credits',
- field=models.CharField(blank=True, max_length=255, null=True, verbose_name='photo card credits'),
- ),
- migrations.AddField(
- model_name='team',
- name='photo_credits',
- field=models.CharField(blank=True, max_length=255, null=True, verbose_name='photo credits'),
- ),
- migrations.AddField(
- model_name='team',
- name='photo_description',
- field=models.TextField(blank=True, verbose_name='photo description'),
- ),
- migrations.AddField(
- model_name='team',
- name='photo_slider',
- field=mezzanine.core.fields.FileField(blank=True, max_length=1024, verbose_name='slider photo'),
- ),
- migrations.AddField(
- model_name='team',
- name='photo_slider_credits',
- field=models.CharField(blank=True, max_length=255, null=True, verbose_name='photo slider credits'),
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-08-07 23:18
-from __future__ import unicode_literals
-
-from django.db import migrations, models
-import django.db.models.deletion
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-core', '0010_auto_20160808_0118'),
- ('organization-team', '0011_auto_20160727_1631'),
- ]
-
- operations = [
- migrations.CreateModel(
- name='PersonLink',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('url', models.URLField(verbose_name='URL')),
- ],
- options={
- 'verbose_name': 'person link',
- },
- ),
- migrations.RemoveField(
- model_name='link',
- name='link_type',
- ),
- migrations.RemoveField(
- model_name='link',
- name='person',
- ),
- migrations.RemoveField(
- model_name='organization',
- name='url',
- ),
- migrations.AddField(
- model_name='organization',
- name='website',
- field=models.URLField(blank=True, max_length=512, verbose_name='website'),
- ),
- migrations.DeleteModel(
- name='Link',
- ),
- migrations.DeleteModel(
- name='LinkType',
- ),
- migrations.AddField(
- model_name='personlink',
- name='link_type',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization-core.LinkType', verbose_name='link type'),
- ),
- migrations.AddField(
- model_name='personlink',
- name='person',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization-team.Person', verbose_name='person'),
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-08-09 12:13
-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-core', '0011_auto_20160809_1413'),
- ('organization-team', '0012_auto_20160808_0118'),
- ]
-
- operations = [
- migrations.CreateModel(
- name='PersonActivity',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('content', mezzanine.core.fields.RichTextField(verbose_name='Content')),
- ('content_fr', mezzanine.core.fields.RichTextField(null=True, verbose_name='Content')),
- ('content_en', mezzanine.core.fields.RichTextField(null=True, verbose_name='Content')),
- ('description', models.TextField(blank=True, verbose_name='description')),
- ('description_fr', models.TextField(blank=True, null=True, verbose_name='description')),
- ('description_en', models.TextField(blank=True, null=True, verbose_name='description')),
- ('date_begin', models.DateField(blank=True, null=True, verbose_name='begin date')),
- ('date_end', models.DateField(blank=True, null=True, verbose_name='end date')),
- ('role', models.CharField(blank=True, max_length=512, verbose_name='role')),
- ],
- options={
- 'verbose_name_plural': 'activities',
- 'verbose_name': 'activity',
- },
- ),
- migrations.CreateModel(
- name='TeamLink',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('url', models.URLField(verbose_name='URL')),
- ('link_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization-core.LinkType', verbose_name='link type')),
- ('team', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization-team.Team', verbose_name='links')),
- ],
- options={
- 'verbose_name': 'link',
- 'verbose_name_plural': 'links',
- 'abstract': False,
- },
- ),
- migrations.RemoveField(
- model_name='activity',
- name='person',
- ),
- migrations.RemoveField(
- model_name='activity',
- name='teams',
- ),
- migrations.RemoveField(
- model_name='person',
- name='organization',
- ),
- migrations.DeleteModel(
- name='Activity',
- ),
- migrations.AddField(
- model_name='personactivity',
- name='person',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization-team.Person', verbose_name='person'),
- ),
- migrations.AddField(
- model_name='personactivity',
- name='team',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization-team.Team', verbose_name='team'),
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-08-10 16:26
-from __future__ import unicode_literals
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-magazine', '0010_auto_20160808_0118'),
- ('organization-team', '0013_auto_20160809_1413'),
- ]
-
- operations = [
- migrations.AddField(
- model_name='department',
- name='articles_related',
- field=models.ManyToManyField(blank=True, to='organization-magazine.Article', verbose_name='articles_related'),
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-08-10 16:29
-from __future__ import unicode_literals
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-team', '0014_department_articles_related'),
- ]
-
- operations = [
- migrations.AlterField(
- model_name='department',
- name='articles_related',
- field=models.ManyToManyField(blank=True, to='organization-magazine.Article', verbose_name='Related articles'),
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-08-12 13:21
-from __future__ import unicode_literals
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-team', '0015_auto_20160810_1829'),
- ]
-
- operations = [
- migrations.AlterField(
- model_name='department',
- name='weaving_css_class',
- field=models.CharField(blank=True, choices=[('pattern-bg--circles', 'circles'), ('pattern-bg--squares', 'squares'), ('pattern-bg--stripes', 'stripes'), ('pattern-bg--triangles', 'triangles')], max_length=64, verbose_name='background pattern'),
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-08-23 05:44
-from __future__ import unicode_literals
-
-import datetime
-from django.db import migrations, models
-import django.db.models.deletion
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-project', '0007_auto_20160819_1920'),
- ('organization-team', '0016_auto_20160812_1521'),
- ]
-
- operations = [
- migrations.CreateModel(
- name='ActivityFramework',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('description', models.TextField(blank=True, verbose_name='description')),
- ('name', models.CharField(max_length=512, verbose_name='name')),
- ],
- options={
- 'verbose_name': 'activity framework',
- },
- ),
- migrations.CreateModel(
- name='ActivityGrade',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('description', models.TextField(blank=True, verbose_name='description')),
- ('name', models.CharField(max_length=512, verbose_name='name')),
- ],
- options={
- 'verbose_name': 'activity grade',
- },
- ),
- migrations.CreateModel(
- name='ActivityStatus',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('description', models.TextField(blank=True, verbose_name='description')),
- ('name', models.CharField(max_length=512, verbose_name='name')),
- ],
- options={
- 'verbose_name': 'activity status',
- },
- ),
- migrations.CreateModel(
- name='BudgetCode',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('description', models.TextField(blank=True, verbose_name='description')),
- ('name', models.CharField(max_length=512, verbose_name='name')),
- ],
- options={
- 'verbose_name': 'budget code',
- },
- ),
- migrations.CreateModel(
- name='RecordPiece',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('description', models.TextField(blank=True, verbose_name='description')),
- ('name', models.CharField(max_length=512, verbose_name='name')),
- ],
- options={
- 'verbose_name': 'record piece',
- },
- ),
- migrations.CreateModel(
- name='TrainingLevel',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('description', models.TextField(blank=True, verbose_name='description')),
- ('name', models.CharField(max_length=512, verbose_name='name')),
- ],
- options={
- 'verbose_name': 'training level',
- },
- ),
- migrations.CreateModel(
- name='TrainingSpectiality',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('description', models.TextField(blank=True, verbose_name='description')),
- ('name', models.CharField(max_length=512, verbose_name='name')),
- ],
- options={
- 'verbose_name': 'training speciality',
- },
- ),
- migrations.CreateModel(
- name='TrainingTopic',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('description', models.TextField(blank=True, verbose_name='description')),
- ('name', models.CharField(max_length=512, verbose_name='name')),
- ],
- options={
- 'verbose_name': 'training topic',
- },
- ),
- migrations.CreateModel(
- name='TrainingType',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('description', models.TextField(blank=True, verbose_name='description')),
- ('name', models.CharField(max_length=512, verbose_name='name')),
- ],
- options={
- 'verbose_name': 'training type',
- },
- ),
- migrations.RemoveField(
- model_name='personactivity',
- name='role',
- ),
- migrations.AddField(
- model_name='person',
- name='permanent',
- field=models.BooleanField(default=False, verbose_name='permanent'),
- ),
- migrations.AddField(
- model_name='personactivity',
- name='attachment_organization',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='attachment_activity', to='organization-team.Organization', verbose_name='attachment organization'),
- ),
- migrations.AddField(
- model_name='personactivity',
- name='comments',
- field=models.TextField(blank=True, verbose_name='comments'),
- ),
- migrations.AddField(
- model_name='personactivity',
- name='date_added',
- field=models.DateTimeField(auto_now_add=True, default=datetime.datetime(2016, 8, 23, 7, 44, 31, 896290), verbose_name='add date'),
- preserve_default=False,
- ),
- migrations.AddField(
- model_name='personactivity',
- name='date_modified',
- field=models.DateTimeField(auto_now=True, default=datetime.datetime(2016, 8, 23, 7, 44, 41, 729673), verbose_name='modification date'),
- preserve_default=False,
- ),
- migrations.AddField(
- model_name='personactivity',
- name='date_modified_manual',
- field=models.DateTimeField(blank=True, null=True, verbose_name='manual modification date'),
- ),
- migrations.AddField(
- model_name='personactivity',
- name='employer',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='employer_activity', to='organization-team.Organization', verbose_name='employer'),
- ),
- migrations.AddField(
- model_name='personactivity',
- name='function',
- field=models.CharField(blank=True, max_length=1024, verbose_name='fonction'),
- ),
- migrations.AddField(
- model_name='personactivity',
- name='hdr',
- field=models.BooleanField(default=False, verbose_name='HDR'),
- ),
- migrations.AddField(
- model_name='personactivity',
- name='phd_defense_date',
- field=models.DateField(blank=True, null=True, verbose_name='PhD defense date'),
- ),
- migrations.AddField(
- model_name='personactivity',
- name='phd_director',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='phd_director_activity', to='organization-team.Person', verbose_name='PhD director'),
- ),
- migrations.AddField(
- model_name='personactivity',
- name='phd_doctoral_school',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-team.Organization', verbose_name='doctoral school'),
- ),
- migrations.AddField(
- model_name='personactivity',
- name='phd_officer_1',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='phd_officer_1_activity', to='organization-team.Person', verbose_name='PhD officer 1'),
- ),
- migrations.AddField(
- model_name='personactivity',
- name='phd_officer_2',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='phd_officer_2_activity', to='organization-team.Person', verbose_name='PhD officer 2'),
- ),
- migrations.AddField(
- model_name='personactivity',
- name='phd_postdoctoralsituation',
- field=models.CharField(blank=True, max_length=256, verbose_name='post-doctoral situation'),
- ),
- migrations.AddField(
- model_name='personactivity',
- name='phd_title',
- field=models.TextField(blank=True, verbose_name='PhD title'),
- ),
- migrations.AddField(
- model_name='personactivity',
- name='project',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-project.Project', verbose_name='project'),
- ),
- migrations.AddField(
- model_name='personactivity',
- name='rd_program',
- field=models.TextField(blank=True, verbose_name='R&D program'),
- ),
- migrations.AddField(
- model_name='personactivity',
- name='rd_quota',
- field=models.IntegerField(blank=True, null=True, verbose_name='R&D quota'),
- ),
- migrations.AddField(
- model_name='personactivity',
- name='second_employer',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='second_employer_activity', to='organization-team.Organization', verbose_name='second employer'),
- ),
- migrations.AddField(
- model_name='personactivity',
- name='second_team',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='second_team_activity', to='organization-team.Team', verbose_name='second team'),
- ),
- migrations.AddField(
- model_name='personactivity',
- name='training_title',
- field=models.TextField(blank=True, verbose_name='Training title'),
- ),
- migrations.AlterField(
- model_name='personactivity',
- name='team',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='team_activity', to='organization-team.Team', verbose_name='team'),
- ),
- migrations.AddField(
- model_name='personactivity',
- name='budget_code',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-team.BudgetCode'),
- ),
- migrations.AddField(
- model_name='personactivity',
- name='framework',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-team.ActivityFramework', verbose_name='framework'),
- ),
- migrations.AddField(
- model_name='personactivity',
- name='grade',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-team.ActivityGrade', verbose_name='grade'),
- ),
- migrations.AddField(
- model_name='personactivity',
- name='record_piece',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-team.RecordPiece'),
- ),
- migrations.AddField(
- model_name='personactivity',
- name='status',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-team.ActivityStatus', verbose_name='status'),
- ),
- migrations.AddField(
- model_name='personactivity',
- name='training_level',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-team.TrainingLevel', verbose_name='training level'),
- ),
- migrations.AddField(
- model_name='personactivity',
- name='training_speciality',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-team.TrainingSpectiality', verbose_name='training speciality'),
- ),
- migrations.AddField(
- model_name='personactivity',
- name='training_topic',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-team.TrainingTopic', verbose_name='training topic'),
- ),
- migrations.AddField(
- model_name='personactivity',
- name='training_type',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-team.TrainingType', verbose_name='training type'),
- ),
- ]
+++ /dev/null
-from __future__ import unicode_literals
-
-import os
-import re
-import pwd
-import time
-import urllib
-import string
-import datetime
-import mimetypes
-
-from django.db import models
-from django.utils.translation import ugettext_lazy as _
-from django.core.urlresolvers import reverse, reverse_lazy
-from django.conf import settings
-from django.contrib.auth.models import User
-
-from mezzanine.pages.models import Page
-from mezzanine.core.models import RichText, Displayable, Slugged
-from mezzanine.core.fields import RichTextField, OrderField, FileField
-from mezzanine.utils.models import AdminThumbMixin, upload_to
-from mezzanine.galleries.models import BaseGallery
-
-from organization.core.models import *
-
-from django_countries.fields import CountryField
-# from .nationalities.fields import NationalityField
-
-# Hack to have these strings translated
-mr = _('Mr')
-mrs = _('Ms')
-
-GENDER_CHOICES = [
- ('male', _('male')),
- ('female', _('female')),
-]
-
-TITLE_CHOICES = [
- ('Dr', _('Dr')),
- ('Prof', _('Prof')),
- ('Prof Dr', _('Prof Dr')),
-]
-
-PATTERN_CHOICES = [
- ('pattern-bg--circles', _('circles')),
- ('pattern-bg--squares', _('squares')),
- ('pattern-bg--stripes', _('stripes')),
- ('pattern-bg--triangles', _('triangles')),
-]
-
-ALIGNMENT_CHOICES = (('left', _('left')), ('left', _('left')), ('right', _('right')))
-
-
-class Address(models.Model):
- """(Address description)"""
-
- address = models.TextField(_('address'), blank=True)
- postal_code = models.CharField(_('postal code'), max_length=16, blank=True)
- country = CountryField(_('country'))
-
- def __str__(self):
- return ' '.join((self.address, self.postal_code))
-
- class Meta:
- abstract = True
-
-
-class Organization(Slugged, Description, Address, Photo):
- """(Organization description)"""
-
- type = models.ForeignKey('OrganizationType', verbose_name=_('organization type'), blank=True, null=True, on_delete=models.SET_NULL)
- website = models.URLField(_('website'), max_length=512, blank=True)
- is_on_map = models.BooleanField(_('is on map'), default=True)
-
- class Meta:
- verbose_name = _('organization')
-
-
-class OrganizationType(Named):
- """(OrganizationType description)"""
-
- class Meta:
- verbose_name = _('organization type')
-
-
-class Department(Page, SubTitle, RichText, Photo):
- """(Department description)"""
-
- organization = models.ForeignKey('Organization', verbose_name=_('organization'))
- url = models.URLField(_('URL'), max_length=512, blank=True)
- weaving_css_class = models.CharField(_('background pattern'), choices=PATTERN_CHOICES, max_length=64, blank=True)
- articles_related = models.ManyToManyField('organization-magazine.Article', verbose_name=_('Related articles'), blank=True)
-
- class Meta:
- verbose_name = _('department')
-
-
-class Team(Page, SubTitle, RichText, Photo):
- """(Team description)"""
-
- # department = models.ForeignKey('Department', verbose_name=_('department'), related_name="teams", blank=True, null=True, on_delete=models.SET_NULL)
- partner_organizations = models.ManyToManyField(Organization, verbose_name=_('partner organizations'), blank=True)
- partner_teams = models.ManyToManyField('Team', verbose_name=_('partner teams'), blank=True)
-
- class Meta:
- verbose_name = _('team')
-
-
-class Person(Displayable, AdminThumbMixin, Photo):
- """(Person description)"""
-
- user = models.ForeignKey(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)
- birthday = models.DateField(_('birthday'), blank=True, null=True)
- bio = RichTextField(_('biography'), blank=True)
- permanent = models.BooleanField(_('permanent'), default=False)
-
- class Meta:
- verbose_name = _('person')
- ordering = ['last_name',]
-
- def __str__(self):
- return ' '.join((self.first_name, self.last_name))
-
- # def get_absolute_url(self):
- # return reverse("festival-artist-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 clean(self):
- super(Person, self).clean()
- self.set_names()
-
- def save(self, *args, **kwargs):
- self.set_names()
- super(Person, self).save(*args, **kwargs)
-
-
-class TeamLink(Link):
-
- team = models.ForeignKey(Team, verbose_name=_('links'))
-
- def __str__(self):
- return self.url
-
-
-class ActivityStatus(Named, Description):
-
- class Meta:
- verbose_name = _('activity status')
-
-
-class ActivityGrade(Named, Description):
-
- class Meta:
- verbose_name = _('activity grade')
-
-
-class ActivityFramework(Named, Description):
-
- class Meta:
- verbose_name = _('activity framework')
-
-
-class BudgetCode(Named, Description):
-
- class Meta:
- verbose_name = _('budget code')
-
-
-class RecordPiece(Named, Description):
-
- class Meta:
- verbose_name = _('record piece')
-
-
-class TrainingType(Named, Description):
-
- class Meta:
- verbose_name = _('training type')
-
-
-class TrainingLevel(Named, Description):
-
- class Meta:
- verbose_name = _('training level')
-
-
-class TrainingTopic(Named, Description):
-
- class Meta:
- verbose_name = _('training topic')
-
-
-class TrainingSpectiality(Named, Description):
-
- class Meta:
- verbose_name = _('training speciality')
-
-
-class PersonActivity(Description, Period, RichText):
- """(Activity description)"""
-
- person = models.ForeignKey('Person', verbose_name=_('person'))
- team = models.ForeignKey('Team', verbose_name=_('team'), related_name='team_activity', blank=True, null=True, on_delete=models.SET_NULL)
- second_team = models.ForeignKey('Team', verbose_name=_('second team'), related_name='second_team_activity', blank=True, null=True, on_delete=models.SET_NULL)
- function = models.CharField(_('fonction'), blank=True, max_length=1024)
-
- status = models.ForeignKey(ActivityStatus, verbose_name=_('status'), blank=True, null=True, on_delete=models.SET_NULL)
- grade = models.ForeignKey(ActivityGrade, verbose_name=_('grade'), blank=True, null=True, on_delete=models.SET_NULL)
- framework = models.ForeignKey(ActivityFramework, verbose_name=_('framework'), blank=True, null=True, on_delete=models.SET_NULL)
- hdr = models.BooleanField(_('HDR'), default=False)
-
- employer = models.ForeignKey(Organization, verbose_name=_('employer'), related_name='employer_activity', blank=True, null=True, on_delete=models.SET_NULL)
- second_employer = models.ForeignKey(Organization, verbose_name=_('second employer'), related_name='second_employer_activity', blank=True, null=True, on_delete=models.SET_NULL)
- attachment_organization = models.ForeignKey(Organization, verbose_name=_('attachment organization'), related_name='attachment_activity', blank=True, null=True, on_delete=models.SET_NULL)
-
- project = models.ForeignKey('organization-project.Project', verbose_name=_('project'), blank=True, null=True, on_delete=models.SET_NULL)
- rd_quota = models.IntegerField(_('R&D quota'), blank=True, null=True)
- rd_program = models.TextField(_('R&D program'), blank=True)
- budget_code = models.ForeignKey(BudgetCode, blank=True, null=True, on_delete=models.SET_NULL)
-
- phd_doctoral_school = models.ForeignKey(Organization, verbose_name=_('doctoral school'), blank=True, null=True, on_delete=models.SET_NULL)
- phd_director = models.ForeignKey('Person', verbose_name=_('PhD director'), related_name='phd_director_activity', blank=True, null=True, on_delete=models.SET_NULL)
- phd_officer_1 = models.ForeignKey('Person', verbose_name=_('PhD officer 1'), related_name='phd_officer_1_activity', blank=True, null=True, on_delete=models.SET_NULL)
- phd_officer_2 = models.ForeignKey('Person', verbose_name=_('PhD officer 2'), related_name='phd_officer_2_activity', blank=True, null=True, on_delete=models.SET_NULL)
- phd_defense_date = models.DateField(_('PhD defense date'), blank=True, null=True)
- phd_title = models.TextField(_('PhD title'), blank=True)
- phd_postdoctoralsituation = models.CharField(_('post-doctoral situation'), blank=True, max_length=256)
-
- training_type = models.ForeignKey(TrainingType, verbose_name=_('training type'), blank=True, null=True, on_delete=models.SET_NULL)
- training_level = models.ForeignKey(TrainingLevel, verbose_name=_('training level'), blank=True, null=True, on_delete=models.SET_NULL)
- training_topic = models.ForeignKey(TrainingTopic, verbose_name=_('training topic'), blank=True, null=True, on_delete=models.SET_NULL)
- training_speciality = models.ForeignKey(TrainingSpectiality, verbose_name=_('training speciality'), blank=True, null=True, on_delete=models.SET_NULL)
- training_title = models.TextField(_('Training title'), blank=True)
-
- comments = models.TextField(_('comments'), blank=True)
-
- record_piece = models.ForeignKey(RecordPiece, blank=True, null=True, on_delete=models.SET_NULL)
- date_added = models.DateTimeField(_('add date'), auto_now_add=True)
- date_modified = models.DateTimeField(_('modification date'), auto_now=True)
- date_modified_manual = models.DateTimeField(_('manual modification date'), blank=True, null=True)
-
- class Meta:
- verbose_name = _('activity')
- verbose_name_plural = _('activities')
-
- def __unicode__(self):
- return ' - '.join((self.person, self.role, self.date_begin, self.date_end))
-
-
-class PersonLink(Link):
- """A person can have many links."""
-
- person = models.ForeignKey('Person', verbose_name=_('person'))
-
- class Meta:
- verbose_name = _('person link')
+++ /dev/null
-from django.db.models.fields import CharField
-
-class Nationality(object):
- """
- Class represents a nationality.
-
- >>> hungarian = Nationality('HU')
- >>> hungarian.code
- u'HU'
- >>> hungarian.name
- u'Hungarian'
-
- """
-
- def __init__(self, code):
- """
- Constructor accepts ISO 3166-1 country code.
- """
- self.code = code
-
- def __unicode__(self):
- return str(self.code or '')
-
- def __eq__(self, other):
- return self.code == str(other)
-
- def __ne__(self, other):
- return not self.__eq__(other)
-
- def __cmp__(self, other):
- return cmp(self.code, str(other))
-
- def __hash__(self):
- return hash(self.code)
-
- @property
- def name(self):
- """
- Return verbose name of nationality.
- """
- from .nationalities import NATIONALITIES
- for code, name in NATIONALITIES:
- if self.code == code:
- return name
- return None
-
-
-class NationalityDescriptor(object):
- """
- A descriptor for nationality fields on model instances. Returns a
- Nationality when accessed.
-
- >>> instance.nationality.name
- u'Hungarian'
-
- """
-
- def __init__(self, field):
- self.field = field
-
- def __get__(self, instance=None, owner=None):
- if instance is None:
- raise AttributeError(
- "The '%s' attribute can only be accessed from %s instances."
- % (self.field.name, owner.__name__))
- return Nationality(code=instance.__dict__[self.field.name])
-
- def __set__(self, instance, value):
- instance.__dict__[self.field.name] = str(value)
-
-
-class NationalityField(CharField):
- """
- A nationality field for Django models that provides all nationalities as
- choices.
- """
-
- descriptor_class = NationalityDescriptor
-
- def __init__(self, *args, **kwargs):
- from .nationalities import NATIONALITIES
- kwargs.setdefault('max_length', 2)
- kwargs.setdefault('choices', NATIONALITIES)
- super(CharField, self).__init__(*args, **kwargs)
-
- def get_internal_type(self):
- return 'CharField'
-
- def contribute_to_class(self, cls, name):
- super(NationalityField, self).contribute_to_class(cls, name)
- setattr(cls, self.name, self.descriptor_class(self))
-
- def get_prep_lookup(self, lookup_type, value):
- if hasattr(value, 'code'):
- value = value.code
- return super(NationalityField, self).get_prep_lookup(lookup_type, value)
-
- def pre_save(self, *args, **kwargs):
- "Returns field's value just before saving."
- value = super(CharField, self).pre_save(*args, **kwargs)
- return self.get_prep_value(value)
-
- def get_prep_value(self, value):
- "Returns field's value prepared for saving into a database."
- # Convert the Nationality to unicode for database insertion.
- if value is None:
- return None
- return str(value)
-
-
-# If south is installed, ensure that NationalityField will be introspected just
-# like a normal CharField.
-try:
- from south.modelsinspector import add_introspection_rules
- add_introspection_rules([], ["^nationalities\.fields\.NationalityField"])
-except ImportError:
- pass
+++ /dev/null
-from django.utils.translation import ugettext_lazy as _
-
-
-# source: http://www.englishclub.com/vocabulary/world-countries-nationality.htm
-NATIONALITIES = (
- ('AF', _(u'Afghan')),
- ('AL', _(u'Albanian')),
- ('DZ', _(u'Algerian')),
- ('AD', _(u'Andorran')),
- ('AO', _(u'Angolan')),
- ('AR', _(u'Argentinian')),
- ('AM', _(u'Armenian')),
- ('AU', _(u'Australian')),
- ('AT', _(u'Austrian')),
- ('AZ', _(u'Azerbaijani')),
- ('BS', _(u'Bahamian')),
- ('BH', _(u'Bahraini')),
- ('BD', _(u'Bangladeshi')),
- ('BB', _(u'Barbadian')),
- ('BY', _(u'Belorussian')),
- ('BE', _(u'Belgian')),
- ('BZ', _(u'Belizian')),
- ('BJ', _(u'Beninese')),
- ('BT', _(u'Bhutanese')),
- ('BO', _(u'Bolivian')),
- ('BA', _(u'Bosnian')),
- ('BW', _(u'Botswanan')),
- ('BR', _(u'Brazilian')),
- ('GB', _(u'British')),
- ('BN', _(u'Bruneian')),
- ('BG', _(u'Bulgarian')),
- ('BF', _(u'Burkinese')),
- ('MM', _(u'Burmese')),
- ('BF', _(u'Burundian')),
- ('BI', _(u'Cambodian')),
- ('CM', _(u'Cameroonian')),
- ('CA', _(u'Canadian')),
- ('CV', _(u'Cape Verdean')),
- ('TD', _(u'Chadian')),
- ('CL', _(u'Chilean')),
- ('CN', _(u'Chinese')),
- ('CO', _(u'Colombian')),
- ('CG', _(u'Congolese')),
- ('CR', _(u'Costa Rican')),
- ('HR', _(u'Croatian')),
- ('CU', _(u'Cuban')),
- ('CY', _(u'Cypriot')),
- ('CZ', _(u'Czech')),
- ('DK', _(u'Danish')),
- ('DJ', _(u'Djiboutian')),
- ('DM', _(u'Dominican')),
- ('DO', _(u'Dominican')),
- ('EC', _(u'Ecuadorean')),
- ('EG', _(u'Egyptian')),
- ('SV', _(u'Salvadorean')),
- ('GB', _(u'English')),
- ('ER', _(u'Eritrean')),
- ('EE', _(u'Estonian')),
- ('ET', _(u'Ethiopian')),
- ('FJ', _(u'Fijian')),
- ('FI', _(u'Finnish')),
- ('FR', _(u'French')),
- ('GA', _(u'Gabonese')),
- ('GM', _(u'Gambian')),
- ('GE', _(u'Georgian')),
- ('DE', _(u'German')),
- ('GH', _(u'Ghanaian')),
- ('GR', _(u'Greek')),
- ('GD', _(u'Grenadian')),
- ('GT', _(u'Guatemalan')),
- ('GQ', _(u'Guinean')),
- ('GY', _(u'Guyanese')),
- ('HT', _(u'Haitian')),
- ('NL', _(u'Dutch')),
- ('HN', _(u'Honduran')),
- ('HU', _(u'Hungarian')),
- ('IS', _(u'Icelandic')),
- ('IO', _(u'Indian')),
- ('ID', _(u'Indonesian')),
- ('IR', _(u'Iranian')),
- ('IQ', _(u'Iraqi')),
- ('IE', _(u'Irish')),
- ('IL', _(u'Israeli')),
- ('IT', _(u'Italian')),
- ('JM', _(u'Jamaican')),
- ('JP', _(u'Japanese')),
- ('JO', _(u'Jordanian')),
- ('KZ', _(u'Kazakh')),
- ('KE', _(u'Kenyan')),
- ('KW', _(u'Kuwaiti')),
- ('LA', _(u'Laotian')),
- ('LV', _(u'Latvian')),
- ('LB', _(u'Lebanese')),
- ('LR', _(u'Liberian')),
- ('LY', _(u'Libyan')),
- ('LT', _(u'Lithuanian')),
- ('MK', _(u'Macedonian')),
- ('MG', _(u'Malagasay')),
- ('MW', _(u'Malawian')),
- ('MY', _(u'Malaysian')),
- ('MV', _(u'Maldivian')),
- ('ML', _(u'Malian')),
- ('MT', _(u'Maltese')),
- ('MR', _(u'Mauritanian')),
- ('MU', _(u'Mauritian')),
- ('MX', _(u'Mexican')),
- ('MD', _(u'Moldovan')),
- ('MC', _(u'Monacan')),
- ('MN', _(u'Mongolian')),
- ('ME', _(u'Montenegrin')),
- ('MA', _(u'Moroccan')),
- ('MZ', _(u'Mozambican')),
- ('NA', _(u'Namibian')),
- ('NP', _(u'Nepalese')),
- ('NI', _(u'Nicaraguan')),
- ('NE', _(u'Nigerien')),
- ('NG', _(u'Nigerian')),
- ('KP', _(u'North Korean')),
- ('NO', _(u'Norwegian')),
- ('OM', _(u'Omani')),
- ('PK', _(u'Pakistani')),
- ('PA', _(u'Panamanian')),
- ('PG', _(u'Guinean')),
- ('PY', _(u'Paraguayan')),
- ('PE', _(u'Peruvian')),
- ('PH', _(u'Philippine')),
- ('PL', _(u'Polish')),
- ('PT', _(u'Portuguese')),
- ('QA', _(u'Qatari')),
- ('RO', _(u'Romanian')),
- ('RU', _(u'Russian')),
- ('RW', _(u'Rwandan')),
- ('SA', _(u'Saudi')),
- ('AE', _(u'Scottish')),
- ('SN', _(u'Senegalese')),
- ('RS', _(u'Serbian')),
- ('SC', _(u'Seychellois')),
- ('SL', _(u'Sierra Leonian')),
- ('SG', _(u'Singaporean')),
- ('SK', _(u'Slovak')),
- ('SI', _(u'Slovenian')),
- ('SO', _(u'Somali')),
- ('ZA', _(u'South African')),
- ('KR', _(u'South Korean')),
- ('ES', _(u'Spanish')),
- ('LK', _(u'Sri Lankan')),
- ('SD', _(u'Sudanese')),
- ('SR', _(u'Surinamese')),
- ('SZ', _(u'Swazi')),
- ('SE', _(u'Swedish')),
- ('CH', _(u'Swiss')),
- ('SY', _(u'Syrian')),
- ('TW', _(u'Taiwanese')),
- ('TJ', _(u'Tadjik')),
- ('TZ', _(u'Tanzanian')),
- ('TH', _(u'Thai')),
- ('TG', _(u'Togolese')),
- ('TT', _(u'Trinidadian')),
- ('TN', _(u'Tunisian')),
- ('TR', _(u'Turkish')),
- ('TM', _(u'Turkmen')),
- ('TV', _(u'Tuvaluan')),
- ('UG', _(u'Ugandan')),
- ('UA', _(u'Ukrainian')),
- ('UY', _(u'Uruguayan')),
- ('UZ', _(u'Uzbek')),
- ('VU', _(u'Vanuatuan')),
- ('VE', _(u'Venezuelan')),
- ('VN', _(u'Vietnamese')),
- ('GB', _(u'Welsh')),
- ('YE', _(u'Yemeni')),
- ('ZM', _(u'Zambian')),
- ('ZW', _(u'Zimbabwean')),
-)
+++ /dev/null
-from django.test import TestCase
-
-# Create your tests here.
+++ /dev/null
-from modeltranslation.translator import translator, register, TranslationOptions
-
-from organization.team.models import *
-
-
-@register(Organization)
-class OrganizationTranslationOptions(TranslationOptions):
-
- fields = ('description',)
-
-
-@register(Department)
-class DepartmentTranslationOptions(TranslationOptions):
-
- fields = ('sub_title', 'content',)
-
-@register(Team)
-class TeamTranslationOptions(TranslationOptions):
-
- fields = ('sub_title', 'content',)
-
-
-@register(Person)
-class PersonTranslationOptions(TranslationOptions):
-
- fields = ('bio',)
-
-
-@register(PersonActivity)
-class PersonActivityTranslationOptions(TranslationOptions):
-
- fields = ('description', 'content')
-
-
-@register(PersonLink)
-class PersonTranslationOptions(TranslationOptions):
-
- pass
+++ /dev/null
-from __future__ import unicode_literals
-
-import django.views.i18n
-from django.conf.urls import patterns, include, url
-from django.conf.urls.i18n import i18n_patterns
-
-from mezzanine.core.views import direct_to_template
-from mezzanine.conf import settings
-
-from organization.team.views import *
-
-
-urlpatterns = [
- url(r'^(?P<department>.*)/teams/$', TeamListView.as_view(), name="organization-team-team-list"),
-]
+++ /dev/null
-from django.shortcuts import render
-
-from organization.team.models import *
-from organization.core.views import *
-
-
-class DepartmentListView(ListView):
-
- model = Department
- template_name='team/department_list.html'
-
-
-class DepartmentDetailView(SlugMixin, DetailView):
-
- model = Department
- template_name='team/department_detail.html'
- context_object_name = 'department'
-
-
-class TeamListView(ListView):
-
- model = Team
- template_name='team/team_list.html'
-
-
-class TeamDetailView(SlugMixin, DetailView):
-
- model = Team
- template_name='team/team_detail.html'
- context_object_name = 'team'
-
- def get_context_data(self, **kwargs):
- context = super(TeamListView, self).get_context_data(**kwargs)
- partners = []
-
- for partner in self.object.partner_organizations:
- partners.append(partner)
- for partner in self.object.partner_teams:
- partners.append(partner)
-
- for project in team.project_leader.all():
- for partner in project.partner_organizations:
- partners.append(partner)
- for partner in project.partner_teams:
- partners.append(partner)
-
- context['partners'] = partners
- return context
-
-
-class PersonListView(ListView):
-
- model = Person
- template_name='team/person_list.html'
-
-
-class PersonDetailView(SlugMixin, DetailView):
-
- model = Person
- template_name='team/person_detail.html'
- context_object_name = 'person'
url("^", include('organization.festival.urls')),
url("^", include('organization.magazine.urls')),
url("^", include('organization.media.urls')),
- url("^", include('organization.project.urls')),
- url("^", include('organization.team.urls')),
+ url("^", include('organization.projects.urls')),
+ url("^", include('organization.network.urls')),
]
# "orderable",
"organization.core",
"organization.pages",
- "organization.team",
+ "organization.network",
"organization.festival",
"organization.magazine",
"organization.media",
- "organization.project",
+ "organization.projects",
]
--- /dev/null
+{% extends "base.html" %}
+{% load i18n mezzanine_tags keyword_tags pages_tags %}
+
+{% block title %}
+ {% trans "Team list" %}
+{% endblock %}
+
+{% block main %}
+
+ {% for team in object_list %}
+ <div class="row">
+ <div class="col-sm-9 col-sm-push-3 col-lg-8 col-lg-push-2">
+ {{ team.title }}
+ </div>
+ </div>
+ {% endfor %}
+
+{% endblock %}
+++ /dev/null
-{% extends "pages/basicpage.html" %}
-{% load i18n mezzanine_tags keyword_tags pages_tags organization_tags %}
-
-{% block meta_title %}{{ page.meta_title }}{% endblock %}
-
-{% block meta_keywords %}{% metablock %}
-{% keywords_for page as keywords %}
-{% for keyword in keywords %}
- {% if not forloop.first %}, {% endif %}
- {{ keyword }}
-{% endfor %}
-{% endmetablock %}{% endblock %}
-
-{% block meta_description %}{% metablock %}
-{{ page.description }}
-{% endmetablock %}{% endblock %}
-
-{% block page_class %}
- department
-{% endblock %}
-
-{% block body_class %}
- pattern pattern-bg {{ page.department.weaving_css_class }}
-{% endblock %}
-
-{% block page_title %}
-
- {% editable page.department.title %}
- <h1 class="dashed">{{ page.department.title }}</h1>
- {% endeditable %}
-
-{% endblock %}
-
-{% block page_content %}
- {% if page.department.sub_title %}
- {% editable page.department.sub_title %}
- <div class="chapo">
- {{ page.department.sub_title }}
- </div>
- {% endeditable %}
- {% endif %}
-
- {% editable page.department.content %}
- {{ page.department.content|richtext_filters|safe }}
- {% endeditable %}
-
-{% endblock %}
-
-{% block page_slider %}
- {% if page.department.pageimage_set.all %}
- {% with page.department.pageimage_set.all as slider_images %}
- {% include 'core/inc/slider.html' %}
- {% endwith %}
- {% endif %}
-{% endblock %}
-
-{% block page_sub_content %}
-
- {% if page.department.pageblock_set.all %}
- <div class="white-bg pb2">
- <div class="container">
- <div class="row">
- <div class="col-sm-12">
- <hr class="mt0" />
- {% for pageblock in page.department.pageblock_set.all %}
- {% if not forloop.first and pageblock.with_separator %}
- <hr />
- {% endif %}
- <div class="row" data-summary-content>
- <div class="col-sm-9 col-sm-push-3 col-lg-8 col-lg-push-2 white-bg">
- <h2 class="dotted">{{ pageblock.title }}</h2>
- {{ pageblock.content|richtext_filters|safe }}
- </div>
- </div>
- {% endfor %}
- </div>
- </div>
- </div>
- </div>
- {% endif %}
-
-{% endblock %}
-
-{% block page_related_content %}
-
- {% if page.department.articles_related.all %}
-
- <div class="white-bg pb2">
- <div class="container">
- <div class="row tac">
- <div class="col-xs-12">
- <h2 class="dashed dashed--center">{% trans "Also discover" %}</h2>
- </div>
- </div>
- <div class="row tac">
- {% for article in page.department.articles_related.all %}
- <div class="col-lg-3 col-md-4 col-sm-4 col-xs-6">
- {% include 'magazine/article/includes/article_card.html' %}
- </div>
- {% endfor %}
- </div>
- </div>
- </div>
-
- {% endif %}
-
-{% endblock %}
--- /dev/null
+{% extends "pages/basicpage.html" %}
+{% load i18n mezzanine_tags keyword_tags pages_tags organization_tags %}
+
+{% block meta_title %}{{ page.meta_title }}{% endblock %}
+
+{% block meta_keywords %}{% metablock %}
+{% keywords_for page as keywords %}
+{% for keyword in keywords %}
+ {% if not forloop.first %}, {% endif %}
+ {{ keyword }}
+{% endfor %}
+{% endmetablock %}{% endblock %}
+
+{% block meta_description %}{% metablock %}
+{{ page.description }}
+{% endmetablock %}{% endblock %}
+
+{% block page_class %}
+ department
+{% endblock %}
+
+{% block body_class %}
+ pattern pattern-bg {{ page.departmentpage.weaving_css_class }}
+{% endblock %}
+
+{% block page_title %}
+
+ {% editable page.departmentpage.title %}
+ <h1 class="dashed">{{ page.departmentpage.title }}</h1>
+ {% endeditable %}
+
+{% endblock %}
+
+{% block page_content %}
+ {% if page.departmentpage.sub_title %}
+ {% editable page.departmentpage.sub_title %}
+ <div class="chapo">
+ {{ page.departmentpage.sub_title }}
+ </div>
+ {% endeditable %}
+ {% endif %}
+
+ {% editable page.departmentpage.content %}
+ {{ page.departmentpage.content|richtext_filters|safe }}
+ {% endeditable %}
+
+{% endblock %}
+
+{% block page_slider %}
+ {% if page.departmentpage.pageimage_set.all %}
+ {% with page.departmentpage.pageimage_set.all as slider_images %}
+ {% include 'core/inc/slider.html' %}
+ {% endwith %}
+ {% endif %}
+{% endblock %}
+
+{% block page_sub_content %}
+
+ {% if page.departmentpage.pageblock_set.all %}
+ <div class="white-bg pb2">
+ <div class="container">
+ <div class="row">
+ <div class="col-sm-12">
+ <hr class="mt0" />
+ {% for pageblock in page.departmentpage.pageblock_set.all %}
+ {% if not forloop.first and pageblock.with_separator %}
+ <hr />
+ {% endif %}
+ <div class="row" data-summary-content>
+ <div class="col-sm-9 col-sm-push-3 col-lg-8 col-lg-push-2 white-bg">
+ <h2 class="dotted">{{ pageblock.title }}</h2>
+ {{ pageblock.content|richtext_filters|safe }}
+ </div>
+ </div>
+ {% endfor %}
+ </div>
+ </div>
+ </div>
+ </div>
+ {% endif %}
+
+{% endblock %}
+
+{% block page_related_content %}
+
+ {% if page.departmentpage.articles_related.all %}
+
+ <div class="white-bg pb2">
+ <div class="container">
+ <div class="row tac">
+ <div class="col-xs-12">
+ <h2 class="dashed dashed--center">{% trans "Also discover" %}</h2>
+ </div>
+ </div>
+ <div class="row tac">
+ {% for article in page.departmentpage.articles_related.all %}
+ <div class="col-lg-3 col-md-4 col-sm-4 col-xs-6">
+ {% include 'magazine/article/includes/article_card.html' %}
+ </div>
+ {% endfor %}
+ </div>
+ </div>
+ </div>
+
+ {% endif %}
+
+{% endblock %}
+++ /dev/null
-{% extends "pages/basicpage.html" %}
-{% load i18n mezzanine_tags keyword_tags pages_tags organization_tags %}
-
-{% block meta_title %}{{ page.meta_title }}{% endblock %}
-
-{% block meta_keywords %}{% metablock %}
-{% keywords_for page as keywords %}
-{% for keyword in keywords %}
- {% if not forloop.first %}, {% endif %}
- {{ keyword }}
-{% endfor %}
-{% endmetablock %}{% endblock %}
-
-{% block meta_description %}{% metablock %}
-{{ page.description }}
-{% endmetablock %}{% endblock %}
-
-{% block page_class %}
- department
-{% endblock %}
-
-{% block page_title %}
-
- {% editable page.team.title %}
- <h1 class="dotted">{{ page.team.title }}</h1>
- {% endeditable %}
-
-{% endblock %}
-
-{% block page_slider %}
- {% if page.team.pageimage_set.all %}
- {% with page.team.pageimage_set.all as slider_images %}
- {% include 'core/inc/slider.html' %}
- {% endwith %}
- {% endif %}
-{% endblock %}
-
-{% block page_content %}
-
- {% if page.team.sub_title %}
- {% editable page.team.sub_title %}
- <div class="chapo">
- {{ page.team.sub_title }}
- </div>
- {% endeditable %}
- {% endif %}
-
- {% editable page.team.content %}
- {{ page.team.content|richtext_filters|safe }}
- {% endeditable %}
-
- {% if page.get_ascendants|length == 1 %}
- {% children_pages page.id as childrens %}
- {% if childrens %}
- <div class="page__childrens">
- {% for children in childrens %}
- {% with children as object %}
- {% include "pages/includes/page_card.html" %}
- {% endwith %}
- {% endfor %}
- </div>
- {% endif %}
- {% endif %}
-
-{% endblock %}
-
-{% block page_sub_content %}
-
- {% if page.team.pageblock_set.all %}
- <div class="white-bg pb2">
- <div class="container">
- <div class="row">
- <div class="col-sm-12">
- <hr class="mt0" />
- {% for pageblock in page.team.pageblock_set.all %}
- <div class="row" data-summary-content>
- <div class="col-sm-9 col-sm-push-3 col-lg-8 col-lg-push-2 white-bg">
- {% if not forloop.first and pageblock.with_separator %}
- <hr />
- {% endif %}
- <h2 class="dotted">{{ pageblock.title }}</h2>
- {{ pageblock.content|richtext_filters|safe }}
- </div>
- </div>
- {% endfor %}
- </div>
- </div>
- </div>
- </div>
- {% endif %}
-
-{% endblock %}
--- /dev/null
+{% extends "pages/basicpage.html" %}
+{% load i18n mezzanine_tags keyword_tags pages_tags organization_tags %}
+
+{% block meta_title %}{{ page.meta_title }}{% endblock %}
+
+{% block meta_keywords %}{% metablock %}
+{% keywords_for page as keywords %}
+{% for keyword in keywords %}
+ {% if not forloop.first %}, {% endif %}
+ {{ keyword }}
+{% endfor %}
+{% endmetablock %}{% endblock %}
+
+{% block meta_description %}{% metablock %}
+{{ page.description }}
+{% endmetablock %}{% endblock %}
+
+{% block page_class %}
+ department
+{% endblock %}
+
+{% block page_title %}
+
+ {% editable page.teampage.title %}
+ <h1 class="dotted">{{ page.teampage.title }}</h1>
+ {% endeditable %}
+
+{% endblock %}
+
+{% block page_slider %}
+ {% if page.teampage.pageimage_set.all %}
+ {% with page.teampage.pageimage_set.all as slider_images %}
+ {% include 'core/inc/slider.html' %}
+ {% endwith %}
+ {% endif %}
+{% endblock %}
+
+{% block page_content %}
+
+ {% if page.teampage.sub_title %}
+ {% editable page.teampage.sub_title %}
+ <div class="chapo">
+ {{ page.teampage.sub_title }}
+ </div>
+ {% endeditable %}
+ {% endif %}
+
+ {% editable page.teampage.content %}
+ {{ page.teampage.content|richtext_filters|safe }}
+ {% endeditable %}
+
+ {% if page.get_ascendants|length == 1 %}
+ {% children_pages page.id as childrens %}
+ {% if childrens %}
+ <div class="page__childrens">
+ {% for children in childrens %}
+ {% with children as object %}
+ {% include "pages/includes/page_card.html" %}
+ {% endwith %}
+ {% endfor %}
+ </div>
+ {% endif %}
+ {% endif %}
+
+{% endblock %}
+
+{% block page_sub_content %}
+
+ {% if page.teampage.pageblock_set.all %}
+ <div class="white-bg pb2">
+ <div class="container">
+ <div class="row">
+ <div class="col-sm-12">
+ <hr class="mt0" />
+ {% for pageblock in page.teampage.pageblock_set.all %}
+ <div class="row" data-summary-content>
+ <div class="col-sm-9 col-sm-push-3 col-lg-8 col-lg-push-2 white-bg">
+ {% if not forloop.first and pageblock.with_separator %}
+ <hr />
+ {% endif %}
+ <h2 class="dotted">{{ pageblock.title }}</h2>
+ {{ pageblock.content|richtext_filters|safe }}
+ </div>
+ </div>
+ {% endfor %}
+ </div>
+ </div>
+ </div>
+ </div>
+ {% endif %}
+
+{% endblock %}
+++ /dev/null
-{% extends "base.html" %}
-{% load i18n mezzanine_tags keyword_tags pages_tags %}
-
-{% block title %}
- {% trans "Team list" %}
-{% endblock %}
-
-{% block main %}
-
- {% for team in object_list %}
- <div class="row">
- <div class="col-sm-9 col-sm-push-3 col-lg-8 col-lg-push-2">
- {{ team.title }}
- </div>
- </div>
- {% endfor %}
-
-{% endblock %}
volumes:
- ./app/:/srv/app
- ./lib/mezzanine-agenda/:/srv/lib/mezzanine-agenda
- # - ./lib/mezzanine/:/srv/lib/mezzanine
+ - ./lib/mezzanine/:/srv/lib/mezzanine
volumes_from:
- data
expose: