本文整理匯總了Python中rpc.RPCProxy.write方法的典型用法代碼示例。如果您正苦於以下問題:Python RPCProxy.write方法的具體用法?Python RPCProxy.write怎麽用?Python RPCProxy.write使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類rpc.RPCProxy
的用法示例。
在下文中一共展示了RPCProxy.write方法的2個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: ModelRecord
# 需要導入模塊: from rpc import RPCProxy [as 別名]
# 或者: from rpc.RPCProxy import write [as 別名]
class ModelRecord(signal_event.signal_event):
def __init__(self, resource, id, group=None, parent=None, new=False, list_parent=None):
super(ModelRecord, self).__init__()
self.resource = str(resource)
self.rpc = RPCProxy(self.resource)
self.id = id
self.list_parent = list_parent
self._loaded = False
self.parent = parent
self.mgroup = group
self.value = {}
self.state_attrs = {}
self.modified = False
self.modified_fields = {}
self.pager_cache = {}
self.is_m2m_modified = False
self._concurrency_check_data = False
for key, val in self.mgroup.mfields.items():
self.value[key] = val.create(self)
if (new and val.attrs['type']=='one2many') and (val.attrs.get('mode', 'tree,form').startswith('form')):
mod = self.value[key].model_new()
self.value[key].model_add(mod)
def __getitem__(self, name):
return self.mgroup.mfields.get(name, False)
def __repr__(self):
return '<ModelRecord %[email protected]%s>' % (self.id, self.resource)
def is_modified(self):
return self.modified
def is_wizard(self):
return self.mgroup.is_wizard
def fields_get(self):
return self.mgroup.mfields
def _check_load(self):
if not self._loaded:
self.reload()
return True
return False
def update_context_with_concurrency(self, context):
if self.id and self.is_modified():
context.setdefault(CONCURRENCY_CHECK_FIELD, {})["%s,%s" % (self.resource, self.id)] = self._concurrency_check_data
for name, field in self.mgroup.mfields.items():
if isinstance(field, O2MField):
v = self.value[field.name]
from itertools import chain
for m in chain(v.models, v.models_removed):
m.update_context_with_concurrency(context)
def get(self, get_readonly=True, includeid=False, check_load=True, get_modifiedonly=False):
if check_load:
self._check_load()
value = []
for name, field in self.mgroup.mfields.items():
if (get_readonly or not field.get_state_attrs(self).get('readonly', False)) \
and (not get_modifiedonly or (field.name in self.modified_fields or isinstance(field, O2MField))):
value.append((name, field.get(self, readonly=get_readonly,
modified=get_modifiedonly)))
value = dict(value)
if includeid:
value['id'] = self.id
return value
def cancel(self):
self._loaded = False
self.reload()
def failed_validation(self):
invalid_fields = self.rpc.get_invalid_fields()
for item in invalid_fields:
if item in self.mgroup.mfields:
self.mgroup.mfields[item].get_state_attrs(self)['valid'] = False
def save(self, reload=True):
self._check_load()
try:
if not self.id:
value = self.get(get_readonly=False)
self.id = self.rpc.create(value, self.context_get())
else:
if not self.is_modified():
return self.id
value = self.get(get_readonly=False, get_modifiedonly=True)
context = self.context_get().copy()
self.update_context_with_concurrency(context)
res = self.rpc.write([self.id], value, context)
if type(res)==type({}):
obj = service.LocalService('action.main')
obj._exec_action(res,{}, context)
except Exception, e:
if hasattr(e, 'faultCode') and e.faultCode.find('ValidateError')>-1:
self.failed_validation()
return False
pass
#.........這裏部分代碼省略.........
示例2: ModelRecord
# 需要導入模塊: from rpc import RPCProxy [as 別名]
# 或者: from rpc.RPCProxy import write [as 別名]
class ModelRecord(signal_event.signal_event):
def __init__(self, resource, id, group=None, parent=None, new=False ):
super(ModelRecord, self).__init__()
self.resource = str(resource)
self.rpc = RPCProxy(self.resource)
self.id = id
self._loaded = False
self.parent = parent
self.mgroup = group
self.value = {}
self.state_attrs = {}
self.modified = False
self.modified_fields = {}
self._concurrency_check_data = False
for key,val in self.mgroup.mfields.items():
self.value[key] = val.create(self)
if (new and val.attrs['type']=='one2many') and (val.attrs.get('mode','tree,form').startswith('form')):
mod = self.value[key].model_new()
self.value[key].model_add(mod)
def __getitem__(self, name):
return self.mgroup.mfields.get(name, False)
def __repr__(self):
return '<ModelRecord %[email protected]%s>' % (self.id, self.resource)
def is_modified(self):
return self.modified
def is_wizard(self):
return self.mgroup.is_wizard
def fields_get(self):
return self.mgroup.mfields
def _check_load(self):
if not self._loaded:
self.reload()
return True
return False
def update_context_with_concurrency_check_data(self, context):
if self.id and self.is_modified():
context.setdefault(CONCURRENCY_CHECK_FIELD, {})["%s,%d" % (self.resource, self.id)] = self._concurrency_check_data
for name, field in self.mgroup.mfields.items():
if isinstance(field, O2MField):
if field.name not in self.value.keys():
continue
v = self.value[field.name]
from itertools import chain
for m in chain(v.models, v.models_removed):
m.update_context_with_concurrency_check_data(context)
def get(self, get_readonly=True, includeid=False, check_load=True, get_modifiedonly=False):
if check_load:
self._check_load()
value = []
for name, field in self.mgroup.mfields.items():
if (get_readonly or not field.get_state_attrs(self).get('readonly', False)) \
and (not get_modifiedonly or (field.name in self.modified_fields or isinstance(field, O2MField))):
value.append((name, field.get(self, readonly=get_readonly,
modified=get_modifiedonly)))
value = dict(value)
if includeid:
value['id'] = self.id
return value
def cancel(self):
self._loaded = False
self.reload()
def failed_validation(self):
invalid_fields = self.rpc.get_invalid_fields()
for item in invalid_fields:
if item in self.mgroup.mfields:
self.mgroup.mfields[item].get_state_attrs(self)['valid'] = False
def save(self, reload=True):
self._check_load()
if not self.id:
value = self.get(get_readonly=False)
self.id = self.rpc.create(value, self.context_get())
if not self.id:
self.failed_validation()
else:
if not self.is_modified():
return self.id
value = self.get(get_readonly=False, get_modifiedonly=True)
context = self.context_get().copy()
self.update_context_with_concurrency_check_data(context)
if not self.rpc.write([self.id], value, context):
self.failed_validation()
return False
self._loaded = False
if reload:
self.reload()
else:
# just reload the CONCURRENCY_CHECK_FIELD
#.........這裏部分代碼省略.........