|
Scott Chapman
scott_list at mischko.com
Thu Oct 5 16:39:30 EDT 2006
Here's a more dictionary oriented version of Julien's idea:
class FormDict(dict):
'''This is a special dict that checks items as they are assigned.
It would be useful for web form submissions, etc.
At dict creation, errors are accumulated, if any, and sent back as a
group.'''
def __init__(self,**dictparms):
self.__valid_keys = ('id',)
errors = []
for key in dictparms:
try:
self.__setitem__(key, dictparms[key])
except RuntimeError,e:
errors.append(str(e))
if errors:
raise RuntimeError(errors)
def __setitem__(self, key, value):
if not key in self.__valid_keys:
raise RuntimeError, "Invalid Key: %s" % key
if key =='id':
try:
mvalue = int(value)
except:
raise RuntimeError, "Invalid ID: %s" % mvalue
if mvalue <= 0:
raise RuntimeError, "Invalid ID: %s" % mvalue
super(FormDict, self).__setitem__(key, mvalue)
try:
md = FormDict(id=1,name='bill',address='123 any street')
except RuntimeError, e:
error_list = list(e[0])
for error in error_list:
print error
Julien Cigar wrote:
> Hello,
>
> What I ususally do is a Model object with properties, something like
> this: http://rafb.net/paste/results/LwMH9m76.html
> Then in my Controller I have a method to parse the form, something like :
>
> def parse_form(self, themodelobject) :
> errors = []
> for col in themodelobject.columns:
> try:
> setattr(themodelobject, col, self.params.get[col])
> except Exception, e:
> errors.append(str(e))
> return errors
>
> def add(self):
> errors = parse_form(myModel())
> if not errors:
> ...
> else:
> ...
>
> (it's a basic and limited example, but it show you the principle)
>
> Julien
>
> durumdara wrote:
>> Hi !
>>
>> Do you knows about a Form handler component (module, class, unit,
>> package, etc.) that can uniformize the form handling on the web ?
>>
>> The html form handling forces me to I repeat some of the codes in many
>> modules.
>>
>> Example:
>> 1. Init
>> 2. Get inputs
>> 3. Validating inputs: check field names, data types, I need to open
>> queries to see that actual data is valid (and existing), require all
>> the fields I need to make the next step, convert data from text to any
>> type, protect fields from SQL injection, etc.
>> 3. Make operation (insert, update, delete, or select)
>> 4. Show the results, build the result table and/or the form again.
>>
>> These steps are repeating modules by modules...
>>
>> Do you heard about something like this, or I need to write this
>> component ?
>>
>> Thanks for your help:
>> dd
>>
>>
>>
>> _______________________________________________
>> Mod_python mailing list
>> Mod_python at modpython.org
>> http://mailman.modpython.org/mailman/listinfo/mod_python
>
>
|