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).
>>>> 
>>>> 
>>>> 
>> 
>> 
>> 


Reply via email to