percious wrote:
> Ok, so I started digging, because I have to get this working for work
> now....
> Looking at the Tosca source: 
> The "url" function:
> def url(self, url):
>         """
>         Returns the absolute path for the given url.
>         """
>         prefix = self.request_local.environ['toscawidgets.prefix']
>         script_name = self.request_local.environ['SCRIPT_NAME']
>         return ''.join([script_name, prefix, url])
> makes a call to a StackedObjectProxy object and pulls out the
> 'mytg2app' from 'SCRIPT_NAME'.  Is it possible to create the same
> StackedObjectProxy in the repoze software so that the redirect does a
> similar thing?

I'm not even sure what a StackedObjectProxy is.  I'm pretty sure repoze.who 
doesn't want to create one, at least in the general case.

I *think* this is really just a matter of cooperating with the paste.urlmap 
middleware.  You probably want to pay attention to what paste.urlmap.URLMapper 
does in its __call__ method:

     def __call__(self, environ, start_response):
         host = environ.get('HTTP_HOST', environ.get('SERVER_NAME')).lower()
         if ':' in host:
             host, port = host.split(':', 1)
             if environ['wsgi.url_scheme'] == 'http':
                 port = '80'
                 port = '443'
         path_info = environ.get('PATH_INFO')
         path_info = self.normalize_url(path_info, False)[1]
         for (domain, app_url), app in self.applications:
             if domain and domain != host and domain != host+':'+port:
             if (path_info == app_url
                 or path_info.startswith(app_url + '/')):
                 environ['SCRIPT_NAME'] += app_url
                 environ['PATH_INFO'] = path_info[len(app_url):]
                 return app(environ, start_response)
         environ['paste.urlmap_object'] = self
         return self.not_found_application(environ, start_response)

E.g. it munges environ['SCRIPT_NAME'] and environ['PATH_INFO'].  Joining some 
combination of those two plus the login_form_url should get you what you need, 
think, right?

- C
Repoze-dev mailing list

Reply via email to