Thank you!
On Wednesday, December 19, 2012 7:04:03 PM UTC-5, Massimo Di Pierro wrote:
>
> Here is a custom validator that replaces '-' with '_'
>
> class MyValidator(obejct):
> def __call__(self,value):
> return (value.replace('-','_'), None)
>
> Field(..., requires=MyValidator()...)
>
> On Wednesday, 19 December 2012 16:54:21 UTC-6, wwwgong wrote:
>>
>> I thought validator only validates, can you show me how to update field
>> with the sanitized value.
>> Thanks,
>>
>> On Wednesday, December 19, 2012 9:57:48 AM UTC-5, viniciusban wrote:
>>>
>>> Try a custom validator to sanitize your description field.
>>>
>>>
>>> On Wed, Dec 19, 2012 at 12:06 PM, wwwgong <[email protected]> wrote:
>>> > Hi,
>>> > I like to store youtube videos into a table:
>>> >
>>> > db.define_table('youtube',
>>> > Field('code'),
>>> > Field('description')
>>> > )
>>> >
>>> > def youtube_repr(code,width=400,height=250):
>>> > return XML("""
>>> > <object width="%(width)s" height="%(height)s">
>>> > <param name="movie"
>>> > value="http://www.youtube.com/v/%(code)s&hl=en_US&fs=1&"></param>
>>> > <param name="allowFullScreen" value="true"></param>
>>> > <param name="allowscriptaccess" value="always"></param>
>>> > <embed src="http://www.youtube.com/v/%(code)s&hl=en_US&fs=1&"
>>> > type="application/x-shockwave-flash"
>>> allowscriptaccess="always"
>>> > allowfullscreen="true" width="%(width)s"
>>> > height="%(height)s"></embed>
>>> > </object>""" % dict(code=code, width=width, height=height)
>>> > )
>>> >
>>> > db.youtube.code.represent = youtube_repr
>>> >
>>> > with this controller:
>>> > def youtube_video():
>>> > form = SQLFORM.grid(db.youtube)
>>> > return dict(form=form)
>>> >
>>> > If the "description" field contains double quote char {"}, it will
>>> messes
>>> > up,
>>> > see screenshot at
>>> > http://dl.dropbox.com/u/54552252/cleanse-web2py-field-value.jpg
>>> >
>>> > I know web2py offers custom validator to detect special char in Form
>>> field,
>>> > but is it possible to attach a pre-process function at DAL layer to
>>> cleanse
>>> > field value before db operation?
>>> >
>>> > Something like:
>>> >
>>> > db.youtube.description.preprocess = cleanse_special_char
>>> >
>>> > where "cleanse_special_char" is a function to cleanse
>>> db.youtube.description
>>> > field value
>>> >
>>> > Can someone offer a solution or workaround?
>>> >
>>> > Thanks,
>>> > Wen
>>> >
>>> >
>>> > --
>>> >
>>> >
>>> >
>>>
>>
--