Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# -*- 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 = ['newsbox__translation__title', 'newsbox__translation__summary', ]
date_hierarchy = 'newsbox_publication_start_date'
def get_list_display(self, request):
list_display = super(NewsboxI18NBaseAdmin, self).get_list_display(request)
# 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