From f15cc1bfebd63e08bf35a2d52af1611adf4a2c9f Mon Sep 17 00:00:00 2001 From: Guillaume Pellerin Date: Wed, 6 Jul 2016 18:49:30 +0200 Subject: [PATCH] make a unique organization module and related sub modules, reinit some migrations... --- app/custom/apps.py | 5 - app/custom/migrations/0001_initial.py | 31 --- .../migrations/0002_auto_20160705_1559.py | 25 --- .../migrations/0003_auto_20160705_1702.py | 30 --- .../migrations/0004_auto_20160705_1810.py | 46 ----- app/festival/migrations/0001_initial.py | 127 ------------ .../migrations/0002_auto_20160225_1602.py | 22 --- .../migrations/0003_auto_20160229_1430.py | 24 --- .../migrations/0004_auto_20160229_1630.py | 30 --- .../migrations/0005_auto_20160229_1636.py | 19 -- .../migrations/0006_auto_20160303_1442.py | 30 --- .../migrations/0007_auto_20160309_1441.py | 38 ---- .../migrations/0009_auto_20160322_0021.py | 46 ----- app/festival/migrations/0010_playlist.py | 30 --- .../migrations/0011_auto_20160323_1159.py | 25 --- .../migrations/0012_auto_20160405_2351.py | 29 --- .../migrations/0013_auto_20160407_1432.py | 25 --- .../migrations/0014_auto_20160407_1433.py | 25 --- .../migrations/0015_auto_20160407_2249.py | 71 ------- .../migrations/0016_auto_20160407_2255.py | 20 -- .../migrations/0017_auto_20160407_2256.py | 20 -- .../migrations/0018_auto_20160407_2301.py | 19 -- .../migrations/0019_auto_20160410_2148.py | 25 --- .../migrations/0020_auto_20160421_1059.py | 35 ---- .../migrations/0021_delete_pagecategory.py | 18 -- .../migrations/0022_auto_20160517_1457.py | 25 --- app/media/__init__.py | 0 app/media/migrations/__init__.py | 0 app/organization/__init__.py | 2 + app/organization/core/__init__.py | 7 + app/{custom => organization/core}/admin.py | 2 +- app/organization/core/apps.py | 9 + .../core/migrations/0001_initial.py | 42 ++++ .../core/migrations}/__init__.py | 0 app/{custom => organization/core}/models.py | 20 +- app/{custom => organization/core}/tests.py | 0 .../core/translation.py} | 3 +- app/{custom => organization/core}/views.py | 0 app/organization/festival/__init__.py | 10 + app/{ => organization}/festival/admin.py | 2 +- app/organization/festival/apps.py | 7 + .../festival/management}/__init__.py | 0 .../festival/management/commands}/__init__.py | 0 .../management/commands/create-admin-user.py | 0 .../commands/festival-sync-eve-events.py | 0 .../management/commands/wait-for-db.py | 0 .../festival/migrations}/__init__.py | 0 app/{ => organization}/festival/models.py | 0 app/{ => organization}/festival/related.py | 0 app/{ => organization}/festival/routers.py | 0 .../festival/templatetags/festival_tags.py | 3 +- app/{ => organization}/festival/tests.py | 0 .../festival/translation.py} | 2 +- app/{ => organization}/festival/urls.py | 3 +- app/{ => organization}/festival/views.py | 2 +- app/organization/magazine/__init__.py | 10 + app/{ => organization}/magazine/admin.py | 0 app/{ => organization}/magazine/apps.py | 3 +- .../magazine/migrations/0001_initial.py | 38 ++++ .../magazine/migrations}/__init__.py | 0 app/{ => organization}/magazine/models.py | 7 +- app/{ => organization}/magazine/tests.py | 0 app/{ => organization}/magazine/views.py | 0 app/organization/media/__init__.py | 10 + app/{ => organization}/media/admin.py | 0 app/{ => organization}/media/apps.py | 3 +- .../media}/migrations/__init__.py | 0 app/{ => organization}/media/models.py | 0 app/{ => organization}/media/tests.py | 0 app/{ => organization}/media/views.py | 0 app/organization/migrations/__init__.py | 0 app/organization/project/__init__.py | 10 + app/organization/{ => project}/admin.py | 0 app/{ => organization}/project/apps.py | 3 +- .../project/migrations/0001_initial.py} | 28 +-- .../migrations/0002_auto_20160706_1848.py | 35 ++++ .../project/migrations}/__init__.py | 0 app/organization/project/models.py | 18 ++ app/organization/{ => project}/tests.py | 0 app/organization/{ => project}/views.py | 0 app/organization/structure/__init__.py | 10 + .../structure}/admin.py | 0 app/organization/{ => structure}/apps.py | 5 +- .../migrations/0001_initial.py | 97 ++++++---- .../structure}/migrations/__init__.py | 0 app/organization/structure/models.py | 182 ++++++++++++++++++ .../structure}/tests.py | 0 .../structure}/views.py | 0 app/project/__init__.py | 0 app/project/migrations/__init__.py | 0 app/project/models.py | 15 -- app/settings.py | 14 +- app/{organization => structure}/models.py | 3 +- app/urls.py | 2 +- 94 files changed, 511 insertions(+), 936 deletions(-) delete mode 100644 app/custom/apps.py delete mode 100644 app/custom/migrations/0001_initial.py delete mode 100644 app/custom/migrations/0002_auto_20160705_1559.py delete mode 100644 app/custom/migrations/0003_auto_20160705_1702.py delete mode 100644 app/custom/migrations/0004_auto_20160705_1810.py delete mode 100644 app/festival/migrations/0001_initial.py delete mode 100644 app/festival/migrations/0002_auto_20160225_1602.py delete mode 100644 app/festival/migrations/0003_auto_20160229_1430.py delete mode 100644 app/festival/migrations/0004_auto_20160229_1630.py delete mode 100644 app/festival/migrations/0005_auto_20160229_1636.py delete mode 100644 app/festival/migrations/0006_auto_20160303_1442.py delete mode 100644 app/festival/migrations/0007_auto_20160309_1441.py delete mode 100644 app/festival/migrations/0009_auto_20160322_0021.py delete mode 100644 app/festival/migrations/0010_playlist.py delete mode 100644 app/festival/migrations/0011_auto_20160323_1159.py delete mode 100644 app/festival/migrations/0012_auto_20160405_2351.py delete mode 100644 app/festival/migrations/0013_auto_20160407_1432.py delete mode 100644 app/festival/migrations/0014_auto_20160407_1433.py delete mode 100644 app/festival/migrations/0015_auto_20160407_2249.py delete mode 100644 app/festival/migrations/0016_auto_20160407_2255.py delete mode 100644 app/festival/migrations/0017_auto_20160407_2256.py delete mode 100644 app/festival/migrations/0018_auto_20160407_2301.py delete mode 100644 app/festival/migrations/0019_auto_20160410_2148.py delete mode 100644 app/festival/migrations/0020_auto_20160421_1059.py delete mode 100644 app/festival/migrations/0021_delete_pagecategory.py delete mode 100644 app/festival/migrations/0022_auto_20160517_1457.py delete mode 100644 app/media/__init__.py delete mode 100644 app/media/migrations/__init__.py create mode 100644 app/organization/core/__init__.py rename app/{custom => organization/core}/admin.py (91%) create mode 100644 app/organization/core/apps.py create mode 100644 app/organization/core/migrations/0001_initial.py rename app/{custom => organization/core/migrations}/__init__.py (100%) rename app/{custom => organization/core}/models.py (63%) rename app/{custom => organization/core}/tests.py (100%) rename app/{custom/translations.py => organization/core/translation.py} (86%) rename app/{custom => organization/core}/views.py (100%) create mode 100644 app/organization/festival/__init__.py rename app/{ => organization}/festival/admin.py (97%) create mode 100644 app/organization/festival/apps.py rename app/{custom/migrations => organization/festival/management}/__init__.py (100%) rename app/{festival => organization/festival/management/commands}/__init__.py (100%) rename app/{ => organization}/festival/management/commands/create-admin-user.py (100%) rename app/{ => organization}/festival/management/commands/festival-sync-eve-events.py (100%) rename app/{ => organization}/festival/management/commands/wait-for-db.py (100%) rename app/{festival/management => organization/festival/migrations}/__init__.py (100%) rename app/{ => organization}/festival/models.py (100%) rename app/{ => organization}/festival/related.py (100%) rename app/{ => organization}/festival/routers.py (100%) rename app/{ => organization}/festival/templatetags/festival_tags.py (97%) rename app/{ => organization}/festival/tests.py (100%) rename app/{translations.py => organization/festival/translation.py} (94%) rename app/{ => organization}/festival/urls.py (94%) rename app/{ => organization}/festival/views.py (97%) create mode 100644 app/organization/magazine/__init__.py rename app/{ => organization}/magazine/admin.py (100%) rename app/{ => organization}/magazine/apps.py (75%) create mode 100644 app/organization/magazine/migrations/0001_initial.py rename app/{festival/management/commands => organization/magazine/migrations}/__init__.py (100%) rename app/{ => organization}/magazine/models.py (70%) rename app/{ => organization}/magazine/tests.py (100%) rename app/{ => organization}/magazine/views.py (100%) create mode 100644 app/organization/media/__init__.py rename app/{ => organization}/media/admin.py (100%) rename app/{ => organization}/media/apps.py (76%) rename app/{festival => organization/media}/migrations/__init__.py (100%) rename app/{ => organization}/media/models.py (100%) rename app/{ => organization}/media/tests.py (100%) rename app/{ => organization}/media/views.py (100%) delete mode 100644 app/organization/migrations/__init__.py create mode 100644 app/organization/project/__init__.py rename app/organization/{ => project}/admin.py (100%) rename app/{ => organization}/project/apps.py (75%) rename app/{festival/migrations/0008_auto_20160322_0018.py => organization/project/migrations/0001_initial.py} (62%) create mode 100644 app/organization/project/migrations/0002_auto_20160706_1848.py rename app/{magazine => organization/project/migrations}/__init__.py (100%) create mode 100644 app/organization/project/models.py rename app/organization/{ => project}/tests.py (100%) rename app/organization/{ => project}/views.py (100%) create mode 100644 app/organization/structure/__init__.py rename app/{project => organization/structure}/admin.py (100%) rename app/organization/{ => structure}/apps.py (52%) rename app/organization/{ => structure}/migrations/0001_initial.py (72%) rename app/{magazine => organization/structure}/migrations/__init__.py (100%) create mode 100644 app/organization/structure/models.py rename app/{project => organization/structure}/tests.py (100%) rename app/{project => organization/structure}/views.py (100%) delete mode 100644 app/project/__init__.py delete mode 100644 app/project/migrations/__init__.py delete mode 100644 app/project/models.py rename app/{organization => structure}/models.py (99%) diff --git a/app/custom/apps.py b/app/custom/apps.py deleted file mode 100644 index 245de53f..00000000 --- a/app/custom/apps.py +++ /dev/null @@ -1,5 +0,0 @@ -from django.apps import AppConfig - - -class CustomConfig(AppConfig): - name = 'custom' diff --git a/app/custom/migrations/0001_initial.py b/app/custom/migrations/0001_initial.py deleted file mode 100644 index 66ad1158..00000000 --- a/app/custom/migrations/0001_initial.py +++ /dev/null @@ -1,31 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.7 on 2016-07-05 13:58 -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 = [ - ('pages', '0004_auto_20151223_1313'), - ] - - operations = [ - migrations.CreateModel( - name='BasicPage', - 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')), - ('sub_title', models.TextField(blank=True, verbose_name='sub title')), - ], - options={ - 'ordering': ('_order',), - }, - bases=('pages.page', models.Model), - ), - ] diff --git a/app/custom/migrations/0002_auto_20160705_1559.py b/app/custom/migrations/0002_auto_20160705_1559.py deleted file mode 100644 index 2f140abf..00000000 --- a/app/custom/migrations/0002_auto_20160705_1559.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.7 on 2016-07-05 13:59 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('custom', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='basicpage', - name='sub_title_en', - field=models.TextField(blank=True, null=True, verbose_name='sub title'), - ), - migrations.AddField( - model_name='basicpage', - name='sub_title_fr', - field=models.TextField(blank=True, null=True, verbose_name='sub title'), - ), - ] diff --git a/app/custom/migrations/0003_auto_20160705_1702.py b/app/custom/migrations/0003_auto_20160705_1702.py deleted file mode 100644 index 260418e5..00000000 --- a/app/custom/migrations/0003_auto_20160705_1702.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.7 on 2016-07-05 15:02 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('custom', '0002_auto_20160705_1559'), - ] - - operations = [ - migrations.AlterField( - model_name='basicpage', - name='sub_title', - field=models.CharField(blank=True, max_length=1000, verbose_name='sub title'), - ), - migrations.AlterField( - model_name='basicpage', - name='sub_title_en', - field=models.CharField(blank=True, max_length=1000, null=True, verbose_name='sub title'), - ), - migrations.AlterField( - model_name='basicpage', - name='sub_title_fr', - field=models.CharField(blank=True, max_length=1000, null=True, verbose_name='sub title'), - ), - ] diff --git a/app/custom/migrations/0004_auto_20160705_1810.py b/app/custom/migrations/0004_auto_20160705_1810.py deleted file mode 100644 index d3e93e97..00000000 --- a/app/custom/migrations/0004_auto_20160705_1810.py +++ /dev/null @@ -1,46 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.7 on 2016-07-05 16:10 -from __future__ import unicode_literals - -from django.db import migrations, models -import mezzanine.core.fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('custom', '0003_auto_20160705_1702'), - ] - - operations = [ - migrations.AddField( - model_name='basicpage', - name='photo', - field=mezzanine.core.fields.FileField(blank=True, max_length=1024, verbose_name='photo'), - ), - migrations.AddField( - model_name='basicpage', - name='photo_alignment', - field=models.CharField(blank=True, choices=[('left', 'left'), ('right', 'right')], default='left', max_length=32, verbose_name='photo alignment'), - ), - migrations.AddField( - model_name='basicpage', - name='photo_credits', - field=models.CharField(blank=True, max_length=255, null=True, verbose_name='photo credits'), - ), - migrations.AddField( - model_name='basicpage', - name='photo_description', - field=models.TextField(blank=True, verbose_name='photo description'), - ), - migrations.AddField( - model_name='basicpage', - name='photo_featured', - field=mezzanine.core.fields.FileField(blank=True, max_length=1024, verbose_name='photo featured'), - ), - migrations.AddField( - model_name='basicpage', - name='photo_featured_credits', - field=models.CharField(blank=True, max_length=255, null=True, verbose_name='photo featured credits'), - ), - ] diff --git a/app/festival/migrations/0001_initial.py b/app/festival/migrations/0001_initial.py deleted file mode 100644 index 12a95a76..00000000 --- a/app/festival/migrations/0001_initial.py +++ /dev/null @@ -1,127 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations, models -import mezzanine.utils.models -import django.db.models.deletion -import mezzanine.core.fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('sites', '0001_initial'), - ('mezzanine_agenda', '0002_auto_20160224_1142'), - ] - - operations = [ - migrations.CreateModel( - name='Artist', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('keywords_string', models.CharField(max_length=500, editable=False, blank=True)), - ('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(help_text='Leave blank to have the URL auto-generated from the title.', max_length=2000, null=True, verbose_name='URL', blank=True)), - ('_meta_title', models.CharField(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', blank=True)), - ('description', models.TextField(verbose_name='Description', blank=True)), - ('description_fr', models.TextField(null=True, verbose_name='Description', blank=True)), - ('description_en', models.TextField(null=True, verbose_name='Description', blank=True)), - ('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(null=True, editable=False)), - ('updated', models.DateTimeField(null=True, editable=False)), - ('status', models.IntegerField(default=2, help_text='With Draft chosen, will only be shown for admin users on the site.', verbose_name='Status', choices=[(1, 'Draft'), (2, 'Published')])), - ('publish_date', models.DateTimeField(help_text="With Published chosen, won't be shown until this time", null=True, verbose_name='Published from', db_index=True, blank=True)), - ('expiry_date', models.DateTimeField(help_text="With Published chosen, won't be shown after this time", null=True, verbose_name='Expires on', blank=True)), - ('short_url', models.URLField(null=True, blank=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')), - ('bio', mezzanine.core.fields.RichTextField(verbose_name='biography', blank=True)), - ('bio_fr', mezzanine.core.fields.RichTextField(null=True, verbose_name='biography', blank=True)), - ('bio_en', mezzanine.core.fields.RichTextField(null=True, verbose_name='biography', blank=True)), - ('photo', mezzanine.core.fields.FileField(max_length=1024, verbose_name='photo', blank=True)), - ('photo_credits', models.CharField(max_length=255, null=True, verbose_name='photo credits', blank=True)), - ('featured', models.BooleanField(default=False, verbose_name='featured')), - ('site', models.ForeignKey(editable=False, to='sites.Site')), - ], - options={ - 'db_table': 'festival_artists', - 'verbose_name': 'artist', - }, - bases=(models.Model, mezzanine.utils.models.AdminThumbMixin), - ), - migrations.CreateModel( - name='EventCategory', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=512, verbose_name='name')), - ('description', models.TextField(verbose_name='description', blank=True)), - ], - options={ - 'verbose_name': 'event category', - }, - ), - migrations.CreateModel( - name='FestivalEvent', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('eve_event_id', models.IntegerField(verbose_name='eve id', blank=True)), - ('featured', models.BooleanField(default=False, verbose_name='featured')), - ('featured_image', mezzanine.core.fields.FileField(max_length=1024, verbose_name='featured image', blank=True)), - ('featured_image_header', mezzanine.core.fields.FileField(max_length=1024, verbose_name='featured image header', blank=True)), - ('artists', models.ManyToManyField(related_name='metaevents', verbose_name='artists', to='festival.Artist', blank=True)), - ('category', models.ForeignKey(related_name='festival_events', on_delete=django.db.models.deletion.SET_NULL, verbose_name='category', blank=True, to='festival.EventCategory', null=True)), - ('event', models.ForeignKey(related_name='festival_events', on_delete=django.db.models.deletion.SET_NULL, verbose_name='festival event', blank=True, to='mezzanine_agenda.Event', null=True)), - ], - options={ - 'db_table': 'festival_events', - 'verbose_name': 'festival event', - }, - ), - migrations.CreateModel( - name='PageCategory', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=512, verbose_name='name')), - ('description', models.TextField(verbose_name='description', blank=True)), - ], - options={ - 'verbose_name': 'page category', - }, - ), - migrations.CreateModel( - name='Video', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('keywords_string', models.CharField(max_length=500, editable=False, blank=True)), - ('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(help_text='Leave blank to have the URL auto-generated from the title.', max_length=2000, null=True, verbose_name='URL', blank=True)), - ('_meta_title', models.CharField(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', blank=True)), - ('description', models.TextField(verbose_name='Description', blank=True)), - ('description_fr', models.TextField(null=True, verbose_name='Description', blank=True)), - ('description_en', models.TextField(null=True, verbose_name='Description', blank=True)), - ('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(null=True, editable=False)), - ('updated', models.DateTimeField(null=True, editable=False)), - ('status', models.IntegerField(default=2, help_text='With Draft chosen, will only be shown for admin users on the site.', verbose_name='Status', choices=[(1, 'Draft'), (2, 'Published')])), - ('publish_date', models.DateTimeField(help_text="With Published chosen, won't be shown until this time", null=True, verbose_name='Published from', db_index=True, blank=True)), - ('expiry_date', models.DateTimeField(help_text="With Published chosen, won't be shown after this time", null=True, verbose_name='Expires on', blank=True)), - ('short_url', models.URLField(null=True, blank=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')), - ('media_id', models.IntegerField(verbose_name='media id')), - ('event', models.ForeignKey(related_name='videos', on_delete=django.db.models.deletion.SET_NULL, verbose_name='event', blank=True, to='mezzanine_agenda.Event', null=True)), - ('site', models.ForeignKey(editable=False, to='sites.Site')), - ], - options={ - 'abstract': False, - }, - ), - ] diff --git a/app/festival/migrations/0002_auto_20160225_1602.py b/app/festival/migrations/0002_auto_20160225_1602.py deleted file mode 100644 index 5af49cf4..00000000 --- a/app/festival/migrations/0002_auto_20160225_1602.py +++ /dev/null @@ -1,22 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('festival', '0001_initial'), - ] - - operations = [ - migrations.AlterModelOptions( - name='video', - options={'verbose_name': 'video'}, - ), - migrations.AlterModelTable( - name='video', - table='festival_videos', - ), - ] diff --git a/app/festival/migrations/0003_auto_20160229_1430.py b/app/festival/migrations/0003_auto_20160229_1430.py deleted file mode 100644 index c8ff6ef1..00000000 --- a/app/festival/migrations/0003_auto_20160229_1430.py +++ /dev/null @@ -1,24 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('festival', '0002_auto_20160225_1602'), - ] - - operations = [ - migrations.AddField( - model_name='artist', - name='photo_description', - field=models.TextField(verbose_name='photo description', blank=True), - ), - migrations.AddField( - model_name='festivalevent', - name='featured_image_description', - field=models.TextField(verbose_name='featured image description', blank=True), - ), - ] diff --git a/app/festival/migrations/0004_auto_20160229_1630.py b/app/festival/migrations/0004_auto_20160229_1630.py deleted file mode 100644 index f34db566..00000000 --- a/app/festival/migrations/0004_auto_20160229_1630.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations, models -import mezzanine.core.fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('festival', '0003_auto_20160229_1430'), - ] - - operations = [ - migrations.AddField( - model_name='artist', - name='photo_alignment', - field=models.CharField(default=b'left', max_length=32, verbose_name='photo alignment', choices=[(b'left', 'left'), (b'right', 'right')]), - ), - migrations.AddField( - model_name='artist', - name='photo_featured', - field=mezzanine.core.fields.FileField(max_length=1024, verbose_name='photo featured', blank=True), - ), - migrations.AddField( - model_name='artist', - name='photo_featured_credits', - field=models.CharField(max_length=255, null=True, verbose_name='photo featured credits', blank=True), - ), - ] diff --git a/app/festival/migrations/0005_auto_20160229_1636.py b/app/festival/migrations/0005_auto_20160229_1636.py deleted file mode 100644 index 32426bb1..00000000 --- a/app/festival/migrations/0005_auto_20160229_1636.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('festival', '0004_auto_20160229_1630'), - ] - - operations = [ - migrations.AlterField( - model_name='artist', - name='photo_alignment', - field=models.CharField(default=b'left', max_length=32, verbose_name='photo alignment', blank=True, choices=[(b'left', 'left'), (b'right', 'right')]), - ), - ] diff --git a/app/festival/migrations/0006_auto_20160303_1442.py b/app/festival/migrations/0006_auto_20160303_1442.py deleted file mode 100644 index 876b18d0..00000000 --- a/app/festival/migrations/0006_auto_20160303_1442.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-03-03 13:42 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('festival', '0005_auto_20160229_1636'), - ] - - operations = [ - migrations.AlterField( - model_name='artist', - name='photo_alignment', - field=models.CharField(blank=True, choices=[('left', 'left'), ('right', 'right')], default='left', max_length=32, verbose_name='photo alignment'), - ), - migrations.AlterField( - model_name='festivalevent', - name='eve_event_id', - field=models.IntegerField(blank=True, null=True, verbose_name='eve id'), - ), - migrations.AlterField( - model_name='video', - name='media_id', - field=models.CharField(max_length=128, verbose_name='media id'), - ), - ] diff --git a/app/festival/migrations/0007_auto_20160309_1441.py b/app/festival/migrations/0007_auto_20160309_1441.py deleted file mode 100644 index 1713cb8e..00000000 --- a/app/festival/migrations/0007_auto_20160309_1441.py +++ /dev/null @@ -1,38 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('mezzanine_agenda', '0002_auto_20160224_1142'), - ('festival', '0006_auto_20160303_1442'), - ] - - operations = [ - migrations.RemoveField( - model_name='festivalevent', - name='artists', - ), - migrations.RemoveField( - model_name='festivalevent', - name='category', - ), - migrations.RemoveField( - model_name='festivalevent', - name='event', - ), - migrations.AddField( - model_name='artist', - name='events', - field=models.ManyToManyField(related_name='artists', verbose_name='events', to='mezzanine_agenda.Event', blank=True), - ), - migrations.DeleteModel( - name='EventCategory', - ), - migrations.DeleteModel( - name='FestivalEvent', - ), - ] diff --git a/app/festival/migrations/0009_auto_20160322_0021.py b/app/festival/migrations/0009_auto_20160322_0021.py deleted file mode 100644 index d2be5599..00000000 --- a/app/festival/migrations/0009_auto_20160322_0021.py +++ /dev/null @@ -1,46 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-03-21 23:21 -from __future__ import unicode_literals - -from django.db import migrations, models -import mezzanine.core.fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('festival', '0008_auto_20160322_0018'), - ] - - operations = [ - migrations.AddField( - model_name='audio', - name='content_en', - field=mezzanine.core.fields.RichTextField(null=True, verbose_name='Content'), - ), - migrations.AddField( - model_name='audio', - name='content_fr', - field=mezzanine.core.fields.RichTextField(null=True, verbose_name='Content'), - ), - migrations.AddField( - model_name='audio', - name='description_en', - field=models.TextField(blank=True, null=True, verbose_name='Description'), - ), - migrations.AddField( - model_name='audio', - name='description_fr', - field=models.TextField(blank=True, null=True, verbose_name='Description'), - ), - migrations.AddField( - model_name='audio', - name='title_en', - field=models.CharField(max_length=500, null=True, verbose_name='Title'), - ), - migrations.AddField( - model_name='audio', - name='title_fr', - field=models.CharField(max_length=500, null=True, verbose_name='Title'), - ), - ] diff --git a/app/festival/migrations/0010_playlist.py b/app/festival/migrations/0010_playlist.py deleted file mode 100644 index e73b3274..00000000 --- a/app/festival/migrations/0010_playlist.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-03-22 00:00 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('mezzanine_agenda', '0003_auto_20160309_1621'), - ('festival', '0009_auto_20160322_0021'), - ] - - operations = [ - migrations.CreateModel( - name='Playlist', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('title', models.CharField(max_length=512, verbose_name='title')), - ('description', models.TextField(blank=True, verbose_name='description')), - ('audios', models.ManyToManyField(blank=True, related_name='playlists', to='festival.Audio', verbose_name='audios')), - ('event', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='playlists', to='mezzanine_agenda.Event', verbose_name='event')), - ], - options={ - 'abstract': False, - }, - ), - ] diff --git a/app/festival/migrations/0011_auto_20160323_1159.py b/app/festival/migrations/0011_auto_20160323_1159.py deleted file mode 100644 index 35fabf98..00000000 --- a/app/festival/migrations/0011_auto_20160323_1159.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-03-23 10:59 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('festival', '0010_playlist'), - ] - - operations = [ - migrations.AddField( - model_name='artist', - name='first_name', - field=models.CharField(blank=True, max_length=255, null=True, verbose_name='first name'), - ), - migrations.AddField( - model_name='artist', - name='last_name', - field=models.CharField(blank=True, max_length=255, null=True, verbose_name='last name'), - ), - ] diff --git a/app/festival/migrations/0012_auto_20160405_2351.py b/app/festival/migrations/0012_auto_20160405_2351.py deleted file mode 100644 index 71de6cb3..00000000 --- a/app/festival/migrations/0012_auto_20160405_2351.py +++ /dev/null @@ -1,29 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-04-05 21:51 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('festival', '0011_auto_20160323_1159'), - ] - - operations = [ - migrations.AlterModelOptions( - name='artist', - options={'ordering': ['last_name'], 'verbose_name': 'artist'}, - ), - migrations.AddField( - model_name='audio', - name='featured', - field=models.BooleanField(default=False, verbose_name='featured'), - ), - migrations.AddField( - model_name='video', - name='featured', - field=models.BooleanField(default=False, verbose_name='featured'), - ), - ] diff --git a/app/festival/migrations/0013_auto_20160407_1432.py b/app/festival/migrations/0013_auto_20160407_1432.py deleted file mode 100644 index e03e859c..00000000 --- a/app/festival/migrations/0013_auto_20160407_1432.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-04-07 12:32 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('festival', '0012_auto_20160405_2351'), - ] - - operations = [ - migrations.AddField( - model_name='audio', - name='poster', - field=models.URLField(blank=True, max_length=1024, verbose_name='poster'), - ), - migrations.AddField( - model_name='video', - name='poster', - field=models.URLField(blank=True, max_length=1024, verbose_name='poster'), - ), - ] diff --git a/app/festival/migrations/0014_auto_20160407_1433.py b/app/festival/migrations/0014_auto_20160407_1433.py deleted file mode 100644 index ac63f684..00000000 --- a/app/festival/migrations/0014_auto_20160407_1433.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-04-07 12:33 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('festival', '0013_auto_20160407_1432'), - ] - - operations = [ - migrations.RenameField( - model_name='audio', - old_name='poster', - new_name='poster_url', - ), - migrations.RenameField( - model_name='video', - old_name='poster', - new_name='poster_url', - ), - ] diff --git a/app/festival/migrations/0015_auto_20160407_2249.py b/app/festival/migrations/0015_auto_20160407_2249.py deleted file mode 100644 index 7f6bd1da..00000000 --- a/app/festival/migrations/0015_auto_20160407_2249.py +++ /dev/null @@ -1,71 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-04-07 20:49 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('blog', '0003_auto_20151223_1313'), - ('pages', '0004_auto_20151223_1313'), - ('mezzanine_agenda', '0006_remove_event_featured'), - ('festival', '0014_auto_20160407_1433'), - ] - - operations = [ - migrations.CreateModel( - name='Featured', - 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={ - 'abstract': False, - }, - ), - migrations.RemoveField( - model_name='artist', - name='featured', - ), - migrations.RemoveField( - model_name='audio', - name='featured', - ), - migrations.RemoveField( - model_name='video', - name='featured', - ), - migrations.AddField( - model_name='featured', - name='artists', - field=models.ManyToManyField(blank=True, related_name='featured', to='festival.Artist', verbose_name='artists'), - ), - migrations.AddField( - model_name='featured', - name='blogpost', - field=models.ManyToManyField(blank=True, related_name='featured', to='blog.BlogPost', verbose_name='blog post'), - ), - migrations.AddField( - model_name='featured', - name='events', - field=models.ManyToManyField(blank=True, related_name='featured', to='mezzanine_agenda.Event', verbose_name='events'), - ), - migrations.AddField( - model_name='featured', - name='page', - field=models.ManyToManyField(blank=True, related_name='featured', to='pages.Page', verbose_name='page'), - ), - migrations.AddField( - model_name='featured', - name='playlists', - field=models.ManyToManyField(blank=True, related_name='featured', to='festival.Playlist', verbose_name='playlists'), - ), - migrations.AddField( - model_name='featured', - name='videos', - field=models.ManyToManyField(blank=True, related_name='featured', to='festival.Video', verbose_name='videos'), - ), - ] diff --git a/app/festival/migrations/0016_auto_20160407_2255.py b/app/festival/migrations/0016_auto_20160407_2255.py deleted file mode 100644 index 3e0a2af8..00000000 --- a/app/festival/migrations/0016_auto_20160407_2255.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-04-07 20:55 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('festival', '0015_auto_20160407_2249'), - ] - - operations = [ - migrations.RenameField( - model_name='featured', - old_name='blogpost', - new_name='blogposts', - ), - ] diff --git a/app/festival/migrations/0017_auto_20160407_2256.py b/app/festival/migrations/0017_auto_20160407_2256.py deleted file mode 100644 index ec4ce28e..00000000 --- a/app/festival/migrations/0017_auto_20160407_2256.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-04-07 20:56 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('festival', '0016_auto_20160407_2255'), - ] - - operations = [ - migrations.RenameField( - model_name='featured', - old_name='page', - new_name='pages', - ), - ] diff --git a/app/festival/migrations/0018_auto_20160407_2301.py b/app/festival/migrations/0018_auto_20160407_2301.py deleted file mode 100644 index a449f01a..00000000 --- a/app/festival/migrations/0018_auto_20160407_2301.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-04-07 21:01 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('festival', '0017_auto_20160407_2256'), - ] - - operations = [ - migrations.AlterModelTable( - name='pagecategory', - table='festival_page_category', - ), - ] diff --git a/app/festival/migrations/0019_auto_20160410_2148.py b/app/festival/migrations/0019_auto_20160410_2148.py deleted file mode 100644 index 0dea9bbe..00000000 --- a/app/festival/migrations/0019_auto_20160410_2148.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-04-10 19:48 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('festival', '0018_auto_20160407_2301'), - ] - - operations = [ - migrations.AlterField( - model_name='featured', - name='blogposts', - field=models.ManyToManyField(blank=True, related_name='featured', to='blog.BlogPost', verbose_name='blog posts'), - ), - migrations.AlterField( - model_name='featured', - name='pages', - field=models.ManyToManyField(blank=True, related_name='featured', to='pages.Page', verbose_name='pages'), - ), - ] diff --git a/app/festival/migrations/0020_auto_20160421_1059.py b/app/festival/migrations/0020_auto_20160421_1059.py deleted file mode 100644 index 176f87d8..00000000 --- a/app/festival/migrations/0020_auto_20160421_1059.py +++ /dev/null @@ -1,35 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-04-21 08:59 -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'), - ('festival', '0019_auto_20160410_2148'), - ] - - operations = [ - migrations.CreateModel( - name='VideoCategory', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('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')), - ('site', models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.Site')), - ], - options={ - 'verbose_name': 'video category', - 'db_table': 'festival_video_category', - }, - ), - migrations.AddField( - model_name='video', - name='category', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='videos', to='festival.VideoCategory', verbose_name='category'), - ), - ] diff --git a/app/festival/migrations/0021_delete_pagecategory.py b/app/festival/migrations/0021_delete_pagecategory.py deleted file mode 100644 index 3cc91743..00000000 --- a/app/festival/migrations/0021_delete_pagecategory.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-04-21 09:23 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('festival', '0020_auto_20160421_1059'), - ] - - operations = [ - migrations.DeleteModel( - name='PageCategory', - ), - ] diff --git a/app/festival/migrations/0022_auto_20160517_1457.py b/app/festival/migrations/0022_auto_20160517_1457.py deleted file mode 100644 index 2dceb3cb..00000000 --- a/app/festival/migrations/0022_auto_20160517_1457.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-05-17 12:57 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('festival', '0021_delete_pagecategory'), - ] - - operations = [ - migrations.AddField( - model_name='audio', - name='artists', - field=models.ManyToManyField(blank=True, related_name='audios', to='festival.Artist', verbose_name='artists'), - ), - migrations.AddField( - model_name='video', - name='artists', - field=models.ManyToManyField(blank=True, related_name='videos', to='festival.Artist', verbose_name='artists'), - ), - ] diff --git a/app/media/__init__.py b/app/media/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/app/media/migrations/__init__.py b/app/media/migrations/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/app/organization/__init__.py b/app/organization/__init__.py index e69de29b..efe892af 100644 --- a/app/organization/__init__.py +++ b/app/organization/__init__.py @@ -0,0 +1,2 @@ + +__version__ = 0.1 diff --git a/app/organization/core/__init__.py b/app/organization/core/__init__.py new file mode 100644 index 00000000..141c2fb0 --- /dev/null +++ b/app/organization/core/__init__.py @@ -0,0 +1,7 @@ +""" +Provides abstract models and admin features used throughout the various +Mezzanine apps. +""" +from __future__ import unicode_literals + +default_app_config = 'organization.core.apps.CoreConfig' diff --git a/app/custom/admin.py b/app/organization/core/admin.py similarity index 91% rename from app/custom/admin.py rename to app/organization/core/admin.py index 7ca39c30..fad5b451 100644 --- a/app/custom/admin.py +++ b/app/organization/core/admin.py @@ -3,7 +3,7 @@ from copy import deepcopy from mezzanine.pages.models import Page from mezzanine.pages.admin import PageAdmin from mezzanine.pages.models import RichTextPage -from custom.models import BasicPage +from organization.core.models import BasicPage # page_fieldsets = deepcopy(PageAdmin.fieldsets) diff --git a/app/organization/core/apps.py b/app/organization/core/apps.py new file mode 100644 index 00000000..b05d77a9 --- /dev/null +++ b/app/organization/core/apps.py @@ -0,0 +1,9 @@ +from django.apps import AppConfig + +from django.core.checks import register + + +class CoreConfig(AppConfig): + + name = 'organization.core' + label = 'organization core' diff --git a/app/organization/core/migrations/0001_initial.py b/app/organization/core/migrations/0001_initial.py new file mode 100644 index 00000000..9f094560 --- /dev/null +++ b/app/organization/core/migrations/0001_initial.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.7 on 2016-07-06 16:48 +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 = [ + ('pages', '0004_auto_20151223_1313'), + ] + + operations = [ + migrations.CreateModel( + name='BasicPage', + 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')), + ('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')), + ('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')), + ], + options={ + 'verbose_name': 'basic page', + 'ordering': ('_order',), + }, + bases=('pages.page', models.Model), + ), + ] diff --git a/app/custom/__init__.py b/app/organization/core/migrations/__init__.py similarity index 100% rename from app/custom/__init__.py rename to app/organization/core/migrations/__init__.py diff --git a/app/custom/models.py b/app/organization/core/models.py similarity index 63% rename from app/custom/models.py rename to app/organization/core/models.py index 46b58bf5..885583a4 100644 --- a/app/custom/models.py +++ b/app/organization/core/models.py @@ -5,12 +5,30 @@ from mezzanine.pages.models import Page, RichText from mezzanine.core.fields import RichTextField, OrderField, FileField from django.conf import settings -from media.models import Photos +from organization.media.models import Photos ALIGNMENT_CHOICES = (('left', _('left')), ('right', _('right'))) MEDIA_BASE_URL = getattr(settings, 'MEDIA_BASE_URL', 'http://medias.ircam.fr/embed/media/') + +class Named(models.Model): + """Named object with description""" + + name = models.CharField(_('name'), max_length=512) + description = models.TextField(_('description'), blank=True) + + class Meta: + abstract = True + + def __unicode__(self): + return self.name + + @property + def slug(self): + return slugify(self.__unicode__()) + + class SubTitle(models.Model): sub_title = models.TextField(_('sub title'), blank=True, max_length=1024) diff --git a/app/custom/tests.py b/app/organization/core/tests.py similarity index 100% rename from app/custom/tests.py rename to app/organization/core/tests.py diff --git a/app/custom/translations.py b/app/organization/core/translation.py similarity index 86% rename from app/custom/translations.py rename to app/organization/core/translation.py index cbc624c8..bce03dea 100644 --- a/app/custom/translations.py +++ b/app/organization/core/translation.py @@ -1,7 +1,8 @@ from modeltranslation.translator import translator, register, TranslationOptions from mezzanine.pages.models import Page, RichText from mezzanine.pages.translation import TranslatedRichText -from custom.models import BasicPage + +from organization.core.models import BasicPage @register(BasicPage) diff --git a/app/custom/views.py b/app/organization/core/views.py similarity index 100% rename from app/custom/views.py rename to app/organization/core/views.py diff --git a/app/organization/festival/__init__.py b/app/organization/festival/__init__.py new file mode 100644 index 00000000..28fa6ce6 --- /dev/null +++ b/app/organization/festival/__init__.py @@ -0,0 +1,10 @@ +""" +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.festival.apps.FestivalConfig' diff --git a/app/festival/admin.py b/app/organization/festival/admin.py similarity index 97% rename from app/festival/admin.py rename to app/organization/festival/admin.py index f15f1c37..70fb8fcc 100644 --- a/app/festival/admin.py +++ b/app/organization/festival/admin.py @@ -11,7 +11,7 @@ from mezzanine_agenda.admin import * from mezzanine.conf import settings from mezzanine.core.admin import DisplayableAdmin, OwnableAdmin -from festival.models import * +from organization.festival.models import * class ArtistAdmin(admin.ModelAdmin): diff --git a/app/organization/festival/apps.py b/app/organization/festival/apps.py new file mode 100644 index 00000000..a6fe16f3 --- /dev/null +++ b/app/organization/festival/apps.py @@ -0,0 +1,7 @@ +from django.apps import AppConfig + + +class FestivalConfig(AppConfig): + + name = 'organization.festival' + label = 'organization festival' diff --git a/app/custom/migrations/__init__.py b/app/organization/festival/management/__init__.py similarity index 100% rename from app/custom/migrations/__init__.py rename to app/organization/festival/management/__init__.py diff --git a/app/festival/__init__.py b/app/organization/festival/management/commands/__init__.py similarity index 100% rename from app/festival/__init__.py rename to app/organization/festival/management/commands/__init__.py diff --git a/app/festival/management/commands/create-admin-user.py b/app/organization/festival/management/commands/create-admin-user.py similarity index 100% rename from app/festival/management/commands/create-admin-user.py rename to app/organization/festival/management/commands/create-admin-user.py diff --git a/app/festival/management/commands/festival-sync-eve-events.py b/app/organization/festival/management/commands/festival-sync-eve-events.py similarity index 100% rename from app/festival/management/commands/festival-sync-eve-events.py rename to app/organization/festival/management/commands/festival-sync-eve-events.py diff --git a/app/festival/management/commands/wait-for-db.py b/app/organization/festival/management/commands/wait-for-db.py similarity index 100% rename from app/festival/management/commands/wait-for-db.py rename to app/organization/festival/management/commands/wait-for-db.py diff --git a/app/festival/management/__init__.py b/app/organization/festival/migrations/__init__.py similarity index 100% rename from app/festival/management/__init__.py rename to app/organization/festival/migrations/__init__.py diff --git a/app/festival/models.py b/app/organization/festival/models.py similarity index 100% rename from app/festival/models.py rename to app/organization/festival/models.py diff --git a/app/festival/related.py b/app/organization/festival/related.py similarity index 100% rename from app/festival/related.py rename to app/organization/festival/related.py diff --git a/app/festival/routers.py b/app/organization/festival/routers.py similarity index 100% rename from app/festival/routers.py rename to app/organization/festival/routers.py diff --git a/app/festival/templatetags/festival_tags.py b/app/organization/festival/templatetags/festival_tags.py similarity index 97% rename from app/festival/templatetags/festival_tags.py rename to app/organization/festival/templatetags/festival_tags.py index 27370952..824c59a2 100644 --- a/app/festival/templatetags/festival_tags.py +++ b/app/organization/festival/templatetags/festival_tags.py @@ -3,10 +3,11 @@ from mezzanine.pages.models import Page from mezzanine.blog.models import BlogPost from mezzanine.template import Library from mezzanine_agenda.models import Event -from festival.models import * from mezzanine.conf import settings from random import shuffle +from organization.festival.models import * + register = Library() diff --git a/app/festival/tests.py b/app/organization/festival/tests.py similarity index 100% rename from app/festival/tests.py rename to app/organization/festival/tests.py diff --git a/app/translations.py b/app/organization/festival/translation.py similarity index 94% rename from app/translations.py rename to app/organization/festival/translation.py index 202c1370..fabf2bf0 100644 --- a/app/translations.py +++ b/app/organization/festival/translation.py @@ -1,7 +1,7 @@ from modeltranslation.translator import register, TranslationOptions from mezzanine_agenda.models import Event, EventLocation -from festival.models import * +from organization.festival.models import * @register(Event) diff --git a/app/festival/urls.py b/app/organization/festival/urls.py similarity index 94% rename from app/festival/urls.py rename to app/organization/festival/urls.py index a02323cb..dbf17f42 100644 --- a/app/festival/urls.py +++ b/app/organization/festival/urls.py @@ -7,7 +7,8 @@ from django.contrib import admin from mezzanine.core.views import direct_to_template from mezzanine.conf import settings -from festival.views import * +from organization.festival.views import * + urlpatterns = [ url(r'^artists/$', ArtistListView.as_view(), name="festival-artist-list"), diff --git a/app/festival/views.py b/app/organization/festival/views.py similarity index 97% rename from app/festival/views.py rename to app/organization/festival/views.py index 75feeaac..0c55cf80 100644 --- a/app/festival/views.py +++ b/app/organization/festival/views.py @@ -3,7 +3,7 @@ from django.views.generic import * from django.views.generic.base import * from django.shortcuts import get_object_or_404 -from festival.models import * +from organization.festival.models import * from mezzanine_agenda.models import EventLocation diff --git a/app/organization/magazine/__init__.py b/app/organization/magazine/__init__.py new file mode 100644 index 00000000..043bee89 --- /dev/null +++ b/app/organization/magazine/__init__.py @@ -0,0 +1,10 @@ +""" +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.magazine.apps.MagazineConfig' diff --git a/app/magazine/admin.py b/app/organization/magazine/admin.py similarity index 100% rename from app/magazine/admin.py rename to app/organization/magazine/admin.py diff --git a/app/magazine/apps.py b/app/organization/magazine/apps.py similarity index 75% rename from app/magazine/apps.py rename to app/organization/magazine/apps.py index f4f5391b..508c40ae 100644 --- a/app/magazine/apps.py +++ b/app/organization/magazine/apps.py @@ -4,4 +4,5 @@ from django.apps import AppConfig class MagazineConfig(AppConfig): - name = 'magazine' + + name = 'organization.magazine' diff --git a/app/organization/magazine/migrations/0001_initial.py b/app/organization/magazine/migrations/0001_initial.py new file mode 100644 index 00000000..683c85db --- /dev/null +++ b/app/organization/magazine/migrations/0001_initial.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.7 on 2016-07-06 16:48 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Category', + 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': 'category', + }, + ), + migrations.CreateModel( + name='Topic', + 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': 'topic', + }, + ), + ] diff --git a/app/festival/management/commands/__init__.py b/app/organization/magazine/migrations/__init__.py similarity index 100% rename from app/festival/management/commands/__init__.py rename to app/organization/magazine/migrations/__init__.py diff --git a/app/magazine/models.py b/app/organization/magazine/models.py similarity index 70% rename from app/magazine/models.py rename to app/organization/magazine/models.py index 267d5cdf..fe40d65a 100644 --- a/app/magazine/models.py +++ b/app/organization/magazine/models.py @@ -1,9 +1,12 @@ from __future__ import unicode_literals from django.db import models +from django.utils.translation import ugettext_lazy as _ +from organization.core.models import Named -class Category(BaseNameModel): + +class Category(Named): """(Category description)""" class Meta: @@ -13,7 +16,7 @@ class Category(BaseNameModel): return self.name -class Topic(BaseNameModel): +class Topic(Named): """(Topic description)""" class Meta: diff --git a/app/magazine/tests.py b/app/organization/magazine/tests.py similarity index 100% rename from app/magazine/tests.py rename to app/organization/magazine/tests.py diff --git a/app/magazine/views.py b/app/organization/magazine/views.py similarity index 100% rename from app/magazine/views.py rename to app/organization/magazine/views.py diff --git a/app/organization/media/__init__.py b/app/organization/media/__init__.py new file mode 100644 index 00000000..a4e2211d --- /dev/null +++ b/app/organization/media/__init__.py @@ -0,0 +1,10 @@ +""" +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.media.apps.MediaConfig' diff --git a/app/media/admin.py b/app/organization/media/admin.py similarity index 100% rename from app/media/admin.py rename to app/organization/media/admin.py diff --git a/app/media/apps.py b/app/organization/media/apps.py similarity index 76% rename from app/media/apps.py rename to app/organization/media/apps.py index c36a53ef..0b6445c2 100644 --- a/app/media/apps.py +++ b/app/organization/media/apps.py @@ -4,4 +4,5 @@ from django.apps import AppConfig class MediaConfig(AppConfig): - name = 'media' + + name = 'organization.media' diff --git a/app/festival/migrations/__init__.py b/app/organization/media/migrations/__init__.py similarity index 100% rename from app/festival/migrations/__init__.py rename to app/organization/media/migrations/__init__.py diff --git a/app/media/models.py b/app/organization/media/models.py similarity index 100% rename from app/media/models.py rename to app/organization/media/models.py diff --git a/app/media/tests.py b/app/organization/media/tests.py similarity index 100% rename from app/media/tests.py rename to app/organization/media/tests.py diff --git a/app/media/views.py b/app/organization/media/views.py similarity index 100% rename from app/media/views.py rename to app/organization/media/views.py diff --git a/app/organization/migrations/__init__.py b/app/organization/migrations/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/app/organization/project/__init__.py b/app/organization/project/__init__.py new file mode 100644 index 00000000..03586203 --- /dev/null +++ b/app/organization/project/__init__.py @@ -0,0 +1,10 @@ +""" +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' diff --git a/app/organization/admin.py b/app/organization/project/admin.py similarity index 100% rename from app/organization/admin.py rename to app/organization/project/admin.py diff --git a/app/project/apps.py b/app/organization/project/apps.py similarity index 75% rename from app/project/apps.py rename to app/organization/project/apps.py index 6b7b7998..26ba939a 100644 --- a/app/project/apps.py +++ b/app/organization/project/apps.py @@ -4,4 +4,5 @@ from django.apps import AppConfig class ProjectConfig(AppConfig): - name = 'project' + + name = 'organization.project' diff --git a/app/festival/migrations/0008_auto_20160322_0018.py b/app/organization/project/migrations/0001_initial.py similarity index 62% rename from app/festival/migrations/0008_auto_20160322_0018.py rename to app/organization/project/migrations/0001_initial.py index 98de723b..e8ea8f52 100644 --- a/app/festival/migrations/0008_auto_20160322_0018.py +++ b/app/organization/project/migrations/0001_initial.py @@ -1,23 +1,21 @@ # -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-03-21 23:18 +# Generated by Django 1.9.7 on 2016-07-06 16:48 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 = [ - ('mezzanine_agenda', '0003_auto_20160309_1621'), - ('sites', '0002_alter_domain_unique'), - ('festival', '0007_auto_20160309_1441'), ] operations = [ migrations.CreateModel( - name='Audio', + 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)), @@ -34,25 +32,9 @@ class Migration(migrations.Migration): ('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')), - ('media_id', models.CharField(max_length=128, verbose_name='media id')), - ('open_source_url', models.URLField(blank=True, max_length=1024, verbose_name='open source URL')), - ('closed_source_url', models.URLField(blank=True, max_length=1024, verbose_name='closed source URL')), - ('event', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='audios', to='mezzanine_agenda.Event', verbose_name='event')), - ('site', models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.Site')), ], options={ - 'db_table': 'festival_audios', - 'verbose_name': 'audio', + 'abstract': False, }, ), - migrations.AddField( - model_name='video', - name='closed_source_url', - field=models.URLField(blank=True, max_length=1024, verbose_name='closed source URL'), - ), - migrations.AddField( - model_name='video', - name='open_source_url', - field=models.URLField(blank=True, max_length=1024, verbose_name='open source URL'), - ), ] diff --git a/app/organization/project/migrations/0002_auto_20160706_1848.py b/app/organization/project/migrations/0002_auto_20160706_1848.py new file mode 100644 index 00000000..266a5d3b --- /dev/null +++ b/app/organization/project/migrations/0002_auto_20160706_1848.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.7 on 2016-07-06 16:48 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('project', '0001_initial'), + ('structure', '0001_initial'), + ('sites', '0002_alter_domain_unique'), + ] + + operations = [ + migrations.AddField( + model_name='project', + name='partners', + field=models.ManyToManyField(to='structure.Organization', verbose_name='organizations'), + ), + migrations.AddField( + model_name='project', + name='persons', + field=models.ManyToManyField(to='structure.Person', verbose_name='persons'), + ), + migrations.AddField( + model_name='project', + name='site', + field=models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.Site'), + ), + ] diff --git a/app/magazine/__init__.py b/app/organization/project/migrations/__init__.py similarity index 100% rename from app/magazine/__init__.py rename to app/organization/project/migrations/__init__.py diff --git a/app/organization/project/models.py b/app/organization/project/models.py new file mode 100644 index 00000000..34f61d21 --- /dev/null +++ b/app/organization/project/models.py @@ -0,0 +1,18 @@ +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 + +from organization.structure.models import Person, Organization + + +class Project(Displayable, RichText): + """(Project description)""" + + persons = models.ManyToManyField(Person, verbose_name=_('persons')) + partners = models.ManyToManyField(Organization, verbose_name=_('organizations')) + + def __unicode__(self): + return self.title diff --git a/app/organization/tests.py b/app/organization/project/tests.py similarity index 100% rename from app/organization/tests.py rename to app/organization/project/tests.py diff --git a/app/organization/views.py b/app/organization/project/views.py similarity index 100% rename from app/organization/views.py rename to app/organization/project/views.py diff --git a/app/organization/structure/__init__.py b/app/organization/structure/__init__.py new file mode 100644 index 00000000..64cb6f58 --- /dev/null +++ b/app/organization/structure/__init__.py @@ -0,0 +1,10 @@ +""" +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.structure.apps.StructureConfig' diff --git a/app/project/admin.py b/app/organization/structure/admin.py similarity index 100% rename from app/project/admin.py rename to app/organization/structure/admin.py diff --git a/app/organization/apps.py b/app/organization/structure/apps.py similarity index 52% rename from app/organization/apps.py rename to app/organization/structure/apps.py index 3fd95b46..e399e507 100644 --- a/app/organization/apps.py +++ b/app/organization/structure/apps.py @@ -3,5 +3,6 @@ from __future__ import unicode_literals from django.apps import AppConfig -class OrganizationConfig(AppConfig): - name = 'organization' +class StructureConfig(AppConfig): + + name = 'organization.structure' diff --git a/app/organization/migrations/0001_initial.py b/app/organization/structure/migrations/0001_initial.py similarity index 72% rename from app/organization/migrations/0001_initial.py rename to app/organization/structure/migrations/0001_initial.py index 5c77c28d..3589da55 100644 --- a/app/organization/migrations/0001_initial.py +++ b/app/organization/structure/migrations/0001_initial.py @@ -1,10 +1,11 @@ # -*- coding: utf-8 -*- -# Generated by Django 1.9.7 on 2016-07-04 10:05 +# Generated by Django 1.9.7 on 2016-07-06 16:48 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 @@ -29,13 +30,22 @@ class Migration(migrations.Migration): ('work', models.TextField(blank=True, verbose_name='work')), ], ), + 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='description')), + ('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')), ('description', models.TextField(blank=True, verbose_name='description')), - ('domain', models.CharField(blank=True, max_length=255, verbose_name='domain')), + ('url', models.URLField(blank=True, max_length=512, verbose_name='URL')), ('weaving_class', models.CharField(blank=True, max_length=64, verbose_name='weaving class')), ], options={ @@ -62,25 +72,24 @@ class Migration(migrations.Migration): }, ), migrations.CreateModel( - name='Organization', + name='Modelname', 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')), - ('address', models.TextField(blank=True, verbose_name='description')), - ('postalcode', models.CharField(blank=True, max_length=16, verbose_name='domain')), - ('country', models.CharField(blank=True, max_length=255, verbose_name='domain')), - ('url', models.URLField(blank=True, max_length=512, verbose_name='URL')), ], - options={ - 'verbose_name': 'organization', - }, + ), + 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')), - ('type', models.CharField(max_length=255, verbose_name='type')), + ('name', models.CharField(max_length=512, verbose_name='name')), + ('description', models.TextField(blank=True, verbose_name='description')), ], options={ 'verbose_name': 'organization type', @@ -104,24 +113,26 @@ class Migration(migrations.Migration): ('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')), - ('person_title', models.CharField(blank=True, choices=[('Dr', 'Dr'), ('Prof', 'Prof'), ('Prof Dr', 'Prof Dr')], max_length=16, verbose_name='title')), - ('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')), - ('bio', mezzanine.core.fields.RichTextField(blank=True, verbose_name='biography')), ('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'), ('right', 'right')], default='left', max_length=32, verbose_name='photo alignment')), + ('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_featured', mezzanine.core.fields.FileField(blank=True, max_length=1024, verbose_name='photo featured')), - ('photo_featured_credits', models.CharField(blank=True, max_length=255, null=True, verbose_name='photo featured credits')), - ('organization', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization.Organization', verbose_name='organization')), + ('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')), ('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={ 'abstract': False, }, - bases=(models.Model, mezzanine.utils.models.AdminThumbMixin), + bases=(mezzanine.utils.models.AdminThumbMixin, models.Model), ), migrations.CreateModel( name='Team', @@ -129,40 +140,54 @@ class Migration(migrations.Migration): ('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')), - ('department', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization.Department', verbose_name='department')), + ('department', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='structure.Department', verbose_name='department')), ], options={ 'abstract': False, }, ), - migrations.AddField( - model_name='organization', - name='organization_type', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization.OrganizationType', verbose_name='organization 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='structure.Address')), + ('name', models.CharField(max_length=512, verbose_name='name')), + ('description', models.TextField(blank=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='structure.OrganizationType', verbose_name='organization type')), + ], + options={ + 'verbose_name': 'organization', + }, + bases=('structure.address', models.Model), ), migrations.AddField( model_name='link', name='link_type', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization.LinkType', verbose_name='Link type'), + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='structure.LinkType', verbose_name='Link type'), ), migrations.AddField( model_name='link', name='person', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization.Person', verbose_name='Person'), - ), - migrations.AddField( - model_name='department', - name='organization', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization.Organization', verbose_name='organization'), + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='structure.Person', verbose_name='Person'), ), migrations.AddField( model_name='activity', name='person', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization.Person', verbose_name='person'), + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='structure.Person', verbose_name='person'), ), migrations.AddField( model_name='activity', name='teams', - field=models.ManyToManyField(to='organization.Team', verbose_name='teams'), + field=models.ManyToManyField(to='structure.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='structure.Organization', verbose_name='organization'), + ), + migrations.AddField( + model_name='department', + name='organization', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='structure.Organization', verbose_name='organization'), ), ] diff --git a/app/magazine/migrations/__init__.py b/app/organization/structure/migrations/__init__.py similarity index 100% rename from app/magazine/migrations/__init__.py rename to app/organization/structure/migrations/__init__.py diff --git a/app/organization/structure/models.py b/app/organization/structure/models.py new file mode 100644 index 00000000..d126734d --- /dev/null +++ b/app/organization/structure/models.py @@ -0,0 +1,182 @@ +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.core.models import RichText, Displayable, Slugged +from mezzanine.core.fields import RichTextField, OrderField, FileField +from mezzanine.utils.models import AdminThumbMixin, upload_to + +from django_countries.fields import CountryField + +from organization.media.models import Photos +from organization.core.models import Named + +# 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')), +] + +ALIGNMENT_CHOICES = (('left', _('left')), ('right', _('right'))) + + + +class Address(models.Model): + """(Address description)""" + + address = models.TextField(_('description'), blank=True) + postal_code = models.CharField(_('postal code'), max_length=16, blank=True) + country = CountryField(_('country')) + + def __unicode__(self): + return u"Address" + + class Meta: + abstract = True + + +class Organization(Named, Address): + """(Organization description)""" + + type = models.ForeignKey('OrganizationType', verbose_name=_('organization type'), blank=True, null=True, on_delete=models.SET_NULL) + url = models.URLField(_('URL'), max_length=512, blank=True) + + def __unicode__(self): + return self.name + + 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')) + url = models.URLField(_('URL'), max_length=512, blank=True) + weaving_class = models.CharField(_('weaving class'), max_length=64, blank=True) + + def __unicode__(self): + return self.name + + class Meta: + verbose_name = _('department') + + +class Team(Named): + """(Team description)""" + + department = models.ForeignKey('Department', verbose_name=_('department'), blank=True, null=True, on_delete=models.SET_NULL) + + def __unicode__(self): + return u"Team" + + +class Person(Displayable, RichText, AdminThumbMixin, Photos): + """(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) + organization = models.ForeignKey('Organization', verbose_name=_('organization'), blank=True, null=True, on_delete=models.SET_NULL) + + def __unicode__(self): + return ' '.join((self.user.first_name, self.user.last_name)) + + +class Nationality(models.Model): + """(Nationality description)""" + + name = models.CharField(_('name'), max_length=128) + + def __unicode__(self): + return self.name + + +class Link(models.Model): + """A person can have many links.""" + + person = models.ForeignKey('Person', verbose_name=_('Person')) + link_type = models.ForeignKey('LinkType', verbose_name=_('Link type')) + url = models.URLField(verbose_name=_('URL')) + + def __str__(self): + return self.url + + +class LinkType(models.Model): + """ + A link type could be ``Facebook`` or ``Twitter`` or ``Website``. + This is masterdata that should be created by the admins when the site is + deployed for the first time. + :ordering: Enter numbers here if you want links to be displayed in a + special order. + """ + + name = models.CharField(max_length=256, verbose_name=_('Name')) + slug = models.SlugField(max_length=256, verbose_name=_('Slug'), 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)'), + blank=True, + ) + ordering = models.PositiveIntegerField(verbose_name=_('Ordering'), null=True, blank=True) + + class Meta: + ordering = ['ordering', ] + + def __str__(self): + return self.name + + +class Activity(models.Model): + """(Activity description)""" + + person = models.ForeignKey('Person', verbose_name=_('person')) + teams = models.ManyToManyField('Team', verbose_name=_('teams')) + date_begin = models.DateField(_('begin date'), null=True, blank=True) + date_end = models.DateField(_('end date'), null=True, blank=True) + role = models.CharField(_('role'), blank=True, max_length=512) + work = models.TextField(_('work'), blank=True) + + def __unicode__(self): + return ' - '.join((self.person, self.role, self.date_begin, self.date_end)) + + +class Modelname(models.Model): + """( description)""" + + + def __unicode__(self): + return u"" diff --git a/app/project/tests.py b/app/organization/structure/tests.py similarity index 100% rename from app/project/tests.py rename to app/organization/structure/tests.py diff --git a/app/project/views.py b/app/organization/structure/views.py similarity index 100% rename from app/project/views.py rename to app/organization/structure/views.py diff --git a/app/project/__init__.py b/app/project/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/app/project/migrations/__init__.py b/app/project/migrations/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/app/project/models.py b/app/project/models.py deleted file mode 100644 index 1fe139b0..00000000 --- a/app/project/models.py +++ /dev/null @@ -1,15 +0,0 @@ -from __future__ import unicode_literals - -from django.db import models - -from organization import Person - - -class Project(Displayable, RichText): - """(Project description)""" - - persons = models.ManyToManyField('Person', verbose_name=_('persons')) - partners = models.ManyToManyField('Organization', verbose_name=_('organizations')) - - def __unicode__(self): - return self.title diff --git a/app/settings.py b/app/settings.py index 18b8e05f..5b6ac933 100644 --- a/app/settings.py +++ b/app/settings.py @@ -213,7 +213,6 @@ INSTALLED_APPS = [ "mezzanine.core", "mezzanine.generic", "mezzanine.pages", - "custom", "mezzanine.blog", "mezzanine.forms", "mezzanine.galleries", @@ -224,8 +223,13 @@ INSTALLED_APPS = [ 'djangobower', "meta", "mezzanine_agenda", - "festival", - "organization" + "organization.core", + "organization.structure", + # "organization.festival", + "organization.magazine", + "organization.media", + "organization.festival", + "organization.project", ] @@ -247,8 +251,8 @@ MIGRATION_MODULES = { } MODELTRANSLATION_TRANSLATION_FILES = ( - 'custom.translations', - 'translations', + 'organization.core.translation', + 'organization.festival.translation', ) TEMPLATES = [{'APP_DIRS': True, diff --git a/app/organization/models.py b/app/structure/models.py similarity index 99% rename from app/organization/models.py rename to app/structure/models.py index 20d1465b..ec2b748d 100644 --- a/app/organization/models.py +++ b/app/structure/models.py @@ -21,7 +21,8 @@ from mezzanine.utils.models import AdminThumbMixin, upload_to from django_countries.fields import CountryField -from media.models import Photos +from organization.media.models import Photos + # Hack to have these strings translated mr = _('Mr') diff --git a/app/urls.py b/app/urls.py index f952c637..10df47eb 100644 --- a/app/urls.py +++ b/app/urls.py @@ -27,7 +27,7 @@ if settings.USE_MODELTRANSLATION: urlpatterns += [ - url(r'^festival/', include('festival.urls')), + url(r'^festival/', include('organization.festival.urls')), url("^%s/" % settings.EVENT_SLUG, include("mezzanine_agenda.urls")), # We don't want to presume how your homepage works, so here are a -- 2.39.5