]> git.parisson.com Git - mezzo.git/commitdiff
add PageImage
authorGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Wed, 27 Jul 2016 09:28:00 +0000 (11:28 +0200)
committerGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Wed, 27 Jul 2016 09:28:00 +0000 (11:28 +0200)
app/organization/core/admin.py
app/organization/core/migrations/0006_pageimage.py [new file with mode: 0644]
app/organization/core/migrations/0007_auto_20160726_0042.py [new file with mode: 0644]
app/organization/core/models.py
app/organization/core/translation.py
app/organization/team/admin.py
app/organization/team/models.py

index 006c1654fd1971457ddff1cab86e2375ecca9881..59b3ba7ddfcf09b84fdccecb51a4604fd49f5b7f 100644 (file)
@@ -10,4 +10,9 @@ class PageBlockInline(StackedDynamicInlineAdmin):
     model = PageBlock
 
 
+class PageImageInline(TabularDynamicInlineAdmin):
+
+    model = PageImage
+
+
 admin.site.register(BasicPage, PageAdmin)
diff --git a/app/organization/core/migrations/0006_pageimage.py b/app/organization/core/migrations/0006_pageimage.py
new file mode 100644 (file)
index 0000000..4e89a50
--- /dev/null
@@ -0,0 +1,34 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-07-25 22:38
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+import mezzanine.core.fields
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('pages', '0002_auto_20160725_0143'),
+        ('organization-core', '0005_auto_20160725_0201'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='PageImage',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('_order', mezzanine.core.fields.OrderField(null=True, verbose_name='Order')),
+                ('file', mezzanine.core.fields.FileField(max_length=1024, verbose_name='Image')),
+                ('description', models.TextField(blank=True, verbose_name='photo description')),
+                ('credits', models.CharField(blank=True, max_length=256, null=True, verbose_name='photo credits')),
+                ('page', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='pages.Page')),
+            ],
+            options={
+                'ordering': ('_order',),
+                'verbose_name_plural': 'Images',
+                'verbose_name': 'Image',
+            },
+        ),
+    ]
diff --git a/app/organization/core/migrations/0007_auto_20160726_0042.py b/app/organization/core/migrations/0007_auto_20160726_0042.py
new file mode 100644 (file)
index 0000000..f89f17e
--- /dev/null
@@ -0,0 +1,25 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-07-25 22:42
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('organization-core', '0006_pageimage'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='pageimage',
+            name='description_en',
+            field=models.TextField(blank=True, null=True, verbose_name='photo description'),
+        ),
+        migrations.AddField(
+            model_name='pageimage',
+            name='description_fr',
+            field=models.TextField(blank=True, null=True, verbose_name='photo description'),
+        ),
+    ]
index 7a84a0782bbcbfd3c60093fb14644f8698107348..9ce0d0642d5661444eb44903c56f939225e838c1 100644 (file)
@@ -5,7 +5,7 @@ from django.core.urlresolvers import reverse, reverse_lazy
 
 from mezzanine.pages.models import Page, RichText
 from mezzanine.core.fields import RichTextField, OrderField, FileField
-from mezzanine.core.models import Displayable, Slugged
+from mezzanine.core.models import Displayable, Slugged, Orderable
 
 
 COLOR_CHOICES = (('black', _('black')), ('yellow', _('yellow')), ('red', _('red')))
@@ -79,3 +79,28 @@ class PageBlock(Titled, RichText):
 
     class Meta:
         verbose_name = 'page block'
+
+
+class PageImage(Orderable):
+    """
+    An image for a page
+    """
+
+    file = FileField(_("Image"), max_length=1024, format="Image", upload_to="images/pages")
+    description = models.TextField(_('photo description'), blank=True)
+    credits = models.CharField(_('photo credits'), max_length=256, blank=True, null=True)
+    page = models.ForeignKey(Page)
+
+
+    class Meta:
+        verbose_name = _("Image")
+        verbose_name_plural = _("Images")
+        order_with_respect_to = "page"
+
+    def __str__(self):
+        value = self.description
+        if not value:
+            value = self.file.name
+        if not value:
+            value = ""
+        return value
index 432b32c85ed8b6df0a06c86cc882727ead215da0..31d20b130fcaa588837a6deae9fd4ccb3509959a 100644 (file)
@@ -1,7 +1,7 @@
 from modeltranslation.translator import translator, register, TranslationOptions
 from mezzanine.pages.models import Page, RichText
 from mezzanine.pages.translation import TranslatedRichText
-from organization.core.models import BasicPage, PageBlock
+from organization.core.models import BasicPage, PageBlock, PageImage
 
 # @register(SubTitle)
 # class SubTitleTranslationOptions(TranslationOptions):
@@ -18,3 +18,9 @@ class BasicPageTranslationOptions(TranslationOptions):
 class PageBlockTranslationOptions(TranslationOptions):
 
     fields = ('title', 'content')
+
+
+@register(PageImage)
+class PageImageTranslationOptions(TranslationOptions):
+
+    fields = ('description',)
index f343182dedd8672d47c6099fc7469b4b3bd33ac0..81ee1500dc6138f1a6937e5e7f84569d83913c24 100644 (file)
@@ -4,7 +4,7 @@ from copy import deepcopy
 from mezzanine.core.admin import *
 from mezzanine.pages.admin import PageAdmin
 from organization.team.models import *
-from organization.core.admin import PageBlockInline
+from organization.core.admin import PageBlockInline, PageImageInline
 
 
 class OrganizationAdmin(BaseTranslationModelAdmin):
@@ -17,17 +17,14 @@ class ActivityAdmin(BaseTranslationModelAdmin):
     model = Activity
 
 
-class ActivityInline(StackedDynamicInlineAdmin):
+class ActivityInline(TabularDynamicInlineAdmin):
 
     model = Activity
 
 
 class TeamAdmin(PageAdmin):
 
-    inlines = [PageBlockInline,]
-
-    def in_menu(self):
-        return True
+    inlines = [PageBlockInline, PageImageInline]
 
 
 class PersonAdminBase(admin.ModelAdmin):
index 83cf9dd9acb427325b8d4e4fc59b814433761c8c..60905fc67c53150e2e49e61032027dc343cb53b8 100644 (file)
@@ -19,6 +19,7 @@ from mezzanine.pages.models import Page
 from mezzanine.core.models import RichText, Displayable, Slugged
 from mezzanine.core.fields import RichTextField, OrderField, FileField
 from mezzanine.utils.models import AdminThumbMixin, upload_to
+from mezzanine.galleries.models import BaseGallery
 
 from organization.media.models import Photo
 from organization.core.models import Named, Titled, Description, SubTitle