]> git.parisson.com Git - mezzo.git/commitdiff
Add more project inlines
authorGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Thu, 1 Sep 2016 16:13:44 +0000 (18:13 +0200)
committerGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Thu, 1 Sep 2016 16:13:44 +0000 (18:13 +0200)
app/organization/core/models.py
app/organization/projects/admin.py
app/organization/projects/migrations/0002_auto_20160901_1806.py [new file with mode: 0644]
app/organization/projects/migrations/0003_auto_20160901_1810.py [new file with mode: 0644]
app/organization/projects/models.py
app/organization/projects/translation.py

index 645cf87375c3a3d87562b45111f17c70013f9c50..3d0bb98e3308d845a4112b2c7a54c70cee2fc93b 100644 (file)
@@ -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"
index b5139c9272ec06233e5e77bf062e1f890de2a620..e79d505db53032d526469abb2af508f0cbde89f4 100644 (file)
@@ -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 (file)
index 0000000..678f0d5
--- /dev/null
@@ -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 (file)
index 0000000..6eec134
--- /dev/null
@@ -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,
+        ),
+    ]
index 013a38817299d3797e87ac6987c8e934974dfc34..4ee2c20bc45c0069ba1b07cf1418c55ea01f76a9 100644 (file)
@@ -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)
index cc687455cd583a8142bd851dc61ab55ef548d04e..c1a8b6b492ef86b4ee1d8fb7a46983a98754333e 100644 (file)
@@ -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