Skip to content

Commit

Permalink
Styling and Banner
Browse files Browse the repository at this point in the history
  • Loading branch information
Merlin Buczek committed Jun 5, 2019
1 parent 01b51b9 commit e339985
Show file tree
Hide file tree
Showing 17 changed files with 351 additions and 60 deletions.
9 changes: 7 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,11 @@ For Django related variables see [Django's documentation](https://docs.djangopro
### LDAP
- `LDAP_SERVER_URI`

## Run Migrations
## Run database migrations
- `python manage.py migrate --no-input`. See [Django docs](https://docs.djangoproject.com/en/2.2/ref/django-admin/#django-admin-migrate).
- `python manage.py update_translation_fields`. See [wagtail-modeltranslation docs](https://wagtail-modeltranslation.readthedocs.io/en/latest/management%20commands.html#the-update-translation-fields-command).

## Update translation fields
- `python manage.py update_translation_fields`. See [wagtail-modeltranslation docs](https://wagtail-modeltranslation.readthedocs.io/en/latest/management%20commands.html#the-update-translation-fields-command).

## Update search index
- `python manage.py update_index`. See [Wagtail docs](https://docs.wagtail.io/en/latest/reference/management_commands.html#update-index)
18 changes: 18 additions & 0 deletions mpicms/base/migrations/0008_categorypage_preview.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 2.2.1 on 2019-06-05 10:00

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('base', '0007_remove_wikipage_date'),
]

operations = [
migrations.AddField(
model_name='categorypage',
name='preview',
field=models.TextField(blank=True, verbose_name='preview'),
),
]
23 changes: 23 additions & 0 deletions mpicms/base/migrations/0009_auto_20190605_1200.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Generated by Django 2.2.1 on 2019-06-05 10:00

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('base', '0008_categorypage_preview'),
]

operations = [
migrations.AddField(
model_name='categorypage',
name='preview_de',
field=models.TextField(blank=True, null=True, verbose_name='preview'),
),
migrations.AddField(
model_name='categorypage',
name='preview_en',
field=models.TextField(blank=True, null=True, verbose_name='preview'),
),
]
32 changes: 32 additions & 0 deletions mpicms/base/migrations/0010_auto_20190605_1313.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Generated by Django 2.2.1 on 2019-06-05 11:13

from django.db import migrations, models
import django.db.models.deletion
import wagtail.core.fields


class Migration(migrations.Migration):

dependencies = [
('base', '0009_auto_20190605_1200'),
]

operations = [
migrations.CreateModel(
name='Banner',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=200)),
('title_en', models.CharField(max_length=200, null=True)),
('title_de', models.CharField(max_length=200, null=True)),
('text', wagtail.core.fields.RichTextField()),
('text_en', wagtail.core.fields.RichTextField(null=True)),
('text_de', wagtail.core.fields.RichTextField(null=True)),
],
),
migrations.AddField(
model_name='homepage',
name='banner',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='base.Banner'),
),
]
42 changes: 34 additions & 8 deletions mpicms/base/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,26 @@
from mpicms.news.mixins import NewsMixin
from mpicms.events.models import Event

from wagtail.snippets.models import register_snippet


Page.show_in_menus_default = True


@register_snippet
class Banner(models.Model):
title = models.CharField(max_length=200, blank=True)
text = RichTextField(features=['bold', 'italic', 'link', 'document-link'])

panels = [
FieldPanel('title'),
FieldPanel('text'),
]

def __str__(self):
return self.title


class Contacts(Orderable, models.Model):
"""
This defines the relationship between the `People` within the `personal`
Expand Down Expand Up @@ -49,23 +65,31 @@ class Meta: # noqa


class HomePage(NewsMixin, Page):
banner = models.ForeignKey(
'Banner',
null=True,
blank=True,
on_delete=models.SET_NULL,
related_name='+'
)

parent_page_types = ['wagtailcore.Page'] # Restrict parent to be root

content_panels = Page.content_panels
content_panels = Page.content_panels + [
SnippetChooserPanel('banner'),
]

@property
def categories(self):
return self.get_children().type(CategoryPage).live()

def get_context(self, request, *args, **kwargs):
context = super().get_context(request, *args, **kwargs)

# Events
events = []
for event in Event.objects.live():
events.append({
'title': event.title,
'start': event.start.isoformat(),
'end': event.end.isoformat(),
'url': event.get_url(request=request),
'color': '#006c66'
})
events.append(event.get_dict(request))

context["events"] = json.dumps(events)

Expand All @@ -77,6 +101,7 @@ class Meta: # noqa


class CategoryPage(NewsMixin, Page):
preview = models.TextField(_("preview"), blank=True)
body = RichTextField(_("content"), blank=True)
side_content = RichTextField(
_("sidebar content"), blank=True,
Expand All @@ -86,6 +111,7 @@ class CategoryPage(NewsMixin, Page):

content_panels = Page.content_panels + [
FieldPanel('body', classname="full"),
FieldPanel('preview'),
FieldPanel('side_content'),
InlinePanel(
'contacts', label="Contacts",
Expand Down
11 changes: 10 additions & 1 deletion mpicms/base/translation.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,15 @@
from modeltranslation.translator import TranslationOptions
from modeltranslation.decorators import register

from .models import WikiPage, HomePage, CategoryPage
from .models import WikiPage, HomePage, CategoryPage, Banner


@register(Banner)
class BannerTR(TranslationOptions):
fields = (
'title',
'text'
)


@register(HomePage)
Expand All @@ -19,6 +27,7 @@ class HomePageTR(TranslationOptions):
class CategoryPageTR(TranslationOptions):
fields = (
'body',
'preview'
)


Expand Down
28 changes: 21 additions & 7 deletions mpicms/events/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,13 +57,33 @@ def end(self):
return datetime.combine(self.end_date, self.end_time)
return self.end_date

def get_dict(self, request):
return {
'title': self.title,
'start': self.start.isoformat(),
'end': self.end.isoformat() if self.end else None,
'url': self.get_url(request=request),
'color': '#006c66'
}

def clean(self):
"""Clean the model fields, if end_date is before start_date raise a ValidationError."""
super().clean()

if self.end_date and self.end_date < self.start_date:
raise ValidationError({'end_date': 'The end date cannot be before the start date.'})

def get_context(self, request, *args, **kwargs):
context = super().get_context(request, *args, **kwargs)

events = []
for child in self.get_parent().get_children().type(Event).live().specific():
events.append(child.get_dict(request))

context["events"] = json.dumps(events)

return context

class Meta(object): # noqa
ordering = ['start_date']

Expand All @@ -89,13 +109,7 @@ def get_context(self, request, *args, **kwargs):

events = []
for child in self.get_children().type(Event).live().specific():
events.append({
'title': child.title,
'start': child.start.isoformat(),
'end': child.end.isoformat(),
'url': child.get_url(request=request),
'color': '#006c66'
})
events.append(child.get_dict(request))

context["events"] = json.dumps(events)

Expand Down
17 changes: 17 additions & 0 deletions mpicms/news/migrations/0006_auto_20190605_1200.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Generated by Django 2.2.1 on 2019-06-05 10:00

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
('news', '0005_newspage_show_all'),
]

operations = [
migrations.AlterModelOptions(
name='newsentry',
options={'ordering': ['-date'], 'verbose_name': 'news entry', 'verbose_name_plural': 'news entries'},
),
]
Loading

0 comments on commit e339985

Please sign in to comment.