]> git.parisson.com Git - mezzo.git/commitdiff
Person : adding Image, Video, Audio, Activity, Link | Network : admin refacto
authorEmilie <zawadzki@ircam.fr>
Fri, 2 Sep 2016 10:08:07 +0000 (12:08 +0200)
committerEmilie <zawadzki@ircam.fr>
Fri, 2 Sep 2016 10:08:07 +0000 (12:08 +0200)
app/organization/media/admin.py
app/organization/network/admin.py
app/organization/network/migrations/0003_personaudio_personblock_personimage_personlink_personvideo.py [new file with mode: 0644]
app/organization/network/models.py
app/organization/network/translation.py

index 5fac81896876905c94e4def7e7c57d62618b5a84..a835c8afdcb0d2f90d6442a66a1c004d0049eed8 100644 (file)
@@ -14,7 +14,6 @@ class AudioAdmin(admin.ModelAdmin):
     model = Audio
 
 
-
 class PlaylistAdmin(admin.ModelAdmin):
 
     model = Playlist
index 9675c1e4ae9744a89ab07fbf88913b27bb2a54f9..fb2ff1ee26c8e28dfbc6175c6ae61334c4ad3dc5 100644 (file)
@@ -7,96 +7,75 @@ from mezzanine.pages.admin import PageAdmin
 from organization.network.models import *
 from organization.pages.models import *
 from organization.core.admin import *
-from organization.pages.models import PageAudio, PageVideo
+from organization.pages.admin import PageImageInline, PageBlockInline, PageAudioInline, PageVideoInline
 
 
-class PageAudioInline(StackedDynamicInlineAdmin):
-
-    model = PageAudio
-    exclude = ("short_url", "keywords", "description", "slug", )
-
-
-class PageVideoInline(StackedDynamicInlineAdmin):
-
-    model = PageVideo
-    exclude = ("short_url", "keywords", "description", "slug", )
-
-
-# class OrganizationImageInline(TabularDynamicInlineAdmin):
-#
-#     model = ModelImage
-#
-
 class OrganizationAdmin(BaseTranslationModelAdmin):
 
     model = Organization
-    # inlines = [OrganizationImageInline,]
+    #inlines = [OrganizationImageInline,]
 
 
-class DepartmentPageBlockInline(StackedDynamicInlineAdmin):
+class DepartmentPageAdmin(PageAdmin):
 
-    model = PageBlock
+    inlines = [PageImageInline, PageBlockInline, PageAudioInline, PageVideoInline, ]
 
 
-class DepartmentPageImageInline(TabularDynamicInlineAdmin):
+class DepartmentAdmin(BaseTranslationModelAdmin):
 
-    model = PageImage
+    model = Department
 
 
-class DepartmentPageAdmin(PageAdmin):
+class TeamAdmin(BaseTranslationModelAdmin):
 
-    inlines = [DepartmentPageImageInline, DepartmentPageBlockInline, PageAudioInline, PageVideoInline, ]
+    model = Team
 
 
-class DepartmentAdmin(BaseTranslationModelAdmin):
+class TeamPageAdmin(PageAdmin):
 
-    model = Department
+    inlines = [PageImageInline, PageBlockInline, PageAudioInline, PageVideoInline, ]
 
 
-class TeamAdmin(BaseTranslationModelAdmin):
+class PersonAdminBase(BaseTranslationModelAdmin):
 
-    model = Team
+    model = Person
 
 
-class TeamPageImageInline(TabularDynamicInlineAdmin):
+class PersonActivityInline(StackedDynamicInlineAdmin):
 
-    model = PageImage
+    model = PersonActivity
+    fk_name = 'person'
 
-class TeamPageBlockInline(StackedDynamicInlineAdmin):
 
-    model = PageBlock
+class PersonAudioInline(StackedDynamicInlineAdmin):
 
+    model = PersonAudio
 
-class TeamPageAdmin(PageAdmin):
 
-    inlines = [TeamPageImageInline, TeamPageBlockInline, PageAudioInline, PageVideoInline, ]
+class PersonVideoInline(StackedDynamicInlineAdmin):
 
+    model = PersonVideo
 
-class PersonAdminBase(BaseTranslationModelAdmin):
 
-    model = Person
+class PersonLinkInline(StackedDynamicInlineAdmin):
 
+    model = PersonLink
 
-# class PersonLinkInline(StackedDynamicInlineAdmin):
-#
-#     model = DisplayableLink
 
+class PersonImageInline(TabularDynamicInlineAdmin):
 
-class PersonActivityInline(StackedDynamicInlineAdmin):
+    model = PersonImage
 
-    model = PersonActivity
-    fk_name = 'person'
 
+class PersonBlockInline(StackedDynamicInlineAdmin):
+
+    model = PersonBlock
 
