Newer
Older
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import sys
from django.db import models
from django.core.urlresolvers import reverse
from django.utils.translation import ugettext_lazy as _, get_language, activate
from django.utils import six
from django.utils.encoding import python_2_unicode_compatible
from hvad.manager import TranslationManager
from hvad.models import TranslatableModel, TranslatedFields
from newsbox.models import NewsboxModelBase, NewsboxManager, \
NewsboxBase, newsbox_models
class NewsboxHVADManager(TranslationManager, NewsboxManager):
pass
def newsboxhvad_mcls_processor(mcls, class_name, class_bases, class_attrs, base, newsbox_opts):
translatedFields={}
for trans_field in newsbox_opts['trans_fieldnames']:
translatedFields[trans_field] = class_attrs.pop(trans_field)
class_attrs['translations'] = TranslatedFields(**translatedFields)
class_attrs['newsbox_objects'] = NewsboxHVADManager()
#class_attrs['default_manager'] = class_attrs['newsbox_objects']
class NewsboxHVADModelBase(NewsboxModelBase):
pass
@python_2_unicode_compatible
class NewsboxHVADBase(six.with_metaclass(NewsboxHVADModelBase, TranslatableModel)):
"""
Define News which expires in time and will not be displayed in front
"""
default_manager = NewsboxHVADManager()
objects = default_manager
def __str__(self):
return self.lazy_translation_getter(
'newsbox_title',
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
def get_slug(self, language=None, *args, **kwargs):
"""
Returns the slug for this object for the given language.
"""
if language is None or language == self.language_code:
return self.safe_translation_getter('newsbox_slug')
else:
instance = self.__class__.objects.language(language).get(pk=self.pk)
return instance.safe_translation_getter('newsbox_slug')
def get_absolute_url(self, language=None, *args, **kwargs):
"""
Build url for the given language.
"""
current_language = get_language()
if not language:
language = current_language
if language in self.get_available_languages():
activate(language)
url = reverse(self._newsbox_meta['detail_url_name'], args=(
self.newsbox_date.strftime("%Y"),
self.newsbox_date.strftime("%m"),
self.newsbox_date.strftime("%d"),
self.get_slug(language=language),))
activate(current_language)
return url
return "./"
class Meta:
abstract = True
verbose_name = _('news')
verbose_name_plural = _('news')
#newsbox_metaclass_base_processor = 'newsboxhvad_mcls_processor'
newsbox_metaclass_final_processor = 'newsboxhvad_mcls_processor'