from mezzanine.pages.admin import PageAdmin
from organization.core.models import *
-
-class PageBlockInline(StackedDynamicInlineAdmin):
-
- model = PageBlock
-
-
-class PageImageInline(TabularDynamicInlineAdmin):
-
- model = PageImage
-
-
-class BasicPageAdmin(PageAdmin):
-
- inlines = [PageBlockInline, PageImageInline]
-
-
-
-admin.site.register(BasicPage, BasicPageAdmin)
admin.site.register(LinkType)
# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-07-14 16:53
+# Generated by Django 1.9.7 on 2016-08-23 17:45
from __future__ import unicode_literals
from django.db import migrations, models
initial = True
dependencies = [
- ('pages', '0001_initial'),
+ ('sites', '0002_alter_domain_unique'),
]
operations = [
migrations.CreateModel(
- name='BasicPage',
+ name='Category',
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')),
+ ('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='CustomDisplayable',
+ 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)),
+ ('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')),
+ ('_meta_title', models.CharField(blank=True, 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')),
+ ('description', models.TextField(blank=True, verbose_name='Description')),
+ ('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(editable=False, null=True)),
+ ('updated', models.DateTimeField(editable=False, null=True)),
+ ('status', models.IntegerField(choices=[(1, 'Draft'), (2, 'Published')], default=2, help_text='With Draft chosen, will only be shown for admin users on the site.', verbose_name='Status')),
+ ('publish_date', models.DateTimeField(blank=True, db_index=True, help_text="With Published chosen, won't be shown until this time", null=True, verbose_name='Published from')),
+ ('expiry_date', models.DateTimeField(blank=True, help_text="With Published chosen, won't be shown after this time", null=True, verbose_name='Expires on')),
+ ('short_url', models.URLField(blank=True, null=True)),
+ ('in_sitemap', models.BooleanField(default=True, verbose_name='Show in sitemap')),
+ ('site', models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.Site')),
+ ],
+ options={
+ 'verbose_name': 'custom displayable',
+ },
+ ),
+ migrations.CreateModel(
+ name='CustomModel',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ],
+ options={
+ 'verbose_name': 'custom model',
+ },
+ ),
+ migrations.CreateModel(
+ name='DisplayableBlock',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('content', mezzanine.core.fields.RichTextField(verbose_name='Content')),
- ('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')),
+ ('content_fr', mezzanine.core.fields.RichTextField(null=True, verbose_name='Content')),
+ ('content_en', mezzanine.core.fields.RichTextField(null=True, verbose_name='Content')),
+ ('_order', mezzanine.core.fields.OrderField(null=True, verbose_name='Order')),
+ ('title', models.CharField(max_length=1024, verbose_name='title')),
+ ('title_fr', models.CharField(max_length=1024, null=True, verbose_name='title')),
+ ('title_en', models.CharField(max_length=1024, null=True, 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')),
+ ('displayable', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='blocks', to='organization-core.CustomDisplayable', verbose_name='displayable')),
],
options={
+ 'verbose_name': 'block',
'ordering': ('_order',),
- 'verbose_name': 'basic page',
+ 'verbose_name_plural': 'blocks',
+ },
+ ),
+ migrations.CreateModel(
+ name='DisplayableImage',
+ 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')),
+ ('description_fr', models.TextField(blank=True, null=True, verbose_name='description')),
+ ('description_en', models.TextField(blank=True, null=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(blank=True, choices=[('logo', 'logo'), ('slider', 'slider'), ('card', 'card'), ('content', 'content')], max_length=64, verbose_name='type')),
+ ('displayable', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='images', to='organization-core.CustomDisplayable', verbose_name='displayable')),
+ ],
+ options={
+ 'verbose_name': 'image',
+ 'ordering': ('_order',),
+ 'verbose_name_plural': 'images',
+ },
+ ),
+ migrations.CreateModel(
+ name='DisplayableLink',
+ 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')),
+ ('displayable', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='links', to='organization-core.CustomDisplayable', verbose_name='displayable')),
+ ],
+ options={
+ 'verbose_name': 'link',
+ 'verbose_name_plural': 'links',
},
- bases=('pages.page', models.Model),
+ ),
+ migrations.CreateModel(
+ name='LinkType',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=256, verbose_name='name')),
+ ('slug', models.SlugField(blank=True, 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)', max_length=256, verbose_name='slug')),
+ ('ordering', models.PositiveIntegerField(blank=True, null=True, verbose_name='ordering')),
+ ],
+ options={
+ 'ordering': ['ordering'],
+ },
+ ),
+ migrations.CreateModel(
+ name='ModelBlock',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('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')),
+ ('_order', mezzanine.core.fields.OrderField(null=True, verbose_name='Order')),
+ ('title', models.CharField(max_length=1024, verbose_name='title')),
+ ('title_fr', models.CharField(max_length=1024, null=True, verbose_name='title')),
+ ('title_en', models.CharField(max_length=1024, null=True, 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')),
+ ('model', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='blocks', to='organization-core.CustomModel', verbose_name='model')),
+ ],
+ options={
+ 'verbose_name': 'block',
+ 'ordering': ('_order',),
+ 'verbose_name_plural': 'blocks',
+ },
+ ),
+ migrations.CreateModel(
+ name='ModelImage',
+ 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')),
+ ('description_fr', models.TextField(blank=True, null=True, verbose_name='description')),
+ ('description_en', models.TextField(blank=True, null=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(blank=True, choices=[('logo', 'logo'), ('slider', 'slider'), ('card', 'card'), ('content', 'content')], max_length=64, verbose_name='type')),
+ ('model', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='images', to='organization-core.CustomModel', verbose_name='model')),
+ ],
+ options={
+ 'verbose_name': 'image',
+ 'ordering': ('_order',),
+ 'verbose_name_plural': 'images',
+ },
+ ),
+ migrations.CreateModel(
+ name='ModelLink',
+ 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')),
+ ('model', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='links', to='organization-core.CustomModel', verbose_name='model')),
+ ],
+ options={
+ 'verbose_name': 'link',
+ 'verbose_name_plural': 'links',
+ },
+ ),
+ migrations.AddField(
+ model_name='displayablelink',
+ name='link_type',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization-core.LinkType', verbose_name='link type'),
+ ),
+ migrations.AlterOrderWithRespectTo(
+ name='modellink',
+ order_with_respect_to='model',
+ ),
+ migrations.AlterOrderWithRespectTo(
+ name='displayablelink',
+ order_with_respect_to='displayable',
),
]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-07-14 17:52
-from __future__ import unicode_literals
-
-from django.db import migrations
-import mezzanine.core.fields
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-core', '0001_initial'),
- ]
-
- operations = [
- migrations.AddField(
- model_name='basicpage',
- name='content_en',
- field=mezzanine.core.fields.RichTextField(null=True, verbose_name='Content'),
- ),
- migrations.AddField(
- model_name='basicpage',
- name='content_fr',
- field=mezzanine.core.fields.RichTextField(null=True, verbose_name='Content'),
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-07-24 23:17
-from __future__ import unicode_literals
-
-from django.db import migrations, models
-import mezzanine.core.fields
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-core', '0002_auto_20160714_1952'),
- ]
-
- 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')),
- ],
- options={
- 'verbose_name': 'category',
- },
- ),
- migrations.CreateModel(
- name='PageBlock',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('content', mezzanine.core.fields.RichTextField(verbose_name='Content')),
- ('title', models.CharField(max_length=1024, verbose_name='name')),
- ('background_color', models.CharField(blank=True, choices=[('black', 'black'), ('yellow', 'yellow'), ('red', 'red')], max_length=32, verbose_name='background color')),
- ],
- options={
- 'verbose_name': 'page block',
- },
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-07-24 23:59
-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', '0003_category_pageblock'),
- ]
-
- operations = [
- migrations.AddField(
- model_name='pageblock',
- name='content_en',
- field=mezzanine.core.fields.RichTextField(null=True, verbose_name='Content'),
- ),
- migrations.AddField(
- model_name='pageblock',
- name='content_fr',
- field=mezzanine.core.fields.RichTextField(null=True, verbose_name='Content'),
- ),
- migrations.AddField(
- model_name='pageblock',
- name='page',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='pages.Page', verbose_name='page'),
- ),
- migrations.AddField(
- model_name='pageblock',
- name='title_en',
- field=models.CharField(max_length=1024, null=True, verbose_name='name'),
- ),
- migrations.AddField(
- model_name='pageblock',
- name='title_fr',
- field=models.CharField(max_length=1024, null=True, verbose_name='name'),
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-07-25 00:01
-from __future__ import unicode_literals
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-core', '0004_auto_20160725_0159'),
- ]
-
- operations = [
- migrations.AlterField(
- model_name='pageblock',
- name='title',
- field=models.CharField(max_length=1024, verbose_name='title'),
- ),
- migrations.AlterField(
- model_name='pageblock',
- name='title_en',
- field=models.CharField(max_length=1024, null=True, verbose_name='title'),
- ),
- migrations.AlterField(
- model_name='pageblock',
- name='title_fr',
- field=models.CharField(max_length=1024, null=True, verbose_name='title'),
- ),
- ]
+++ /dev/null
-# -*- 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',
- },
- ),
- ]
+++ /dev/null
-# -*- 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'),
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-07-27 13:53
-from __future__ import unicode_literals
-
-from django.db import migrations, models
-import mezzanine.core.fields
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-core', '0007_auto_20160726_0042'),
- ]
-
- 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'), ('center', 'center'), ('right', 'right')], default='left', max_length=32, verbose_name='photo alignment'),
- ),
- migrations.AddField(
- model_name='basicpage',
- name='photo_card',
- field=mezzanine.core.fields.FileField(blank=True, max_length=1024, verbose_name='card photo'),
- ),
- migrations.AddField(
- model_name='basicpage',
- name='photo_card_credits',
- field=models.CharField(blank=True, max_length=255, null=True, verbose_name='photo card credits'),
- ),
- 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_slider',
- field=mezzanine.core.fields.FileField(blank=True, max_length=1024, verbose_name='slider photo'),
- ),
- migrations.AddField(
- model_name='basicpage',
- name='photo_slider_credits',
- field=models.CharField(blank=True, max_length=255, null=True, verbose_name='photo slider credits'),
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-07-27 14:38
-from __future__ import unicode_literals
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-core', '0008_auto_20160727_1553'),
- ]
-
- operations = [
- migrations.AddField(
- model_name='pageblock',
- name='with_separator',
- field=models.BooleanField(default=False),
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-08-07 23:18
-from __future__ import unicode_literals
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-core', '0009_pageblock_with_separator'),
- ]
-
- operations = [
- migrations.CreateModel(
- name='LinkType',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('name', models.CharField(max_length=256, verbose_name='name')),
- ('slug', models.SlugField(blank=True, 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)', max_length=256, verbose_name='slug')),
- ('ordering', models.PositiveIntegerField(blank=True, null=True, verbose_name='ordering')),
- ],
- options={
- 'ordering': ['ordering'],
- },
- ),
- migrations.AlterModelOptions(
- name='pageimage',
- options={'ordering': ('_order',), 'verbose_name': 'image', 'verbose_name_plural': 'images'},
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-08-09 12:13
-from __future__ import unicode_literals
-
-from django.db import migrations, models
-import django.db.models.deletion
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-core', '0010_auto_20160808_0118'),
- ]
-
- operations = [
- migrations.AlterField(
- model_name='pageimage',
- name='credits',
- field=models.CharField(blank=True, max_length=256, null=True, verbose_name='credits'),
- ),
- migrations.AlterField(
- model_name='pageimage',
- name='description',
- field=models.TextField(blank=True, verbose_name='description'),
- ),
- migrations.AlterField(
- model_name='pageimage',
- name='description_en',
- field=models.TextField(blank=True, null=True, verbose_name='description'),
- ),
- migrations.AlterField(
- model_name='pageimage',
- name='description_fr',
- field=models.TextField(blank=True, null=True, verbose_name='description'),
- ),
- migrations.AlterField(
- model_name='pageimage',
- name='page',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='pages.Page', verbose_name='page'),
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-08-18 14:56
-from __future__ import unicode_literals
-
-from django.db import migrations
-import mezzanine.core.fields
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-core', '0011_auto_20160809_1413'),
- ]
-
- operations = [
- migrations.AlterModelOptions(
- name='pageblock',
- options={'ordering': ('_order',), 'verbose_name': 'page block'},
- ),
- migrations.AddField(
- model_name='pageblock',
- name='_order',
- field=mezzanine.core.fields.OrderField(null=True, verbose_name='Order'),
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-08-23 11:59
-from __future__ import unicode_literals
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-core', '0012_auto_20160818_1656'),
- ]
-
- operations = [
- migrations.AddField(
- model_name='category',
- name='description',
- field=models.TextField(blank=True, verbose_name='description'),
- ),
- migrations.AddField(
- model_name='pageblock',
- name='description',
- field=models.TextField(blank=True, verbose_name='description'),
- ),
- ]
COLOR_CHOICES = (('black', _('black')), ('yellow', _('yellow')), ('red', _('red')))
ALIGNMENT_CHOICES = (('left', _('left')), ('center', _('center')), ('right', _('right')))
+IMAGE_TYPE_CHOICES = (('logo', _('logo')), ('slider', _('slider')), ('card', _('card')), ('content', _('content')))
class Description(models.Model):
return self.title
-class SubTitle(models.Model):
+class SubTitled(models.Model):
sub_title = models.TextField(_('sub title'), blank=True, max_length=1024)
return self.name
-class Photo(models.Model):
- """Photo bundle with credits"""
-
- photo = FileField(_('photo'), upload_to='images/photos', max_length=1024, blank=True, format="Image")
- photo_credits = models.CharField(_('photo credits'), max_length=255, blank=True, null=True)
- photo_alignment = models.CharField(_('photo alignment'), choices=ALIGNMENT_CHOICES, max_length=32, default="left", blank=True)
- photo_description = models.TextField(_('photo description'), blank=True)
-
- photo_card = FileField(_('card photo'), upload_to='images/photos/card', max_length=1024, blank=True, format="Image")
- photo_card_credits = models.CharField(_('photo card credits'), max_length=255, blank=True, null=True)
+class Block(RichText, Titled, Orderable):
- photo_slider = FileField(_('slider photo'), upload_to='images/photos/slider', max_length=1024, blank=True, format="Image")
- photo_slider_credits = models.CharField(_('photo slider credits'), max_length=255, blank=True, null=True)
- abstract = True
+ with_separator = models.BooleanField(default=False)
+ background_color = models.CharField(_('background color'), max_length=32, choices=COLOR_CHOICES, blank=True)
class Meta:
abstract = True
- @property
- def card(self):
- if self.photo_card:
- return self.photo_card
- else:
- return self.photo
-
-
-class BasicPage(Page, SubTitle, Photo, RichText):
-
- class Meta:
- verbose_name = 'basic page'
-
-class Block(RichText, Titled, Orderable):
+class Image(Titled, Orderable):
- with_separator = models.BooleanField(default=False)
- background_color = models.CharField(_('background color'), max_length=32, choices=COLOR_CHOICES, blank=True)
+ file = FileField(_("Image"), max_length=1024, format="Image", upload_to="images")
+ credits = models.CharField(_('credits'), max_length=256, blank=True, null=True)
+ type = models.CharField(_('type'), max_length=64, choices=IMAGE_TYPE_CHOICES, blank=True)
class Meta:
abstract = True
+ def __str__(self):
+ value = self.description
+ if not value:
+ value = self.file.name
+ if not value:
+ value = ""
+ return value
+
class DynamicContent(models.Model):
abstract = True
-class Image(Description, Orderable):
+class URL(models.Model):
- file = FileField(_("Image"), max_length=1024, format="Image", upload_to="images")
- credits = models.CharField(_('credits'), max_length=256, blank=True, null=True)
+ url = models.URLField(_('URL'), max_length=512, blank=True)
class Meta:
abstract = True
- def __str__(self):
- value = self.description
- if not value:
- value = self.file.name
- if not value:
- value = ""
- return value
-
-
-class PageBlock(Block):
-
- page = models.ForeignKey(Page, verbose_name=_('page'), blank=True, null=True, on_delete=models.SET_NULL)
-
- class Meta:
- verbose_name = 'page block'
-
-
-class PageImage(Image):
-
- page = models.ForeignKey(Page, verbose_name=_('page'))
-
- class Meta:
- verbose_name = _("image")
- verbose_name_plural = _("images")
- order_with_respect_to = "page"
-
class LinkType(models.Model):
"""
return self.name
-class Link(models.Model):
+class Link(URL):
"""A person can have many links."""
link_type = models.ForeignKey(LinkType, verbose_name=_('link type'))
- url = models.URLField(verbose_name=_('URL'))
class Meta:
abstract = True
return self.url
+
class Period(models.Model):
date_begin = models.DateField(_('begin date'), null=True, blank=True)
class Meta:
abstract = True
+
+
+
+class CustomDisplayable(Displayable):
+
+ class Meta:
+ verbose_name = _('custom displayable')
+
+
+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"
from mezzanine.pages.translation import TranslatedRichText
from organization.core.models import *
-# @register(SubTitle)
-# class SubTitleTranslationOptions(TranslationOptions):
-#
-# fields = ('sub_title',)
-@register(BasicPage)
-class BasicPageTranslationOptions(TranslationOptions):
+@register(CustomDisplayable)
+class CustomDisplayableTranslationOptions(TranslationOptions):
- fields = ('sub_title', 'content')
+ pass
-@register(PageBlock)
-class PageBlockTranslationOptions(TranslationOptions):
+@register(DisplayableImage)
+class DisplayableImageTranslationOptions(TranslationOptions):
+
+ fields = ('description',)
+
+
+@register(DisplayableLink)
+class DisplayableLinkTranslationOptions(TranslationOptions):
+
+ pass
+
+
+@register(DisplayableBlock)
+class DisplayableBlockTranslationOptions(TranslationOptions):
+
+ fields = ('title', 'content', )
- fields = ('title', 'content')
+@register(CustomModel)
+class CustomModelTranslationOptions(TranslationOptions):
-@register(PageImage)
-class PageImageTranslationOptions(TranslationOptions):
+ pass
+
+
+@register(ModelImage)
+class ModelImageTranslationOptions(TranslationOptions):
fields = ('description',)
+
+
+@register(ModelLink)
+class ModelLinkTranslationOptions(TranslationOptions):
+
+ pass
+
+
+@register(ModelBlock)
+class ModelBlockTranslationOptions(TranslationOptions):
+
+ fields = ('title', 'content', )
# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-07-14 16:53
+# Generated by Django 1.9.7 on 2016-08-23 17:45
from __future__ import unicode_literals
from django.db import migrations, models
('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')),
- ('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')),
('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')),
'verbose_name': 'artist',
'ordering': ['last_name'],
},
- bases=(mezzanine.utils.models.AdminThumbMixin, models.Model),
+ bases=(models.Model, mezzanine.utils.models.AdminThumbMixin),
),
]
from pyquery import PyQuery as pq
-class Artist(Displayable, RichText, AdminThumbMixin, Photo):
+class Artist(Displayable, RichText, AdminThumbMixin):
"""Artist"""
first_name = models.CharField(_('first name'), max_length=255, blank=True, null=True)
import dal_select2_queryset_sequence
from organization.magazine.models import Article, Topic, Brief
-from organization.core.models import BasicPage
+from organization.pages.models import CustomPage
from mezzanine_agenda.models import Event
class BriefForm(autocomplete.FutureModelForm):
queryset=autocomplete.QuerySetSequence(
Article.objects.all(),
Event.objects.all(),
- BasicPage.objects.all(),
+ CustomPage.objects.all(),
),
required=False,
widget=dal_select2_queryset_sequence.widgets.QuerySetSequenceSelect2('object-autocomplete'),
# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-07-14 16:53
+# Generated by Django 1.9.7 on 2016-08-23 17:45
from __future__ import unicode_literals
from django.db import migrations, models
initial = True
dependencies = [
+ ('pages', '0004_auto_20160804_1547'),
('sites', '0002_alter_domain_unique'),
+ ('contenttypes', '0002_remove_content_type_name'),
('blog', '0001_initial'),
]
name='Article',
fields=[
('blogpost_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='blog.BlogPost')),
- ('sub_title', models.CharField(blank=True, max_length=1000, verbose_name='sub title')),
- ('sub_title_fr', models.CharField(blank=True, max_length=1000, null=True, verbose_name='sub title')),
- ('sub_title_en', models.CharField(blank=True, max_length=1000, null=True, verbose_name='sub title')),
+ ('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')),
+ ('related_articles', models.ManyToManyField(blank=True, related_name='_article_related_articles_+', to='organization-magazine.Article', verbose_name='Related articles')),
],
options={
'verbose_name': 'article',
},
- bases=('blog.blogpost',),
+ bases=('blog.blogpost', models.Model),
+ ),
+ migrations.CreateModel(
+ name='ArticleImage',
+ 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')),
+ ('description_fr', models.TextField(blank=True, null=True, verbose_name='description')),
+ ('description_en', models.TextField(blank=True, null=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(blank=True, choices=[('logo', 'logo'), ('slider', 'slider'), ('card', 'card'), ('content', 'content')], max_length=64, verbose_name='type')),
+ ('article', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='images', to='organization-magazine.Article', verbose_name='article')),
+ ],
+ options={
+ 'verbose_name': 'image',
+ 'ordering': ('_order',),
+ 'verbose_name_plural': 'images',
+ },
),
migrations.CreateModel(
name='Brief',
('text_button', models.CharField(blank=True, max_length=150, verbose_name='text button')),
('text_button_fr', models.CharField(blank=True, max_length=150, null=True, verbose_name='text button')),
('text_button_en', models.CharField(blank=True, max_length=150, null=True, verbose_name='text button')),
- ('local_content', models.URLField(max_length=1000, verbose_name='local content')),
- ('local_content_fr', models.URLField(max_length=1000, null=True, verbose_name='local content')),
- ('local_content_en', models.URLField(max_length=1000, null=True, verbose_name='local content')),
+ ('external_content', models.URLField(blank=True, max_length=1000, verbose_name='external content')),
+ ('external_content_fr', models.URLField(blank=True, max_length=1000, null=True, verbose_name='external content')),
+ ('external_content_en', models.URLField(blank=True, max_length=1000, null=True, verbose_name='external content')),
+ ('object_id', models.PositiveIntegerField(editable=False, null=True, verbose_name='related object')),
+ ('content_type', models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType', verbose_name='content page')),
('site', models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.Site')),
],
options={
},
),
migrations.CreateModel(
- name='Category',
+ 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')),
+ ('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')),
+ ('articles', models.ManyToManyField(blank=True, to='organization-magazine.Article', verbose_name='articles')),
],
options={
- 'verbose_name': 'category',
+ 'verbose_name': 'topic',
+ 'ordering': ('_order',),
},
+ bases=('pages.page', models.Model),
),
]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-07-24 23:17
-from __future__ import unicode_literals
-
-from django.db import migrations
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-magazine', '0001_initial'),
- ]
-
- operations = [
- migrations.DeleteModel(
- name='Category',
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-07-28 13:36
-from __future__ import unicode_literals
-
-from django.db import migrations, models
-import mezzanine.core.fields
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-magazine', '0002_delete_category'),
- ]
-
- operations = [
- migrations.AddField(
- model_name='article',
- name='photo',
- field=mezzanine.core.fields.FileField(blank=True, max_length=1024, verbose_name='photo'),
- ),
- migrations.AddField(
- model_name='article',
- name='photo_alignment',
- field=models.CharField(blank=True, choices=[('left', 'left'), ('center', 'center'), ('right', 'right')], default='left', max_length=32, verbose_name='photo alignment'),
- ),
- migrations.AddField(
- model_name='article',
- name='photo_card',
- field=mezzanine.core.fields.FileField(blank=True, max_length=1024, verbose_name='card photo'),
- ),
- migrations.AddField(
- model_name='article',
- name='photo_card_credits',
- field=models.CharField(blank=True, max_length=255, null=True, verbose_name='photo card credits'),
- ),
- migrations.AddField(
- model_name='article',
- name='photo_credits',
- field=models.CharField(blank=True, max_length=255, null=True, verbose_name='photo credits'),
- ),
- migrations.AddField(
- model_name='article',
- name='photo_description',
- field=models.TextField(blank=True, verbose_name='photo description'),
- ),
- migrations.AddField(
- model_name='article',
- name='photo_slider',
- field=mezzanine.core.fields.FileField(blank=True, max_length=1024, verbose_name='slider photo'),
- ),
- migrations.AddField(
- model_name='article',
- name='photo_slider_credits',
- field=models.CharField(blank=True, max_length=255, null=True, verbose_name='photo slider credits'),
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-07-28 13:49
-from __future__ import unicode_literals
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-magazine', '0003_auto_20160728_1536'),
- ]
-
- operations = [
- migrations.AddField(
- model_name='article',
- name='related_article',
- field=models.ManyToManyField(blank=True, related_name='_article_related_article_+', to='organization-magazine.Article', verbose_name='Related posts'),
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-07-28 13:51
-from __future__ import unicode_literals
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-magazine', '0004_article_related_article'),
- ]
-
- operations = [
- migrations.RemoveField(
- model_name='article',
- name='related_article',
- ),
- migrations.AddField(
- model_name='article',
- name='related_articles',
- field=models.ManyToManyField(blank=True, related_name='_article_related_articles_+', to='organization-magazine.Article', verbose_name='Related posts'),
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-07-28 14:32
-from __future__ import unicode_literals
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-magazine', '0005_auto_20160728_1551'),
- ]
-
- operations = [
- migrations.AlterField(
- model_name='article',
- name='related_articles',
- field=models.ManyToManyField(blank=True, related_name='_article_related_articles_+', to='organization-magazine.Article', verbose_name='Related articles'),
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-08-04 09:49
-from __future__ import unicode_literals
-
-from django.db import migrations, models
-import django.db.models.deletion
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('pages', '0002_auto_20160725_0143'),
- ('organization-magazine', '0006_auto_20160728_1632'),
- ]
-
- operations = [
- migrations.CreateModel(
- name='Topic',
- 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')),
- ('articles', models.ManyToManyField(blank=True, to='organization-magazine.Article', verbose_name='articles')),
- ],
- options={
- 'verbose_name': 'topic',
- 'ordering': ('_order',),
- },
- bases=('pages.page',),
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-08-04 12:51
-from __future__ import unicode_literals
-
-from django.db import migrations
-import mezzanine.core.fields
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-magazine', '0007_topic'),
- ]
-
- operations = [
- migrations.AddField(
- model_name='topic',
- name='content',
- field=mezzanine.core.fields.RichTextField(default='', verbose_name='Content'),
- preserve_default=False,
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-08-05 13:48
-from __future__ import unicode_literals
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-magazine', '0008_topic_content'),
- ]
-
- operations = [
- migrations.AddField(
- model_name='brief',
- name='sort_order',
- field=models.IntegerField(blank=True, db_index=True, default=1),
- preserve_default=False,
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-08-07 23:18
-from __future__ import unicode_literals
-
-from django.db import migrations
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-magazine', '0009_brief_sort_order'),
- ]
-
- operations = [
- migrations.AlterModelOptions(
- name='brief',
- options={'ordering': ['sort_order'], 'verbose_name': 'brief'},
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-08-12 09:07
-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-magazine', '0010_auto_20160808_0118'),
- ]
-
- operations = [
- migrations.CreateModel(
- name='ArticleImage',
- 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')),
- ('description', models.TextField(blank=True, verbose_name='description')),
- ('description_fr', models.TextField(blank=True, null=True, verbose_name='description')),
- ('description_en', models.TextField(blank=True, null=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')),
- ('article_fk', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization-magazine.Article', verbose_name='article')),
- ],
- options={
- 'verbose_name_plural': 'images',
- 'verbose_name': 'image',
- 'ordering': ('_order',),
- },
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-08-12 15:38
-from __future__ import unicode_literals
-
-from django.db import migrations, models
-import django.db.models.deletion
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('contenttypes', '0002_remove_content_type_name'),
- ('organization-magazine', '0011_articleimage'),
- ]
-
- operations = [
- migrations.CreateModel(
- name='TestModel',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('name', models.CharField(max_length=200)),
- ('object_id', models.PositiveIntegerField(blank=True, editable=False, null=True)),
- ('content_type', models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType')),
- ],
- ),
- migrations.AddField(
- model_name='brief',
- name='content_type',
- field=models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType'),
- ),
- migrations.AddField(
- model_name='brief',
- name='object_id',
- field=models.PositiveIntegerField(blank=True, editable=False, null=True),
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-08-12 16:13
-from __future__ import unicode_literals
-
-from django.db import migrations, models
-import django.db.models.deletion
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-magazine', '0012_auto_20160812_1738'),
- ]
-
- operations = [
- migrations.RemoveField(
- model_name='testmodel',
- name='content_type',
- ),
- migrations.AlterField(
- model_name='brief',
- name='content_type',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType', verbose_name='content page'),
- ),
- migrations.AlterField(
- model_name='brief',
- name='object_id',
- field=models.PositiveIntegerField(null=True, verbose_name='related object'),
- ),
- migrations.DeleteModel(
- name='TestModel',
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-08-18 09:24
-from __future__ import unicode_literals
-
-from django.db import migrations
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-magazine', '0013_auto_20160812_1813'),
- ]
-
- operations = [
- migrations.AlterModelOptions(
- name='brief',
- options={'verbose_name': 'brief'},
- ),
- migrations.RemoveField(
- model_name='brief',
- name='sort_order',
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-08-18 09:31
-from __future__ import unicode_literals
-
-from django.db import migrations, models
-import django.db.models.deletion
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-magazine', '0014_auto_20160818_1124'),
- ]
-
- operations = [
- migrations.AlterField(
- model_name='brief',
- name='content_type',
- field=models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType', verbose_name='content page'),
- ),
- migrations.AlterField(
- model_name='brief',
- name='object_id',
- field=models.PositiveIntegerField(editable=False, null=True, verbose_name='related object'),
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-08-18 10:30
-from __future__ import unicode_literals
-
-from django.db import migrations
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-magazine', '0015_auto_20160818_1131'),
- ]
-
- operations = [
- migrations.RemoveField(
- model_name='brief',
- name='local_content',
- ),
- migrations.RemoveField(
- model_name='brief',
- name='local_content_en',
- ),
- migrations.RemoveField(
- model_name='brief',
- name='local_content_fr',
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-08-18 10:31
-from __future__ import unicode_literals
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-magazine', '0016_auto_20160818_1230'),
- ]
-
- operations = [
- migrations.AddField(
- model_name='brief',
- name='external_content',
- field=models.URLField(default=1, max_length=1000, verbose_name='external content'),
- preserve_default=False,
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-08-18 10:32
-from __future__ import unicode_literals
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-magazine', '0017_brief_external_content'),
- ]
-
- operations = [
- migrations.AddField(
- model_name='brief',
- name='external_content_en',
- field=models.URLField(max_length=1000, null=True, verbose_name='external content'),
- ),
- migrations.AddField(
- model_name='brief',
- name='external_content_fr',
- field=models.URLField(max_length=1000, null=True, verbose_name='external content'),
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-08-18 10:33
-from __future__ import unicode_literals
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-magazine', '0018_auto_20160818_1232'),
- ]
-
- operations = [
- migrations.AlterField(
- model_name='brief',
- name='external_content',
- field=models.URLField(max_length=1000, null=True, verbose_name='external content'),
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-08-18 10:38
-from __future__ import unicode_literals
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-magazine', '0019_auto_20160818_1233'),
- ]
-
- operations = [
- migrations.AlterField(
- model_name='brief',
- name='external_content',
- field=models.URLField(blank=True, max_length=1000, verbose_name='external content'),
- ),
- migrations.AlterField(
- model_name='brief',
- name='external_content_en',
- field=models.URLField(blank=True, max_length=1000, null=True, verbose_name='external content'),
- ),
- migrations.AlterField(
- model_name='brief',
- name='external_content_fr',
- field=models.URLField(blank=True, max_length=1000, null=True, verbose_name='external content'),
- ),
- ]
from mezzanine.core.models import RichText, Displayable, Slugged
from mezzanine.pages.models import Page
from mezzanine.blog.models import BlogPost
-#from orderable.models import Orderable
-from organization.core.models import Named, Description, Image, Photo
+from organization.core.models import *
-class ArticleImage(Image):
-
- article_fk = models.ForeignKey("Article", verbose_name=_('article'))
-
- class Meta:
- verbose_name = _("image")
- verbose_name_plural = _("images")
- order_with_respect_to = "article"
-class Article(BlogPost, Photo):
+class Article(BlogPost, SubTitled):
- sub_title = models.CharField(_('sub title'), blank=True, max_length=1000)
related_articles = models.ManyToManyField("self",
verbose_name=_("Related articles"), blank=True)
verbose_name = _('article')
+class ArticleImage(Image):
+
+ article = models.ForeignKey("Article", verbose_name=_('article'), 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 = "article"
+
+
class Brief(Displayable, RichText): #Orderable
text_button = models.CharField(blank=True, max_length=150, null=False, verbose_name='text button')
from mezzanine_agenda.models import Event
from organization.magazine.models import Article, Topic, Brief
from organization.network.models import Department
-from organization.core.models import BasicPage
+from organization.pages.models import CustomPage
from organization.core.views import SlugMixin
from django.template.defaultfilters import slugify
def get_queryset(self):
articles = Article.objects.all()
- basicpage = BasicPage.objects.all()
+ custompage = CustomPage.objects.all()
events = Event.objects.all()
if self.q:
articles = articles.filter(title__icontains=self.q)
- basicpage = basicpage.filter(title__icontains=self.q)
+ custompage = custompage.filter(title__icontains=self.q)
events = events.filter(title__icontains=self.q)
- qs = autocomplete.QuerySetSequence(articles, basicpage, events )
+ qs = autocomplete.QuerySetSequence(articles, custompage, events )
if self.q:
# This would apply the filter on all the querysets
# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-07-14 16:54
+# Generated by Django 1.9.7 on 2016-08-23 17:45
from __future__ import unicode_literals
from django.db import migrations, models
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')),
+ ('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')),
('audios', models.ManyToManyField(blank=True, related_name='playlists', to='organization-media.Audio', verbose_name='audios')),
+ ('site', models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.Site')),
],
options={
'abstract': False,
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-07-21 11:51
-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'),
- ('organization-media', '0001_initial'),
- ]
-
- operations = [
- migrations.AddField(
- model_name='playlist',
- name='site',
- field=models.ForeignKey(default=1, editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.Site'),
- preserve_default=False,
- ),
- migrations.AddField(
- model_name='playlist',
- name='slug',
- field=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'),
- ),
- migrations.AlterField(
- model_name='playlist',
- name='title',
- field=models.CharField(max_length=500, verbose_name='Title'),
- ),
- ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-07-27 13:53
-from __future__ import unicode_literals
-
-from django.db import migrations
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-media', '0002_auto_20160721_1351'),
- ]
-
- operations = [
- migrations.RemoveField(
- model_name='playlist',
- name='description',
- ),
- ]
open_source_mime_type = 'video/webm'
closed_source_mime_type = 'video/mp4'
- category = models.ForeignKey('VideoCategory', related_name='videos', verbose_name=_('category'), blank=True, null=True, on_delete=models.SET_NULL)
+ category = models.ForeignKey('VideoCategory', verbose_name=_('category'), related_name='videos', blank=True, null=True, on_delete=models.SET_NULL)
class Meta:
verbose_name = _('video')
"""(Playlist description)"""
audios = models.ManyToManyField('Audio', verbose_name=_('audios'), related_name='playlists', blank=True)
- #description = models.OneToOneField('organization-core.Description', verbose_name=_('description'), related_name='description', blank=True, on_delete=models.CASCADE)
def __str__(self):
return self.title
from mezzanine.pages.admin import PageAdmin
from organization.network.models import *
+from organization.pages.models import *
from organization.core.admin import *
+class OrganizationImageInline(TabularDynamicInlineAdmin):
+
+ model = ModelImage
+
+
class OrganizationAdmin(BaseTranslationModelAdmin):
model = Organization
+ inlines = [OrganizationImageInline,]
-class PersonActivityInline(StackedDynamicInlineAdmin):
+class DepartmentPageImageInline(TabularDynamicInlineAdmin):
- model = PersonActivity
- fk_name = 'person'
+ model = PageImage
-class DepartmentAdmin(BaseTranslationModelAdmin):
+class DepartmentPageAdmin(PageAdmin):
- model = Department
+ inlines = [DepartmentPageImageInline,]
-class DepartmentPageAdmin(PageAdmin):
+class DepartmentAdmin(BaseTranslationModelAdmin):
- inlines = [PageBlockInline, PageImageInline]
+ model = Department
class TeamAdmin(BaseTranslationModelAdmin):
model = Team
+class TeamPageImageInline(TabularDynamicInlineAdmin):
+
+ model = PageImage
+
+
class TeamPageAdmin(PageAdmin):
- inlines = [PageBlockInline, PageImageInline]
+ inlines = [TeamPageImageInline,]
class PersonAdminBase(BaseTranslationModelAdmin):
class PersonLinkInline(StackedDynamicInlineAdmin):
- model = PersonLink
+ model = DisplayableLink
+
+
+class PersonActivityInline(StackedDynamicInlineAdmin):
+
+ model = PersonActivity
+ fk_name = 'person'
+
+
+class PersonImageInline(TabularDynamicInlineAdmin):
+
+ model = DisplayableImage
class PersonAdmin(BaseTranslationModelAdmin):
model = Person
- inlines = [PersonActivityInline, PersonLinkInline, ]
+ inlines = [PersonImageInline, PersonActivityInline, PersonLinkInline, ]
first_fields = ['last_name', 'first_name', 'title', 'gender', 'user']
def get_fieldsets(self, request, obj = None):
admin.site.register(Organization, OrganizationAdmin)
admin.site.register(OrganizationType)
admin.site.register(Department, DepartmentAdmin)
-admin.site.register(Team, TeamAdmin)
admin.site.register(DepartmentPage, DepartmentPageAdmin)
+admin.site.register(Team, TeamAdmin)
admin.site.register(TeamPage, TeamPageAdmin)
admin.site.register(Person, PersonAdmin)
# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-08-23 12:25
+# Generated by Django 1.9.7 on 2016-08-23 17:45
from __future__ import unicode_literals
from django.db import migrations, models
dependencies = [
('pages', '0004_auto_20160804_1547'),
- ('organization-core', '0013_auto_20160823_1359'),
+ ('organization-core', '0001_initial'),
]
operations = [
'verbose_name': 'activity status',
},
),
- 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='address')),
- ('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='BudgetCode',
fields=[
('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')),
- ('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')),
('weaving_css_class', models.CharField(blank=True, choices=[('pattern-bg--circles', 'circles'), ('pattern-bg--squares', 'squares'), ('pattern-bg--stripes', 'stripes'), ('pattern-bg--triangles', 'triangles')], max_length=64, verbose_name='background pattern')),
],
options={
- 'ordering': ('_order',),
'verbose_name': 'department page',
+ 'ordering': ('_order',),
},
bases=('pages.page', models.Model),
),
+ migrations.CreateModel(
+ name='Organization',
+ fields=[
+ ('custommodel_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='organization-core.CustomModel')),
+ ('name', models.CharField(max_length=512, verbose_name='name')),
+ ('description', models.TextField(blank=True, verbose_name='description')),
+ ('description_fr', models.TextField(blank=True, null=True, verbose_name='description')),
+ ('description_en', models.TextField(blank=True, null=True, verbose_name='description')),
+ ('url', models.URLField(blank=True, max_length=512, verbose_name='URL')),
+ ('address', models.TextField(blank=True, verbose_name='address')),
+ ('postal_code', models.CharField(blank=True, max_length=16, verbose_name='postal code')),
+ ('country', django_countries.fields.CountryField(max_length=2, verbose_name='country')),
+ ('is_on_map', models.BooleanField(default=True, verbose_name='is on map')),
+ ],
+ options={
+ 'verbose_name': 'organization',
+ },
+ bases=('organization-core.custommodel', models.Model),
+ ),
migrations.CreateModel(
name='OrganizationType',
fields=[
migrations.CreateModel(
name='Person',
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)),
- ('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')),
- ('_meta_title', models.CharField(blank=True, 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')),
- ('description', models.TextField(blank=True, verbose_name='Description')),
- ('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(editable=False, null=True)),
- ('updated', models.DateTimeField(editable=False, null=True)),
- ('status', models.IntegerField(choices=[(1, 'Draft'), (2, 'Published')], default=2, help_text='With Draft chosen, will only be shown for admin users on the site.', verbose_name='Status')),
- ('publish_date', models.DateTimeField(blank=True, db_index=True, help_text="With Published chosen, won't be shown until this time", null=True, verbose_name='Published from')),
- ('expiry_date', models.DateTimeField(blank=True, help_text="With Published chosen, won't be shown after this time", null=True, verbose_name='Expires on')),
- ('short_url', models.URLField(blank=True, null=True)),
- ('in_sitemap', models.BooleanField(default=True, verbose_name='Show in sitemap')),
- ('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')),
+ ('customdisplayable_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='organization-core.CustomDisplayable')),
('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')),
('permanent', models.BooleanField(default=False, verbose_name='permanent')),
],
options={
- 'ordering': ['last_name'],
'verbose_name': 'person',
+ 'ordering': ['last_name'],
},
- bases=(mezzanine.utils.models.AdminThumbMixin, models.Model),
+ bases=('organization-core.customdisplayable', mezzanine.utils.models.AdminThumbMixin),
),
migrations.CreateModel(
name='PersonActivity',
('date_added', models.DateTimeField(auto_now_add=True, verbose_name='add date')),
('date_modified', models.DateTimeField(auto_now=True, verbose_name='modification date')),
('date_modified_manual', models.DateTimeField(blank=True, null=True, verbose_name='manual modification date')),
+ ('attachment_organization', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='attachment_activity', to='organization-network.Organization', verbose_name='attachment organization')),
('budget_code', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-network.BudgetCode')),
+ ('employer', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='employer_activity', to='organization-network.Organization', verbose_name='employer')),
('framework', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-network.ActivityFramework', verbose_name='framework')),
('grade', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-network.ActivityGrade', verbose_name='grade')),
('person', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization-network.Person', verbose_name='person')),
('phd_director', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='phd_director_activity', to='organization-network.Person', verbose_name='PhD director')),
+ ('phd_doctoral_school', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-network.Organization', verbose_name='doctoral school')),
('phd_officer_1', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='phd_officer_1_activity', to='organization-network.Person', verbose_name='PhD officer 1')),
('phd_officer_2', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='phd_officer_2_activity', to='organization-network.Person', verbose_name='PhD officer 2')),
],
options={
- 'verbose_name_plural': 'activities',
'verbose_name': 'activity',
- },
- ),
- migrations.CreateModel(
- name='PersonLink',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('url', models.URLField(verbose_name='URL')),
- ('link_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization-core.LinkType', verbose_name='link type')),
- ('person', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization-network.Person', verbose_name='person')),
- ],
- options={
- 'verbose_name': 'person link',
+ 'verbose_name_plural': 'activities',
},
),
migrations.CreateModel(
('description', models.TextField(blank=True, verbose_name='description')),
('description_fr', models.TextField(blank=True, null=True, verbose_name='description')),
('description_en', models.TextField(blank=True, null=True, verbose_name='description')),
- ('web_site', models.URLField(blank=True, max_length=512, verbose_name='web site')),
+ ('url', models.URLField(blank=True, max_length=512, verbose_name='URL')),
('department', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='teams', to='organization-network.Department', verbose_name='department')),
+ ('organization', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='teams', to='organization-network.Organization', verbose_name='organization')),
],
options={
'verbose_name': 'team',
},
),
- migrations.CreateModel(
- name='TeamLink',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('url', models.URLField(verbose_name='URL')),
- ('link_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization-core.LinkType', verbose_name='link type')),
- ('team', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization-network.Team', verbose_name='links')),
- ],
- options={
- 'verbose_name_plural': 'links',
- 'abstract': False,
- 'verbose_name': 'link',
- },
- ),
migrations.CreateModel(
name='TeamPage',
fields=[
('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')),
- ('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')),
- ('team', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization-network.Team', verbose_name='team')),
+ ('team', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='pages', to='organization-network.Team', verbose_name='team')),
],
options={
- 'ordering': ('_order',),
'verbose_name': 'team page',
+ 'ordering': ('_order',),
},
bases=('pages.page', models.Model),
),
'verbose_name': 'training 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='organization-network.Address')),
- ('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')),
- ('description', models.TextField(blank=True, verbose_name='description')),
- ('description_fr', models.TextField(blank=True, null=True, verbose_name='description')),
- ('description_en', models.TextField(blank=True, null=True, verbose_name='description')),
- ('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')),
- ('website', models.URLField(blank=True, max_length=512, verbose_name='website')),
- ('is_on_map', models.BooleanField(default=True, verbose_name='is on map')),
- ],
- options={
- 'verbose_name': 'organization',
- },
- bases=('organization-network.address', models.Model),
- ),
]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-08-23 12:25
-from __future__ import unicode_literals
-
-from django.conf import settings
-from django.db import migrations, models
-import django.db.models.deletion
-
-
-class Migration(migrations.Migration):
-
- initial = True
-
- dependencies = [
- ('organization-network', '0001_initial'),
- ('sites', '0002_alter_domain_unique'),
- ('organization-projects', '0001_initial'),
- migrations.swappable_dependency(settings.AUTH_USER_MODEL),
- ]
-
- operations = [
- migrations.AddField(
- model_name='personactivity',
- name='project',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-projects.Project', verbose_name='project'),
- ),
- migrations.AddField(
- model_name='personactivity',
- name='record_piece',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-network.RecordPiece'),
- ),
- migrations.AddField(
- model_name='personactivity',
- name='second_team',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='second_team_activity', to='organization-network.Team', verbose_name='second team'),
- ),
- migrations.AddField(
- model_name='personactivity',
- name='status',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-network.ActivityStatus', verbose_name='status'),
- ),
- migrations.AddField(
- model_name='personactivity',
- name='team',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='team_activity', to='organization-network.Team', verbose_name='team'),
- ),
- migrations.AddField(
- model_name='personactivity',
- name='training_level',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-network.TrainingLevel', verbose_name='training level'),
- ),
- migrations.AddField(
- model_name='personactivity',
- name='training_speciality',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-network.TrainingSpectiality', verbose_name='training speciality'),
- ),
- migrations.AddField(
- model_name='personactivity',
- name='training_topic',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-network.TrainingTopic', verbose_name='training topic'),
- ),
- migrations.AddField(
- model_name='personactivity',
- name='training_type',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-network.TrainingType', verbose_name='training type'),
- ),
- migrations.AddField(
- model_name='person',
- name='site',
- field=models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.Site'),
- ),
- migrations.AddField(
- model_name='person',
- name='user',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='user'),
- ),
- migrations.AddField(
- model_name='departmentpage',
- name='department',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization-network.Department', verbose_name='department'),
- ),
- migrations.AddField(
- model_name='team',
- name='organization',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='teams', to='organization-network.Organization', verbose_name='organization'),
- ),
- migrations.AddField(
- model_name='personactivity',
- name='attachment_organization',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='attachment_activity', to='organization-network.Organization', verbose_name='attachment organization'),
- ),
- migrations.AddField(
- model_name='personactivity',
- name='employer',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='employer_activity', to='organization-network.Organization', verbose_name='employer'),
- ),
- migrations.AddField(
- model_name='personactivity',
- name='phd_doctoral_school',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-network.Organization', verbose_name='doctoral school'),
- ),
- migrations.AddField(
- model_name='personactivity',
- name='second_employer',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='second_employer_activity', to='organization-network.Organization', verbose_name='second employer'),
- ),
- migrations.AddField(
- model_name='organization',
- name='site',
- field=models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.Site'),
- ),
- migrations.AddField(
- model_name='organization',
- name='type',
- field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-network.OrganizationType', verbose_name='organization type'),
- ),
- migrations.AddField(
- model_name='department',
- name='organization',
- field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='departments', to='organization-network.Organization', verbose_name='organization'),
- ),
- ]
--- /dev/null
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-08-23 17:45
+from __future__ import unicode_literals
+
+from django.conf import settings
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ initial = True
+
+ dependencies = [
+ ('organization-projects', '0001_initial'),
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+ ('organization-network', '0001_initial'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='personactivity',
+ name='project',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-projects.Project', verbose_name='project'),
+ ),
+ migrations.AddField(
+ model_name='personactivity',
+ name='record_piece',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-network.RecordPiece'),
+ ),
+ migrations.AddField(
+ model_name='personactivity',
+ name='second_employer',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='second_employer_activity', to='organization-network.Organization', verbose_name='second employer'),
+ ),
+ migrations.AddField(
+ model_name='personactivity',
+ name='second_team',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='second_team_activity', to='organization-network.Team', verbose_name='second team'),
+ ),
+ migrations.AddField(
+ model_name='personactivity',
+ name='status',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-network.ActivityStatus', verbose_name='status'),
+ ),
+ migrations.AddField(
+ model_name='personactivity',
+ name='team',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='team_activity', to='organization-network.Team', verbose_name='team'),
+ ),
+ migrations.AddField(
+ model_name='personactivity',
+ name='training_level',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-network.TrainingLevel', verbose_name='training level'),
+ ),
+ migrations.AddField(
+ model_name='personactivity',
+ name='training_speciality',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-network.TrainingSpectiality', verbose_name='training speciality'),
+ ),
+ migrations.AddField(
+ model_name='personactivity',
+ name='training_topic',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-network.TrainingTopic', verbose_name='training topic'),
+ ),
+ migrations.AddField(
+ model_name='personactivity',
+ name='training_type',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-network.TrainingType', verbose_name='training type'),
+ ),
+ migrations.AddField(
+ model_name='person',
+ name='user',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='user'),
+ ),
+ migrations.AddField(
+ model_name='organization',
+ name='type',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-network.OrganizationType', verbose_name='organization type'),
+ ),
+ migrations.AddField(
+ model_name='departmentpage',
+ name='department',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='pages', to='organization-network.Department', verbose_name='department'),
+ ),
+ migrations.AddField(
+ model_name='department',
+ name='organization',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='departments', to='organization-network.Organization', verbose_name='organization'),
+ ),
+ ]
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-08-23 12:38
-from __future__ import unicode_literals
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-network', '0002_auto_20160823_1425'),
- ]
-
- operations = [
- migrations.RemoveField(
- model_name='organization',
- name='site',
- ),
- migrations.RemoveField(
- model_name='organization',
- name='slug',
- ),
- migrations.RemoveField(
- model_name='organization',
- name='title',
- ),
- migrations.RemoveField(
- model_name='organization',
- name='website',
- ),
- migrations.AddField(
- model_name='organization',
- name='name',
- field=models.CharField(default='', max_length=512, verbose_name='name'),
- preserve_default=False,
- ),
- migrations.AddField(
- model_name='organization',
- name='web_site',
- field=models.URLField(blank=True, max_length=512, verbose_name='web site'),
- ),
- ]
def __str__(self):
return ' '.join((self.address, self.postal_code))
- class Meta:
- abstract = True
+ class Meta:
+ abstract = True
-class Organization(Named, Address, Photo):
+class Organization(CustomModel, Named, Address, URL):
"""(Organization description)"""
type = models.ForeignKey('OrganizationType', verbose_name=_('organization type'), blank=True, null=True, on_delete=models.SET_NULL)
- web_site = models.URLField(_('web site'), max_length=512, blank=True)
is_on_map = models.BooleanField(_('is on map'), default=True)
class Meta:
verbose_name = _('organization')
+
class OrganizationType(Named):
"""(OrganizationType description)"""
return self.name
-class DepartmentPage(Page, SubTitle, RichText, Photo):
+class DepartmentPage(Page, SubTitled, RichText):
"""(Department description)"""
- department = models.ForeignKey('Department', verbose_name=_('department'))
+ department = models.ForeignKey('Department', verbose_name=_('department'), related_name="pages", blank=True, null=True, on_delete=models.SET_NULL)
weaving_css_class = models.CharField(_('background pattern'), choices=PATTERN_CHOICES, max_length=64, blank=True)
class Meta:
verbose_name = _('department page')
-class Team(Named):
+class Team(Named, URL):
"""(Team description)"""
organization = models.ForeignKey('Organization', verbose_name=_('organization'), related_name="teams", blank=True, null=True, on_delete=models.SET_NULL)
department = models.ForeignKey('Department', verbose_name=_('department'), related_name="teams", blank=True, null=True, on_delete=models.SET_NULL)
- web_site = models.URLField(_('web site'), max_length=512, blank=True)
class Meta:
verbose_name = _('team')
return self.name
-class TeamPage(Page, SubTitle, RichText, Photo):
+class TeamPage(Page, SubTitled, RichText):
"""(Team description)"""
- team = models.ForeignKey('Team', verbose_name=_('team'))
+ team = models.ForeignKey('Team', verbose_name=_('team'), related_name="pages", blank=True, null=True, on_delete=models.SET_NULL)
class Meta:
verbose_name = _('team page')
-class Person(Displayable, AdminThumbMixin, Photo):
+
+class Person(CustomDisplayable, AdminThumbMixin):
"""(Person description)"""
user = models.ForeignKey(User, verbose_name=_('user'), blank=True, null=True, on_delete=models.SET_NULL)
super(Person, self).save(*args, **kwargs)
-class TeamLink(Link):
-
- team = models.ForeignKey(Team, verbose_name=_('links'))
-
- def __str__(self):
- return self.url
-
class ActivityStatus(Named):
def __unicode__(self):
return ' - '.join((self.person, self.role, self.date_begin, self.date_end))
-
-
-class PersonLink(Link):
- """A person can have many links."""
-
- person = models.ForeignKey('Person', verbose_name=_('person'))
-
- class Meta:
- verbose_name = _('person link')
fields = ('name', 'description')
+
+@register(DepartmentPage)
+class DepartmentPageTranslationOptions(TranslationOptions):
+
+ fields = ('sub_title', 'content',)
+
+
@register(Team)
class TeamTranslationOptions(TranslationOptions):
fields = ('name', 'description')
-@register(DepartmentPage)
-class DepartmentTranslationOptions(TranslationOptions):
-
- fields = ('sub_title', 'content',)
-
@register(TeamPage)
class TeamTranslationOptions(TranslationOptions):
class PersonActivityTranslationOptions(TranslationOptions):
fields = ('description', 'content')
-
-
-@register(PersonLink)
-class PersonTranslationOptions(TranslationOptions):
-
- pass
from copy import deepcopy
from mezzanine.core.admin import *
from mezzanine.pages.admin import PageAdmin
-from organization.core.models import *
+from organization.pages.models import *
from organization.pages.models import DynamicContentHomeSlider, DynamicContentHomeBody, Home
from organization.pages.forms import DynamicContentHomeSliderForm, DynamicContentHomeBodyForm
-# Register your models here.
+
+class PageBlockInline(StackedDynamicInlineAdmin):
+
+ model = PageBlock
+
+
+class PageImageInline(TabularDynamicInlineAdmin):
+
+ model = PageImage
+
+
+class CustomPageAdmin(PageAdmin):
+
+ inlines = [PageBlockInline, PageImageInline]
+
class DynamicContentHomeSliderInline(TabularDynamicInlineAdmin):
inlines = [DynamicContentHomeSliderInline, DynamicContentHomeBodyInline ]
+
+
+admin.site.register(CustomPage, CustomPageAdmin)
admin.site.register(Home, HomeAdminDisplayable)
import dal_select2_queryset_sequence
from mezzanine.core.models import Orderable
from organization.magazine.models import Article, Topic, Brief
-from organization.core.models import BasicPage
+from organization.pages.models import CustomPage
from mezzanine_agenda.models import Event
from organization.pages.models import DynamicContentHomeSlider, DynamicContentHomeBody
queryset=autocomplete.QuerySetSequence(
Article.objects.all(),
Event.objects.all(),
- BasicPage.objects.all(),
+ CustomPage.objects.all(),
),
required=False,
widget=dal_select2_queryset_sequence.widgets.QuerySetSequenceSelect2('dynamic-content-home-slider'),
queryset=autocomplete.QuerySetSequence(
Article.objects.all(),
Event.objects.all(),
- BasicPage.objects.all(),
+ CustomPage.objects.all(),
Brief.objects.all(),
),
required=False,
# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-08-19 10:40
+# Generated by Django 1.9.7 on 2016-08-23 17:45
from __future__ import unicode_literals
from django.db import migrations, models
initial = True
dependencies = [
- ('contenttypes', '0002_remove_content_type_name'),
+ ('pages', '0004_auto_20160804_1547'),
('sites', '0002_alter_domain_unique'),
+ ('contenttypes', '0002_remove_content_type_name'),
]
operations = [
+ migrations.CreateModel(
+ name='CustomPage',
+ 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')),
+ ('content_fr', mezzanine.core.fields.RichTextField(null=True, verbose_name='Content')),
+ ('content_en', mezzanine.core.fields.RichTextField(null=True, verbose_name='Content')),
+ ('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),
+ ),
migrations.CreateModel(
name='DynamicContentHomeBody',
fields=[
('site', models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.Site')),
],
options={
- 'verbose_name': 'Home',
+ 'verbose_name': 'home',
+ 'verbose_name_plural': 'homes',
+ },
+ ),
+ migrations.CreateModel(
+ name='PageBlock',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('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')),
+ ('_order', mezzanine.core.fields.OrderField(null=True, verbose_name='Order')),
+ ('title', models.CharField(max_length=1024, verbose_name='title')),
+ ('title_fr', models.CharField(max_length=1024, null=True, verbose_name='title')),
+ ('title_en', models.CharField(max_length=1024, null=True, 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')),
+ ('page', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='page_blocks', to='pages.Page', verbose_name='page')),
+ ],
+ options={
+ 'verbose_name': 'page block',
+ 'ordering': ('_order',),
+ 'verbose_name_plural': 'blocks',
+ },
+ ),
+ 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')),
+ ('title', models.CharField(max_length=1024, verbose_name='title')),
+ ('description', models.TextField(blank=True, verbose_name='description')),
+ ('description_fr', models.TextField(blank=True, null=True, verbose_name='description')),
+ ('description_en', models.TextField(blank=True, null=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(blank=True, choices=[('logo', 'logo'), ('slider', 'slider'), ('card', 'card'), ('content', 'content')], max_length=64, verbose_name='type')),
+ ('page', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='page_images', to='pages.Page', verbose_name='page')),
+ ],
+ options={
+ 'verbose_name': 'image',
+ 'ordering': ('_order',),
+ 'verbose_name_plural': 'images',
},
),
migrations.AddField(
from django.utils.translation import ugettext_lazy as _
from django.core.urlresolvers import reverse, reverse_lazy
from mezzanine.core.models import Displayable, Slugged, Orderable
-from organization.core.models import DynamicContent
+from organization.core.models import *
+
+
+class CustomPage(Page, SubTitled, RichText):
+
+ class Meta:
+ verbose_name = 'custom page'
+
+
+class PageBlock(Block):
+
+ page = models.ForeignKey(Page, verbose_name=_('page'), related_name='page_blocks', blank=True, null=True, on_delete=models.SET_NULL)
+
+ class Meta:
+ verbose_name = _("block")
+ verbose_name_plural = _("blocks")
+ verbose_name = 'page block'
+
+
+class PageImage(Image):
+
+ page = models.ForeignKey(Page, verbose_name=_('page'), related_name='page_images', blank=True, null=True, on_delete=models.SET_NULL)
+
+ class Meta:
+ verbose_name = _("image")
+ verbose_name_plural = _("images")
+ order_with_respect_to = "page"
class DynamicContentHomeSlider(DynamicContent, Orderable):
class Meta:
verbose_name = 'Dynamic Content Home Slider'
+
class DynamicContentHomeBody(DynamicContent, Orderable):
home = models.ForeignKey("home", verbose_name=_('home'), blank=True, null=True, on_delete=models.SET_NULL)
class Meta:
verbose_name = 'Dynamic Content Home Body'
+
class Home(Displayable):
class Meta:
- verbose_name = 'Home'
+ verbose_name = _('home')
+ verbose_name_plural = _("homes")
from mezzanine.pages.translation import TranslatedRichText
from organization.pages.models import *
+
@register(Home)
class HomeTranslationOptions(TranslationOptions):
pass
+
@register(DynamicContentHomeSlider)
class DynamicContentHomeSliderOptions(TranslationOptions):
pass
+
@register(DynamicContentHomeBody)
class DynamicContentHomeBodyOptions(TranslationOptions):
pass
+
+
+@register(CustomPage)
+class CustomPageTranslationOptions(TranslationOptions):
+
+ fields = ('sub_title', 'content')
+
+
+@register(PageBlock)
+class PageBlockTranslationOptions(TranslationOptions):
+
+ fields = ('title', 'content')
+
+
+@register(PageImage)
+class PageImageTranslationOptions(TranslationOptions):
+
+ fields = ('description',)
from dal import autocomplete
from dal_select2_queryset_sequence.views import Select2QuerySetSequenceView
from mezzanine_agenda.models import Event
-from organization.core.models import BasicPage
+from organization.pages.models import CustomPage
from organization.core.views import SlugMixin
from organization.magazine.models import Article, Topic, Brief
from organization.pages.models import Home
def get_queryset(self):
articles = Article.objects.all()
- basicpage = BasicPage.objects.all()
+ custompage = CustomPage.objects.all()
events = Event.objects.all()
if self.q:
articles = articles.filter(title__icontains=self.q)
- basicpage = basicpage.filter(title__icontains=self.q)
+ custompage = custompage.filter(title__icontains=self.q)
events = events.filter(title__icontains=self.q)
- qs = autocomplete.QuerySetSequence(articles, basicpage, events )
+ qs = autocomplete.QuerySetSequence(articles, custompage, events )
if self.q:
# This would apply the filter on all the querysets
def get_queryset(self):
articles = Article.objects.all()
- basicpage = BasicPage.objects.all()
+ custompage = CustomPage.objects.all()
events = Event.objects.all()
briefs = Brief.objects.all()
if self.q:
articles = articles.filter(title__icontains=self.q)
- basicpage = basicpage.filter(title__icontains=self.q)
+ custompage = custompage.filter(title__icontains=self.q)
events = events.filter(title__icontains=self.q)
briefs = briefs.filter(title__icontains=self.q)
- qs = autocomplete.QuerySetSequence(articles, basicpage, events, briefs)
+ qs = autocomplete.QuerySetSequence(articles, custompage, events, briefs)
if self.q:
# This would apply the filter on all the querysets
from mezzanine.core.admin import *
from organization.projects.models import *
+from organization.pages.models import *
class ProjectLinkInline(StackedDynamicInlineAdmin):
- model = ProjectLink
+ model = DisplayableLink
class ProjectImageInline(TabularDynamicInlineAdmin):
- model = ProjectImage
+ model = DisplayableImage
class ProjectBlockInline(StackedDynamicInlineAdmin):
- model = ProjectBlock
+ model = DisplayableBlock
class ProjectAdmin(admin.ModelAdmin):
# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-08-23 12:25
+# Generated by Django 1.9.7 on 2016-08-23 17:45
from __future__ import unicode_literals
from django.db import migrations, models
initial = True
dependencies = [
+ ('organization-core', '0001_initial'),
('organization-network', '0001_initial'),
- ('sites', '0002_alter_domain_unique'),
- ('organization-core', '0013_auto_20160823_1359'),
]
operations = [
migrations.CreateModel(
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)),
- ('title', models.CharField(max_length=500, verbose_name='Title')),
+ ('customdisplayable_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='organization-core.CustomDisplayable')),
('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(blank=True, help_text='Leave blank to have the URL auto-generated from the title.', max_length=2000, null=True, verbose_name='URL')),
- ('_meta_title', models.CharField(blank=True, 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')),
- ('description', models.TextField(blank=True, verbose_name='Description')),
('description_fr', models.TextField(blank=True, null=True, verbose_name='Description')),
('description_en', models.TextField(blank=True, null=True, verbose_name='Description')),
- ('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(editable=False, null=True)),
- ('updated', models.DateTimeField(editable=False, null=True)),
- ('status', models.IntegerField(choices=[(1, 'Draft'), (2, 'Published')], default=2, help_text='With Draft chosen, will only be shown for admin users on the site.', verbose_name='Status')),
- ('publish_date', models.DateTimeField(blank=True, db_index=True, help_text="With Published chosen, won't be shown until this time", null=True, verbose_name='Published from')),
- ('expiry_date', models.DateTimeField(blank=True, help_text="With Published chosen, won't be shown after this time", null=True, verbose_name='Expires on')),
- ('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')),
('content_fr', mezzanine.core.fields.RichTextField(null=True, verbose_name='Content')),
('content_en', mezzanine.core.fields.RichTextField(null=True, verbose_name='Content')),
('lead_team', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='leader_projects', to='organization-network.Team', verbose_name='lead team')),
('organizations', models.ManyToManyField(blank=True, to='organization-network.Organization', verbose_name='organizations')),
('persons', models.ManyToManyField(blank=True, to='organization-network.Person', verbose_name='persons')),
- ('site', models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.Site')),
('teams', models.ManyToManyField(blank=True, related_name='patner_projects', to='organization-network.Team', verbose_name='teams')),
],
options={
'verbose_name': 'project',
},
- ),
- 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')),
- ('content_fr', mezzanine.core.fields.RichTextField(null=True, verbose_name='Content')),
- ('content_en', mezzanine.core.fields.RichTextField(null=True, verbose_name='Content')),
- ('_order', mezzanine.core.fields.OrderField(null=True, verbose_name='Order')),
- ('title', models.CharField(max_length=1024, verbose_name='title')),
- ('title_fr', models.CharField(max_length=1024, null=True, verbose_name='title')),
- ('title_en', models.CharField(max_length=1024, null=True, 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')),
- ('description', models.TextField(blank=True, verbose_name='description')),
- ('description_fr', models.TextField(blank=True, null=True, verbose_name='description')),
- ('description_en', models.TextField(blank=True, null=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')),
- ('project', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='images', to='organization-projects.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(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(on_delete=django.db.models.deletion.CASCADE, related_name='links', to='organization-projects.Project')),
- ],
- options={
- 'verbose_name_plural': 'links',
- 'abstract': False,
- 'verbose_name': 'link',
- },
+ bases=('organization-core.customdisplayable', models.Model),
),
]
from mezzanine.core.models import RichText, Displayable, Slugged, Orderable
from organization.core.models import *
+from organization.pages.models import *
-class Project(Displayable, Period, RichText):
+class Project(CustomDisplayable, Period, RichText):
"""(Project description)"""
lead_team = models.ForeignKey('organization-network.Team', verbose_name=_('lead team'), related_name='leader_projects', blank=True, null=True)
def get_absolute_url(self):
return reverse("organization-project-detail", kwargs={"slug": self.slug})
-
-
-class ProjectBlock(Block):
-
- project = models.ForeignKey(Project, verbose_name=_('project'), related_name='blocks', blank=True, null=True, on_delete=models.SET_NULL)
-
-
-class ProjectImage(Image):
-
- project = models.ForeignKey(Project, related_name='images')
-
-
-class ProjectLink(Link):
-
- project = models.ForeignKey(Project, related_name='links')
class ProjectTranslationOptions(TranslationOptions):
fields = ('title', 'description', 'content')
-
-
-@register(ProjectImage)
-class ProjectImageTranslationOptions(TranslationOptions):
-
- fields = ('description',)
-
-
-@register(ProjectLink)
-class ProjectLinkTranslationOptions(TranslationOptions):
- pass
-
-
-@register(ProjectBlock)
-class ProjectBlockTranslationOptions(TranslationOptions):
-
- fields = ('title', 'content', )
{% endmetablock %}{% endblock %}
{% block page_class %}
- basicpage
+ custompage
{% endblock %}
{% block page_title %}
- {% editable page.basicpage.title %}
- <h1 class="dotted">{{ page.basicpage.title }}</h1>
+ {% editable page.custompage.title %}
+ <h1 class="dotted">{{ page.custompage.title }}</h1>
{% endeditable %}
{% endblock %}
{% block page_content %}
- {% if page.basicpage.sub_title %}
- {% editable page.basicpage.sub_title %}
+ {% if page.custompage.sub_title %}
+ {% editable page.custompage.sub_title %}
<div class="chapo">
- {{ page.basicpage.sub_title }}
+ {{ page.custompage.sub_title }}
</div>
{% endeditable %}
{% endif %}
- {% editable page.basicpage.content %}
- {{ page.basicpage.content|richtext_filters|safe }}
+ {% editable page.custompage.content %}
+ {{ page.custompage.content|richtext_filters|safe }}
{% endeditable %}
{% if page.get_ascendants|length == 1 %}
{% endblock %}
{% block page_sub_content %}
- {% if page.basicpage.pageblock_set.all %}
+ {% if page.custompage.pageblock_set.all %}
<div class="white-bg">
<div class="container">
<div class="row">
<div class="col-sm-12">
<hr class="mt0" />
- {% for pageblock in page.basicpage.pageblock_set.all %}
+ {% for pageblock in page.custompage.pageblock_set.all %}
<div class="row" data-summary-content>
<div class="col-sm-9 col-sm-push-3 col-lg-8 col-lg-push-2 white-bg">
{% if not forloop.first and pageblock.with_separator %}
-{% extends "pages/basicpage.html" %}
+{% extends "pages/custompage.html" %}
{% load i18n mezzanine_tags keyword_tags pages_tags organization_tags %}
{% block meta_title %}{{ page.meta_title }}{% endblock %}
-{% extends "pages/basicpage.html" %}
+{% extends "pages/custompage.html" %}
{% load i18n mezzanine_tags keyword_tags pages_tags organization_tags %}
{% block meta_title %}{{ page.meta_title }}{% endblock %}