That was the problem.
I changed the validator validator = twc.MatchValidator ('email') for
validator = FieldsMatch ('email', 'email2') and it worked perfect
El martes, 29 de abril de 2014 11:42:46 UTC-5, Alessandro Molina escribió:
>
> Looks like it might be an issue with twc.MatchValidator.
>
> Try to check the tw2.core versions you have in your development
> environment and on production, they probably differ.
> There has been a recent change in tw2 that fixed i18n in validators, that
> changed how validators that work on other fields work (like MatchValidator)
> and maybe that is related.
>
>
> On Sat, Apr 26, 2014 at 11:23 PM, Antonio Fregoso
> <[email protected]<javascript:>
> > wrote:
>
>> Hi All
>>
>>
>> In development server the validation work excellent but in production
>> send me this error:
>>
>>
>> ---------------------------------------------------------------------------------------------------------------------------------------
>> File "/usr/local/lib/python2.7/dist-packages/tg/wsgiapp.py", line 105,
>> in __call__
>>
>> response = self.wrapped_dispatch(controller, environ, context)
>>
>> File "/usr/local/lib/python2.7/dist-packages/tg/wsgiapp.py", line
>> 278, in dispatch
>>
>> return controller(environ, context)
>>
>> File "/var/www/conference/conference/lib/base.py", line 26, in
>> __call__
>>
>> return TGController.__call__(self, environ, context)
>>
>> File
>> "/usr/local/lib/python2.7/dist-packages/tg/controllers/dispatcher.py", line
>> 123, in __call__
>>
>> response = self._perform_call(context)
>>
>> File
>> "/usr/local/lib/python2.7/dist-packages/tg/controllers/dispatcher.py", line
>> 104, in _perform_call
>>
>> r = self._call(func, params, remainder=remainder, context=context)
>>
>> File
>> "/usr/local/lib/python2.7/dist-packages/tg/controllers/decoratedcontroller.py",
>>
>> line 104, in _call
>>
>> params = self._perform_validate(controller, validate_params)
>>
>> File
>> "/usr/local/lib/python2.7/dist-packages/tg/controllers/decoratedcontroller.py",
>>
>> line 223, in _perform_validate
>>
>> new_params = validation.validators.validate(params, formencode_state)
>>
>> File
>> "/usr/local/lib/python2.7/dist-packages/tw2.core-2.2.1.1-py2.7.egg/tw2/core/widgets.py",
>>
>> line 523, in validate
>>
>> return ins._validate(value, state)
>>
>> File
>> "/usr/local/lib/python2.7/dist-packages/tw2.core-2.2.1.1-py2.7.egg/tw2/core/validation.py",
>>
>> line 106, in wrapper
>>
>> d = fn(self, *args, **kw)
>>
>> File
>> "/usr/local/lib/python2.7/dist-packages/tw2.core-2.2.1.1-py2.7.egg/tw2/core/widgets.py",
>>
>> line 990, in _validate
>>
>> return self.child._validate(value, state)
>>
>> File
>> "/usr/local/lib/python2.7/dist-packages/tw2.core-2.2.1.1-py2.7.egg/tw2/core/validation.py",
>>
>> line 106, in wrapper
>>
>> d = fn(self, *args, **kw)
>>
>> File
>> "/usr/local/lib/python2.7/dist-packages/tw2.core-2.2.1.1-py2.7.egg/tw2/core/widgets.py",
>>
>> line 681, in _validate
>>
>> val = c._validate(d, state)
>>
>> File
>> "/usr/local/lib/python2.7/dist-packages/tw2.core-2.2.1.1-py2.7.egg/tw2/core/validation.py",
>>
>> line 106, in wrapper
>>
>> d = fn(self, *args, **kw)
>>
>> File
>> "/usr/local/lib/python2.7/dist-packages/tw2.core-2.2.1.1-py2.7.egg/tw2/core/widgets.py",
>>
>> line 536, in _validate
>>
>> value = self.validator.to_python(value, state)
>>
>> File
>> "/usr/local/lib/python2.7/dist-packages/tw2.core-2.2.1.1-py2.7.egg/tw2/core/validation.py",
>>
>> line 231, in to_python
>>
>> self._validate_python(value, state)
>>
>> File
>> "/usr/local/lib/python2.7/dist-packages/tw2.core-2.2.1.1-py2.7.egg/tw2/core/validation.py",
>>
>> line 619, in _validate_python
>>
>> if self.other_field not in state or value != state[self.other_field]:
>>
>> TypeError: argument of type 'type' is not iterable
>>
>> --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>>
>> This is my form:
>>
>> class LeadForm(twf.Form):
>> class child(twf.ListLayout):
>> hover_help = True
>> name=twf.TextField(label=u'Nombre:', css_class='FormField',
>> validator=twc.Required)
>> partner=twf.TextField(label=u'Empresa:', css_class='FormField',
>> validator=twc.Required)
>> phone=twf.TextField(label=u'Teléfono:', css_class='FormField',
>> validator=twc.Required)
>> email=twf.TextField(label=u'Correo:', css_class='FormField',
>> validator=twc.EmailValidator)
>> email2=twf.TextField(label=u'Confirmar Correo:',
>> css_class='FormField', validator=twc.MatchValidator('email'))
>> channel=twf.HiddenField()
>> campaign=twf.HiddenField()
>> action=lurl('/lpthanks')
>> buttons=[twf.SubmitButton('send',value = u'Solicite mas Información',
>> css_class='FormButton')]
>>
>> This is my controler:
>>
>> @expose('conference.templates.contact')
>> def contact(self,channel='Organic',tp=1, *args,**kw):
>> keys={'channel':channel}
>> keys['sector']=tp
>> InfoForm.action= lurl('/thanks')
>> return dict(form=InfoForm, keys=keys)
>>
>> @expose('conference.templates.thanks')
>> @validate(InfoForm, error_handler=contact)
>> def thanks(self, *args, **kw):
>> """Handle list of landing page."""
>>
>> return dict(data=kw)
>>
>>
>> The strange thing is that it works perfectly on the development server,
>> not on production. :-(
>>
>> Thanks for your help
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "TurboGears" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected] <javascript:>.
>> To post to this group, send email to [email protected]<javascript:>
>> .
>> Visit this group at http://groups.google.com/group/turbogears.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>
--
You received this message because you are subscribed to the Google Groups
"TurboGears" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/turbogears.
For more options, visit https://groups.google.com/d/optout.