def create_simple_acc(belongs_to, field_name): ''' Es crea un index al valor del camp que li passem per parametre, field_name es el atribut del objecte del objecte que li indiquem amb belongs_to. Els dos parametres han de contenir un string''' field_name = unicode(field_name) belongs_to = unicode(belongs_to) belongs_to_id = get_type_id(belongs_to) def create_field_index(belongs_to, field_name): i = Index(gen_index_name(belongs_to, field_name), dals.table_space[dals.composeTableName(belongs_to, field_name)].c.value) i.create(dals.metadata.bind) r = dals.field_def.update().where(and_(dals.field_def.c.name==field_name, dals.field_def.c.belongs_to_id==belongs_to_id)).values(indexed=True).execute() dals.transaction(create_field_index, belongs_to, field_name) dal.mc.update_field_data(belongs_to_id, field_name)
def _save_field(self, field, value): val = value.id if isinstance(value, Object) else value if field.is_list: def set_field_not_unique(tf, oid, v): tf.insert().values(value=v, obj_id=oid).execute() dals.transaction(set_field_not_unique, field.table, self.id, val) else: def set_field_unique(tf, oid, v): r = tf.update().where(tf.c.obj_id==oid).values(value=v).execute() if r.rowcount == 0: tf.insert().values(value=v, obj_id=oid).execute() dals.transaction(set_field_unique, field.table, self.id, val)
def __get__(self, obj, cls=None): if obj == None : return self else: if self.vname in obj.__dict__: return obj.__dict__[self.vname].value r = dals.transaction(self._get_field, obj.id) if self.type_id < 100: result = r[0][1] else: result = Object(self.type_id, r[0][1]) v = Value(self, result) self._init_attr(obj, v) return v.value
def delete_field_content(self, field): def delete_fields(tf, oid): tf.delete().where(tf.c.obj_id==oid).execute() dals.transaction(delete_fields, field.table, self.id)