Try:
define_table('identity_card'
,Field('person', 'reference auth_user')
,Field('id_type', 'reference valid_id')
,Field('id_number','string',requires=CRYPT()
,Field('id_prefix',default=str(request.vars.id_number)[:
4])
)
On May 5, 6:50 am, niknok <[email protected]> wrote:
> I have SSNs in a table as text strings. I'm planning to use CRYPT() on
> the web2py app fields that will store these SSNs.
>
> define_table('identity_card'
> ,Field('person', 'reference auth_user')
> ,Field('id_type', 'reference valid_id')
> ,Field('id_number','string',requires=CRYPT()
> ,Field('id_prefix',compute=lambda r: r['id_number'][:4])
> )
>
> The 'id_prefix' field is for human users facilitating person
> verification, without having to ask for the full id number. As it is,
> the id_prefix will take the first 4 chars of the hashed id number, and
> not the original string. Right now I use a custom form that takes in the
> id_number, without encryption, take the id_prefix, then encrypt the
> id_number and finally do a manual insert into the database.
>
> Is there a way to get the prefix characters before encryption without a
> custom form?