Newer
Older
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import copy
from django.conf import settings
from parler.admin import TranslatableAdmin
from django.utils.translation import ugettext_lazy as _
def edit_translation_links(obj):
output = ''
for lang in obj.get_available_languages():
output += (
'<a href="./%s/?language=%s" '
'target="_parent" title="Edit this %s in %s">%s'
'</a>'
) % (obj.pk, lang, obj._meta.verbose_name, lang.upper(), lang.upper(),)
return output
edit_translation_links.allow_tags = True
edit_translation_links.short_description = _('translations')
class NewsboxI18NBaseAdmin(TranslatableAdmin):
search_fields = ['translations__newsbox_title', 'translations__newsbox_summary']
date_hierarchy = 'newsbox_publication_start_date'
def get_list_display(self, request):
list_display = super(NewsboxI18NBaseAdmin, self).get_list_display(request)
if not getattr(self.__class__, 'list_display', None):
if NewsboxI18NBaseAdmin not in list_display:
# prevent modifying class list_display variable
list_display = copy.deepcopy(list_display)
if settings.LANGUAGES and len(settings.LANGUAGES) > 1:
list_display.insert(1, edit_translation_links)
return list_display
def ensure_slug_uniq_queryset(self, request, obj, slug):
language = self.get_form_language(request, obj)
y, m, d = (obj.newsbox_publication_start_date.year,
obj.newsbox_publication_start_date.month,
obj.newsbox_publication_start_date.day)
queryset = type(obj).objects.filter(newsbox_publication_start_date__year=y,
newsbox_publication_start_date__month=m,
newsbox_publication_start_date__day=d)\
.translated(language, newsbox_slug=slug)
if obj.pk:
queryset = queryset.exclude(pk=obj.pk)
return queryset
class NewsboxI18NAdmin(NewsboxI18NBaseAdmin):
pass