From d57dd0051210fcf55ac371fb51db6c2d88bbb68a Mon Sep 17 00:00:00 2001 From: Guillaume Pellerin Date: Thu, 1 Sep 2016 18:13:44 +0200 Subject: [PATCH] Add more project inlines --- app/organization/core/models.py | 76 ------------------ app/organization/projects/admin.py | 35 ++++---- .../migrations/0002_auto_20160901_1806.py | 49 ++++++++++++ .../migrations/0003_auto_20160901_1810.py | 80 +++++++++++++++++++ app/organization/projects/models.py | 27 +++++++ app/organization/projects/translation.py | 30 +++++++ 6 files changed, 204 insertions(+), 93 deletions(-) create mode 100644 app/organization/projects/migrations/0002_auto_20160901_1806.py create mode 100644 app/organization/projects/migrations/0003_auto_20160901_1810.py diff --git a/app/organization/core/models.py b/app/organization/core/models.py index 645cf873..3d0bb98e 100644 --- a/app/organization/core/models.py +++ b/app/organization/core/models.py @@ -177,79 +177,3 @@ class Period(models.Model): class Meta: abstract = True - -# -# class Displayable(Displayable): -# -# class Meta: -# verbose_name = _('custom displayable') -# -# def get_absolute_url(self): -# return reverse("organization-displayable", kwargs={"slug": self.slug}) -# -# - -# class DisplayableBlock(Block): -# -# displayable = models.ForeignKey(CustomDisplayable, verbose_name=_('displayable'), related_name='blocks', blank=True, null=True, on_delete=models.SET_NULL) -# -# class Meta: -# verbose_name = _('block') -# verbose_name_plural = _("blocks") -# order_with_respect_to = "displayable" -# -# -# class DisplayableImage(Image): -# -# displayable = models.ForeignKey(CustomDisplayable, verbose_name=_('displayable'), related_name='images', blank=True, null=True, on_delete=models.SET_NULL) -# -# class Meta: -# verbose_name = _('image') -# verbose_name_plural = _("images") -# order_with_respect_to = "displayable" -# -# -# class DisplayableLink(Link): -# -# displayable = models.ForeignKey(CustomDisplayable, verbose_name=_('displayable'), related_name='links', blank=True, null=True, on_delete=models.SET_NULL) -# -# class Meta: -# verbose_name = _('link') -# verbose_name_plural = _("links") -# order_with_respect_to = "displayable" -# -# -# class CustomModel(models.Model): -# -# class Meta: -# verbose_name = _('custom model') -# -# -# class ModelBlock(Block): -# -# model = models.ForeignKey(CustomModel, verbose_name=_('model'), related_name='blocks', blank=True, null=True, on_delete=models.SET_NULL) -# -# class Meta: -# verbose_name = _('block') -# verbose_name_plural = _("blocks") -# order_with_respect_to = "model" -# -# -# class ModelImage(Image): -# -# model = models.ForeignKey(CustomModel, verbose_name=_('model'), related_name='images', blank=True, null=True, on_delete=models.SET_NULL) -# -# class Meta: -# verbose_name = _('image') -# verbose_name_plural = _("images") -# order_with_respect_to = "model" -# -# -# class ModelLink(Link): -# -# model = models.ForeignKey(CustomModel, verbose_name=_('model'), related_name='links', blank=True, null=True, on_delete=models.SET_NULL) -# -# class Meta: -# verbose_name = _('link') -# verbose_name_plural = _("links") -# order_with_respect_to = "model" diff --git a/app/organization/projects/admin.py b/app/organization/projects/admin.py index b5139c92..e79d505d 100644 --- a/app/organization/projects/admin.py +++ b/app/organization/projects/admin.py @@ -9,29 +9,30 @@ from organization.projects.models import * from organization.pages.models import * from organization.media.models import Video, Audio -# class ProjectLinkInline(StackedDynamicInlineAdmin): -# -# model = DisplayableLink -# -# -# class ProjectImageInline(TabularDynamicInlineAdmin): -# -# model = DisplayableImage -# -# -# class ProjectBlockInline(StackedDynamicInlineAdmin): -# -# model = DisplayableBlock -# + +class ProjectLinkInline(StackedDynamicInlineAdmin): + + model = ProjectLink + + +class ProjectImageInline(TabularDynamicInlineAdmin): + + model = ProjectImage + + +class ProjectBlockInline(StackedDynamicInlineAdmin): + + model = ProjectBlock + class ProjectAudioInline(StackedDynamicInlineAdmin): - model = Audio + model = ProjectAudio class ProjectVideoInline(StackedDynamicInlineAdmin): - model = Video + model = ProjectVideo class ProjectAdmin(admin.ModelAdmin): @@ -42,7 +43,7 @@ class ProjectAdmin(admin.ModelAdmin): class ProjectAdminDisplayable(DisplayableAdmin): fieldsets = deepcopy(ProjectAdmin.fieldsets) - # inlines = [ProjectImageInline, ProjectBlockInline, ProjectAudioInline, ProjectVideoInline] + inlines = [ ProjectBlockInline, ProjectImageInline, ProjectAudioInline, ProjectVideoInline, ProjectLinkInline] filter_horizontal = ['persons', 'teams', 'organizations'] diff --git a/app/organization/projects/migrations/0002_auto_20160901_1806.py b/app/organization/projects/migrations/0002_auto_20160901_1806.py new file mode 100644 index 00000000..678f0d5a --- /dev/null +++ b/app/organization/projects/migrations/0002_auto_20160901_1806.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.7 on 2016-09-01 16:06 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('organization-media', '0001_initial'), + ('organization-projects', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='ProjectAudio', + fields=[ + ('audio_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='organization-media.Audio')), + ('project', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='audios', to='organization-projects.Project', verbose_name='project')), + ], + options={ + 'verbose_name': 'audio', + 'verbose_name_plural': 'audios', + }, + bases=('organization-media.audio',), + ), + migrations.CreateModel( + name='ProjectVideo', + fields=[ + ('video_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='organization-media.Video')), + ('project', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='videos', to='organization-projects.Project', verbose_name='project')), + ], + options={ + 'verbose_name': 'video', + 'verbose_name_plural': 'videos', + }, + bases=('organization-media.video',), + ), + migrations.AlterOrderWithRespectTo( + name='projectvideo', + order_with_respect_to='project', + ), + migrations.AlterOrderWithRespectTo( + name='projectaudio', + order_with_respect_to='project', + ), + ] diff --git a/app/organization/projects/migrations/0003_auto_20160901_1810.py b/app/organization/projects/migrations/0003_auto_20160901_1810.py new file mode 100644 index 00000000..6eec1346 --- /dev/null +++ b/app/organization/projects/migrations/0003_auto_20160901_1810.py @@ -0,0 +1,80 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.7 on 2016-09-01 16:10 +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', '0001_initial'), + ('organization-projects', '0002_auto_20160901_1806'), + ] + + 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')), + ('_order', mezzanine.core.fields.OrderField(null=True, verbose_name='Order')), + ('title', models.CharField(max_length=1024, verbose_name='title')), + ('description', models.TextField(blank=True, verbose_name='description')), + ('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')), + ('title', models.CharField(max_length=1024, verbose_name='title')), + ('description', models.TextField(blank=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')), + ('type', models.CharField(choices=[('logo', 'logo'), ('slider', 'slider'), ('card', 'card'), ('page_slider', 'page slider')], max_length=64, verbose_name='type')), + ('project', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='images', to='organization-projects.Project', verbose_name='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(blank=True, max_length=512, 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(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='links', to='organization-projects.Project', verbose_name='project')), + ], + options={ + 'verbose_name_plural': 'links', + 'abstract': False, + 'verbose_name': 'link', + }, + ), + migrations.AlterModelOptions( + name='projectaudio', + options={}, + ), + migrations.AlterModelOptions( + name='projectvideo', + options={}, + ), + migrations.AlterOrderWithRespectTo( + name='projectaudio', + order_with_respect_to=None, + ), + migrations.AlterOrderWithRespectTo( + name='projectvideo', + order_with_respect_to=None, + ), + ] diff --git a/app/organization/projects/models.py b/app/organization/projects/models.py index 013a3881..4ee2c20b 100644 --- a/app/organization/projects/models.py +++ b/app/organization/projects/models.py @@ -26,3 +26,30 @@ class Project(Displayable, Period, RichText): def get_absolute_url(self): return reverse("organization-project-detail", kwargs={"slug": self.slug}) + + +class ProjectAudio(Audio): + + project = models.ForeignKey(Project, verbose_name=_('project'), related_name='audios', blank=True, null=True, on_delete=models.SET_NULL) + + + +class ProjectVideo(Video): + + project = models.ForeignKey(Project, verbose_name=_('project'), related_name='videos', blank=True, null=True, on_delete=models.SET_NULL) + + + +class ProjectLink(Link): + + project = models.ForeignKey(Project, verbose_name=_('project'), related_name='links', blank=True, null=True, on_delete=models.SET_NULL) + + +class ProjectImage(Image): + + project = models.ForeignKey(Project, verbose_name=_('project'), related_name='images', blank=True, null=True, on_delete=models.SET_NULL) + + +class ProjectBlock(Block): + + project = models.ForeignKey(Project, verbose_name=_('project'), related_name='blocks', blank=True, null=True, on_delete=models.SET_NULL) diff --git a/app/organization/projects/translation.py b/app/organization/projects/translation.py index cc687455..c1a8b6b4 100644 --- a/app/organization/projects/translation.py +++ b/app/organization/projects/translation.py @@ -7,3 +7,33 @@ from organization.projects.models import * class ProjectTranslationOptions(TranslationOptions): fields = ('title', 'description', 'content') + + +@register(ProjectVideo) +class ProjectVideoTranslationOptions(TranslationOptions): + + pass + + +@register(ProjectAudio) +class ProjectAudioTranslationOptions(TranslationOptions): + + pass + + +@register(ProjectImage) +class ProjectImageTranslationOptions(TranslationOptions): + + pass + + +@register(ProjectBlock) +class ProjectBlockTranslationOptions(TranslationOptions): + + pass + + +@register(ProjectLink) +class ProjectLinkTranslationOptions(TranslationOptions): + + pass -- 2.39.5