cms.utils: 63 total statements, 0.0% covered

Generated: Wed 2013-03-13 10:33 CET

Source file: /media/Envs/Envs/filer-gallery/lib/python2.7/site-packages/cms/utils/__init__.py

Stats: 0 executed, 48 missed, 15 excluded, 41 ignored

  1. # -*- coding: utf-8 -*-
  2. # TODO: this is just stuff from utils.py - should be splitted / moved
  3. from cms.utils.i18n import get_default_language
  4. from distutils.version import LooseVersion
  5. from django.conf import settings
  6. from django.core.files.storage import get_storage_class
  7. from django.core.urlresolvers import reverse
  8. from django.http import HttpResponse, HttpResponseRedirect
  9. from django.shortcuts import render_to_response
  10. from django.template import RequestContext
  11. from django.utils.functional import LazyObject
  12. import django
  13. import os
  14. import urllib
  15. def get_template_from_request(request, obj=None, no_current_page=False):
  16. """
  17. Gets a valid template from different sources or falls back to the default
  18. template.
  19. """
  20. template = None
  21. if len(settings.CMS_TEMPLATES) == 1:
  22. return settings.CMS_TEMPLATES[0][0]
  23. if "template" in request.REQUEST:
  24. template = request.REQUEST['template']
  25. if not template and obj is not None:
  26. template = obj.get_template()
  27. if not template and not no_current_page and hasattr(request, "current_page"):
  28. current_page = request.current_page
  29. if hasattr(current_page, "get_template"):
  30. template = current_page.get_template()
  31. if template is not None and template in dict(settings.CMS_TEMPLATES).keys():
  32. if template == settings.CMS_TEMPLATE_INHERITANCE_MAGIC and obj:
  33. # Happens on admin's request when changing the template for a page
  34. # to "inherit".
  35. return obj.get_template()
  36. return template
  37. return settings.CMS_TEMPLATES[0][0]
  38. def get_language_from_request(request, current_page=None):
  39. from cms.models import Page
  40. """
  41. Return the most obvious language according the request
  42. """
  43. language = request.REQUEST.get('language', None)
  44. if language:
  45. if not language in dict(settings.CMS_LANGUAGES).keys():
  46. language = None
  47. if language is None:
  48. language = getattr(request, 'LANGUAGE_CODE', None)
  49. if language:
  50. if not language in dict(settings.CMS_LANGUAGES).keys():
  51. language = None
  52. # TODO: This smells like a refactoring oversight - was current_page ever a page object? It appears to be a string now
  53. if language is None and isinstance(current_page, Page):
  54. # in last resort, get the first language available in the page
  55. languages = current_page.get_languages()
  56. if len(languages) > 0:
  57. language = languages[0]
  58. if language is None:
  59. # language must be defined in CMS_LANGUAGES, so check first if there
  60. # is any language with LANGUAGE_CODE, otherwise try to split it and find
  61. # best match
  62. language = get_default_language()
  63. return language
  64. def get_page_from_request(request):
  65. from warnings import warn
  66. from cms.utils.page_resolver import get_page_from_request as new
  67. warn("'cms.utils.get_page_from_request' is deprecated in favor of "
  68. "'cms.utils.page_resolver.get_page_from_request' and will be removed "
  69. "in Django-CMS 2.2.", DeprecationWarning)
  70. return new(request)
  71. """
  72. The following class is taken from https://github.com/jezdez/django/compare/feature/staticfiles-templatetag
  73. and should be removed and replaced by the django-core version in 1.4
  74. """
  75. default_storage = 'django.contrib.staticfiles.storage.StaticFilesStorage'
  76. if LooseVersion(django.get_version()) < LooseVersion('1.3'):
  77. default_storage = 'staticfiles.storage.StaticFilesStorage'
  78. class ConfiguredStorage(LazyObject):
  79. def _setup(self):
  80. self._wrapped = get_storage_class(getattr(settings, 'STATICFILES_STORAGE', default_storage))()
  81. configured_storage = ConfiguredStorage()
  82. def cms_static_url(path):
  83. '''
  84. Helper that prefixes a URL with STATIC_URL and cms
  85. '''
  86. if not path:
  87. return ''
  88. return configured_storage.url(os.path.join('cms', path))