On Nov 17, 2011, at 8:20 AM, Richard Baron Penman wrote: > in fact Bruno's suggestion to use the controllers variable does work for me. > Previously I used what you suggest (see first post in this thread) and > then only the default controller was exposed. > > What error? Accessing domain/sales before returned this error: > invalid function (default/sales)
domain/sales? Not domain1 or domain2? Do your two apps have exactly the same list of controllers? > > Richard > > > On Fri, Nov 18, 2011 at 12:24 AM, Jonathan Lundell <jlund...@pobox.com> wrote: >> On Nov 16, 2011, at 11:53 PM, Richard Baron Penman wrote: >> >>> what web2py version are you using? I have 1.99.2 >>> >>> >>> This is the only variable I have defined in routes.py: >>> >>> routers = dict( >>> BASE = dict( >>> domains = { >>> 'domain1' : 'forum', >>> 'domain2' : 'sales', >>> }, >>> >>> controllers = ['default', 'appadmin', 'view'], # also tried >>> 'ALL' but did not work >>> ), >>> ) >> >> Defining controllers= in the BASE router won't work. I'd expect this to work: >> >> routers = dict( >> BASE = dict( >> domains = { >> 'domain1' : 'forum', >> 'domain2' : 'sales', >> }, >> ), >> ) >> >> With that router, what breaks, exactly? What incoming URL and what error >> message? >> >>> >>> >>> On Thu, Nov 17, 2011 at 12:56 AM, Jonathan Lundell <jlund...@pobox.com> >>> wrote: >>>> On Nov 16, 2011, at 5:32 AM, Richard Baron Penman wrote: >>>> >>>>> I found listing the controllers explicitly as Bruno mentioned fixed the >>>>> problem. >>>>> Previously domain/non-default-controller returned: invalid function >>>>> (default/non-default-controller) >>>>> I would expect all controllers to work by default. >>>> >>>> I wrote a unit test that isn't seeing a problem. Would you please suggest >>>> an input URL that would cause the problem? >>>> >>>> Thanks. >>>> >>>> >>>> def test_router_domains_fs(self): >>>> ''' >>>> Test URLs that map domains using test filesystem layout >>>> ''' >>>> routers = dict( >>>> BASE = dict( >>>> domains = { >>>> "domain1.com" : "admin", >>>> "domain2.com" : "welcome", >>>> }, >>>> ), >>>> ) >>>> >>>> load(rdict=routers) >>>> self.assertEqual(filter_url('http://domain1.com'), >>>> '/admin/default/index') >>>> self.assertEqual(filter_url('http://domain2.com'), >>>> '/welcome/default/index') >>>> self.assertEqual(filter_url('http://domain1.com/gae'), >>>> '/admin/gae/index') >>>> self.assertEqual(filter_url('http://domain2.com/other'), >>>> '/welcome/other/index') >>>> self.assertEqual(filter_url('http://domain1.com/gae/f1'), >>>> '/admin/gae/f1') >>>> self.assertEqual(filter_url('http://domain2.com/f2'), >>>> '/welcome/default/f2') >>>> self.assertEqual(filter_url('http://domain2.com/other/f3'), >>>> '/welcome/other/f3') >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>>> >>>>> Richard >>>>> >>>>> >>>>> On Wed, Nov 16, 2011 at 2:36 PM, Jonathan Lundell <jlund...@pobox.com> >>>>> wrote: >>>>>> On Nov 15, 2011, at 8:54 PM, Bruno Rocha wrote: >>>>>> >>>>>>> On Wed, Nov 16, 2011 at 2:34 AM, Massimo Di Pierro >>>>>>> <massimo.dipie...@gmail.com> wrote: >>>>>>> this should not be the case. if it is is a bug. >>>>>>> >>>>>>> >>>>>>> I found this some time ago and I tough it was the default behaviour. >>>>>>> >>>>>>> for the following worked >>>>>>> >>>>>>> routers = dict( >>>>>>> BASE = dict( >>>>>>> domains = { >>>>>>> >>>>>>> 'domain1.com' : 'app1', >>>>>>> >>>>>>> 'domain2.com' : 'app2', >>>>>>> >>>>>>> }, >>>>>>> controllers=['default', 'appadmin', ..., ..., ..., ] >>>>>>> ), >>>>>>> ) >>>>>>> >>>>>>> I has to list every controller, also functions >>>>>>> >>>>>> >>>>>> It shouldn't be necessary to list the controllers (and it's not a good >>>>>> idea to list controllers explicitly in the BASE router; if you need a >>>>>> controller list, put it in an app-specific section). >>>> >>>> >>>> >> >> >>