Let me double check to make sure:

this behavior -  non-argumented controllers being exposed / accessible from
a client - is not (only) t2; this is general web2py behavior,

correct?

On Thu, Jan 8, 2009 at 1:15 PM, Yarko Tymciurak <yark...@gmail.com> wrote:

> yep - after reading that thread Robin pointed to at the head of this
> thread,  the space behavior definitely looks like an expedient hack...
>
> and reading the response from Massimo there:
> "If you have
> function that does not take *arguments* and you still don't want to
> expose it you can also use a trick..."
>
> I'm with Robin - forget the "tricks" and be explicit... but, as I
> suspected, the usual intent is expose no-argument controllers, so the
> exceptional case calls for a decorator, a better name than I originally
> posted:
>
> @not_exposed
> def  myfunc():
>   #blah, blah, ...
>
>
>
>
> On Thu, Jan 8, 2009 at 10:55 AM, Robin B <robi...@gmail.com> wrote:
>
>>
>> Massimo,
>>
>> > Not sure I undestand. This goes in a module? not a model?
>>
>> The example shows that it can go in either or both.
>>
>> You could put it in a module and then import it into a controller to
>> import actions into one specific controller.  You could put it in a
>> model to add an action to all controllers.
>>
>> The first time a controller is requested, the controller is exec'ed,
>> the resulting environment is searched for functions of no args that
>> have the specific attr that was set by the decorator, these actions
>> are merged with the actions found with the regex.  All the possible
>> controller_action.pyc is compiled and stored like usual, now you can
>> call actions that were created in the models or imported from a module
>> (crud, resources, admin, stats etc).
>>
>> Robin
>>
>> On Jan 8, 7:20 am, mdipierro <mdipie...@cs.depaul.edu> wrote:
>> > Not sure I undestand. This goes in a module? not a model?
>> >
>> > On Jan 8, 12:03 am, Robin B <robi...@gmail.com> wrote:
>> >
>> > > Controller functions taking arguments, or functions with an extra
>> > > space like def index (): are hidden:
>> >
>> > >http://groups.google.com/group/web2py/browse_thread/thread/35c15761dc.
>> ..
>> >
>> > > This is good that you can hide functions somehow, but using only a
>> > > regex to detect controller functions requires people to copy-paste
>> > > common actions into every controller (bad).
>> >
>> > > Could a controller be loaded, and its symbols that are functions
>> > > checked for a tag (attribute) indicating that they are also exposed.
>> > > This way you can import actions/functions in the models and in the
>> > > individual controllers.
>> >
>> > > Proposal: continue to use the regex for backwards compatibility, but
>> > > also expose functions that are explicitly tagged as exposed by some
>> > > decorator.
>> >
>> > > Examples:
>> >
>> > > # in models/0.py
>> > > @T2.decorators.expose
>> > > def stats():
>> > >   return 'stats'
>> >
>> > > # in modules/crud.py
>> > > @T2.decorators.expose
>> > > def update():
>> > >   return 'update'
>> >
>> > > # in controllers/posts.py
>> > > from modules.crud import *
>> >
>> > > It would be fully backwards compatible!
>> >
>> > > Feedback?
>> >
>> > > Robin
>> >>
>>
>

--~--~---------~--~----~------------~-------~--~----~
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