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)

Richard


On Fri, Nov 18, 2011 at 12:24 AM, Jonathan Lundell <[email protected]> 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 <[email protected]> 
>> 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 <[email protected]> 
>>>> wrote:
>>>>> On Nov 15, 2011, at 8:54 PM, Bruno Rocha wrote:
>>>>>
>>>>>> On Wed, Nov 16, 2011 at 2:34 AM, Massimo Di Pierro 
>>>>>> <[email protected]> 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