I'm new to python and web2py, so this might sound crazy but...here
goes.

Noob idea #1
Why not provide an optional "exec_models.cfg" file?  If it doesn't
exist, execute *.py files in alphabetical order found in the models
folder.

This will maintain backward compatibility and give web2py more
flexibility.

If exec_models.cfg exists, then exec the files in the order specified
inside exec_models.cfg.  If you want to get fancy, allow wildcards,
etc.  Even better, you can also use exec_models.py or exec_models.yaml
instead of simple config.

Noob idea #2
Provide web2py's version of python's "import" function.  Call it
"require(somefile.py)" and provide some web2py convention for
somefile.py to follow.  That way, you can have require() detect and
decide what to do if somefile.py was already executed.  Ruby has
"require" and rubygems added their own "require_gem()" function which
might provide useful ideas so you don't have to reinvent the wheel.

It is late, and these are ideas that surfaced in the mind of a python
and web2py noob.  If you must laugh, do so with compassion.  In the
meantime, I'll try to read at least one python book by next Monday.
Think Python is free online and looks like a quick one.

On Jun 9, 9:32 pm, mdipierro <mdipie...@cs.depaul.edu> wrote:
> My approach is to use
>
> db_blablabla1.py
> db_blablabla2.py
> db_blablabla3.py
> ....
>
> where db_blablabla.py defiles all tables that link each other for a
> specific purpose. The different files are independent and therefore
> the order of execution is not important.
>
> On Jun 9, 9:20 pm, Thadeus Burgess <thade...@thadeusb.com> wrote:
>
>
>
> > There are some things you can do to alleviate the situation.
>
> > First, you can name you models so that they execute in the correct order.
>
> > A_db.py
> > B_user.py
> > C_post.py
> > E_tag.py
>
> > That said, I usually try to keep all related models in the same file.
> > In your case you might have
>
> > B_user.py
> > C_weblog.py
>
> > Since post and tag both belong to the same logical set of tables,
> > stick them together in one file. For objects, I also might subset it
> > simpler such as
>
> > C_weblog.py
> > C_weblog_objects.py # contains virtualfield definitions.
>
> > --
> > Thadeus
>
> > On Wed, Jun 9, 2010 at 4:42 PM, mdipierro <mdipie...@cs.depaul.edu> wrote:
> > > No. This the main issue with web2py design. This is the price we pay
> > > for not having imports of models.
>
> > > On Jun 9, 4:21 pm, Binh <btbinht...@gmail.com> wrote:
> > >> Hi,
>
> > >> I am trying to create an orm setup like in ruby on rails with the DAL.
> > >> I have a user, post, and tag model.
> > >> A user has many posts.
> > >> A tag belongs to a user.
> > >> A post has and belongs to many tags.
> > >> A tag has and belongs to many posts.
>
> > >> I have 4 separate files in my models folder: db.py, user.py, post.py,
> > >> and tag.py
> > >> db.py contains the db connection and mail configurations.
> > >> The respective model files define the table structure and have a class
> > >> named after the model to implement virtual fields.
>
> > >> I noticed that defining the tables with relationships in the separate
> > >> files does not work properly.
> > >> The model files would load which appears to be in alphabetical order.
> > >> So, my db.py would load first and then post.py which fails.
> > >> post.py fails to recognize the table definition in user.py, so it
> > >> cannot define the belongs to relationship.
>
> > >> Is their anyway to setup a model file to import all the other models
> > >> without the hassle of file load order and possibly import order which
> > >> rails does implicitly?

Reply via email to