def read(self, request, name): try: theme_info = get_theme_metadata(name) except ValueError: raise Http404 desc = { "name": name, "label": theme_info.label, "baseurl": get_absolute_static_url("theme/%s/" % name, request), "templates": {} } for template_id in get_templates('classic'): template_file = template_id + '.html' try: template = get_template("%s:%s" % (name, template_file)) except TemplateDoesNotExist: template = get_template(template_file) desc["templates"][template_id] = template.render({}) return HttpResponse(json.dumps(desc, cls=LazyEncoder, sort_keys=True), 'application/json')
def read(self, request, name): context = RequestContext(request) try: theme_info = get_theme_metadata(name) except ValueError: raise Http404 desc = { "name": name, "label": theme_info.label, "baseurl": get_absolute_static_url("theme/%s/" % name, request), "templates": {} } for template_id in get_templates('classic'): template_file = template_id + '.html' try: template = get_template("%s:%s" % (name, template_file)) except TemplateDoesNotExist: template = get_template(template_file) desc["templates"][template_id] = template.render(context) return HttpResponse(json.dumps(desc, cls=LazyEncoder, sort_keys=True), 'application/json')
def test_get_theme_metadata_default(self): metadata = get_theme_metadata(DEFAULT_THEME) self.assertEqual(metadata.name, DEFAULT_THEME) self.assertIsNone(metadata.parent)
def test_get_theme_metadata(self): metadata = get_theme_metadata('custommodtheme') self.assertEqual(metadata.name, 'custommodtheme') self.assertEqual(metadata.parent, 'customtheme') self.assertEqual(metadata.label, 'My Custom Theme')
from wirecloud.platform.core.models import * from wirecloud.platform.context.models import * from wirecloud.platform.iwidget.models import * from wirecloud.platform.markets.models import * from wirecloud.platform.preferences.models import * from wirecloud.platform.widget.models import * from wirecloud.platform.wiring.models import * from wirecloud.platform.workspace.models import * # TODO search a better way of implementing this # Currently, Django doesn't support using translation catalogues from external # modules, so we have to add the theme translation paths to the LOCALE_PATHS # setting from django.conf import settings from wirecloud.platform.themes import get_available_themes, get_theme_dir, get_theme_metadata if type(settings.LOCALE_PATHS) != list: settings.LOCALE_PATHS = list(settings.LOCALE_PATHS) for theme in get_available_themes(): theme_dir = get_theme_dir(get_theme_metadata(theme), 'locale') if theme_dir not in settings.LOCALE_PATHS: settings.LOCALE_PATHS.insert(0, theme_dir)