[web2py] Re: multiple models in a plugin component

2014-06-13 Thread Louis Amon
Ok here's my best solution so far:

I keep the whole plugin contained according to the rules defined in the 
documentation and, in order to have my my models visible to the global 
namespace, I expose the plugin's model folder using this little line :

response.models_to_run.append('plugin_name')



On Wednesday, June 11, 2014 5:43:29 PM UTC+2, Louis Amon wrote:

 I found an answer to my own question :
 I split my model (plugin_name.py) into multiple files (0_settings.py, 
 1_user.py, etc.) and put them all in a folder ./models/plugin_name/

 Web2py does detect that all my model files belong to the same plugin and 
 packs them together.


 *Another problem happens if I do things that way tho :*

 I use a database_uri as plugin parameter to define models (tables, fields, 
 callbacks, etc.) in my plugin.

- When I access this database from appadmin, the tables work fine 
(validators, callback, everything).
- When I access this database from my main application (the one onto 
which my plugin is installed), my database isn't recognized at all.


 From lurking on this fine forum, I established that I have 3 options here :

1. Work around database cooperation (
http://web2py.com/books/default/chapter/29/04#Cooperation)
2. Use the auto_import=true argument in the DAL
3. Rename the model files that came with my plugin, so all model 
features are available in the global namespace

 So far, *I am unsatisfied with all 3 options*, with a good reason for 
 each of those :

1. Because I have dependencies between tables which makes it very 
difficult to cleanly manage all those imports
2. Because auto_import doesn't manage to retrieve callbacks  
validators, which leaves me with half the work left to do
3. Because it would defeat the purpose of making a plugin in the first 
place


 I'm a mere padawan on this fine community, so if a web2py guru happens to 
 read this thread I would appreciate any tip he could provide to face this 
 issue !


 On Friday, May 23, 2014 2:06:42 PM UTC+2, Louis Amon wrote:

 I am trying to build a big 'plugin component', with a plugin manager and 
 therefore using the full naming conventions specified in the doc.

 My model is starting to be huge (1000+ lines) and I'm trying to split it 
 into multiple files.


 Is there a way to name these files so that web2py still understands that 
 they're part of my plugin ?



-- 
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 web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[web2py] Re: multiple models in a plugin component

2014-06-13 Thread Anthony
Yes, by default, response.models_to_run is set so web2py runs all models in 
the top level /models folder, and then any models in subfolders whose names 
match the request controller and function (so model files in a folder named 
after the plugin would only be run if the plugin controller is called). The 
exception is when the appadmin controller is called -- in that case, all 
models in all subfolders are run.

Anthony

On Friday, June 13, 2014 8:50:04 AM UTC-4, Louis Amon wrote:

 Ok here's my best solution so far:

 I keep the whole plugin contained according to the rules defined in the 
 documentation and, in order to have my my models visible to the global 
 namespace, I expose the plugin's model folder using this little line :

 response.models_to_run.append('plugin_name')



 On Wednesday, June 11, 2014 5:43:29 PM UTC+2, Louis Amon wrote:

 I found an answer to my own question :
 I split my model (plugin_name.py) into multiple files (0_settings.py, 
 1_user.py, etc.) and put them all in a folder ./models/plugin_name/

 Web2py does detect that all my model files belong to the same plugin and 
 packs them together.


 *Another problem happens if I do things that way tho :*

 I use a database_uri as plugin parameter to define models (tables, 
 fields, callbacks, etc.) in my plugin.

- When I access this database from appadmin, the tables work fine 
(validators, callback, everything).
- When I access this database from my main application (the one onto 
which my plugin is installed), my database isn't recognized at all.


 From lurking on this fine forum, I established that I have 3 options here 
 :

1. Work around database cooperation (
http://web2py.com/books/default/chapter/29/04#Cooperation)
2. Use the auto_import=true argument in the DAL
3. Rename the model files that came with my plugin, so all model 
features are available in the global namespace

 So far, *I am unsatisfied with all 3 options*, with a good reason for 
 each of those :

1. Because I have dependencies between tables which makes it very 
difficult to cleanly manage all those imports
2. Because auto_import doesn't manage to retrieve callbacks  
validators, which leaves me with half the work left to do
3. Because it would defeat the purpose of making a plugin in the 
first place


 I'm a mere padawan on this fine community, so if a web2py guru happens to 
 read this thread I would appreciate any tip he could provide to face this 
 issue !


 On Friday, May 23, 2014 2:06:42 PM UTC+2, Louis Amon wrote:

 I am trying to build a big 'plugin component', with a plugin manager and 
 therefore using the full naming conventions specified in the doc.

 My model is starting to be huge (1000+ lines) and I'm trying to split it 
 into multiple files.


 Is there a way to name these files so that web2py still understands that 
 they're part of my plugin ?



-- 
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 web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[web2py] Re: multiple models in a plugin component

2014-06-11 Thread Louis Amon
I found an answer to my own question :
I split my model (plugin_name.py) into multiple files (0_settings.py, 
1_user.py, etc.) and put them all in a folder ./models/plugin_name/

Web2py does detect that all my model files belong to the same plugin and 
packs them together.


*Another problem happens if I do things that way tho :*

I use a database_uri as plugin parameter to define models (tables, fields, 
callbacks, etc.) in my plugin.
When I access this database from appadmin, the tables work fine 
(validators, callback, everything).
When I access this database from my main application (the one onto which my 
plugin is installed), my database isn't recognized at all.

From lurking on this fine forum, I established that I have 3 options here :

   1. Work around database cooperation (
   http://web2py.com/books/default/chapter/29/04#Cooperation)
   2. Use the auto_import=true argument in the DAL
   3. Rename the model files that came with my plugin, so all model 
   features are available in the global namespace

So far, I am unsatisfied with all 3 options, which a good reason for each 
of those :

   1. Because I have dependencies between tables which makes it very 
   difficult to cleanly manage all those imports
   2. Because auto_import doesn't manage to retrieve callbacks  
   validators, which leaves me with half the work left to do
   3. Because it would defeat the purpose of making a plugin in the first 
   place


I'm a mere padawan on this fine community, so if a web2py guru happens to 
read this thread I would appreciate any tip he could provide to face this 
issue !


On Friday, May 23, 2014 2:06:42 PM UTC+2, Louis Amon wrote:

 I am trying to build a big 'plugin component', with a plugin manager and 
 therefore using the full naming conventions specified in the doc.

 My model is starting to be huge (1000+ lines) and I'm trying to split it 
 into multiple files.


 Is there a way to name these files so that web2py still understands that 
 they're part of my plugin ?


-- 
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 web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.