50 lines
1.1 KiB
Python
50 lines
1.1 KiB
Python
from simplelog import log
|
|
|
|
from hserver.api.WebCallable import WebCallable
|
|
|
|
class FADescription:
|
|
|
|
def __init__(self, name, formName = None):
|
|
if formName is None:
|
|
formName = name
|
|
|
|
self.__name = name
|
|
self.__formName = formName
|
|
|
|
class FormApplyable:
|
|
|
|
FA_Names = {}
|
|
|
|
def formApply(self,request,o):
|
|
fa_names = self.__collectNames()
|
|
|
|
for name in fa_names:
|
|
fa_attr = fa_names[ name ]
|
|
if fa_attr in request.form():
|
|
oval = getattr( self, name, None)
|
|
|
|
log("formApply(): {3} {0} = {1} : {2}".format( name, oval, request.form()[ fa_attr ].value(), o ))
|
|
|
|
if callable( oval ):
|
|
log("call-intf")
|
|
oval( request.form()[ fa_attr ].value() )
|
|
else:
|
|
setattr( self, name, request.form()[ fa_attr ].value() )
|
|
|
|
|
|
def __collectNames(self):
|
|
fa_names = {}
|
|
bases = (self.__class__,) + self.__class__.__bases__
|
|
|
|
for base in bases:
|
|
if hasattr(base, "FA_Names"):
|
|
fa_names.update( base.FA_Names )
|
|
|
|
log("FormApplyable: collectNames(): {0}".format( fa_names ))
|
|
return fa_names
|
|
|
|
def __apply(self,request, o = None):
|
|
self.formApply(request,o)
|
|
|
|
_hm_apply = WebCallable( method = __apply )
|