More robus implementation of Post.get_absolute_url
This commit is contained in:
parent
7b040e1b01
commit
0e07f9a850
1 changed files with 19 additions and 15 deletions
|
@ -17,6 +17,7 @@ from djangocms_text_ckeditor.fields import HTMLField
|
||||||
from filer.fields.image import FilerImageField
|
from filer.fields.image import FilerImageField
|
||||||
from meta_mixin.models import ModelMeta
|
from meta_mixin.models import ModelMeta
|
||||||
from parler.models import TranslatableModel, TranslatedFields
|
from parler.models import TranslatableModel, TranslatedFields
|
||||||
|
from parler.utils.context import switch_language
|
||||||
from taggit_autosuggest.managers import TaggableManager
|
from taggit_autosuggest.managers import TaggableManager
|
||||||
|
|
||||||
from .cms_appconfig import BlogConfig
|
from .cms_appconfig import BlogConfig
|
||||||
|
@ -203,22 +204,25 @@ class Post(KnockerModel, ModelMeta, TranslatableModel):
|
||||||
super(Post, self).save_translation(translation, *args, **kwargs)
|
super(Post, self).save_translation(translation, *args, **kwargs)
|
||||||
|
|
||||||
def get_absolute_url(self, lang=None):
|
def get_absolute_url(self, lang=None):
|
||||||
if not lang:
|
if not lang or lang not in self.get_available_languages():
|
||||||
|
lang = self.get_current_language()
|
||||||
|
if not lang or lang not in self.get_available_languages():
|
||||||
lang = get_language()
|
lang = get_language()
|
||||||
category = self.categories.first()
|
with switch_language(self, lang):
|
||||||
kwargs = {}
|
category = self.categories.first()
|
||||||
urlconf = get_setting('PERMALINK_URLS')[self.app_config.url_patterns]
|
kwargs = {}
|
||||||
if '<year>' in urlconf:
|
urlconf = get_setting('PERMALINK_URLS')[self.app_config.url_patterns]
|
||||||
kwargs['year'] = self.date_published.year
|
if '<year>' in urlconf:
|
||||||
if '<month>' in urlconf:
|
kwargs['year'] = self.date_published.year
|
||||||
kwargs['month'] = '%02d' % self.date_published.month
|
if '<month>' in urlconf:
|
||||||
if '<day>' in urlconf:
|
kwargs['month'] = '%02d' % self.date_published.month
|
||||||
kwargs['day'] = '%02d' % self.date_published.day
|
if '<day>' in urlconf:
|
||||||
if '<slug>' in urlconf:
|
kwargs['day'] = '%02d' % self.date_published.day
|
||||||
kwargs['slug'] = self.safe_translation_getter('slug', language_code=lang, any_language=True) # NOQA
|
if '<slug>' in urlconf:
|
||||||
if '<category>' in urlconf:
|
kwargs['slug'] = self.safe_translation_getter('slug', language_code=lang, any_language=True) # NOQA
|
||||||
kwargs['category'] = category.safe_translation_getter('slug', language_code=lang, any_language=True) # NOQA
|
if '<category>' in urlconf:
|
||||||
return reverse('%s:post-detail' % self.app_config.namespace, kwargs=kwargs)
|
kwargs['category'] = category.safe_translation_getter('slug', language_code=lang, any_language=True) # NOQA
|
||||||
|
return reverse('%s:post-detail' % self.app_config.namespace, kwargs=kwargs)
|
||||||
|
|
||||||
def get_meta_attribute(self, param):
|
def get_meta_attribute(self, param):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in a new issue