diff --git a/utils/dateformat.py b/utils/dateformat.py index 3e62559..240dd24 100644 --- a/utils/dateformat.py +++ b/utils/dateformat.py @@ -3,6 +3,7 @@ from __future__ import unicode_literals # Erik Stein , 2016 """ Extends django.utils.dateformat +Adds date and time range functions # TODO Describe custom formats """ @@ -17,8 +18,7 @@ from django.utils.encoding import force_text from django.utils.translation import get_language, ugettext_lazy as _ -# TODO Get DEFAULT_VARIANT from settings -DEFAULT_VARIANT = 'SHORT' +DEFAULT_VARIANT = getattr(settings, 'DEFAULT_DATE_VARIANT', 'SHORT') # Adding "q" @@ -99,9 +99,8 @@ def format_date_range(from_date, to_date, variant=DEFAULT_VARIANT): to_date = datetime_to_date(to_date) from_format = to_format = get_format(variant + 'DATE_FORMAT') - if from_date == to_date or not to_date: - return date_format(from_date, get_format(from_format)) + return date_format(from_date, from_format) else: if (from_date.year == to_date.year): from_format = get_format(variant + 'DAYMONTH_FORMAT') or 'd/m/' diff --git a/utils/locale/__init__.py b/utils/locale/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/utils/markdown_utils.py b/utils/markdown_utils.py deleted file mode 100644 index 06e1f72..0000000 --- a/utils/markdown_utils.py +++ /dev/null @@ -1 +0,0 @@ -from markup.utils import * diff --git a/utils/templates/utils/_language_switcher_get.html b/utils/templates/utils/_language_switcher_get.html new file mode 100644 index 0000000..ae9f26e --- /dev/null +++ b/utils/templates/utils/_language_switcher_get.html @@ -0,0 +1,29 @@ +{% load i18n translation_tags %} + + {% get_language_info_list for LANGUAGES as languages %} + + {% for language in languages %} + {% if request.LANGUAGE_CODE != language.code %} + {{ language.name_local }} + {% else %} + {{ language.name_local }} + {% endif %} + {% if not forloop.last %}{{ separator|default:"/" }}{% endif %} + {% endfor %} + + + {% comment %} + // Language Switcher + + html { + .selected-language { color: $active_color; } + + &:lang(de) { + a.language-switch[hreflang=en] { @include interactive-underline; } + } + + &:lang(en) { + a.language-switch[hreflang=de] { @include interactive-underline; } + } + } + {% endcomment %} diff --git a/utils/templates/utils/_language_switcher_post.html b/utils/templates/utils/_language_switcher_post.html new file mode 100644 index 0000000..3938ca3 --- /dev/null +++ b/utils/templates/utils/_language_switcher_post.html @@ -0,0 +1,50 @@ +{% load i18n %} + + {% get_language_info_list for LANGUAGES as languages %} + + {% for language in languages %} + {% if request.LANGUAGE_CODE != language.code %} +
+ {% csrf_token %} + + + +
+ {% else %} + {{ language.name_local }} + {% endif %} + {% if not forloop.last %}{{ separator|default:"/" }}{% endif %} + {% endfor %} + + + {% comment %} + // Language Switcher + + form.language-switch { + display: inline; + margin: 0; + padding: 0; + } + + form.language-switch button { + margin: 0; + padding: 0; + border: none; + background: none; + + @include interactive-underline; + } + + html { + .selected-language { color: $active_color; } + + &:lang(de) { + a.language-switch[hreflang=en] { @include interactive-underline; } + } + + &:lang(en) { + a.language-switch[hreflang=de] { @include interactive-underline; } + } + } + + {% endcomment %} diff --git a/utils/templatetags/markup_tags.py b/utils/templatetags/markup_tags.py deleted file mode 100644 index b1f55fa..0000000 --- a/utils/templatetags/markup_tags.py +++ /dev/null @@ -1,33 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals -# Erik Stein , 2015 - -from django import template -from django.template.defaultfilters import stringfilter -from django.utils.html import conditional_escape -from django.utils.safestring import mark_safe -from .. import markdown_utils - - -register = template.Library() - - -@register.filter(needs_autoescape=True) -@stringfilter -def inline_markdown(text, autoescape=None, **kwargs): - """ Doesn't wrap the markup in a HTML paragraph. """ - if autoescape: - esc = conditional_escape - else: - esc = lambda x: x - return mark_safe(markdown_utils.inline_markdown_processor.convert(esc(text), **kwargs)) - - -@register.filter(needs_autoescape=True) -@stringfilter -def markdown(text, autoescape=None, **kwargs): - if autoescape: - esc = conditional_escape - else: - esc = lambda x: x - return mark_safe(markdown_utils.markdown_processor.convert(esc(text), **kwargs)) diff --git a/utils/templatetags/text_tags.py b/utils/templatetags/text_tags.py index bb3e5fd..1270a29 100644 --- a/utils/templatetags/text_tags.py +++ b/utils/templatetags/text_tags.py @@ -2,6 +2,8 @@ from __future__ import unicode_literals # Erik Stein , 2015 +import re + from django import template from django.template.defaultfilters import stringfilter from django.utils.html import conditional_escape @@ -24,3 +26,17 @@ def conditional_punctuation(value, punctuation=",", space=" "): value += conditional_escape(space) # Append previously stripped space return value conditional_punctuation.is_safe = True + + +WHITESPACE = re.compile('\s+') + + +@register.filter(needs_autoescape=True) +@stringfilter +def nbsp(text, autoescape=True): + if autoescape: + esc = conditional_escape + else: + esc = lambda x: x + return mark_safe(WHITESPACE.sub(' ', esc(text.strip()))) + diff --git a/utils/templatetags/translation_tags.py b/utils/templatetags/translation_tags.py index 7afc930..02d78d7 100644 --- a/utils/templatetags/translation_tags.py +++ b/utils/templatetags/translation_tags.py @@ -3,7 +3,6 @@ from __future__ import unicode_literals # Erik Stein , 2014-2015 from django import template -from django.db import models from ..translation import get_translation, get_translated_field @@ -22,3 +21,55 @@ def translate(obj, field_name): # Alias translated_field = translate + + +''' +Unfinished: + +from django import template +from django.core.urlresolvers import reverse +from django.core.urlresolvers import resolve +from django.urls.base import translate_url + + +class TranslatedURL(template.Node): + # from http://stackoverflow.com/questions/11437454/django-templates-get-current-url-in-another-language + + def __init__(self, language): + self.language = language + + def render(self, context): + view = resolve(context['request'].path) + request_language = translation.get_language() + translation.activate(self.language) + url = reverse(view.url_name, args=view.args, kwargs=view.kwargs) + translation.activate(request_language) + return url + + +@register.tag(name='translate_url') +def do_translate_url(parser, token): + language = token.split_contents()[1] + return TranslatedURL(language) + + +@register.simple_tag +def translate_url(language, url=None): + """ + {% get_language_info_list for LANGUAGES as languages %} + {% for language in languages %} + {{ language.name_local }} + {% endfor %} + """ + + import ipdb; ipdb.set_trace() + # if not url: + # view = resolve(context['request'].path) + # request_language = translation.get_language() + # translation.activate(self.language) + # url = reverse(view.url_name, args=view.args, kwargs=view.kwargs) + + # view = resolve(context['request'].path) + + return TranslatedURL(language) +''' diff --git a/utils/translation.py b/utils/translation.py index 1b648eb..73f5a0a 100644 --- a/utils/translation.py +++ b/utils/translation.py @@ -8,12 +8,13 @@ from django import http from django.conf import settings from django.core.exceptions import ObjectDoesNotExist, FieldDoesNotExist from django.core.urlresolvers import translate_url +from django.http import HttpResponseRedirect from django.template.loader import select_template from django.utils import translation -from django.views.generic import TemplateView -from django.utils.translation import check_for_language, LANGUAGE_SESSION_KEY from django.utils.http import is_safe_url -from django.http import HttpResponseRedirect +from django.utils.six.moves.urllib.parse import urlsplit, urlunsplit +from django.utils.translation import check_for_language, LANGUAGE_SESSION_KEY +from django.views.generic import TemplateView from django.views.i18n import LANGUAGE_QUERY_PARAMETER @@ -168,9 +169,10 @@ def active_language(lang='de'): translation.deactivate() -def set_language(request): +def set_language_get(request): """ - Modified copy from django.views.i18n + set_language per GET request, + modified copy from django.views.i18n (django 1.9.x) """ next = request.POST.get('next', request.GET.get('next')) if not is_safe_url(url=next, host=request.get_host()):