it's last:

I don't know how to provide order of processing outside middlewares...
i stopped on this:

settings.py:

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'middleware.handlers.Handler',
)

middleware handlers:

import re
from django.http import HttpResponseRedirect

class Handler(object):
    def process_request(self, request, *args, **kwargs):
        self.__class__.handlers = []
    def process_view(self, request, view_func, view_args,
view_kwargs):
        if 'h_LoginRequired' in view_kwargs:
            res = self.LoginRequired(request, view_kwargs
['h_LoginRequired'])
            if res is not None:
                return res
            del view_kwargs['h_LoginRequired']
        if 'h_PermissionRequired' in view_kwargs:
            res = self.PermissionRequired(request, view_kwargs
['h_PermissionRequired'])
            if res is not None:
                return res
            del view_kwargs['h_PermissionRequired']
    ''' add your handlers here:
        def myHandler(self, request, *args, **kwargs):
            if all_is_okay():
                return None
            return HttpResponseRedirect('/a_bad_result_page.html') #
for example
    '''
    def LoginRequired(self, request, *args, **kwargs):
        if request is not None:
            if request.user is not None and
request.user.is_authenticated():
                return None
        return HttpResponseRedirect('/login.html')
    def PermissionRequired(self, request, *args, **kwargs):
        # check permissions for access to '^members/account/' area
        return None

urls.py:
(r'^members/', include('members.urls'), {'h_LoginRequired':{}}),

members.urls:
(r'^private/', include('members.private.urls'), {
              'h_PermissionRequired':{
                  'handler_arg_name1':'handler_value1',
                  'handler_arg_name2':'handler_value2',
              },
              'view_arg_name1':'view_value1',
              'view_arg_name2':'view_value2',
          }
    ),

development process:
1. make new handler in middleware.Handler
2. add handler processing to Handler. process_view(..)
3. in urls.py create "h_HandlerName" view_param

i've no idea normal handler conveyer about

--

You received this message because you are subscribed to the Google Groups 
"Django developers" group.
To post to this group, send email to django-develop...@googlegroups.com.
To unsubscribe from this group, send email to 
django-developers+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-developers?hl=en.


Reply via email to