How do you organize the forms iain ?  I mean I have probably 30+ forms
with 10+ controller classes.  You just put all the forms in one file ?
 Don't the names clash ?  Or do you have some sort of alternate
organization?

-Ian

On 11/14/06, Ian Wilson <[EMAIL PROTECTED]> wrote:
> Just another idea I am not sure what you are looking for but why don't
> you just put the form in the class but not in the index method like
> this:
>
> class Root(...):
>     insert_form = TableForm(....)
>
>     @expose()
>     def index(self, ...)
>         ....
>         return dict(form = self.insert_form)
>
>     @expost()
>     @validate(form=insert_form)
>      def insert(self, ...)
>           ....
>
> This way the form is still only created once so you don't waste
> memory/time creating it every time but it isn't floating around
> outside the class polluting your namespace.
>
> -Ian
>
> On 11/14/06, miya <[EMAIL PROTECTED]> wrote:
> >
> >
> >
> > On Nov 14, 11:58 am, "Aaron Bostick" <[EMAIL PROTECTED]>
> > wrote:
> > > Miya,
> > >
> > > It can be done like this:
> > >
> > >         if tg_errors:
> > >             cherrypy.request.validated_form = form
> > >
> > > Just put the above in your error handling controller method, which
> > > should be the same method that defines and creates the form.
> > >
> > > Regards,
> > > Aaron
> >
> > Hi Aaron! I tried what you posted, but it doesn't work. I don't know
> > what to do with de @validate tag of the "action method". May be I'm
> > doing sth. wrong...
> > Here is the code...
> >
> > //
> > ------------------------------------------------------------------------------------
> >
> > import logging
> >
> > import cherrypy
> >
> > import turbogears
> > from turbogears import controllers, expose, validate, redirect
> > from turbogears import identity
> > from turbogears import widgets, validators as v, error_handler
> >
> > from intranet import json
> >
> > from intranet.models.agenda.User import User as dbUser
> >
> > log = logging.getLogger("intranet.controllers")
> >
> >
> > class userNameExists(v.UnicodeString):
> >         def validate_python(self, user_name, state = None):
> >                 try:
> >                         dbUser.by_user_name(user_name)
> >                         raise v.Invalid("El usuario ya existe" , user_name, 
> > state)
> >                 except LookupError:
> >                         pass
> >
> > class RegisterFields(widgets.WidgetsList):
> >         user_name = widgets.TextField(
> >                         name = 'user_name',
> >                         label = 'Nombre',
> >                         attrs={'size': 32, 'maxlength': 255},
> >                         validator=v.All(v.NotEmpty, userNameExists))
> >         user_surname = widgets.TextField(
> >                         name = 'user_surname',
> >                         label = 'Apellido',
> >                         attrs={'size': 32, 'maxlength': 255},
> >                         validator=v.All(v.NotEmpty, v.UnicodeString ))
> >         email_address = widgets.TextField(
> >                                 name='email_address', label='Correo 
> > electronico',
> >                                 attrs={'size': 32, 'maxlength': 64},
> >                                 validator=v.All(v.NotEmpty, v.Email))
> >         display_name =  widgets.TextField(
> >                                 name = 'display_name',
> >                                 label = 'Nick',
> >                                 attrs={'size': 32, 'maxlength': 255},
> >                                 validator=v.All(v.NotEmpty, 
> > v.UnicodeString))
> >         password = widgets.PasswordField(
> >                         name = 'password',
> >                         label = 'Contrasena',
> >                         attrs={'size': 32, 'maxlength': 255},
> >                         validator=v.All(v.NotEmpty, v.UnicodeString ))
> >         passwordDuplicate = widgets.PasswordField(
> >                                 name = 'passwordDuplicate',
> >                                 label = 'Verificacion contrasena',
> >                                 attrs={'size': 32, 'maxlength': 255},
> >                                 validator=v.All(v.NotEmpty, 
> > v.UnicodeString))
> >         submit_text = "Ingresar usuario"
> >
> >
> >
> > class User(controllers.Controller):
> >
> >         @expose(template='intranet.templates.agenda.insertUser')
> >         def insertUser(self, tg_errors = None):
> >                 if tg_errors:
> >                           cherrypy.request.validated_form = insert_user_form
> >
> >                 insert_user_form= widgets.TableForm(fields=RegisterFields(),
> >                                 validator = 
> > v.Schema(chained_validators=[v.FieldsMatch("password",
> > "passwordDuplicate")]))
> >                 return dict(user_form = insert_user_form,
> >                         submit_text = 'Ingresar usuario',
> >                         method = 'post',
> >                         action = 'insertado')
> >         @expose()
> >         def index(self):
> >                 return '''
> >                         <h1>hola</h1>
> >                         '''
> >
> >         @error_handler(insertUser)
> >         @validate(form = insert_user_form)  <------- What do I do with this?
> >         @expose()
> >         def insertado(self,user_name, email_address, display_name,
> > user_surname, password, passwordDuplicate,tg_errors = None):
> >                 dbUser(user_name = user_name,
> >                         email_address = email_address,
> >                         display_name = display_name,
> >                         user_surname = user_surname,
> >                         password = password)
> >
> >                 return '''
> >                         <h1>user inserted</h1>
> >                         '''
> >
> >         @expose()
> >         def default(self):
> >                 return '''
> >                         <h1>hola</h1>
> >                         '''
> > //
> > ------------------------------------------------------------------------------------
> >
> > If I comment the @validate tag, of course it doesn't validate...( lol )
> > Sooo... I'm kinda lost with your advice. What should I do?
> >
> > Thanks a lot.
> >
> > --
> > miya
> >
> >
> > > >
> >
>

--~--~---------~--~----~------------~-------~--~----~
 You received this message because you are subscribed to the Google Groups 
"TurboGears" 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/turbogears?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to