-# class PersonImageInline(TabularDynamicInlineAdmin):
-#
-#     model = DisplayableImage
-#
 
 class PersonAdmin(BaseTranslationModelAdmin):
 
     model = Person
-    # inlines = [PersonImageInline, PersonActivityInline, PersonLinkInline, ]
+    inlines = [PersonActivityInline, PersonAudioInline, PersonImageInline, PersonVideoInline, PersonBlockInline, PersonLinkInline ]
     first_fields = ['last_name', 'first_name', 'title', 'gender', 'user']
 
     def get_fieldsets(self, request, obj = None):
diff --git a/app/organization/network/migrations/0003_personaudio_personblock_personimage_personlink_personvideo.py b/app/organization/network/migrations/0003_personaudio_personblock_personimage_personlink_personvideo.py
new file mode 100644 (file)
index 0000000..6591be3
--- /dev/null
@@ -0,0 +1,87 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-09-02 09:54
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+import mezzanine.core.fields
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('organization-media', '0001_initial'),
+        ('organization-core', '0001_initial'),
+        ('organization-network', '0002_auto_20160901_1737'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='PersonAudio',
+            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-network.Person', verbose_name='project')),
+            ],
+            options={
+                'abstract': False,
+            },
+            bases=('organization-media.audio',),
+        ),
+        migrations.CreateModel(
+            name='PersonBlock',
+            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-network.Person', verbose_name='project')),
+            ],
+            options={
+                'ordering': ('_order',),
+            },
+        ),
+        migrations.CreateModel(
+            name='PersonImage',
+            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-network.Person', verbose_name='project')),
+            ],
+            options={
+                'ordering': ('_order',),
+            },
+        ),
+        migrations.CreateModel(
+            name='PersonLink',
+            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-network.Person', verbose_name='project')),
+            ],
+            options={
+                'verbose_name_plural': 'links',
+                'verbose_name': 'link',
+                'abstract': False,
+            },
+        ),
+        migrations.CreateModel(
+            name='PersonVideo',
+            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-network.Person', verbose_name='project')),
+            ],
+            options={
+                'abstract': False,
+            },
+            bases=('organization-media.video',),
+        ),
+    ]
index 830969713f968cd7cc150caa84798d274de57ab2..1dc688d5d630020480f1096b9350d99a7610c31f 100644 (file)
@@ -21,6 +21,7 @@ from mezzanine.core.fields import RichTextField, OrderField, FileField
 from mezzanine.utils.models import AdminThumbMixin, upload_to
 
 from organization.core.models import *
+from organization.media.models import *
 
 from django_countries.fields import CountryField
 # from .nationalities.fields import NationalityField
@@ -179,6 +180,30 @@ class Person(Displayable, AdminThumbMixin):
         super(Person, self).save(*args, **kwargs)
 
 
+class PersonAudio(Audio):
+
+    project = models.ForeignKey(Person, verbose_name=_('project'), related_name='audios', blank=True, null=True, on_delete=models.SET_NULL)
+
+
+class PersonVideo(Video):
+
+    project = models.ForeignKey(Person, verbose_name=_('project'), related_name='videos', blank=True, null=True, on_delete=models.SET_NULL)
+
+
+class PersonLink(Link):
+
+    project = models.ForeignKey(Person, verbose_name=_('project'), related_name='links', blank=True, null=True, on_delete=models.SET_NULL)
+
+
+class PersonImage(Image):
+
+    project = models.ForeignKey(Person, verbose_name=_('project'), related_name='images', blank=True, null=True, on_delete=models.SET_NULL)
+
+
+class PersonBlock(Block):
+
+    project = models.ForeignKey(Person, verbose_name=_('project'), related_name='blocks', blank=True, null=True, on_delete=models.SET_NULL)
+
 
 class ActivityStatus(Named):
 
index 50280d975fd9684cd091bda82490f660ac8123e1..9bd85d7cee225cc1b70ffb6b065188b3e0561d07 100644 (file)
@@ -43,3 +43,33 @@ class PersonTranslationOptions(TranslationOptions):
 class PersonActivityTranslationOptions(TranslationOptions):
 
     fields = ('description', 'content')
+
+
+@register(PersonAudio)
+class PersonAudioTranslationOptions(TranslationOptions):
+
+    pass
+
+
+@register(PersonVideo)
+class PersonVideoTranslationOptions(TranslationOptions):
+
+    pass
+
+
+@register(PersonLink)
+class PersonLinkTranslationOptions(TranslationOptions):
+
+    pass
+
+
+@register(PersonImage)
+class PersonImageTranslationOptions(TranslationOptions):
+
+    pass
+
+
+@register(PersonBlock)
+class PersonBlockTranslationOptions(TranslationOptions):
+
+    pass