Mezzanine-organization
======================
-Mezzanine-organization is a complete CMS for organizations with complex workflows
+Mezzanine-organization is a complete CMS for organizations with complex activities
It is based on Mezzanine_ and Django_.
model = OrganizationBlock
+class OrganizationServiceInline(StackedDynamicInlineAdmin):
+
+ model = OrganizationService
+
+
class OrganizationAdmin(BaseTranslationOrderedModelAdmin):
model = Organization
- inlines = [ OrganizationPlaylistInline,
+ inlines = [ OrganizationServiceInline,
+ OrganizationPlaylistInline,
OrganizationImageInline,
OrganizationBlockInline,
OrganizationLinkInline,
--- /dev/null
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.11 on 2016-12-16 15:03
+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-network', '0065_auto_20161208_1244'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='OrganizationService',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=512, verbose_name='name')),
+ ('name_fr', models.CharField(max_length=512, null=True, verbose_name='name')),
+ ('name_en', models.CharField(max_length=512, null=True, 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')),
+ ('image', mezzanine.core.fields.FileField(max_length=1024, verbose_name='Image')),
+ ],
+ options={
+ 'ordering': ['name'],
+ 'abstract': False,
+ },
+ ),
+ migrations.AddField(
+ model_name='organization',
+ name='bio',
+ field=models.TextField(blank=True, verbose_name='bio'),
+ ),
+ migrations.AddField(
+ model_name='organization',
+ name='bio_en',
+ field=models.TextField(blank=True, null=True, verbose_name='bio'),
+ ),
+ migrations.AddField(
+ model_name='organization',
+ name='bio_fr',
+ field=models.TextField(blank=True, null=True, verbose_name='bio'),
+ ),
+ migrations.AddField(
+ model_name='organizationservice',
+ name='organization',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='services', to='organization-network.Organization', verbose_name='organization'),
+ ),
+ ]
--- /dev/null
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.11 on 2016-12-16 15:06
+from __future__ import unicode_literals
+
+from django.db import migrations
+import mezzanine.core.fields
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('organization-network', '0066_auto_20161216_1603'),
+ ]
+
+ operations = [
+ migrations.AlterModelOptions(
+ name='organizationservice',
+ options={'ordering': ('_order',)},
+ ),
+ migrations.AddField(
+ model_name='organizationservice',
+ name='_order',
+ field=mezzanine.core.fields.OrderField(null=True, verbose_name='Order'),
+ ),
+ ]
telephone = models.CharField(_('telephone'), max_length=64, blank=True, null=True)
opening_times = models.TextField(_('opening times'), blank=True)
subway_access = models.TextField(_('subway access'), blank=True)
+ bio = models.TextField(_('bio'), blank=True)
admin_thumb_type = 'logo'
class Meta:
organization = models.ForeignKey(Organization, verbose_name=_('organization'), related_name='blocks', blank=True, null=True, on_delete=models.SET_NULL)
+class OrganizationService(Named, URL, Orderable):
+
+ organization = models.ForeignKey(Organization, verbose_name=_('organization'), related_name='services', blank=True, null=True, on_delete=models.SET_NULL)
+ image = FileField(_("Image"), max_length=1024, format="Image", upload_to="images")
+
+
class OrganizationType(Named):
"""(OrganizationType description)"""
@register(Organization)
class OrganizationTranslationOptions(TranslationOptions):
- fields = ('description', 'opening_times', 'subway_access')
+ fields = ('description', 'opening_times', 'subway_access', 'bio')
@register(Department)
pass
+@register(OrganizationService)
+class OrganizationServiceTranslationOptions(TranslationOptions):
+
+ fields = ('name', 'description')
+
+
@register(PersonListBlock)
class PersonListBlockTranslationOptions(TranslationOptions):
</div>
<div class="project-details__item-title">
- {% trans "Ircam teams" %}
+ {% trans "teams" %} ({{ host_organization }})
</div>
<div class="project-details__item-desc">
{% for team in project.teams.all %}