Pinned Django on < 2.0 for better compatibility.

Mainlined traslation code for better DRY workflow.
Fixed the EventDetail Mixin.
This commit is contained in:
2017-12-07 22:54:18 +01:00
parent cf0e5e778c
commit b20b988e5d
3 changed files with 28 additions and 25 deletions

View File

@@ -1,5 +1,5 @@
beautifulsoup4
django
django < 2.0
django-appconf
django-ckeditor
django-contrib-comments
@@ -18,4 +18,4 @@ pytz
requests
requests-oauthlib
social-auth-app-django
social-auth-core
social-auth-core

View File

@@ -41,6 +41,14 @@ def get_upload_path(instance, filename):
return "categories/%s.%s" % (instance.slug, extension)
def get_localized(obj, attr):
""" Return the localilzed field, or the fallback if the localized is empty.
"""
fallback = attr + '_de'
localized = attr + '_' + get_language()[:2]
return getattr(obj, localized) or getattr(obj, fallback)
class ArticleManager(models.Manager):
"""Adds some predifined querys and joins some tables for faster querys."""
@@ -118,16 +126,12 @@ class Article(models.Model):
@property
def headline(self):
"""Return the localized headline, fallback to german if necessary."""
return mark_safe(
getattr(self, "headline_%s" % get_language(), self.headline_de)
)
return mark_safe(get_localized(self, 'headline'))
@property
def content(self):
"""Return the localized content, fallback to german if necessary."""
return mark_safe(
getattr(self, "content_%s" % get_language(), self.content_de)
)
return mark_safe(get_localized(self, 'content'))
class Category(models.Model):
@@ -149,13 +153,12 @@ class Category(models.Model):
@property
def name(self):
"""Return the localized name, fallback to german if necessary."""
return getattr(self, "name_%s" % get_language(), self.name_de)
return get_localized(self, 'name')
@property
def description(self):
"""Return the localized description, fallback to german if necessary."""
return getattr(self, "description_%s" % get_language(),
self.description_de)
return get_localized(self, 'description')
def get_absolute_url(self):
"""Return the URL of the article archive, filtered on this category."""
@@ -264,9 +267,7 @@ class Page(models.Model):
@property
def content(self):
"""Return the localized content, fallback to german if necessary."""
return mark_safe(
getattr(self, "content_%s" % get_language()) or self.content_de
)
return mark_safe(get_localized(self, 'content'))
@property
def css_class(self):
@@ -278,24 +279,22 @@ class Page(models.Model):
@property
def description(self):
"""Return the localized description, fallback to german if necessary."""
return getattr(self,
"description_%s" % get_language()) or self.description_de
return get_localized(self, 'description')
@property
def menu_name(self):
"""Return the localized menu name, fallback to german if necessary."""
return getattr(self,
"menu_name_%s" % get_language()) or self.menu_name_de
return get_localized(self, 'menu_name')
@property
def pdf_file(self):
"""Return the localized PDF file, fallback to german if necessary."""
return getattr(self, "pdf_%s" % get_language(), self.pdf_de)
return get_localized(self, 'pdf_file')
@property
def title(self):
"""Return the localized title, fallback to german if necessary."""
return getattr(self, "title_%s" % get_language()) or self.title_de
return get_localized(self, 'title')
def clean(self):
"""set the URL path, the right content type, and scrub the HTML code."""

View File

@@ -48,9 +48,13 @@ class EventDetailMixin(object):
:return: a django QuerySets
"""
try:
self.event = models.Event.objects.get(pk=self.kwargs['event'])
queryset = self.model.objects.filter(event=self.event)
except models.Event.DoesNotExist:
raise Http404(_('Event does not exist'))
if self.model == models.Event:
self.event = models.Event.objects.get(pk=self.kwargs['pk'])
queryset = self.model.objects.all()
else:
try:
self.event = models.Event.objects.get(pk=self.kwargs['event'])
queryset = self.model.objects.filter(event=self.event)
except models.Event.DoesNotExist:
raise Http404(_('Event does not exist'))
return queryset.prefetch_related()