diff --git a/README.md b/README.md index ad68812..6f8e81e 100644 --- a/README.md +++ b/README.md @@ -25,4 +25,7 @@ For Django related variables see [Django's documentation](https://docs.djangopro - `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) \ No newline at end of file +- `python manage.py update_index`. See [Wagtail docs](https://docs.wagtail.io/en/latest/reference/management_commands.html#update-index) + +## Compile translation +- `python manage.py compilemessages`. \ No newline at end of file diff --git a/config/settings/base.py b/config/settings/base.py index 82375c2..d25ba80 100644 --- a/config/settings/base.py +++ b/config/settings/base.py @@ -58,6 +58,8 @@ 'wagtail.search', 'wagtail.admin', 'wagtail.core', + 'wagtail.contrib.postgres_search', + 'wagtail.contrib.search_promotions', 'wagtail_modeltranslation', 'wagtail_modeltranslation.makemigrations', @@ -203,6 +205,11 @@ ('en', _('English')), ('de', _('German')), ) + +LOCALE_PATHS = [ + ROOT_DIR.path('locale'), +] + WAGTAILMODELTRANSLATION_TRANSLATE_SLUGS = False # WAGTAIL @@ -210,3 +217,10 @@ # WAGTAIL_USER_EDIT_FORM = 'mpicms.users.forms.CustomUserEditForm' # WAGTAIL_USER_CREATION_FORM = 'mpicms.users.forms.CustomUserCreationForm' # WAGTAIL_USER_CUSTOM_FIELDS = ['phone', 'office'] + +# SEARCH +WAGTAILSEARCH_BACKENDS = { + 'default': { + 'BACKEND': 'wagtail.contrib.postgres_search.backend', + } +} diff --git a/config/urls.py b/config/urls.py index a932b3b..5e3a2b4 100644 --- a/config/urls.py +++ b/config/urls.py @@ -9,10 +9,13 @@ from django.conf.urls.static import static from django.views import defaults as default_views +from base.views import search + urlpatterns = [ path('django-admin', admin.site.urls), path('i18n/', include('django.conf.urls.i18n')), + path('search', search, name='search'), re_path(r'^admin/', include(wagtailadmin_urls)), re_path(r'^documents/', include(wagtaildocs_urls)), ] + static( diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po new file mode 100644 index 0000000..99bd144 --- /dev/null +++ b/locale/de/LC_MESSAGES/django.po @@ -0,0 +1,246 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-06-07 13:35+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: config/settings/base.py:205 +msgid "English" +msgstr "Englisch" + +#: config/settings/base.py:206 +msgid "German" +msgstr "Deutsch" + +#: mpicms/base/models.py:27 +msgid "title" +msgstr "Titel" + +#: mpicms/base/models.py:28 +msgid "text" +msgstr "Text" + +#: mpicms/base/models.py:39 mpicms/base/models.py:85 +msgid "banner" +msgstr "Banner" + +#: mpicms/base/models.py:40 +msgid "banners" +msgstr "Banner" + +#: mpicms/base/models.py:49 mpicms/base/models.py:66 +msgid "contacts" +msgstr "Kontakte" + +#: mpicms/base/models.py:55 +msgid "person" +msgstr "Person" + +#: mpicms/base/models.py:65 +msgid "contact" +msgstr "Kontakt" + +#: mpicms/base/models.py:111 +msgid "homepage" +msgstr "Startseite" + +#: mpicms/base/models.py:112 +msgid "homepages" +msgstr "Startseiten" + +#: mpicms/base/models.py:117 mpicms/news/models.py:57 +msgid "preview" +msgstr "Vorschau" + +#: mpicms/base/models.py:118 +msgid "Short description of this category" +msgstr "Kurze Beschreibung der Kategorie" + +#: mpicms/base/models.py:120 mpicms/events/models.py:19 +#: mpicms/news/models.py:58 +msgid "content" +msgstr "Inhalt" + +#: mpicms/base/models.py:122 +msgid "sidebar content" +msgstr "Inhalt der Seitenleiste" + +#: mpicms/base/models.py:124 +msgid "Text displayed in the sidebar of all child pages" +msgstr "Dieser Text wird in der Seitenleiste aller Unterseiten angezeigt" + +#: mpicms/base/models.py:149 +msgid "category" +msgstr "Kategorie" + +#: mpicms/base/models.py:150 +msgid "categories" +msgstr "Kategorien" + +#: mpicms/base/models.py:174 +msgid "wiki page" +msgstr "Wiki Seite" + +#: mpicms/base/models.py:175 +msgid "wiki pages" +msgstr "Wiki Seiten" + +#: mpicms/events/models.py:14 +msgid "start date" +msgstr "Anfangsdatum" + +#: mpicms/events/models.py:15 +msgid "end date" +msgstr "Enddatum" + +#: mpicms/events/models.py:16 +msgid "start time" +msgstr "Anfangszeit" + +#: mpicms/events/models.py:17 +msgid "end time" +msgstr "Endzeit" + +#: mpicms/events/models.py:18 +msgid "description" +msgstr "Beschreibung" + +#: mpicms/events/models.py:33 +msgid "event dates" +msgstr "Veranstaltungsdaten" + +#: mpicms/events/models.py:79 +msgid "event" +msgstr "Veranstaltung" + +#: mpicms/events/models.py:80 +msgid "events" +msgstr "Veranstaltungen" + +#: mpicms/events/models.py:101 +msgid "event index" +msgstr "Veranstaltungs-Index" + +#: mpicms/events/models.py:102 +msgid "event indexes" +msgstr "Veranstaltungs-Indexes" + +#: mpicms/news/models.py:18 +#, fuzzy +#| msgid "All news" +msgid "show all news" +msgstr "Alle Neuigkeiten" + +#: mpicms/news/models.py:19 +msgid "Include all news from subpages" +msgstr "Neuigkeiten aller Unterseiten inkludieren" + +#: mpicms/news/models.py:52 +msgid "news blog" +msgstr "News Blog" + +#: mpicms/news/models.py:53 +msgid "news blogs" +msgstr "News Blogs" + +#: mpicms/news/models.py:59 +msgid "post date" +msgstr "Veröffentlichungsdatum" + +#: mpicms/news/models.py:76 +msgid "news entry" +msgstr "News Artikel" + +#: mpicms/news/models.py:77 +msgid "news entries" +msgstr "News Artikel" + +#: mpicms/personal/models.py:23 +msgid "first name" +msgstr "Vorname" + +#: mpicms/personal/models.py:24 +msgid "last name" +msgstr "Nachname" + +#: mpicms/personal/models.py:25 +msgid "email" +msgstr "Email" + +#: mpicms/personal/models.py:26 +msgid "phone number" +msgstr "Telefonnummer" + +#: mpicms/personal/models.py:27 +msgid "room" +msgstr "Raum" + +#: mpicms/templates/base/components/search.html:3 +#: mpicms/templates/base/search_results.html:9 +#: mpicms/templates/menus/main.html:81 +msgid "Search" +msgstr "Suche" + +#: mpicms/templates/base/home_page.html:27 +msgid "Upcoming events" +msgstr "Kommende Veranstaltungen" + +#: mpicms/templates/base/home_page.html:30 +msgid "All events" +msgstr "Alle Veranstaltungen" + +#: mpicms/templates/base/home_page.html:36 +#, fuzzy +#| msgid "content" +msgid "Content" +msgstr "Inhalt" + +#: mpicms/templates/events/event_page.html:23 +msgid "No events found" +msgstr "Keine Veranstaltungen gefunden" + +#: mpicms/templates/menus/main.html:18 +msgid "Dashboard" +msgstr "Dashboard" + +#: mpicms/templates/menus/main.html:19 +msgid "Settings" +msgstr "Einstellungen" + +#: mpicms/templates/menus/main.html:21 +msgid "Logout" +msgstr "Ausloggen" + +#: mpicms/templates/menus/main.html:25 +msgid "Login" +msgstr "Einloggen" + +#: mpicms/templates/menus/side.html:38 +msgid "Contact" +msgstr "Kontakt" + +#: mpicms/templates/news/components/news_list.html:17 +msgid "See all" +msgstr "Alle Neuigkeiten" + +#: mpicms/templates/news/components/news_preview.html:10 +msgid "All news" +msgstr "Alle Neuigkeiten" + +#: mpicms/users/forms.py:8 mpicms/users/forms.py:13 +msgid "Phone" +msgstr "Telefon" diff --git a/mpicms/base/migrations/0012_auto_20190607_1139.py b/mpicms/base/migrations/0012_auto_20190607_1139.py new file mode 100644 index 0000000..f1c5789 --- /dev/null +++ b/mpicms/base/migrations/0012_auto_20190607_1139.py @@ -0,0 +1,87 @@ +# Generated by Django 2.2.1 on 2019-06-07 09:39 + +from django.db import migrations, models +import django.db.models.deletion +import wagtail.core.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ('base', '0011_auto_20190605_1727'), + ] + + operations = [ + migrations.AlterModelOptions( + name='banner', + options={'verbose_name': 'banner', 'verbose_name_plural': 'banners'}, + ), + migrations.AlterModelOptions( + name='contacts', + options={'verbose_name': 'contact', 'verbose_name_plural': 'contacts'}, + ), + migrations.AlterModelOptions( + name='wikipage', + options={'verbose_name': 'wiki page', 'verbose_name_plural': 'wiki pages'}, + ), + migrations.AlterField( + model_name='banner', + name='text', + field=wagtail.core.fields.RichTextField(verbose_name='text'), + ), + migrations.AlterField( + model_name='banner', + name='text_de', + field=wagtail.core.fields.RichTextField(null=True, verbose_name='text'), + ), + migrations.AlterField( + model_name='banner', + name='text_en', + field=wagtail.core.fields.RichTextField(null=True, verbose_name='text'), + ), + migrations.AlterField( + model_name='banner', + name='title', + field=models.CharField(blank=True, max_length=200, verbose_name='title'), + ), + migrations.AlterField( + model_name='banner', + name='title_de', + field=models.CharField(blank=True, max_length=200, null=True, verbose_name='title'), + ), + migrations.AlterField( + model_name='banner', + name='title_en', + field=models.CharField(blank=True, max_length=200, null=True, verbose_name='title'), + ), + migrations.AlterField( + model_name='categorypage', + name='preview', + field=models.TextField(blank=True, help_text='Short description of this category', verbose_name='preview'), + ), + migrations.AlterField( + model_name='categorypage', + name='preview_de', + field=models.TextField(blank=True, help_text='Short description of this category', null=True, verbose_name='preview'), + ), + migrations.AlterField( + model_name='categorypage', + name='preview_en', + field=models.TextField(blank=True, help_text='Short description of this category', null=True, verbose_name='preview'), + ), + migrations.AlterField( + model_name='categorypage', + name='side_content', + field=wagtail.core.fields.RichTextField(blank=True, help_text='Text displayed in the sidebar of all child pages', verbose_name='sidebar content'), + ), + migrations.AlterField( + model_name='contacts', + name='person', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='contact_references', to='personal.Person', verbose_name='person'), + ), + migrations.AlterField( + 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', verbose_name='banner'), + ), + ] diff --git a/mpicms/base/models.py b/mpicms/base/models.py index 69cca8e..7f9038a 100644 --- a/mpicms/base/models.py +++ b/mpicms/base/models.py @@ -1,7 +1,7 @@ import json from django.apps import apps from django.db import models -from django.utils.translation import gettext as _ +from django.utils.translation import gettext_lazy as _ from modelcluster.fields import ParentalKey @@ -24,8 +24,8 @@ @register_snippet class Banner(models.Model): - title = models.CharField(max_length=200, blank=True) - text = RichTextField(features=['bold', 'italic', 'link', 'document-link']) + title = models.CharField(_('title'), max_length=200, blank=True) + text = RichTextField(_('text'), features=['bold', 'italic', 'link', 'document-link']) panels = [ FieldPanel('title'), @@ -35,6 +35,10 @@ class Banner(models.Model): def __str__(self): return self.title + class Meta: # noqa + verbose_name = _('banner') + verbose_name_plural = _('banners') + class Contacts(Orderable, models.Model): """ @@ -42,10 +46,13 @@ class Contacts(Orderable, models.Model): app and the CategoryPage below. This allows People to be added to the contact field. """ page = ParentalKey( - 'CategoryPage', related_name='contacts', on_delete=models.CASCADE + 'CategoryPage', related_name=_('contacts'), on_delete=models.CASCADE ) person = models.ForeignKey( - 'personal.Person', related_name='contact_references', on_delete=models.CASCADE + 'personal.Person', + related_name='contact_references', + on_delete=models.CASCADE, + verbose_name=_('person') ) position = models.CharField(max_length=50, blank=True) @@ -54,6 +61,10 @@ class Contacts(Orderable, models.Model): FieldPanel('position') ] + class Meta: # noqa + verbose_name = _('contact') + verbose_name_plural = _('contacts') + class CategoryMixin(models.Model): @property @@ -70,7 +81,8 @@ class HomePage(NewsMixin, Page): null=True, blank=True, on_delete=models.SET_NULL, - related_name='+' + related_name='+', + verbose_name=_('banner') ) parent_page_types = ['wagtailcore.Page'] # Restrict parent to be root @@ -101,12 +113,15 @@ class Meta: # noqa class CategoryPage(NewsMixin, Page): - preview = models.TextField(_("preview"), blank=True) + preview = models.TextField( + _("preview"), blank=True, + help_text=_("Short description of this category") + ) body = RichTextField(_("content"), blank=True) side_content = RichTextField( _("sidebar content"), blank=True, features=['h4', 'h5', 'h6', 'bold', 'italic', 'link', 'document-link'], - help_text=_("Information displayed on the page in the sidebar") + help_text=_("Text displayed in the sidebar of all child pages") ) content_panels = Page.content_panels + [ @@ -120,6 +135,8 @@ class CategoryPage(NewsMixin, Page): search_fields = Page.search_fields + [ index.SearchField('body'), + index.SearchField('preview'), + index.SearchField('side_content'), ] parent_page_types = ['HomePage', 'CategoryPage'] @@ -153,3 +170,7 @@ class WikiPage(CategoryMixin, Page): MultiFieldPanel(Page.promote_panels, "Common page configuration"), ] + class Meta: # noqa + verbose_name = _("wiki page") + verbose_name_plural = _("wiki pages") + diff --git a/mpicms/events/managers.py b/mpicms/events/managers.py deleted file mode 100644 index 4a5a50b..0000000 --- a/mpicms/events/managers.py +++ /dev/null @@ -1,28 +0,0 @@ -from wagtail.core.models import PageManager - - -class DatedEventManager(PageManager): - @staticmethod - def _get_min_time(dt): - """ - Makes clock to 00:00:00 - :param dt: datetime - :return: datetime - """ - return dt.replace(hour=0, minute=0, second=0) - - def in_date_range(self, start, end): - """ - Get event dates that appear between the start and end dates - :return: Filtered django model queryset - """ - start = self._get_min_time(start) - end = self._get_min_time(end) - return self.filter(start_date__gte=start, start_date__lte=end) - - def live(self): - """ - Get event dates associated with live event series - :return: Filtered django model queryset - """ - return self.filter(live=True) diff --git a/mpicms/events/models.py b/mpicms/events/models.py index 5f7665e..b041508 100644 --- a/mpicms/events/models.py +++ b/mpicms/events/models.py @@ -3,29 +3,19 @@ from django.db import models from django.core.exceptions import ValidationError -# from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger -# from django.db import models -# from django.utils import timezone -from django.utils.translation import gettext as _ +from django.utils.translation import gettext_lazy as _ from wagtail.admin.edit_handlers import FieldPanel, MultiFieldPanel from wagtail.core.models import Page -# from wagtail.images.blocks import ImageChooserBlock -# from wagtail.images.edit_handlers import ImageChooserPanel from wagtail.core.fields import RichTextField -# from .date_filters import get_range -# from .managers import DatedEventManager -# from .utils import date_to_datetime - class Event(Page): - start_date = models.DateField() - end_date = models.DateField(blank=True, null=True) - start_time = models.TimeField(blank=True, null=True) - end_time = models.TimeField(blank=True, null=True) - # objects = DatedEventManager() - description = models.TextField(max_length=400, null=False, blank=True) + start_date = models.DateField(_('start date')) + end_date = models.DateField(_('end date'), blank=True, null=True) + start_time = models.TimeField(_('start time'), blank=True, null=True) + end_time = models.TimeField(_('end time'), blank=True, null=True) + description = models.TextField(_('description'), max_length=400, null=False, blank=True) body = RichTextField(_("content"), blank=True) parent_page_types = ['events.EventIndex'] @@ -40,7 +30,7 @@ class Event(Page): FieldPanel('end_date'), FieldPanel('end_time'), ], - heading="Event Start / End Dates" + heading=_('event dates') ), FieldPanel('body', classname="full"), ] @@ -86,23 +76,15 @@ def get_context(self, request, *args, **kwargs): class Meta(object): # noqa ordering = ['start_date'] + verbose_name = _('event') + verbose_name_plural = _('events') class EventIndex(Page): parent_page_types = ['base.HomePage'] subpage_types = ['events.Event'] - # PAGINATE_BY = 3 - - # search_fields = Page.search_fields + [ - # index.SearchField('body'), - # index.FilterField('date'), - # ] - content_panels = Page.content_panels - # promote_panels = [ - # MultiFieldPanel(Page.promote_panels, "Common page configuration"), - # ] def get_context(self, request, *args, **kwargs): context = super().get_context(request, *args, **kwargs) @@ -115,34 +97,6 @@ def get_context(self, request, *args, **kwargs): return context - - # def get_context(self, request, *args, **kwargs): - # """ - # Adds child pages to the context and paginates them. - # """ - # context = super().get_context(request, *args, **kwargs) - # children = self.get_children().type(Event) - - # # Period - # period = request.GET.get('scope', None) - # start_date = request.GET.get('start_date', '') - # if period: - # self.get_start_end(period, start_date) - # children.filter(start_date__gte=start_date).filter(end_date__lte=end_date) - - # # Pagination - # paginator = Paginator(queryset, PAGINATE_BY) - # page_num = request.GET.get('page', 1) or 1 - - # try: - # queryset = paginator.page(page_num) - # except PageNotAnInteger: - # queryset = paginator.page(1) - # except EmptyPage: - # queryset = paginator.page(paginator.num_pages) - - # context.update( - # children=queryset, - # paginator=paginator - # ) - # return context + class Meta: # noqa + verbose_name = _('event index') + verbose_name_plural = _('event indexes') \ No newline at end of file diff --git a/mpicms/events/utils.py b/mpicms/events/utils.py deleted file mode 100644 index 02b25dd..0000000 --- a/mpicms/events/utils.py +++ /dev/null @@ -1,204 +0,0 @@ -# from copy import copy -import calendar -import datetime as dt -from datetime import datetime -from isoweek import Week - - -# from django.utils import timezone - - -DATE_FORMAT_RE = r'^([0-9]){4}\.([0-9]){2}\.([0-9]){2}$' - - -# class datetime(dt.datetime): - -# @classmethod -# def from_date(cls, init_date, time_choice='min'): -# """ -# Convert date to datetime. - -# :param date: date to convert -# :param time_choice: max or min -# :return: datetime -# """ -# choice = getattr(cls, 'min' if time_choice == 'min' else 'max').time() -# return timezone.make_aware( -# cls.combine(init_date, choice), -# timezone.get_current_timezone(), -# ) - - -class date(dt.date): - # def __init__(self, date): - # self.date = date - - # # If start date = string - - # if re.match(cls.DATE_FORMAT_RE, start_date): - # date_params = [int(i) for i in start_date.split('.')] - # start_date = date_to_datetime(datetime.date(*date_params)) - # else: - # start_date = timezone.now().replace( - # hour=0, - # minute=0, - # second=0, - # microsecond=0, - # ) - - # self.time_periods = { - # 'year': get_year_range, - # 'week': get_week_range, - # 'month': get_month_range, - # 'day': get_day_range, - # } - - - # @property - # def get_range(start_date, period): - # """ - # Get the start and end datetimes for the given period - - # :param start_date: period start_date - # :type start_date: datetime.datetime() - # :type period: String - # :return: tuple start_datetime, end_datetime - # """ - # time_periods = { - # 'year': get_year_range, - # 'week': get_week_range, - # 'month': get_month_range, - # 'day': get_day_range, - # } - # return time_periods[period.lower()](start_date) - - - @property - def year_range(self): - """ - Get the start and end datetimes for the year - - :param start_date: period start_date - :type start_date: datetime.datetime() - :return: tuple start_datetime, end_datetime - """ - start_date = datetime.combine(self.replace(month=1, day=1), datetime.min.time()) - end_date = datetime.combine(self.replace(month=12, day=31), datetime.min.time()) - return start_date, end_date - - @property - def month_range(self): - """ - Get the start and end datetimes for the month - - :param start_date: period start_date - :type start_date: datetime.datetime() - :return: tuple start_datetime, end_datetime - """ - month_days = calendar.monthrange(self.year, self.month)[1] - start_date = datetime.combine(self.replace(day=1), datetime.min.time()) - end_date = datetime.combine(self.replace(month_days), datetime.max.time()) - - return start_date, end_date - - @property - def week_range(self): - """ - Get the start and end datetimes for the week - - :param start_date: period start_date - :type start_date: datetime.datetime() - :return: tuple start_datetime, end_datetime - """ - period = Week(self.year, self.isocalendar()[1]) - start_date = datetime.combine(period.monday(), datetime.min.time()) - end_date = datetime.combine(period.sunday(), datetime.max.time()) - return start_date, end_date - - @property - def day_range(self): - """ - Get the start and end datetimes for the day - - :param start_date: period start_date - :type start_date: datetime.datetime() - :return: tuple start_datetime, end_datetime - """ - start_date = datetime.combine(self, datetime.min.time()) - end_date = datetime.combine(self, datetime.max.time()) - return start_date, end_date - - # def add_months(self, months): - # """ - # Add months to the date. - - # :param date: - # :param months: - # :return: - # """ - # month = self.month - 1 + months - # year = int(self.year + month / 12) - # month = month % 12 + 1 - # day = min(self.day, calendar.monthrange(year, month)[1]) - - # return self.__class__(year, month, day) - - # def remove_months(self, months): - # """ - # Add months to the date. - - # :param date: - # :param months: - # :return: - # """ - # month = self.month - 1 - months - # year = int(self.year + month / 12) - # month = month % 12 + 1 - # day = min(self.day, calendar.monthrange(year, month)[1]) - - # return self.__class__(year, month, day) - - - - - - - - - - -# def date_to_datetime(date, time_choice='min'): -# """ -# Convert date to datetime. - -# :param date: date to convert -# :param time_choice: max or min -# :return: datetime -# """ -# choice = getattr(datetime.datetime, 'min' if time_choice == 'min' else 'max').time() -# return timezone.make_aware( -# datetime.datetime.combine(date, choice), -# timezone.get_current_timezone(), -# ) - - - - -# def get_start_end(period, start_date): -# if re.match(cls.DATE_FORMAT_RE, start_date): -# date_params = [int(i) for i in start_date.split('.')] -# start_date = date_to_datetime(datetime.date(*date_params)) -# else: -# start_date = timezone.now().replace( -# hour=0, -# minute=0, -# second=0, -# microsecond=0, -# ) - -# # Clean the start and end dates to conform to the requested period -# start_date, end_date = cls.TIME_PERIODS[period.lower()](start_date) -# return start_date, end_date - - - diff --git a/mpicms/news/models.py b/mpicms/news/models.py index f31b23e..aaa7c30 100644 --- a/mpicms/news/models.py +++ b/mpicms/news/models.py @@ -1,5 +1,5 @@ from django.db import models -from django.utils.translation import gettext as _ +from django.utils.translation import gettext_lazy as _ from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator from wagtail.core.models import Page @@ -14,7 +14,10 @@ class NewsPage(CategoryMixin, Page): content_panels = Page.content_panels + [ FieldPanel('show_all') ] - show_all = models.BooleanField(default=False) + show_all = models.BooleanField( + _('show all news'), default=False, + help_text=_('Include all news from subpages') + ) parent_page_types = ['base.CategoryPage', 'base.HomePage'] subpage_types = ['NewsEntry'] @@ -46,14 +49,14 @@ def news_items(self): class Meta: # noqa - verbose_name = _("news Blog") - verbose_name_plural = _("news Blogs") + verbose_name = _("news blog") + verbose_name_plural = _("news blogs") class NewsEntry(CategoryMixin, Page): preview = models.TextField(_("preview"), blank=True) body = RichTextField(_("content")) - date = models.DateField("Post date", auto_now_add=True) + date = models.DateField(_("post date"), auto_now_add=True) content_panels = Page.content_panels + [ FieldPanel('preview'), diff --git a/mpicms/personal/models.py b/mpicms/personal/models.py index dc34295..b7d3387 100644 --- a/mpicms/personal/models.py +++ b/mpicms/personal/models.py @@ -1,5 +1,5 @@ from django.db import models -from django.utils.translation import gettext as _ +from django.utils.translation import gettext_lazy as _ from wagtail.admin.edit_handlers import FieldPanel, MultiFieldPanel, FieldRowPanel from wagtail.snippets.models import register_snippet diff --git a/mpicms/templates/base/home_page.html b/mpicms/templates/base/home_page.html index 8e63637..4a80b10 100644 --- a/mpicms/templates/base/home_page.html +++ b/mpicms/templates/base/home_page.html @@ -24,7 +24,7 @@ {% include 'news/components/news_preview.html' with news=page.news %}
-

Upcoming events

+

{% trans 'Upcoming events' %}

{% include 'events/components/event_list.html' %}
@@ -33,7 +33,7 @@

Upcoming events

-

Content

+

{% trans 'Content' %}

{% for item in page.categories %}
diff --git a/mpicms/templates/base/search_results.html b/mpicms/templates/base/search_results.html index 230dfe3..075bf75 100644 --- a/mpicms/templates/base/search_results.html +++ b/mpicms/templates/base/search_results.html @@ -1,12 +1,12 @@ {% extends "base.html" %} -{% load wagtailcore_tags wagtailsearchpromotions_tags %} +{% load wagtailcore_tags wagtailsearchpromotions_tags i18n %} {% block title %}Search{% endblock %} {% block content %}
-

Search: {{ search_query }}

+

{% trans 'Search' %}: {{ search_query }}

{% get_search_promotions search_query as search_promotions %} {% firstof search_results.number '1' as current %} diff --git a/mpicms/templates/events/old.html b/mpicms/templates/events/old.html deleted file mode 100644 index 37b3271..0000000 --- a/mpicms/templates/events/old.html +++ /dev/null @@ -1,34 +0,0 @@ - - - -

{% trans "Events" %} ({{ children.scope }}) | {{ children.start_date }} - {{ children.end_date }}

- -

{% trans "Results found" %}:{{ children.items|length }}

- -

- {% trans "Previous" %} | - {% trans "Next" %} -

- - {% if children.items %} -
    - {% for child in children.items %} -
  • - {{ child.event }} | {{ child.title }} -

    Start Date: {{ child.start_date }}

    - {% if child.end_date %} -

    End Date: {{ child.end_date }}

    - {% endif %} -

    {{ child.body|safe }}

    -
  • - {% endfor %} -
- {% include "components/paginator.html" with page=children.items %} - {% else %} -

{% trans "No events found" %}

- {% endif %}s \ No newline at end of file diff --git a/mpicms/templates/menus/main.html b/mpicms/templates/menus/main.html index 7dcbb1f..88792d1 100644 --- a/mpicms/templates/menus/main.html +++ b/mpicms/templates/menus/main.html @@ -1,6 +1,4 @@ -{% load static %} -{% load i18n %} -{% load wagtailcore_tags %} +{% load static i18n wagtailcore_tags %}