Files
edx-platform/openedx/core/djangoapps/theming/models.py
Ayub khan 5c47a3b425 BOM Project
Updated __unicode__ to __str__
2019-09-25 18:31:54 +05:00

58 lines
1.9 KiB
Python

"""
Django models supporting the Comprehensive Theming subsystem
"""
from __future__ import absolute_import
from django.contrib.sites.models import Site
from django.db import models
from django.utils.encoding import python_2_unicode_compatible
@python_2_unicode_compatible
class SiteTheme(models.Model):
"""
This is where the information about the site's theme gets stored to the db.
`site` field is foreignkey to django Site model
`theme_dir_name` contains directory name having Site's theme
.. no_pii:
"""
site = models.ForeignKey(Site, related_name='themes', on_delete=models.CASCADE)
theme_dir_name = models.CharField(max_length=255)
def __str__(self):
return self.theme_dir_name
@staticmethod
def get_theme(site, default=None):
"""
Get SiteTheme object for given site, returns default site theme if it can not
find a theme for the given site and `DEFAULT_SITE_THEME` setting has a proper value.
Args:
site (django.contrib.sites.models.Site): site object related to the current site.
default (openedx.core.djangoapps.models.SiteTheme): site theme object to return in case there is no theme
associated for the given site.
Returns:
SiteTheme object for given site or a default site passed in as the argument.
"""
theme = site.themes.first()
return theme or default
@staticmethod
def has_theme(site):
"""
Returns True if given site has an associated site theme in database, returns False otherwise.
Note: DEFAULT_SITE_THEME is not considered as an associated site.
Args:
site (django.contrib.sites.models.Site): site object related to the current site.
Returns:
True if given site has an associated site theme in database, returns False otherwise.
"""
return site.themes.exists()