Source code for oioioi.newsfeed.models
from django.db import models
from django.utils.safestring import mark_safe
from django.utils.translation import get_language, get_language_from_request
from django.utils.translation import gettext_lazy as _
from mistune import Markdown
from oioioi.base.utils.deps import check_django_app_dependencies
check_django_app_dependencies(__name__, ['oioioi.portals'])
[docs]class News(models.Model):
[docs] def get_content(self, request=None):
if request is not None:
lang = get_language_from_request(request)
try:
return self.versions.get(language=lang)
except NewsLanguageVersion.DoesNotExist:
pass
try:
return self.versions.get(language=get_language())
except NewsLanguageVersion.DoesNotExist:
return self.versions.first()
[docs]class NewsLanguageVersion(models.Model):
"""Represents a content of a news.
News may have multiple versions - each in another language.
"""
[docs] def save(self, *args, **kwargs):
try:
existing_language_version = self.news.versions.get(language=self.language)
if self != existing_language_version:
raise ValueError(
'Creating NewsLanguageVersion for News object'
' that already has a NewsLanguageVersion with'
' the given language.'
)
except NewsLanguageVersion.DoesNotExist:
pass
return super(NewsLanguageVersion, self).save(*args, **kwargs)