hehe... I think Robin should send Robin's proposals ;-) On Thu, Jan 8, 2009 at 3:42 PM, Timothy Farrell <[email protected]> wrote:
> > Dude...wait, what? > > what proposal? > > mdipierro wrote: > > Me too but I need more time to look into details... today is not the > > optimal day. Tim, could you email me your proposals so that it does > > not get list in the list? > > > > Massimo > > > > On Jan 8, 2:54 pm, "Yarko Tymciurak" <[email protected]> wrote: > > > >> Yep, Robin - saw your other post on this.... I'm liking the direction > this > >> is going... thanks! > >> Yarko > >> > >> On Thu, Jan 8, 2009 at 1:36 PM, Robin B <[email protected]> wrote: > >> > >> > >>> Very true. This is more general than t2, I just dislike adding so > >>> many symbols to the global namespace, so this could be added to a > >>> helpers.* object if it existed. > >>> > >>> The reason for this proposal is that currently you cannot import > >>> actions easily: > >>> > >>> # in controllers/default.py > >>> from modules.crud import create > >>> > >>> The create action will not be found because actions are currently > >>> found with a regex. > >>> > >>> Robin > >>> > >>> On Jan 8, 1:19 pm, "Yarko Tymciurak" <[email protected]> wrote: > >>> > >>>> 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 <[email protected]> > >>>> > >>> 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 <[email protected]> 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 <[email protected]> wrote: > >>>>>> > >>>>>>> Not sure I undestand. This goes in a module? not a model? > >>>>>>> > >>>>>>> On Jan 8, 12:03 am, Robin B <[email protected]> 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 > >>>>>>>> > > > > > > > -- > Timothy Farrell <[email protected]> > 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 [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/web2py?hl=en -~----------~----~----~----~------~----~------~--~---

