Author: batiste.bieler
Date: Mon Jun 15 02:53:33 2009
New Revision: 565
Added:
trunk/pages/http.py
Modified:
trunk/pages/admin/__init__.py
trunk/pages/admin/views.py
trunk/pages/templatetags/pages_tags.py
trunk/pages/tests.py
trunk/pages/utils.py
trunk/pages/views.py
Log:
Move some methods into a http.py file
Modified: trunk/pages/admin/__init__.py
==============================================================================
--- trunk/pages/admin/__init__.py (original)
+++ trunk/pages/admin/__init__.py Mon Jun 15 02:53:33 2009
@@ -13,7 +13,8 @@
from pages import settings
from pages.models import Page, Content
-from pages.utils import get_template_from_request,
has_page_add_permission, get_language_from_request, break_here
+from pages.utils import has_page_add_permission
+from pages.http import get_language_from_request, get_template_from_request
from pages.admin import widgets
from pages.utils import get_placeholders
Modified: trunk/pages/admin/views.py
==============================================================================
--- trunk/pages/admin/views.py (original)
+++ trunk/pages/admin/views.py Mon Jun 15 02:53:33 2009
@@ -6,7 +6,8 @@
from pages import settings
from pages.models import Page, Content
-from pages.utils import get_placeholders, auto_render
+from pages.utils import get_placeholders
+from pages.http import auto_render
def change_status(request, page_id, status):
"""
Added: trunk/pages/http.py
==============================================================================
--- (empty file)
+++ trunk/pages/http.py Mon Jun 15 02:53:33 2009
@@ -0,0 +1,93 @@
+from django.core.handlers.base import BaseHandler
+from django.core.handlers.wsgi import WSGIRequest
+from django.http import HttpResponse, HttpResponseRedirect
+from django.shortcuts import render_to_response
+from django.template import loader, Context, RequestContext
+from pages import settings
+
+def get_request_mock():
+ bh = BaseHandler()
+ bh.load_middleware()
+ request = WSGIRequest({
+ 'REQUEST_METHOD': 'GET',
+ 'SERVER_NAME': 'test',
+ 'SERVER_PORT': '8000',
+ })
+ # Apply request middleware
+ for middleware_method in bh._request_middleware:
+ # LocaleMiddleware should never be applied a second time because
+ # it would broke the current real request language
+ if 'LocaleMiddleware' not in str(middleware_method.im_class):
+ response = middleware_method(request)
+ return request
+
+class AutoRenderHttpError(Exception):
+ """cannot return context dictionary because a view returned an HTTP
+ response when a (template_name, context) tuple was expected"""
+ pass
+
+def auto_render(func):
+ """
+ A decorator which automatically inserts the template path into the
context
+ and calls the render_to_response shortcut
+ """
+ def _dec(request, *args, **kwargs):
+ template_override = kwargs.pop('template_name', None)
+ only_context = kwargs.pop('only_context', False)
+ if only_context:
+ # return only context dictionary
+ response = func(request, *args, **kwargs)
+ if isinstance(response, HttpResponse):
+ raise AutoRenderHttpError
+ (template_name, context) = response
+ return context
+ response = func(request, *args, **kwargs)
+ if isinstance(response, HttpResponse):
+ return response
+ (template_name, context) = response
+ t = context['template_name'] = template_override or template_name
+ return render_to_response(t, context,
+context_instance=RequestContext(request))
+ return _dec
+
+
+def get_template_from_request(request, obj=None):
+ """
+ Gets a valid template from different sources or falls back to the
default
+ template.
+ """
+ if settings.PAGE_TEMPLATES is None:
+ return settings.DEFAULT_PAGE_TEMPLATE
+ template = request.REQUEST.get('template', None)
+ if template is not None and \
+ template in dict(settings.PAGE_TEMPLATES).keys():
+ return template
+ if obj is not None:
+ return obj.get_template()
+ return settings.DEFAULT_PAGE_TEMPLATE
+
+def get_language_from_request(request, current_page=None):
+ """
+ Return the most obvious language according the request
+ """
+ # first try the GET parameter
+ language = request.GET.get('language', None)
+ if language:
+ return language
+
+ if hasattr(request, 'LANGUAGE_CODE'):
+ client_language = \
+ settings.PAGE_LANGUAGE_MAPPING(str(request.LANGUAGE_CODE))
+ else:
+ client_language = settings.PAGE_DEFAULT_LANGUAGE
+
+ # then try to get the right one for the page
+ if current_page:
+ # try to get the language that match the client language
+ languages = current_page.get_languages()
+ for lang in languages:
+ if client_language == str(lang):
+ return client_language
+
+ # last resort
+ return settings.PAGE_DEFAULT_LANGUAGE
\ No newline at end of file
Modified: trunk/pages/templatetags/pages_tags.py
==============================================================================
--- trunk/pages/templatetags/pages_tags.py (original)
+++ trunk/pages/templatetags/pages_tags.py Mon Jun 15 02:53:33 2009
@@ -8,7 +8,8 @@
from pages import settings
from pages.models import Content, Page
-from pages.utils import get_language_from_request, get_page_from_slug
+from pages.utils import get_page_from_slug
+from pages.http import get_language_from_request
register = template.Library()
Modified: trunk/pages/tests.py
==============================================================================
--- trunk/pages/tests.py (original)
+++ trunk/pages/tests.py Mon Jun 15 02:53:33 2009
@@ -3,7 +3,7 @@
from django.test import TestCase
import settings
from pages.models import *
-from pages.utils import auto_render, AutoRenderHttpError
+from pages.http import auto_render, AutoRenderHttpError
from django.test.client import Client
from django.template import Template, RequestContext, TemplateDoesNotExist
from django.http import HttpResponse, HttpResponseRedirect
Modified: trunk/pages/utils.py
==============================================================================
--- trunk/pages/utils.py (original)
+++ trunk/pages/utils.py Mon Jun 15 02:53:33 2009
@@ -1,32 +1,12 @@
# -*- coding: utf-8 -*-
from django.conf import settings as django_settings
-from django.contrib.sites.models import Site, RequestSite, SITE_CACHE
-from django.core.handlers.base import BaseHandler
-from django.core.handlers.wsgi import WSGIRequest
-from django.db.models import signals
-from django.http import Http404
-from django.http import HttpResponse, HttpResponseRedirect,
HttpResponsePermanentRedirect
-from django.shortcuts import render_to_response
-from django.template import RequestContext
-from django.template import loader, Context, RequestContext,
TemplateDoesNotExist
+from django.template import TemplateDoesNotExist
from django.template.loader_tags import ExtendsNode, ConstantIncludeNode
-from pages import settings
+from django.template import loader, Context, RequestContext
+from django.http import Http404
-def get_request_mock():
- bh = BaseHandler()
- bh.load_middleware()
- request = WSGIRequest({
- 'REQUEST_METHOD': 'GET',
- 'SERVER_NAME': 'test',
- 'SERVER_PORT': '8000',
- })
- # Apply request middleware
- for middleware_method in bh._request_middleware:
- # LocaleMiddleware should never be applied a second time because
- # it would broke the current real request language
- if 'LocaleMiddleware' not in str(middleware_method.im_class):
- response = middleware_method(request)
- return request
+from pages import settings
+from pages.http import get_request_mock, get_language_from_request
def get_placeholders(template_name):
"""
@@ -77,76 +57,6 @@
elif isinstance(node, ConstantIncludeNode):
placeholders_recursif(node.template.nodelist, plist)
-
-class AutoRenderHttpError(Exception):
- """cannot return context dictionary because a view returned an HTTP
- response when a (template_name, context) tuple was expected"""
- pass
-
-def auto_render(func):
- """
- A decorator which automatically inserts the template path into the
context
- and calls the render_to_response shortcut
- """
- def _dec(request, *args, **kwargs):
- template_override = kwargs.pop('template_name', None)
- only_context = kwargs.pop('only_context', False)
- if only_context:
- # return only context dictionary
- response = func(request, *args, **kwargs)
- if isinstance(response, HttpResponse):
- raise AutoRenderHttpError
- (template_name, context) = response
- return context
- response = func(request, *args, **kwargs)
- if isinstance(response, HttpResponse):
- return response
- (template_name, context) = response
- t = context['template_name'] = template_override or template_name
- return render_to_response(t, context,
context_instance=RequestContext(request))
- return _dec
-
-
-def get_template_from_request(request, obj=None):
- """
- Gets a valid template from different sources or falls back to the
default
- template.
- """
- if settings.PAGE_TEMPLATES is None:
- return settings.DEFAULT_PAGE_TEMPLATE
- template = request.REQUEST.get('template', None)
- if template is not None and \
- template in dict(settings.PAGE_TEMPLATES).keys():
- return template
- if obj is not None:
- return obj.get_template()
- return settings.DEFAULT_PAGE_TEMPLATE
-
-def get_language_from_request(request, current_page=None):
- """
- Return the most obvious language according the request
- """
- # first try the GET parameter
- language = request.GET.get('language', None)
- if language:
- return language
-
- if hasattr(request, 'LANGUAGE_CODE'):
- client_language =
settings.PAGE_LANGUAGE_MAPPING(str(request.LANGUAGE_CODE))
- else:
- client_language = settings.PAGE_DEFAULT_LANGUAGE
-
- # then try to get the right one for the page
- if current_page:
- # try to get the language that match the client language
- languages = current_page.get_languages()
- for lang in languages:
- if client_language == str(lang):
- return client_language
-
- # last resort
- return settings.PAGE_DEFAULT_LANGUAGE
-
def has_page_add_permission(request, page=None):
"""
Return true if the current user has permission to add a new page.
@@ -176,12 +86,3 @@
if page.get_url(lang) == relative_url:
return page
return None
-
-def break_here():
- """Friendly pdb debug prompt"""
- if django_settings.DEBUG:
- try:
- import ipdb as pdb
- except ImportError:
- import pdb;
- pdb.set_trace()
Modified: trunk/pages/views.py
==============================================================================
--- trunk/pages/views.py (original)
+++ trunk/pages/views.py Mon Jun 15 02:53:33 2009
@@ -4,7 +4,8 @@
from django.contrib.sites.models import SITE_CACHE
from pages import settings
from pages.models import Page, Content
-from pages.utils import auto_render, get_language_from_request,
get_page_from_slug
+from pages.http import auto_render, get_language_from_request
+from pages.utils import get_page_from_slug
def details(request, slug=None, lang=None, ajax=False):
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"pinax-updates" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/pinax-updates?hl=en
-~----------~----~----~----~------~----~------~--~---