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
-~----------~----~----~----~------~----~------~--~---

Reply via email to