Example #1
0
    def _init_schema(self, conn):
        # check and create missing schema
        result = yield conn.runQuery(SQL.LIST_SCHEMA, (self.schema,))
        if not result:
            # create ltree extension
            out('creating %s schema' % self.schema)
            yield conn.runOperation(SQL.CREATE_SCHEMA % self.schema)

        defer.returnValue(conn)
Example #2
0
    def _init_table(self, conn):
        # check and create missing tables

        result = yield conn.runQuery(SQL.LIST_TABLE,
                                     (self.schema, self.t_object))
        if not result:
            # create object table
            out('creating object table %s' % self.s_object)
            yield conn.runOperation(SQL.CREATE_OBJECT_TABLE % self.s_object)

        result = yield conn.runQuery(SQL.LIST_TABLE,
                                     (self.schema, self.t_object))

        defer.returnValue(conn)
Example #3
0
    def _add_constraint_blank(self, c, model, member, constraints):
        cname = 'almar_check_blank_%s_%s' % (
            model.replace('_', '__').replace('.', '_'), member)
        sql = ('ALTER TABLE %s ADD CONSTRAINT %s'
               " CHECK (model!='%s'"
               " OR (model='%s'"
               " AND (value->E'%s') IS NOT NULL"
               " AND LENGTH((value->E'%s')) > 0))"
               % (self.s_object, cname, model, model, member, member))

        if cname not in constraints:
            out('creating blank constraint %s' % cname)
            yield c.runOperation(sql)

        defer.returnValue(c)
Example #4
0
    def _add_constraint_unique(self, c, model, member, indice, flag):
        uname = 'almar_unique_%s_%s_%s' % (
            flag, model.replace('_', '__').replace('.', '_'), member)

        if flag == 'inherit':
            sql = ("CREATE UNIQUE INDEX %s ON %s ((value->E'%s'))"
                   " WHERE model <@ %%s" % (uname, self.s_object, member))
        else:
            sql = ("CREATE UNIQUE INDEX %s ON %s ((value->E'%s'))"
                   " WHERE model = %%s" % (uname, self.s_object, member))

        if uname not in indice:
            out('creating unique (%s) index %s' % (flag, uname))
            yield c.runOperation(sql, [model])

        defer.returnValue(c)
Example #5
0
    def _init_extension(self, conn):
        # check and create missing extensions
        result = yield conn.runQuery(SQL.LIST_EXTENSION, ('ltree',))

        if not result:
            # create ltree extension
            out('creating ltree extension')
            yield conn.runOperation(SQL.CREATE_EXTENSION % 'ltree')

        result = yield conn.runQuery(SQL.LIST_EXTENSION, ('hstore',))

        if not result:
            # create ltree extension
            out('creating hstore extension')
            yield conn.runOperation(SQL.CREATE_EXTENSION % 'hstore')

        defer.returnValue(conn)
Example #6
0
    def jsonrpc_search(self, query):
        g = GlobalConfig()
        result = list()
        defers = list()
        for range_, searcher in g.searcher.iteritems():
            url = searcher['url']
            out('searcher: ' + url)
            p = RPCProxy(path_join(url, 'op'))
            defers.append(p.callRemote('search', query))

        try:
            reader_result = yield defer.DeferredList(defers)
            succeed = filter(lambda x: x[0], reader_result)
            map(lambda x: result.extend(x[1]), succeed)
        except Exception as e:
            raise e

        defer.returnValue(result)