Mind that models are called in alphabetic order. I call my settings
file

0_database.py
0_googlemaps.py
0_etcetc.py
0_private.py (stuff that I do not want to go under version control)

Massimo



On Feb 9, 1:54 pm, Timothy Farrell <tfarr...@swgen.com> wrote:
> I just looked at your code.  If you're going application-wide.  Why not
> just put "response.menu = _menu()" in the model file.  That way you
> won't have to call it in the controller.
>
> Here's an unrelated Python performance tip...try to avoid using
> for-loops for building a list.  The list.append() method is somewhat
> expensive.  Instead we use something called a list-comprehension.  Your
> code would look like this as a list-comprehension:
>
> def _menu():
>     """
>     Return the menu as a list of lists where each element
>     takes the form of [strLinkText, boolIsActiveLink, strLinkUrl]
>     """
>     m = [[text, URL(r=request) == url, url] for text, url in MENU]
>     return m
>
> For small loops (such as this one), no one will notice much difference,
> but it's good to know this for large loops or for areas that just need
> to run really fast.  Also faster code uses less energy and therefore
> does more to save the planet from Republicans.  <g>
>
> -tim
>
>
>
> Timothy Farrell wrote:
> > Welcome to Python and web2py!
>
> > There are two ways of looking at this issue.
>
> > 1) "Model" refers to execution model upon which the controller is run
> > and view is rendered.  In this view, it is entirely acceptable to put
> > these application-global things in a model file.
>
> > 2) "Model" refers to data model.  In this view, anything other than data
> > descriptions contained in a model file is a violation of MVC.  This is
> > the view of MVC purists.
>
> > I hold view #2.  However, for those of us who hold view #2, web2py
> > offers no easy way to have application-wide settings without violating
> > our MVC convictions.  I have reconciled my convictions by creating a
> > separate "model" file called "settings.py" placed all my execution model
> > stuff in that.  Thereby sort of maintaining my view of MVC separation
> > and still having easy access to application-wide settings.
>
> > I sacrifice a white lamb to the MVC god every month until there is a
> > better solution.
>
> > =)
>
> > -tim
>
> > hcvst wrote:
>
> >> Hi,
>
> >> thanks for the new release and all the effort you put in. Even if I am
> >> new to web2py and not a seasoned Python programmer yet, the release
> >> notes sound  very promising and I look forward to experimenting
> >> further.
>
> >> My question:
>
> >> Model files seem such a convenient location to place functionality
> >> that is common across controllers, though I suspect that it is bad
> >> style to do so.
>
> >> For example to create a model file called helper.py with the following
> >> contents:
>
> >> ----------------------------------------------------------------------------------------
> >> ## Global Configuration
> >> # Primary navigation menu
> >> MENU = [["Home",  URL(r=request, c="default", f="index")],
> >>         ["Forum", URL(r=request, c="forum",   f="index")],
> >>         ["Test", "http://test";]]
>
> >> ## Helper functions
> >> def _menu():
> >>     """
> >>     Return the menu as a list of lists where each element
> >>     takes the form of [strLinkText, boolIsActiveLink, strLinkUrl]
> >>     """
> >>     m = []
> >>     for text, url in MENU:
> >>         m.append([text, URL(r=request) == url, url]);
> >>     return m
> >> ----------------------------------------------------------------------------------------
>
> >> This enables me to call from every controller function:
>
> >> response.menu = _menu()
>
> >> Just the fact that response is in global scope  here is very
> >> convenient. However I do not want to violate the MCV pattern, unless
> >> it is acceptable here. Moving this logic into a separate module is
> >> akward, as one has to move varibles back and forth and needs to
> >> restart web2py every so often for changes to the module to take
> >> effect.
>
> >> What is best practice, when it comes to sharing code across
> >> controllers please?
>
> >> Best regards,
> >> HC
>
> --
> Timothy Farrell <tfarr...@swgen.com>
> Computer Guy
> Statewide General Insurance Agency (www.swgen.com)
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py Web Framework" group.
To post to this group, send email to web2py@googlegroups.com
To unsubscribe from this group, send email to 
web2py+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to