本文整理汇总了Python中sqlalchemy.util.OrderedDict.itervalues方法的典型用法代码示例。如果您正苦于以下问题:Python OrderedDict.itervalues方法的具体用法?Python OrderedDict.itervalues怎么用?Python OrderedDict.itervalues使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类sqlalchemy.util.OrderedDict
的用法示例。
在下文中一共展示了OrderedDict.itervalues方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: FieldSet
# 需要导入模块: from sqlalchemy.util import OrderedDict [as 别名]
# 或者: from sqlalchemy.util.OrderedDict import itervalues [as 别名]
class FieldSet(BaseFieldSet):
def __init__(self, model, session=None, data=None, prefix=None):
self._fields = OrderedDict()
self._render_fields = OrderedDict()
self.model = self.session = None
BaseFieldSet.rebind(self, model, data=data)
self.prefix = prefix
self.model = model
self.readonly = False
self.focus = True
self._errors = []
focus = True
for k, v in model().iteritems():
if not k.startswith('_'):
try:
t = getattr(fatypes, v.__class__.__name__.replace('Property',''))
except AttributeError:
raise NotImplementedError('%s is not mapped to a type' % v.__class__)
else:
self.add(Field(name=k, type=t))
if v.required:
self._fields[k].validators.append(validators.required)
def bind(self, model, session=None, data=None):
"""Bind to an instance"""
if not (model or session or data):
raise Exception('must specify at least one of {model, session, data}')
if not model:
if not self.model:
raise Exception('model must be specified when none is already set')
model = fields._pk(self.model) is None and type(self.model) or self.model
# copy.copy causes a stacktrace on python 2.5.2/OSX + pylons. unable to reproduce w/ simpler sample.
mr = object.__new__(self.__class__)
mr.__dict__ = dict(self.__dict__)
# two steps so bind's error checking can work
mr.rebind(model, session, data)
mr._fields = OrderedDict([(key, renderer.bind(mr)) for key, renderer in self._fields.iteritems()])
if self._render_fields:
mr._render_fields = OrderedDict([(field.key, field) for field in
[field.bind(mr) for field in self._render_fields.itervalues()]])
return mr
def rebind(self, model, session=None, data=None):
if model:
if isinstance(model, type):
try:
model = model()
except:
raise Exception('%s appears to be a class, not an instance, but FormAlchemy cannot instantiate it. (Make sure all constructor parameters are optional!)' % model)
self.model = model
self._bound_pk = model._doc.get('_id', None)
if data is None:
self.data = None
elif hasattr(data, 'getall') and hasattr(data, 'getone'):
self.data = data
else:
try:
self.data = SimpleMultiDict(data)
except:
raise Exception('unsupported data object %s. currently only dicts and Paste multidicts are supported' % self.data)
示例2: FieldSet
# 需要导入模块: from sqlalchemy.util import OrderedDict [as 别名]
# 或者: from sqlalchemy.util.OrderedDict import itervalues [as 别名]
class FieldSet(BaseFieldSet):
def __init__(self, model, session=None, data=None, prefix=None):
self._fields = OrderedDict()
self._render_fields = OrderedDict()
self.model = self.session = None
self.prefix = prefix
self.model = model
self.readonly = False
self.focus = True
self._errors = []
self.iface = model
focus = True
for name, field in schema.getFieldsInOrder(model):
try:
t = FIELDS_MAPPING[field.__class__]
except KeyError:
raise NotImplementedError('%s is not mapped to a type' % field.__class__)
else:
self.add(Field(name=name, type=t))
if field.title:
self._fields[name].label_text = field.title
if field.required:
self._fields[name].validators.append(validators.required)
def bind(self, model, session=None, data=None):
"""Bind to an instance"""
if not (model or session or data):
raise Exception('must specify at least one of {model, session, data}')
if not model:
if not self.model:
raise Exception('model must be specified when none is already set')
model = fields._pk(self.model) is None and type(self.model) or self.model
# copy.copy causes a stacktrace on python 2.5.2/OSX + pylons. unable to reproduce w/ simpler sample.
mr = object.__new__(self.__class__)
mr.__dict__ = dict(self.__dict__)
# two steps so bind's error checking can work
mr.rebind(model, session, data)
mr._fields = OrderedDict([(key, renderer.bind(mr)) for key, renderer in self._fields.iteritems()])
if self._render_fields:
mr._render_fields = OrderedDict([(field.key, field) for field in
[field.bind(mr) for field in self._render_fields.itervalues()]])
return mr
def rebind(self, model, session=None, data=None):
if model:
if not self.iface.providedBy(model):
raise Exception('%r is not provided by %r' % (self.iface, model))
self.model = model
self._bound_pk = None
if data is None:
self.data = None
elif hasattr(data, 'getall') and hasattr(data, 'getone'):
self.data = data
else:
try:
self.data = SimpleMultiDict(data)
except:
raise Exception('unsupported data object %s. currently only dicts and Paste multidicts are supported' % self.data)
示例3: FieldSet
# 需要导入模块: from sqlalchemy.util import OrderedDict [as 别名]
# 或者: from sqlalchemy.util.OrderedDict import itervalues [as 别名]
class FieldSet(BaseFieldSet):
"""FieldSet aware of zope schema. See :class:`formalchemy.forms.FieldSet` for full api."""
_fields_mapping = {
schema.TextLine: fatypes.Unicode,
schema.Text: fatypes.Unicode,
schema.Int: fatypes.Integer,
schema.Bool: fatypes.Boolean,
schema.Float: fatypes.Float,
schema.Date: fatypes.Date,
schema.Datetime: fatypes.DateTime,
schema.Time: fatypes.Time,
schema.Choice: fatypes.Unicode,
schema.List: fatypes.List,
}
def __init__(self, model, session=None, data=None, prefix=None):
self._fields = OrderedDict()
self._render_fields = OrderedDict()
self.model = self.session = None
self.prefix = prefix
self.model = model
self.readonly = False
self.focus = True
self._errors = []
self._bound_pk = None
self.data = None
self.validator = None
self.iface = model
focus = True
for name, field in schema.getFieldsInOrder(model):
klass = field.__class__
try:
t = self._fields_mapping[klass]
except KeyError:
raise NotImplementedError('%s is not mapped to a type' % klass)
else:
self.append(Field(name=name, type=t))
self._fields[name].label_text = field.title or name
if field.description:
self._fields[name].set(instructions=field.description)
if field.required:
self._fields[name].validators.append(validators.required)
if klass is schema.Text:
self._fields[name].set(renderer=fields.TextAreaFieldRenderer)
if klass is schema.List:
value_type = self.model[name].value_type
if isinstance(value_type, schema.Choice):
self._fields[name].set(options=value_type, multiple=True)
else:
self._fields[name].set(multiple=True)
elif klass is schema.Choice:
self._fields[name].set(renderer=fields.SelectFieldRenderer,
options=self.model[name])
def bind(self, model, session=None, data=None):
if not (model is not None or session or data):
raise Exception('must specify at least one of {model, session, data}')
# copy.copy causes a stacktrace on python 2.5.2/OSX + pylons. unable to reproduce w/ simpler sample.
mr = object.__new__(self.__class__)
mr.__dict__ = dict(self.__dict__)
# two steps so bind's error checking can work
mr.rebind(model, session, data)
mr._fields = OrderedDict([(key, renderer.bind(mr)) for key, renderer in self._fields.iteritems()])
if self._render_fields:
mr._render_fields = OrderedDict([(field.key, field) for field in
[field.bind(mr) for field in self._render_fields.itervalues()]])
return mr
def gen_model(self, model=None, dict_like=False, **kwargs):
if model and self.iface.providedBy(model):
return model
factory = gen_model(self.iface, model, dict_like=dict_like)
model = factory(context=model, **kwargs)
return model
def rebind(self, model, session=None, data=None):
if model is not self.iface:
if model and not self.iface.providedBy(model):
if getattr(model, '__implemented__', None) is not None:
raise ValueError('%r does not provide %r' % (model, self.iface))
model = self.gen_model(model)
self.model = model
self._bound_pk = fields._pk(model)
if data is None:
self.data = None
elif hasattr(data, 'getall') and hasattr(data, 'getone'):
self.data = data
else:
try:
self.data = SimpleMultiDict(data)
except:
raise Exception('unsupported data object %s. currently only dicts and Paste multidicts are supported' % self.data)
示例4: ModelRenderer
# 需要导入模块: from sqlalchemy.util import OrderedDict [as 别名]
# 或者: from sqlalchemy.util.OrderedDict import itervalues [as 别名]
#.........这里部分代码省略.........
>>> fs.configure(exclude=[fs.orders])
Of course, you can include modifications to a field in the `include`
parameter, such as here, to render name and options-as-checkboxes:
>>> fs.configure(include=[fs.name, fs.orders.checkbox()])
"""
self._render_fields = OrderedDict([(field.key, field) for field in self._get_fields(pk, exclude, include, options)])
def bind(self, model=None, session=None, data=None):
"""
Return a copy of this FieldSet or Grid, bound to the given
`model`, `session`, and `data`. The parameters to this method are the
same as in the constructor.
Often you will create and `configure` a FieldSet or Grid at application
startup, then `bind` specific instances to it for actual editing or display.
"""
if not (model or session or data):
raise Exception('must specify at least one of {model, session, data}')
if not model:
if not self.model:
raise Exception('model must be specified when none is already set')
model = fields._pk(self.model) is None and type(self.model) or self.model
# copy.copy causes a stacktrace on python 2.5.2/OSX + pylons. unable to reproduce w/ simpler sample.
mr = object.__new__(self.__class__)
mr.__dict__ = dict(self.__dict__)
# two steps so bind's error checking can work
ModelRenderer.rebind(mr, model, session, data)
mr._fields = OrderedDict([(key, renderer.bind(mr)) for key, renderer in self._fields.iteritems()])
if self._render_fields:
mr._render_fields = OrderedDict([(field.key, field) for field in
[field.bind(mr) for field in self._render_fields.itervalues()]])
return mr
def copy(self, *args):
"""return a copy of the fieldset. args is a list of field names or field
objects to render in the new fieldset"""
mr = self.bind(self.model, self.session, self.data)
_fields = self._render_fields or self._fields
_new_fields = []
if args:
for field in args:
if isinstance(field, basestring):
if field in _fields:
field = _fields.get(field)
else:
raise AttributeError('%r as not field named %s' % (self, field))
assert isinstance(field, fields.AbstractField), field
field.bind(mr)
_new_fields.append(field)
mr._render_fields = OrderedDict([(field.key, field) for field in _new_fields])
return mr
def rebind(self, model=None, session=None, data=None):
"""
Like `bind`, but acts on this instance. No return value.
Not all parameters are treated the same; specifically, what happens if they are NOT specified is different:
* if `model` is not specified, the old model is used
* if `session` is not specified, FA tries to re-guess session from the model
* if data is not specified, it is rebound to None.
"""
original_model = model
if model:
示例5: FieldSet
# 需要导入模块: from sqlalchemy.util import OrderedDict [as 别名]
# 或者: from sqlalchemy.util.OrderedDict import itervalues [as 别名]
class FieldSet(BaseFieldSet):
_mapping = {
descriptors.rdfSingle: fatypes.String,
descriptors.rdfMultiple: fatypes.List,
descriptors.rdfList: fatypes.List,
}
def __init__(self, model, session=None, data=None, prefix=None):
self._fields = OrderedDict()
self._render_fields = OrderedDict()
self.model = self.session = None
BaseFieldSet.rebind(self, model, data=data)
self.prefix = prefix
self.model = model
self.readonly = False
self.focus = True
self._errors = []
focus = True
for k, v in model.__dict__.iteritems():
if not k.startswith("_"):
descriptor = type(v)
t = self._mapping.get(descriptor)
if t:
self.append(Field(name=k, type=t))
def bind(self, model=None, session=None, data=None):
"""Bind to an instance"""
if not (model or session or data):
raise Exception("must specify at least one of {model, session, data}")
if not model:
if not self.model:
raise Exception("model must be specified when none is already set")
else:
model = self.model()
# copy.copy causes a stacktrace on python 2.5.2/OSX + pylons. unable to reproduce w/ simpler sample.
mr = object.__new__(self.__class__)
mr.__dict__ = dict(self.__dict__)
# two steps so bind's error checking can work
mr.rebind(model, session, data)
mr._fields = OrderedDict([(key, renderer.bind(mr)) for key, renderer in self._fields.iteritems()])
if self._render_fields:
mr._render_fields = OrderedDict(
[(field.key, field) for field in [field.bind(mr) for field in self._render_fields.itervalues()]]
)
return mr
def rebind(self, model, session=None, data=None):
if model:
if isinstance(model, type):
try:
model = model()
except:
raise Exception(
"%s appears to be a class, not an instance, but FormAlchemy cannot instantiate it. (Make sure all constructor parameters are optional!)"
% model
)
self.model = model
self._bound_pk = None
if data is None:
self.data = None
elif hasattr(data, "getall") and hasattr(data, "getone"):
self.data = data
else:
try:
self.data = SimpleMultiDict(data)
except:
raise Exception(
"unsupported data object %s. currently only dicts and Paste multidicts are supported" % self.data
)
示例6: ModelRenderer
# 需要导入模块: from sqlalchemy.util import OrderedDict [as 别名]
# 或者: from sqlalchemy.util.OrderedDict import itervalues [as 别名]
#.........这里部分代码省略.........
>>> fs.configure(exclude=[fs.orders])
Of course, you can include modifications to a field in the `include`
parameter, such as here, to render name and options-as-checkboxes:
>>> fs.configure(include=[fs.name, fs.orders.checkbox()])
"""
self._render_fields = OrderedDict([(field.key, field) for field in self._get_fields(pk, exclude, include, options)])
def bind(self, model=None, session=None, data=None):
"""
Return a copy of this FieldSet or Grid, bound to the given
`model`, `session`, and `data`. The parameters to this method are the
same as in the constructor.
Often you will create and `configure` a FieldSet or Grid at application
startup, then `bind` specific instances to it for actual editing or display.
"""
if not (model or session or data):
raise Exception('must specify at least one of {model, session, data}')
if not model:
if not self.model:
raise Exception('model must be specified when none is already set')
model = fields._pk(self.model) is None and type(self.model) or self.model
# copy.copy causes a stacktrace on python 2.5.2/OSX + pylons. unable to reproduce w/ simpler sample.
mr = object.__new__(self.__class__)
mr.__dict__ = dict(self.__dict__)
# two steps so bind's error checking can work
ModelRenderer.rebind(mr, model, session, data)
mr._fields = OrderedDict([(key, renderer.bind(mr)) for key, renderer in self._fields.iteritems()])
if self._render_fields:
mr._render_fields = OrderedDict([(field.key, field) for field in
[field.bind(mr) for field in self._render_fields.itervalues()]])
return mr
def rebind(self, model=None, session=None, data=None):
"""
Like `bind`, but acts on this instance. No return value.
Not all parameters are treated the same; specifically, what happens if they are NOT specified is different:
* if `model` is not specified, the old model is used
* if `session` is not specified, FA tries to re-guess session from the model
* if data is not specified, it is rebound to None.
"""
original_model = model
if model:
if isinstance(model, type):
try:
model = model()
except:
raise Exception('%s appears to be a class, not an instance, but FormAlchemy cannot instantiate it. (Make sure all constructor parameters are optional!)' % model)
# take object out of session, if present
try:
_obj_session = object_session(model)
except AttributeError:
pass # non-SA object; doesn't need session
else:
if _obj_session:
_obj_session.expunge(model)
elif object_session(model):
# for instances of mapped classes, require that the instance have a PK already
try:
class_mapper(type(model))
except:
pass
else: