In version 2.6.3, sort=False is still there. Unsure if the way it's 
supposed to be used has changed. Got the same bug as before when I updated.

Den fredagen den 14:e december 2012 kl. 09:39:24 UTC+1 skrev Joel 
Samuelsson:
>
> Glad to help! You do excellent work. Thanks!
>
> Den tisdagen den 11:e december 2012 kl. 15:25:21 UTC+1 skrev Massimo Di 
> Pierro:
>>
>> How did that get in there? Fixed in trunk. Thanks Joel for reporting this.
>>
>> On Tuesday, 11 December 2012 02:51:15 UTC-6, Joel Samuelsson wrote:
>>>
>>> I'm not sure if we're using the same web2py version. I am using the 
>>> current stable release (2.2.1). The call to listdir looks like this (just 
>>> downloaded a fresh copy and double-checked):
>>> models = listdir(path, '^\w+\.py$', 0, sort=False)
>>> I.e. sort=False. Otherwise, what you describe is true. With sort=False 
>>> though, sort order is not alphabetical and what you describe does not work 
>>> since you can't know in what order models are run.
>>>
>>> /Joel
>>>
>>>
>>> Den måndagen den 10:e december 2012 kl. 17:10:43 UTC+1 skrev Anthony:
>>>>
>>>> I've been testing the way you described above and it works, to a point. 
>>>>> The models are not imported in alphabetical order. This seems to be 
>>>>> controlled by this line (521):
>>>>
>>>> models = listdir(path, '^\w+\.py$', 0, sort=False) in compileapp.py
>>>>> listdir is essentially os.walk with a regexp for filtering and os.walk 
>>>>> doesn't give any guarantees for ordering at all from what I understand.
>>>>>
>>>>
>>>> Note, it is not os.listdir -- it is the listdir function from 
>>>> gluon/fileutils.py, which does sort the files alphabetically: 
>>>> http://code.google.com/p/web2py/source/browse/gluon/fileutils.py#88.
>>>>  
>>>>
>>>>> Later in compileapp, the models found with listdir are looped through, 
>>>>> once (not dependant on the regexp) which gives changing the regexp 
>>>>> between 
>>>>> models limited use.
>>>>>
>>>>
>>>> It loops through the files alphabetically -- within any given file, 
>>>> response.models_to_run can be changed, which can affect whether models 
>>>> that 
>>>> come *later* in alphabetical order get run (obviously it cannot cause 
>>>> models that come earlier in alphabetical order to be run). Using 
>>>> response.models_to_run does not change the order in which models are run, 
>>>> nor the ability of later models to affect earlier ones. It merely controls 
>>>> which models get run, with some ability for earlier models to make dynamic 
>>>> changes that affect later ones.
>>>>  
>>>>
>>>>> To explain my issue, I'll try to use an example. Please bear with me!
>>>>> Let's say I have the following models:
>>>>>
>>>>> dbInterface/someDbFile.py
>>>>>
>>>>> anotherInterface/someAnotherInterface.py
>>>>>
>>>>> __init__.py
>>>>> logic.py
>>>>>
>>>>>
>>>>> Now let's assume that listdir lists the models root dir first, then 
>>>>> anotherInterface dir and then dbInterface dir.
>>>>>
>>>>
>>>> That should be exactly how listdir lists the models.
>>>>  
>>>>
>>>>> I want the dbInterface to load before anotherInterface since 
>>>>> anotherInterface is dependant on dbInterface.
>>>>>
>>>>
>>>> Very simple -- just change the names so dbInterface comes before 
>>>> anotherInterface.
>>>>  
>>>>
>>>>> Is there any way I can control the order things are imported from 
>>>>> subfolders without changing web2py? I am aware that just setting sort to 
>>>>> true in the listdir-call will fix my issue but I would like to be able to 
>>>>> update web2py without having to make that change each time, if possible.
>>>>>
>>>>
>>>> As noted, sort is already True, so you should be OK. There is no way to 
>>>> change the order in which web2py executes the models, though (other than 
>>>> to 
>>>> generate your folder and file names to produce the order you desire).
>>>>  
>>>> Anthony
>>>>
>>>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to