def __init__(self, parent, name, data): self.parent = parent self.data = value = copy.deepcopy(data) parts = parse_name(name) self.name, self.inverted, self._op = parts self.many = is_list(value) if self.many: value = None if not len(value) else value[0] self.optional, self.sort, self.assume = None, None, [] if isinstance(value, dict): self.sort = value.pop("sort", None) self.optional = value.pop("optional", None) self.assume = value.pop("assume", []) self.limit = value.pop("limit", 15) if not self.many: self.limit = 1 self.offset = value.pop("offset", 0) if value is not None and not isinstance(value, (dict, list, tuple, set)): value = unicode(value) self.value = value
def set(self, attribute, value, context): if not isinstance(attribute, Attribute): attribute = self.type.attributes.get(attribute) if attribute is None: return values = value if is_list(value) else [value] for value in values: if not self.exists(attribute.qname, value, context): stmt = Statement(self.id, attribute.qname, value, context, assume_contexts=self.assume_contexts) db.session.add(stmt) self.statements.append(stmt)