COLOR_CHOICES = (('black', _('black')), ('yellow', _('yellow')), ('red', _('red')), ('white', _('white')),)
+
ALIGNMENT_CHOICES = (('left', _('left')), ('center', _('center')), ('right', _('right')))
+
IMAGE_TYPE_CHOICES = (('logo', _('logo')), ('logo_white', _('logo white')), ('logo_black', _('logo black')), ('logo_header', _('logo header')), ('logo_footer', _('logo footer')), ('slider', _('slider')), ('card', _('card')), ('page_slider', _('page - slider')), ('page_featured', _('page - featured')))
class NamedOnly(models.Model):
"""Abstract model providing a name field only"""
- name = models.CharField(_('name'), max_length=512)
+ name = models.CharField(_('name'), max_length=512, blank=True)
class Meta:
abstract = True
- ordering = ['name',]
def __str__(self):
return self.name
- @property
- def slug(self):
- return slugify(self.__unicode__())
-
-class Named(NamedOnly):
+class Named(models.Model):
"""Abstract model providing a name field and a description"""
+ name = models.CharField(_('name'), max_length=512)
description = models.TextField(_('description'), blank=True)
class Meta:
abstract = True
ordering = ['name',]
+ def __str__(self):
+ return self.name
+
+ @property
+ def slug(self):
+ return slugify(self.__str__())
+
class Titled(models.Model):
"""Abstract model providing a title field"""
urlpatterns = [
url("^playlist/overlay/(?P<slug>.*)/$", PlaylistOverlayView.as_view(), name="organization-playlist-overlay"),
- url("^(?P<type>.*)/detail/(?P<slug>.*)/$", MediaDetailView.as_view(), name="organization-media-detail"),
- url("^(?P<type>.*)/overlay/(?P<slug>.*)/$", MediaOverlayView.as_view(), name="organization-media-overlay"),
+ url("^media/(?P<type>.*)/detail/(?P<slug>.*)/$", MediaDetailView.as_view(), name="organization-media-detail"),
+ url("^media/(?P<type>.*)/overlay/(?P<slug>.*)/$", MediaOverlayView.as_view(), name="organization-media-overlay"),
url("^playlist/detail/(?P<slug>.*)/$", PlaylistDetailView.as_view(), name="organization-playlist-detail"),
url("^playlist/list/$", PlaylistListView.as_view(), name="organization-playlist-list"),
url("^playlist/list/(?P<type>.*)$", PlaylistListView.as_view(), name="organization-playlist-list"),
ProjectCallLinkInline,
ProjectCallFileInline,
]
- list_display = ['title', 'date_from', 'date_to', 'status', 'admin_link']
+ # list_filter = ['type', 'program', 'program_type', null_filter('external_id')]
+ # list_display = ['title', 'date_from', 'date_to', 'status', 'admin_link']
admin.site.register(Project, ProjectAdminDisplayable)
admin.site.register(Repository)
admin.site.register(RepositorySystem)
admin.site.register(ProjectWorkPackage, ProjectWorkPackageAdmin)
-# admin.site.register(ProjectCall, ProjectCallAdminDisplayable)
+admin.site.register(ProjectCall, ProjectCallAdminDisplayable)
max_num = 1
model = ProjectContact
fields = ('gender', 'person_title', 'first_name', 'last_name', 'address', 'email', 'telephone', 'bio', 'address', 'postal_code', 'city', 'country')
+
+
+class ProducerForm(ModelForm):
+
+ class Meta:
+ model = Organization
+ fields = '__all__'
+
+
+class ProjectResidencyForm(ModelForm):
+
+ class Meta:
+ model = ProjectResidency
+ fields = '__all__'
--- /dev/null
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.11 on 2017-03-07 14:40
+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 = [
+ ('sites', '0002_alter_domain_unique'),
+ ('organization-network', '0089_auto_20170303_1637'),
+ ('organization-projects', '0047_remove_projectictdata_contact'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='ProjectResidency',
+ 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')),
+ ('content', mezzanine.core.fields.RichTextField(verbose_name='Content')),
+ ('date_from', models.DateField(blank=True, null=True, verbose_name='begin date')),
+ ('date_to', models.DateField(blank=True, null=True, verbose_name='end date')),
+ ('validated', models.BooleanField(default=False)),
+ ('producer_commitment', models.TextField(verbose_name='producer commitment')),
+ ('artist', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='residencies', to='organization-network.Person', verbose_name='artist')),
+ ('producer', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='residencies', to='organization-network.Organization', verbose_name='producer')),
+ ('project', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='residencies', to='organization-projects.Project', verbose_name='project')),
+ ('site', models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.Site')),
+ ],
+ options={
+ 'verbose_name_plural': 'Project residencies',
+ 'verbose_name': 'Project residency',
+ },
+ ),
+ migrations.CreateModel(
+ name='ProjectResidencyFile',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('_order', mezzanine.core.fields.OrderField(null=True, verbose_name='Order')),
+ ('title', models.CharField(max_length=1024, verbose_name='title')),
+ ('description', models.TextField(blank=True, verbose_name='description')),
+ ('file', mezzanine.core.fields.FileField(max_length=1024, verbose_name='document')),
+ ('residency', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='files', to='organization-projects.ProjectResidency', verbose_name='project residency file')),
+ ],
+ options={
+ 'ordering': ('_order',),
+ },
+ ),
+ migrations.AlterModelOptions(
+ name='projectcall',
+ options={'ordering': ['title'], 'verbose_name': 'project call', 'verbose_name_plural': 'project calls'},
+ ),
+ migrations.AddField(
+ model_name='projectcall',
+ name='producer_form_content',
+ field=mezzanine.core.fields.RichTextField(blank=True, null=True, verbose_name='Producer form content'),
+ ),
+ migrations.AddField(
+ model_name='projectcall',
+ name='project_form_content',
+ field=mezzanine.core.fields.RichTextField(blank=True, null=True, verbose_name='Project form content'),
+ ),
+ migrations.AddField(
+ model_name='projectcall',
+ name='residency_form_content',
+ field=mezzanine.core.fields.RichTextField(blank=True, null=True, verbose_name='Residency form content'),
+ ),
+ migrations.AlterField(
+ model_name='projectcall',
+ name='name',
+ field=models.CharField(blank=True, max_length=512, verbose_name='name'),
+ ),
+ ]
class ProjectCall(Displayable, Period, RichText, NamedOnly):
+ project_form_content = RichTextField(_("Project form content"), blank=True, null=True)
+ residency_form_content = RichTextField(_("Residency form content"), blank=True, null=True)
+ producer_form_content = RichTextField(_("Producer form content"), blank=True, null=True)
+
class Meta:
verbose_name = _('project call')
verbose_name_plural = _("project calls")
- ordering = ['title', 'name',]
+ ordering = ['title',]
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse("organization-call-detail", kwargs={"slug": self.slug})
+ def save(self, *args, **kwargs):
+ if not self.name and self.title:
+ self.name = self.title
+ if not self.title and self.name:
+ self.title = self.name
+ super(ProjectCall, self).save(args, kwargs)
+
class ProjectCallBlock(Block):
class Meta:
verbose_name = 'Project contact'
verbose_name_plural = 'Project contacts'
+
+
+class ProjectResidency(Displayable, Period, RichText):
+
+ project = models.ForeignKey(Project, verbose_name=_('project'), related_name='residencies', blank=True, null=True, on_delete=models.SET_NULL)
+ artist = models.ForeignKey(Person, verbose_name=_('artist'), related_name='residencies', blank=True, null=True, on_delete=models.SET_NULL)
+ producer = models.ForeignKey('organization-network.Organization', verbose_name=_('producer'), related_name='residencies', blank=True, null=True, on_delete=models.SET_NULL)
+ validated = models.BooleanField(default=False)
+ producer_commitment = models.TextField(_('producer commitment'), help_text="")
+
+ class Meta:
+ verbose_name = 'Project residency'
+ verbose_name_plural = 'Project residencies'
+
+ def get_absolute_url(self):
+ return reverse("organization-residency-detail", kwargs={"slug": self.slug})
+
+
+class ProjectResidencyFile(File):
+
+ residency = models.ForeignKey(ProjectResidency, verbose_name=_('project residency file'), related_name='files', blank=True, null=True, on_delete=models.SET_NULL)
@register(ProjectCall)
class ProjectCallTranslationOptions(TranslationOptions):
- fields = ('title', 'description', 'content')
+ fields = ('title', 'description', 'content',)
@register(ProjectCallBlock)
from organization.projects.views import *
urlpatterns = [
- url("^project/detail/(?P<slug>.*)/$", ProjectDetailView.as_view(), name='organization-project-detail'),
url("^dynamic-content-project/$", permission_required('project.can_edit')(DynamicContentProjectView.as_view()), name='dynamic-content-project'),
- url("^project/demo/(?P<slug>.*)/$", ProjectDemoDetailView.as_view(), name='organization-project-demo-detail'),
- url("^project/blog/(?P<slug>.*)/$", ProjectBlogPageView.as_view(), name='organization-project-blogpage-detail'),
- url("^project/ict/create/$", ProjectICTCreateView.as_view(), name='organization-project-create'),
- url("^call/detail/(?P<slug>.*)/$", ProjectCallDetailView.as_view(), name='organization-call-detail'),
- url("^call/list/$", ProjectCallListView.as_view(), name='organization-call-list'),
+
+ url("^project/detail/(?P<slug>.*)/$", ProjectDetailView.as_view(), name='organization-project-detail'),
+ url("^projects/demo/(?P<slug>.*)/$", ProjectDemoDetailView.as_view(), name='organization-project-demo-detail'),
+ url("^projects/blog/(?P<slug>.*)/$", ProjectBlogPageView.as_view(), name='organization-project-blogpage-detail'),
+
+ url("^calls/list/$", ProjectCallListView.as_view(), name='organization-call-list'),
+ url("^calls/detail/(?P<slug>.*)/$", ProjectCallDetailView.as_view(), name='organization-call-detail'),
+
+ url("^calls/detail/(?P<slug>.*)/projects/submission/$", ProjectICTCreateView.as_view(), name='organization-project-create'),
+ url("^calls/detail/(?P<call_slug>.*)/projects/detail/(?P<slug>.*)/$", ProjectICTDetailView.as_view(), name='organization-project-detail'),
+ url("^calls/detail/(?P<call_slug>.*)/projects/lists/$", ProjectICTListView.as_view(), name='organization-project-list'),
+
+ url("^calls/detail/(?P<slug>.*)/producers/submission/$", ProducerCreateView.as_view(), name='organization-producer-create'),
+ url("^calls/detail/(?P<call_slug>.*)/producers/detail/(?P<slug>.*)/$", ProducerDetailView.as_view(), name='organization-producer-detail'),
+ url("^calls/detail/(?P<call_slug>.*)/producers/lists/$", ProducerListView.as_view(), name='organization-producer-list'),
+
+ url("^calls/detail/(?P<slug>.*)/residencies/submission/$", ProjectResidencyCreateView.as_view(), name='organization-residency-create'),
+ url("^calls/detail/(?P<call_slug>.*)/residencies/detail/(?P<slug>.*)/$", ProjectResidencyDetailView.as_view(), name='organization-residency-detail'),
+ url("^calls/detail/(?P<call_slug>.*)/residencies/lists/$", ProjectResidencyListView.as_view(), name='organization-residency-list'),
+
+
]
template_name='projects/project_detail.html'
+class ProjectICTDetailView(SlugMixin, ProjectMixin, DetailView):
+
+ model = Project
+ template_name='projects/project_ict_detail.html'
+
+
+class ProjectListView(ListView):
+
+ model = Project
+ template_name='projects/project_list.html'
+
+
class DynamicContentProjectView(Select2QuerySetSequenceView):
paginate_by = settings.DAL_MAX_RESULTS
template_name='projects/project_ict_create.html'
inlines = [ProjectICTDataInline, ProjectSimpleImageInline, ProjectContactInline,]
+ def get_context_data(self, **kwargs):
+ context['call'] = get_object_or_404(ProjectCall, slug=self.kwargs['call_slug'])
+ return context
+
+class ProjectICTListView(ListView):
+
+ model = Project
+ template_name='projects/project_ict_list.html'
+
class ProjectCallDetailView(SlugMixin, DetailView):
template_name='projects/project_call_detail.html'
-class ProjectCallListView(SlugMixin, ListView):
+class ProjectCallListView(ListView):
model = ProjectCall
template_name='projects/project_call_list.html'
+
+
+class ProducerDetailView(SlugMixin, DetailView):
+
+ model = Organization
+ template_name='projects/project_producer_detail.html'
+
+
+class ProducerListView(ListView):
+
+ model = Organization
+ template_name='projects/project_producer_list.html'
+
+
+class ProducerCreateView(CreateWithInlinesView):
+
+ model = Organization
+ form_class = ProducerForm
+ template_name='projects/project_producer_create.html'
+ # inlines = [OrganizationICTDataInline, OrganizationSimpleImageInline, OrganizationContactInline,]
+
+
+class ProjectResidencyDetailView(SlugMixin, DetailView):
+
+ model = ProjectResidency
+ template_name='projects/project_residency_detail.html'
+
+
+class ProjectResidencyListView(ListView):
+
+ model = ProjectResidency
+ template_name='projects/project_residency_list.html'
+
+
+class ProjectResidencyCreateView(CreateWithInlinesView):
+
+ model = ProjectResidency
+ form_class = ProjectResidencyForm
+ template_name='projects/project_residency_create.html'
+ inlines = []
--- /dev/null
+{% extends "vertigo_starts_eu/pages/page.html" %}
+{% load mezzanine_tags keyword_tags i18n organization_tags pages_tags %}
+
+{% block meta_title %}{{ object.meta_title }}{% endblock %}
+
+{% block meta_keywords %}{% metablock %}
+{% keywords_for object as keywords %}
+{% for keyword in keywords %}
+ {% if not forloop.first %}, {% endif %}
+ {{ keyword }}
+{% endfor %}
+{% endmetablock %}{% endblock %}
+
+{% block page_class %}
+ object
+{% endblock %}
+
+{% block body_class %}
+ pattern pattern-bg {{ department.pages.all.0.weaving_css_class }}
+{% endblock %}
+
+{% block breadcrumb_menu %}
+ {{ block.super }}
+ <li class="breadcrumb__item active">{{ object.title }}</li>
+{% endblock %}
+
+{% block page_tags %}
+
+ {% comment %}
+ {% if department %}
+ <div class="tag dashed dashed--yellow">
+ {{ department.pages.all.0.title }}
+ </div>
+ {% endif %}
+ <div class="tag tag--category">
+ {% trans 'Project' %}
+ </div>
+ {% endcomment %}
+
+{% endblock %}
+
+{% block page_title %}
+
+ {% editable object.title %}
+ <h1 class="dotted">{{ object.title }}</h1>
+ {% endeditable %}
+
+ {% with page.get_ascendants|last as top_level_parent %}
+ {% if linked_organization_content and research_slug == top_level_parent.slug %}
+ {% include 'pages/page/includes/linked_organization_content.html' %}
+ {% endif %}
+ {% endwith %}
+
+ {% if object.description %}
+ {% editable object.description %}
+ <div class="chapo">
+ {{ object.description }}
+ </div>
+ {% endeditable %}
+ {% endif %}
+
+{% endblock %}
+
+{% block page_content %}
+ {% if object.content %}
+ {% editable object.content %}
+ {{ object.content|richtext_filters|safe }}
+ {% endeditable %}
+ {% endif %}
+{% endblock %}
+
+{% block page_sidebar %}
+ <ul class="nav-tree nav-tree--level-{{ branch_level }}" data-sticky data-sticky-parent="row" data-sticky-offset="100" data-sticky-detach-at="971">
+ <li class="nav-tree__item">
+ <a class="nav-tree__link" href="{{ page.get_ascendants.0.get_absolute_url }}">{% trans "Home" %}</a>
+ </li>
+ <li class="nav-tree__item">
+ <a class="nav-tree__link" href="{{ page.get_absolute_url }}">{{ page.title }}</a>
+ </li>
+ <li class="nav-tree__item">
+ <a class="nav-tree__link active" href="{{ page.get_absolute_url }}">{{ object.title }}</a>
+ <ul class="nav-tree" data-summary>
+ <li class="nav-tree__item nav-tree__item--sub hide">
+ <a class="nav-tree__link nav-tree__link--sub" href="#"></a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+{% endblock %}
+
+{% block page_link %}
+ {% with object.links.all as links %}
+ {% if links %}
+ {% include 'core/inc/link.html' %}
+ {% endif %}
+ {% endwith %}
+{% endblock %}
+
+{% block page_audio %}
+ {% with object as object %}
+ {{ block.super }}
+ {% endwith %}
+{% endblock %}
+
+{% block page_slider %}
+ {% with object as object %}
+ {{ block.super }}
+ {% endwith %}
+{% endblock %}
+
+{% block page_video %}
+ {% with object as object %}
+ {{ block.super }}
+ {% endwith %}
+{% endblock %}
+
+{% block page_sub_content %}
+
+ {% if object.type == 'external' %}
+ <div class="white-bg pb2">
+ <hr class="mt0 invisible" />
+ <div class="page__block page__block--yellow">
+ <div class="container">
+ <div class="row">
+ <div class="col-sm-12 col-lg-10 col-lg-push-1">
+ <div class="row">
+ <div class="col-sm-6">
+ <div class="project-details">
+ <h3 class="dotted project-details__title">{% trans "Project details" %}</h3>
+
+ <div>
+ {% if object.program %}
+ <div class="project-details__item">
+ <div class="project-details__item-title">
+ {% trans "Program" %}
+ </div>
+ <div class="project-details__item-desc">
+ {{ object.program }}
+ </div>
+ </div>
+ {% endif %}
+
+ {% if object.program_type %}
+ <div class="project-details__item">
+ <div class="project-details__item-title">
+ {% trans "Program type" %}
+ </div>
+ <div class="project-details__item-desc">
+ {{ object.program_type }}
+ </div>
+ </div>
+ {% endif %}
+
+ <div class="project-details__item">
+ <div class="project-details__item-title">
+ {% trans "Beginning" %}
+ </div>
+ <div class="project-details__item-desc">
+ {{ object.date_from }}
+ </div>
+ </div>
+
+ <div class="project-details__item">
+ <div class="project-details__item-title">
+ {% trans "End" %}
+ </div>
+ <div class="project-details__item-desc">
+ {{ object.date_to }}
+ </div>
+ </div>
+
+ <div class="project-details__item">
+ <div class="project-details__item-title">
+ {% trans "Status" %}
+ </div>
+ <div class="project-details__item-desc">
+ {{ object.object_status }}
+ </div>
+ </div>
+
+ {% if object.website %}
+ <div class="project-details__item">
+ <div class="project-details__item-title">
+ {% trans "Website" %}
+ </div>
+ <div class="project-details__item-desc">
+ <a href="{{ object.website }}" target="_blank" title="{{ object.title }}">{{ object.website }}</a>
+ </div>
+ </div>
+ {% endif %}
+
+ <div class="project-details__logo">
+ {% with object.images.all|get_type:'logo' as images %}
+ {% include 'core/inc/logo.html' %}
+ {% endwith %}
+ </div>
+
+ </div>
+ </div>
+ </div>
+ <div class="col-sm-6">
+ <div class="project-details">
+ <h3 class="dotted project-details__title">{% trans "Participants" %}</h3>
+
+ <div>
+
+ {% if object.lead_team or object.lead_organization %}
+ <div class="project-details__item">
+ {% if object.lead_team %}
+ <div class="project-details__item-title">
+ {% trans "Project lead team" %}
+ </div>
+ <div class="project-details__item-desc">
+ <a href="{% url "page" object.lead_team.pages.all.0 %}">{{ object.lead_team.short }}</a>
+ </div>
+ {% elif object.lead_organization %}
+ <div class="project-details__item-title">
+ {% trans "Project lead organization" %}
+ </div>
+ <div class="project-details__item-desc">
+ {% if object.lead_organization.url %}
+ <a href="{{ object.lead_organization.url }}" target="_blank" title="{{ object.lead_organization }}">
+ {% endif %}
+ {{ object.lead_organization }}
+ {% if object.lead_organization.url %}
+ </a>
+ {% endif %}
+ </div>
+ {% endif %}
+ </div>
+ {% endif %}
+
+ <div class="project-details__item">
+ <div class="project-details__item-title">
+ {% trans "Partners" %}
+ </div>
+ <div class="project-details__item-desc">
+ {% for organization in object.organizations.all %}
+ {% if organization.url %}
+ <a href="{{ organization.url }}" target="_blank" title="{{ organization }}">
+ {% endif %}
+ {{ organization }}<br>
+ {% if organization.url %}
+ </a>
+ {% endif %}
+ {% endfor %}
+ </div>
+
+ <div class="project-details__item-title">
+ {% trans "teams" %} ({{ host_organization }})
+ </div>
+ <div class="project-details__item-desc">
+ {% for team in object.teams.all %}
+ {% if team.pages.all %}
+ <a href="{% url "page" team.pages.all.0.slug %}">{{ team.short }}</a><br>
+ {% endif %}
+ {% endfor %}
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ {% endif %}
+
+ {% with object.blocks.all as blocks %}
+ {% include "projects/inc/project_block.html" %}
+ {% endwith %}
+{% endblock %}
+
+{% block page_demo %}
+{% if object.demos.all %}
+<div class="page__block{% if block.background_color %} page__block--{{ block.background_color }}{% endif %}">
+ <hr class="mt0">
+ <div class="white-bg mb2">
+ <div class="container">
+ <div class="row" data-summary-content>
+ <div class="col-sm-9 col-sm-push-3 col-lg-8 col-lg-push-2">
+ <ul>
+ <h2>{% trans "Demos" %}</h2>
+ {% for demo in object.demos.all %}
+ <li><a href="{% url 'organization-project-demo-detail' demo.slug %}">{{ demo.title }}</a></li>
+ {% endfor %}
+ </ul>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+{% endif %}
+{% endblock %}
+
+{% block page_blog %}
+{% if object.blog_pages.all %}
+<div class="page__block{% if block.background_color %} page__block--{{ block.background_color }}{% endif %}">
+ <hr class="mt0">
+ <div class="white-bg mb2">
+ <div class="container">
+ <div class="row" data-summary-content>
+ <div class="col-sm-9 col-sm-push-3 col-lg-8 col-lg-push-2">
+ <ul>
+ <h2>{% trans "Blog Pages" %}</h2>
+ {% for blog_page in object.blog_pages.all %}
+ <li><a href="{% url 'organization-project-blogpage-detail' blog_page.slug %}">{{ blog_page.title }}</a></li>
+ {% endfor %}
+ </ul>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+{% endif %}
+{% endblock %}
+
+{% block logo %}
+ {% if object.organizations.all|length > 0 %}
+ <div class="page__block{% if block.background_color %} page__block--{{ block.background_color }}{% endif %}">
+ <div class="white-bg pb2">
+ <div class="container">
+ <div class="row" data-summary-content>
+ <div class="col-sm-9 col-sm-push-3 col-lg-8 col-lg-push-2">
+ <ul class="partners-list">
+ {% if object.lead_organization %}
+ {% with object.lead_organization.images.all|get_type:'logo' as images %}
+ {% include 'core/inc/logo.html' %}
+ {% endwith %}
+ {% endif %}
+ {% for organization in object.organizations.all %}
+ {% with organization.images.all|get_type:'logo' as images %}
+ {% include 'core/inc/logo.html' %}
+ {% endwith %}
+ {% endfor %}
+ </ul>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ {% endif %}
+{% endblock %}
+
+{% block page_related_content %}
+ {% with dynamic_content=object.dynamic_content_object.all|filter_content object=object %}
+ {% include "core/inc/related_content.html" %}
+ {% endwith %}
+{% endblock %}
{% endblock %}
{% block page_content %}
+
+ <div class="row">
+ {% if object.content %}
+ {% editable object.content %}
+ {{ call.project_form_content|richtext_filters|safe }}
+ {% endeditable %}
+ {% endif %}
+ </div>
+
<div class="row">
{% errors_for form %}
<form class="mezzanine-form form" method="post"{% if form.is_multipart %} enctype="multipart/form-data"{% endif %}>
--- /dev/null
+{% extends "vertigo_starts_eu/pages/page.html" %}
+{% load mezzanine_tags keyword_tags i18n organization_tags pages_tags %}
+
+{% block meta_title %}{{ object.meta_title }}{% endblock %}
+
+{% block meta_keywords %}{% metablock %}
+{% keywords_for object as keywords %}
+{% for keyword in keywords %}
+ {% if not forloop.first %}, {% endif %}
+ {{ keyword }}
+{% endfor %}
+{% endmetablock %}{% endblock %}
+
+{% block page_class %}
+ object
+{% endblock %}
+
+{% block body_class %}
+ pattern pattern-bg {{ department.pages.all.0.weaving_css_class }}
+{% endblock %}
+
+{% block breadcrumb_menu %}
+ {{ block.super }}
+ <li class="breadcrumb__item active">{{ object.title }}</li>
+{% endblock %}
+
+{% block page_tags %}
+
+ {% comment %}
+ {% if department %}
+ <div class="tag dashed dashed--yellow">
+ {{ department.pages.all.0.title }}
+ </div>
+ {% endif %}
+ <div class="tag tag--category">
+ {% trans 'Project' %}
+ </div>
+ {% endcomment %}
+
+{% endblock %}
+
+{% block page_title %}
+
+ {% editable object.title %}
+ <h1 class="dotted">{{ object.title }}</h1>
+ {% endeditable %}
+
+ {% with page.get_ascendants|last as top_level_parent %}
+ {% if linked_organization_content and research_slug == top_level_parent.slug %}
+ {% include 'pages/page/includes/linked_organization_content.html' %}
+ {% endif %}
+ {% endwith %}
+
+ {% if object.description %}
+ {% editable object.description %}
+ <div class="chapo">
+ {{ object.description }}
+ </div>
+ {% endeditable %}
+ {% endif %}
+
+{% endblock %}
+
+{% block page_content %}
+ {% if object.content %}
+ {% editable object.content %}
+ {{ object.content|richtext_filters|safe }}
+ {% endeditable %}
+ {% endif %}
+{% endblock %}
+
+{% block page_sidebar %}
+ <ul class="nav-tree nav-tree--level-{{ branch_level }}" data-sticky data-sticky-parent="row" data-sticky-offset="100" data-sticky-detach-at="971">
+ <li class="nav-tree__item">
+ <a class="nav-tree__link" href="{{ page.get_ascendants.0.get_absolute_url }}">{% trans "Home" %}</a>
+ </li>
+ <li class="nav-tree__item">
+ <a class="nav-tree__link" href="{{ page.get_absolute_url }}">{{ page.title }}</a>
+ </li>
+ <li class="nav-tree__item">
+ <a class="nav-tree__link active" href="{{ page.get_absolute_url }}">{{ object.title }}</a>
+ <ul class="nav-tree" data-summary>
+ <li class="nav-tree__item nav-tree__item--sub hide">
+ <a class="nav-tree__link nav-tree__link--sub" href="#"></a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+{% endblock %}
+
+{% block page_link %}
+ {% with object.links.all as links %}
+ {% if links %}
+ {% include 'core/inc/link.html' %}
+ {% endif %}
+ {% endwith %}
+{% endblock %}
+
+{% block page_audio %}
+ {% with object as object %}
+ {{ block.super }}
+ {% endwith %}
+{% endblock %}
+
+{% block page_slider %}
+ {% with object as object %}
+ {{ block.super }}
+ {% endwith %}
+{% endblock %}
+
+{% block page_video %}
+ {% with object as object %}
+ {{ block.super }}
+ {% endwith %}
+{% endblock %}
+
+{% block page_sub_content %}
+
+ {% if object.type == 'external' %}
+ <div class="white-bg pb2">
+ <hr class="mt0 invisible" />
+ <div class="page__block page__block--yellow">
+ <div class="container">
+ <div class="row">
+ <div class="col-sm-12 col-lg-10 col-lg-push-1">
+ <div class="row">
+ <div class="col-sm-6">
+ <div class="project-details">
+ <h3 class="dotted project-details__title">{% trans "Project details" %}</h3>
+
+ <div>
+ {% if object.program %}
+ <div class="project-details__item">
+ <div class="project-details__item-title">
+ {% trans "Program" %}
+ </div>
+ <div class="project-details__item-desc">
+ {{ object.program }}
+ </div>
+ </div>
+ {% endif %}
+
+ {% if object.program_type %}
+ <div class="project-details__item">
+ <div class="project-details__item-title">
+ {% trans "Program type" %}
+ </div>
+ <div class="project-details__item-desc">
+ {{ object.program_type }}
+ </div>
+ </div>
+ {% endif %}
+
+ <div class="project-details__item">
+ <div class="project-details__item-title">
+ {% trans "Beginning" %}
+ </div>
+ <div class="project-details__item-desc">
+ {{ object.date_from }}
+ </div>
+ </div>
+
+ <div class="project-details__item">
+ <div class="project-details__item-title">
+ {% trans "End" %}
+ </div>
+ <div class="project-details__item-desc">
+ {{ object.date_to }}
+ </div>
+ </div>
+
+ <div class="project-details__item">
+ <div class="project-details__item-title">
+ {% trans "Status" %}
+ </div>
+ <div class="project-details__item-desc">
+ {{ object.object_status }}
+ </div>
+ </div>
+
+ {% if object.website %}
+ <div class="project-details__item">
+ <div class="project-details__item-title">
+ {% trans "Website" %}
+ </div>
+ <div class="project-details__item-desc">
+ <a href="{{ object.website }}" target="_blank" title="{{ object.title }}">{{ object.website }}</a>
+ </div>
+ </div>
+ {% endif %}
+
+ <div class="project-details__logo">
+ {% with object.images.all|get_type:'logo' as images %}
+ {% include 'core/inc/logo.html' %}
+ {% endwith %}
+ </div>
+
+ </div>
+ </div>
+ </div>
+ <div class="col-sm-6">
+ <div class="project-details">
+ <h3 class="dotted project-details__title">{% trans "Participants" %}</h3>
+
+ <div>
+
+ {% if object.lead_team or object.lead_organization %}
+ <div class="project-details__item">
+ {% if object.lead_team %}
+ <div class="project-details__item-title">
+ {% trans "Project lead team" %}
+ </div>
+ <div class="project-details__item-desc">
+ <a href="{% url "page" object.lead_team.pages.all.0 %}">{{ object.lead_team.short }}</a>
+ </div>
+ {% elif object.lead_organization %}
+ <div class="project-details__item-title">
+ {% trans "Project lead organization" %}
+ </div>
+ <div class="project-details__item-desc">
+ {% if object.lead_organization.url %}
+ <a href="{{ object.lead_organization.url }}" target="_blank" title="{{ object.lead_organization }}">
+ {% endif %}
+ {{ object.lead_organization }}
+ {% if object.lead_organization.url %}
+ </a>
+ {% endif %}
+ </div>
+ {% endif %}
+ </div>
+ {% endif %}
+
+ <div class="project-details__item">
+ <div class="project-details__item-title">
+ {% trans "Partners" %}
+ </div>
+ <div class="project-details__item-desc">
+ {% for organization in object.organizations.all %}
+ {% if organization.url %}
+ <a href="{{ organization.url }}" target="_blank" title="{{ organization }}">
+ {% endif %}
+ {{ organization }}<br>
+ {% if organization.url %}
+ </a>
+ {% endif %}
+ {% endfor %}
+ </div>
+
+ <div class="project-details__item-title">
+ {% trans "teams" %} ({{ host_organization }})
+ </div>
+ <div class="project-details__item-desc">
+ {% for team in object.teams.all %}
+ {% if team.pages.all %}
+ <a href="{% url "page" team.pages.all.0.slug %}">{{ team.short }}</a><br>
+ {% endif %}
+ {% endfor %}
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ {% endif %}
+
+ {% with object.blocks.all as blocks %}
+ {% include "projects/inc/project_block.html" %}
+ {% endwith %}
+{% endblock %}
+
+{% block page_demo %}
+{% if object.demos.all %}
+<div class="page__block{% if block.background_color %} page__block--{{ block.background_color }}{% endif %}">
+ <hr class="mt0">
+ <div class="white-bg mb2">
+ <div class="container">
+ <div class="row" data-summary-content>
+ <div class="col-sm-9 col-sm-push-3 col-lg-8 col-lg-push-2">
+ <ul>
+ <h2>{% trans "Demos" %}</h2>
+ {% for demo in object.demos.all %}
+ <li><a href="{% url 'organization-project-demo-detail' demo.slug %}">{{ demo.title }}</a></li>
+ {% endfor %}
+ </ul>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+{% endif %}
+{% endblock %}
+
+{% block page_blog %}
+{% if object.blog_pages.all %}
+<div class="page__block{% if block.background_color %} page__block--{{ block.background_color }}{% endif %}">
+ <hr class="mt0">
+ <div class="white-bg mb2">
+ <div class="container">
+ <div class="row" data-summary-content>
+ <div class="col-sm-9 col-sm-push-3 col-lg-8 col-lg-push-2">
+ <ul>
+ <h2>{% trans "Blog Pages" %}</h2>
+ {% for blog_page in object.blog_pages.all %}
+ <li><a href="{% url 'organization-project-blogpage-detail' blog_page.slug %}">{{ blog_page.title }}</a></li>
+ {% endfor %}
+ </ul>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+{% endif %}
+{% endblock %}
+
+{% block logo %}
+ {% if object.organizations.all|length > 0 %}
+ <div class="page__block{% if block.background_color %} page__block--{{ block.background_color }}{% endif %}">
+ <div class="white-bg pb2">
+ <div class="container">
+ <div class="row" data-summary-content>
+ <div class="col-sm-9 col-sm-push-3 col-lg-8 col-lg-push-2">
+ <ul class="partners-list">
+ {% if object.lead_organization %}
+ {% with object.lead_organization.images.all|get_type:'logo' as images %}
+ {% include 'core/inc/logo.html' %}
+ {% endwith %}
+ {% endif %}
+ {% for organization in object.organizations.all %}
+ {% with organization.images.all|get_type:'logo' as images %}
+ {% include 'core/inc/logo.html' %}
+ {% endwith %}
+ {% endfor %}
+ </ul>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ {% endif %}
+{% endblock %}
+
+{% block page_related_content %}
+ {% with dynamic_content=object.dynamic_content_object.all|filter_content object=object %}
+ {% include "core/inc/related_content.html" %}
+ {% endwith %}
+{% endblock %}
--- /dev/null
+{% extends "vertigo_starts_eu/pages/page.html" %}
+{% load mezzanine_tags keyword_tags i18n organization_tags pages_tags %}
+
+{% block meta_title %}{% endblock %}
+
+{% block meta_keywords %}{% endblock %}
+
+{% block body_class %}
+ pattern pattern-bg {{ department.pages.all.0.weaving_css_class }}
+{% endblock %}
+
+{% block breadcrumb_menu %}
+ {{ block.super }}
+ <li class="breadcrumb__item active">{{ object.title }}</li>
+{% endblock %}
+
+{% block page_tags %}
+{% endblock %}
+
+{% block page_title %}
+ {% editable object.title %}
+ <h1 class="dotted">{% trans "New producer form" %}</h1>
+ {% endeditable %}
+{% endblock %}
+
+{% block page_content %}
+ <div class="row">
+ {% errors_for form %}
+ <form class="mezzanine-form form" method="post"{% if form.is_multipart %} enctype="multipart/form-data"{% endif %}>
+ {% fields_for form %}
+ {% for formset in inlines %}
+ {{ formset.management_form }}
+ {% for form in formset %}
+ {% fields_for form %}
+ {% endfor %}
+ {% endfor %}
+ <div class="form-actions">
+ <input class="btn btn-primary btn-lg" type="submit"
+ value="{% if page.form.button_text %}{{ page.form.button_text }}{% else %}{% trans "Submit" %}{% endif %}">
+ </div>
+ </form>
+ </div>
+{% endblock %}
+
+{% block extra_js %}
+{{ block.super }}
+<script>
+$(function() {$('.mezzanine-form :input:visible:enabled:first').focus();});
+</script>
+{% endblock %}
--- /dev/null
+{% extends "vertigo_starts_eu/pages/page.html" %}
+{% load mezzanine_tags keyword_tags i18n organization_tags pages_tags %}
+
+{% block meta_title %}{% endblock %}
+
+{% block meta_keywords %}{% endblock %}
+
+{% block body_class %}
+ pattern pattern-bg {{ department.pages.all.0.weaving_css_class }}
+{% endblock %}
+
+{% block breadcrumb_menu %}
+ {{ block.super }}
+ <li class="breadcrumb__item active">{{ object.title }}</li>
+{% endblock %}
+
+{% block page_tags %}
+{% endblock %}
+
+{% block page_title %}
+ {% editable object.title %}
+ <h1 class="dotted">{% trans "New residency form" %}</h1>
+ {% endeditable %}
+{% endblock %}
+
+{% block page_content %}
+ <div class="row">
+ {% errors_for form %}
+ <form class="mezzanine-form form" method="post"{% if form.is_multipart %} enctype="multipart/form-data"{% endif %}>
+ {% fields_for form %}
+ {% for formset in inlines %}
+ {{ formset.management_form }}
+ {% for form in formset %}
+ {% fields_for form %}
+ {% endfor %}
+ {% endfor %}
+ <div class="form-actions">
+ <input class="btn btn-primary btn-lg" type="submit"
+ value="{% if page.form.button_text %}{{ page.form.button_text }}{% else %}{% trans "Submit" %}{% endif %}">
+ </div>
+ </form>
+ </div>
+{% endblock %}
+
+{% block extra_js %}
+{{ block.super }}
+<script>
+$(function() {$('.mezzanine-form :input:visible:enabled:first').focus();});
+</script>
+{% endblock %}
-Subproject commit 595000c55f1205bced7a836d309be26303da1509
+Subproject commit 6bc517e8659de1d64d09f3a190e97a7e4c4abe5f