Hi,

You need to change WSGIApplication.wsgi_call to support this.
Here is what I'm doing
1. create a new file gapngo/wsgi.py, like so
#!/usr/bin/env python
#

from google.appengine.ext.webapp import *
from google.appengine.ext.webapp.util import run_wsgi_app

def wsgi_call(self, environ, start_response):
    """Called by WSGI when a request comes in."""
    request = Request(environ)
    response = Response()

    # placeholder for middleware
    request.blue = "blue"

    WSGIApplication.active_instance = self

    handler = None
    groups = ()
    for regexp, handler_class in self._url_mapping:
      match = regexp.match(request.path)
      if match:
        handler = handler_class()
        handler.initialize(request, response)
        groups = match.groups()
        kwargs = match.groupdict()
        break

    self.current_request_args = groups

    if handler:
      try:
        method = environ['REQUEST_METHOD']
        if method == 'GET':
          handler.get(*groups, **kwargs)
        elif method == 'POST':
          handler.post(*groups, **kwargs)
        elif method == 'HEAD':
          handler.head(*groups, **kwargs)
        elif method == 'OPTIONS':
          handler.options(*groups, **kwargs)
        elif method == 'PUT':
          handler.put(*groups, **kwargs)
        elif method == 'DELETE':
          handler.delete(*groups, **kwargs)
        elif method == 'TRACE':
          handler.trace(*groups, **kwargs)
        else:
          handler.error(501)
      except Exception, e:
        handler.handle_exception(e, self.__debug)
    else:
      response.set_status(404)

    response.wsgi_write(start_response)
    return ['']

def run_gapngo_app(application):
    WSGIApplication.__call__ = wsgi_call
    run_wsgi_app(application)

2. In your views make the following changes
    import gapngo.wsgi as wsgi
    .....
    def get(self, *args, **kwargs):
    .....
    wsgi.run_gapngo_app(application)

3. Now access your named regex groups as kwargs.get("blah")

Also note there is a placeholder for calling middleware.

S. Sriram

On Mar 29, 1:46 pm, Tito <bigt...@gmail.com> wrote:
> I would like to use named groups in the regular expressions passed on
> to the webapp.WSGIApplication constructor.
> The main reason is that I need to pass HTTP parameters embedded in the
> URL in a different order than the positional parameters in the
> corresponding get() method of the RequestHandler class.
>
> Example:
> web_application = webapp.WSGIApplication([
>   (r"/xhtml/(?P<output>[^/]+)/wall/(?P<user_key>[^/]+)",
> messaging.WallPage),
> ])
>
> The output parameter represent the format of the page.
> The user_key parameter is an identifier for a particular application
> user.
>
> The signature of the get method  of the RequestHandler WallPage would
> be the following:
> def get(self,user_key, output="iphone")
>
> Even though I'm using named groups in the URL mapping, regexp matching
> groups are always passed as positional parameters to the get method,
> so they end up being swapped.
>
> Is it simply not supported or am I doing something wrong?
>
> Thank you

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

Reply via email to