예제 #1
0
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)
예제 #2
0
    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)
예제 #3
0
 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
예제 #4
0
 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)