Right, so I have been tried that, and it looks like repoze is running
in a different thread.  IE I get :No object (name: repoze.who
RedirectFormPlugin) has been registered for this thread.

Here is my diff:

--- plugins/form.py     (revision 1032)
+++ plugins/form.py     (working copy)
@@ -11,6 +11,8 @@
 from paste.request import parse_formvars
 from paste.request import construct_url

+from paste.registry import StackedObjectProxy, Registry
+
 from zope.interface import implements

 from repoze.who.interfaces import IChallenger
@@ -119,10 +121,17 @@

         return auth_form

+class RequestLocal(object):
+    def __init__(self, environ):
+        self.environ = environ
+
 class RedirectingFormPlugin(FormPluginBase):

     implements(IChallenger, IIdentifier)

+    request_local = StackedObjectProxy(name="repoze.who
RedirectFormPlugin")
+    request_local_class = request_local
+
     def __init__(self, login_form_url, login_handler_path,
logout_handler_path,
                  rememberer_name):
         self.login_form_url = login_form_url
@@ -176,6 +185,16 @@
         query_elements['came_from'] = came_from
         url_parts[4] = urllib.urlencode(query_elements, doseq=True)
         login_form_url = urlparse.urlunparse(url_parts)
+
+        registry = environ['paste.registry']
+        registry.register(self.request_local,
self.request_local_class(environ))
+
+        script_name = self.request_local.environ['SCRIPT_NAME']
+
+
+        login_form_url = script_name + '/' + login_form_url
+        print 'repoze', login_form_url
+
         headers = [ ('Location', login_form_url) ]
         headers = headers + forget_headers
         return HTTPFound(headers=headers)


On May 12, 11:43 am, Chris McDonough <[EMAIL PROTECTED]> wrote:
> percious wrote:
> > Ok, so I started digging, because I have to get this working for work
> > now....
> > Looking at the Tosca 
> > source:http://svn.turbogears.org/projects/ToscaWidgets/trunk/tw/mods/base.py
>
> > 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)
>          else:
>              if environ['wsgi.url_scheme'] == 'http':
>                  port = '80'
>              else:
>                  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:
>                  continue
>              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, I
> think, right?
>
> - C
> _______________________________________________
> Repoze-dev mailing list
> [EMAIL PROTECTED]://lists.repoze.org/listinfo/repoze-dev
_______________________________________________
Repoze-dev mailing list
Repoze-dev@lists.repoze.org
http://lists.repoze.org/listinfo/repoze-dev

Reply via email to