예제 #1
0
    def element_exists(self, element, value, orgao=None):
        """
        Return a crime by name
        """
        orderby = OrderBy([element])
        if orgao is None:
            search = Search(
                limit=1,
                order_by=orderby,
                literal="document->>'" + element + "' = '" + value + "'",
            )
        else:
            search = Search(
                limit=1,
                order_by=orderby,
                literal="document->>'" + element + "' = '" + value +
                "' and document->>'nome' <> '" + orgao + "'",
            )
        params = {'$$': search._asjson()}

        url = self.rest_url + '/' + self.lbbase.metadata.name + '/doc'
        result = requests.get(url=url, params=params)
        results = result.json()
        print(results)
        if results['result_count'] == 0:
            return False
        else:
            return True
예제 #2
0
class ClassSearchTest(unittest.TestCase):
    """Test class search
    """

    def test_Orderby(self):
        """Test class Orderby
        """
        coluna1 = "coluna1"
        coluna2 = "coluna2"
        coluna3 = "coluna3"
        coluna4 = "coluna4"

        OrderBy([coluna1, coluna2], [coluna3, coluna4])

    def test_Search(self):
        """Test class Search
        """
        coluna1 = "coluna1"
        coluna2 = "coluna2"
        coluna3 = "coluna3"
        coluna4 = "coluna4"

        obj_orderby = OrderBy([coluna1, coluna2], [coluna3, coluna4])
        select = ["coluna1", "coluna2"]
        literal = 'select *'
        limit = 10
        offset = 10

        self.obj_Search = Search(select, obj_orderby,
                                 literal, limit, offset)
        self.obj_Search._asjson()
예제 #3
0
 def get_collection(self, search_obj=None):
     """
     Retrieves collection of documents according to search object.
     @param search_obj: JSON which represents a search object.
     """
     if search_obj is not None:
         msg = 'search_obj must be a Search object.'
         assert isinstance(search_obj, Search), msg
     else:
         search_obj = Search()
     response = self.send_request(self.httpget,
         url_path=[self.basename, self.doc_prefix],
         params={self.search_param: search_obj._asjson()})
     return Collection(self.base, **lbutils.json2object(response))
예제 #4
0
파일: user_dao.py 프로젝트: Bleno/portfolio
 def checkUser(self, user):
     #p= Pesquisa()
     #p.setSelect("json_reg")
     #p.setSelect("id_reg")
     query = Search()
     query.literal = " str_login = '******' and str_password = '******' ".format(user.str_login, user.str_password )
     query.limit = 1
     base = json2base(User.__json__())
     collection = DocumentREST("http://api.brlight.net/api", base).get_collection(query)
     if collection.result_count:
         user_login = collection.results[0]
         return Srov(True, user_login ,"Usuario logado com sucesso")
     else:
         return Srov(False, user ,"Usuário ou senha incorretos")
예제 #5
0
 def get_collection(self, search_obj=None):
     """
     Retrieves collection of "file text" according to search object.
     @param search_obj: JSON which represents a search object.
     """
     if search_obj is not None:
         msg = 'search_obj must be a Search object.'
         assert isinstance(search_obj, Search), msg
     else:
         search_obj = Search()
     response = self.send_request(
         self.httpget,
         url_path=[self.basename, self.file_prefix],
         params={self.search_param: search_obj._asjson()})
     return FileCollection(**lbutils.json2object(response))
예제 #6
0
 def update_collection(self, search_obj=None, path_list=[]):
     """
     Updates collection of documents according to search object.
     @param search_obj: JSON which represents a search object.
     """
     if search_obj is not None:
         msg = 'search_obj must be a Search object.'
         assert isinstance(search_obj, Search), msg
     else:
         search_obj = Search()
     response = self.send_request(self.httpput,
         url_path=[self.basename, self.doc_prefix],
         params={self.search_param: search_obj._asjson(),
         self.path_param: lbutils.object2json(path_list)})
     return response
예제 #7
0
    def search_list_notify(self, notify, user):
        """
        Retorna todos os docs da base
        """
        search = Search(limit=None)
        if user.permissao == 'Gestor':
            search.literal = "document->>'orgao' = '" + user.orgao + "'"
        else:
            search.literal = "1=1"

        if notify is not None:
            search.literal += "AND document->>'notify' = '" + notify + "'"

        results = self.documentrest.get_collection(search)

        return results
예제 #8
0
    def search_list_orgaos(self):
        """
        Retorna todos os docs da base
        """
        search = Search(limit=None)
        results = self.documentrest.get_collection(search)

        return results
예제 #9
0
    def get_collection(self, search_obj=None, instance=True):
        """
        Retrieves collection of documents according to search object.
        @param search_obj: JSON which represents a search object.
        """
        if search_obj is not None:
            msg = 'search_obj must be a Search object.'
            assert isinstance(search_obj, Search), msg
        else:
            search_obj = Search()
        response = self.send_request(
            self.httpget,
            url_path=[self.basename, self.doc_prefix],
            params={self.search_param: search_obj._asjson()})

        #return Collection(self.base, **lbutils.json2object(response))
        #return dict2genericbase(response.json())
        return dict2genericbase(lbutils.json2object(response))
예제 #10
0
    def search_list_bot(self):
        """
        Busca registro completo do órgao pelo nome
        :return: obj collection com os dados da base
        """
        search = Search(literal="document->>'usuario' like '%WSCBot%'")
        results = self.documentrest.get_collection(search_obj=search)

        return results
예제 #11
0
    def search_list_atividades(self, limit_docs):
        """
        Retorna todos os docs da base
        """
        orderby = OrderBy(desc=['data'])
        search = Search(limit=limit_docs, order_by=orderby)
        results = self.documentrest.get_collection(search)

        return results
예제 #12
0
    def search_item(self, item):
        """
        Busca registro completo do usuário pela matricula
        :return: obj collection com os dados da base
        """
        search = Search(literal="document->>'item' = '" + item + "'")
        results = self.documentrest.get_collection(search_obj=search)

        return results
예제 #13
0
    def search_user_by_email(self, email):
        """
        Busca registro completo do usuário pelo email
        :return: obj collection com os dados da base
        """
        search = Search(literal="document->>'email' = '" + email + "'")
        results = self.documentrest.get_collection(search_obj=search)

        return results
예제 #14
0
    def search_orgao(self, sigla):
        """
        Busca registro completo do órgao pelo nome
        :return: obj collection com os dados da base
        """
        search = Search(literal="document->>'sigla' = '" + sigla + "'")
        results = self.documentrest.get_collection(search_obj=search)

        return results
예제 #15
0
    def search_list_notify(self, notify, user):
        """
        Retorna todos os docs da base
        """
        search = Search(
            limit=None
        )
        if user.permissao == 'Gestor':
            search.literal = "document->>'orgao' = '"+user.orgao+"'"
        else:
            search.literal = "1=1"

        if notify is not None:
            search.literal += "AND document->>'notify' = '"+notify+"'"

        results = self.documentrest.get_collection(search)

        return results
예제 #16
0
    def search_notify(self, orgao):
        """
        Busca registro completo do notify pelo id
        :return: obj collection com os dados da base
        """
        search = Search(literal="document->>'orgao' = '" + orgao + "'")
        results = self.documentrest.get_collection(search_obj=search)

        return results
예제 #17
0
    def get_base(self):
        """
        Retorna todos os documentos da base
        """
        # A resposta nao pode ser object aqui
        self.documentrest.response_object = False
        search = Search(limit=None)
        get = self.documentrest.get_collection(search_obj=search)

        return get
예제 #18
0
 def update_collection(self, search_obj=None, path_list=[]):
     """
     Updates collection of documents according to search object.
     @param search_obj: JSON which represents a search object.
     """
     if search_obj is not None:
         msg = 'search_obj must be a Search object.'
         assert isinstance(search_obj, Search), msg
     else:
         search_obj = Search()
     response = self.send_request(self.httpput,
                                  url_path=[self.basename, self.doc_prefix],
                                  params={
                                      self.search_param:
                                      search_obj._asjson(),
                                      self.path_param:
                                      lbutils.object2json(path_list)
                                  })
     return response
예제 #19
0
    def search_desc(self, attr):
       """
       Executa uma Busca na Base
       """
       search = Search(
           select = [attr]
       )
       results = self.documentrest.get_collection(search_obj=search)

       return results
예제 #20
0
 def edit_home_report(self, report_name, userid):
     search = Search(literal="document->>'email' = '" + userid + "'")
     path_list = [{
         "path": "home",
         "mode": "update",
         "fn": None,
         "args": [report_name]
     }]
     results = self.documentrest.update_collection(search_obj=search,
                                                   path_list=path_list)
예제 #21
0
    def get_attribute(self, attr):
        """
        Testa recuperar atributo do Documento
        """
        # A resposta nao pode ser object aqui
        self.documentrest.response_object = False

        search = Search(limit=None, select=[attr])
        get = self.documentrest.get_collection(search_obj=search)

        return get
예제 #22
0
    def search_item(self, group, item, valor):
        """
        Busca registro completo do órgao pelo nome
        :return: obj collection com os dados da base
        """
        search = Search(limit=1,
                        literal="document->'" + group + "'->>'" + item +
                        "' = '" + valor + "'")
        #print(search._asdict())
        results = self.documentrest.get_collection(search_obj=search)

        return results
예제 #23
0
def json_user(request):
    try:
        # recebe os parametros do datatable
        offset = request.GET['iDisplayStart']
        limit = request.GET['iDisplayLength']
        #order_by = request.GET['iSortCol_0']
        sEcho = request.GET['sEcho']
        sSearch = request.GET['sSearch']
    



        query = Search()
        query.select = ['mimetype', 'filename', 'id_doc']
        query.limit = int(limit)
        query.offset = int(offset)
        if sSearch :
            query.literal = "UPPER(texto_doc) like '%{}%' OR UPPER(filename) like like '%{}%'".format(sSearch)

        dict_data = FileBR().getListFiles(query)
        datatable_return = {}
        # json_data = json_data.replace('offset','iDisplayStart')\
        #                     .replace('limit','DisplayLength')\
        #                     .replace('result_count','iTotalDisplayRecords')\
        #                     .replace('results','aaData')

        datatable_return['iDisplayStart'] = dict_data['offset']
        datatable_return['DisplayLength'] = dict_data['limit']
        datatable_return['iTotalDisplayRecords'] = dict_data['result_count']
        datatable_return['aaData'] = dict_data['results']
        return datatable_return
        #return Response(json_data, content_type='application/json')
    except Exception as e:
        print(str(traceback.format_exc()))
        dict_data = {'aaData': [], "sEcho": sEcho,"iTotalRecords": limit ,"iTotalDisplayRecords": 0 }
        
        json_data = json.dumps(dict_data)
        
        return Response(json_data, content_type='application/json')
예제 #24
0
    def get_base_orgao(self):
        """
        Retorna todos os documentos da base
        """
        # A resposta nao pode ser object aqui
        self.documentrest.response_object = False
        search = Search(limit=None)
        try:
            get = self.documentrest.get_collection(search_obj=search)
        except HTTPError as e:
            log.error("Erro ao buscar base do órgão %s\n%s", self.base_nm, e)
            return None

        return get
예제 #25
0
    def create_dict_to_desc(self, elm):
        """
        Cria um dict apartir de um grupo 
        """
        search = Search(
           select = [elm]
        )
        result = self.documentrest.get_collection(search_obj=search)
        dict_desc = dict()
        y = json.loads(result.results)
        for x in y.keys():
            dict_desc[x] = y[x]

        return dict_desc
예제 #26
0
    def get_attribute(self, attr):
        """
        Testa recuperar atributo do Documento
        """
        # A resposta nao pode ser object aqui
        self.documentrest.response_object = False

        # FIXME: Adicionar lista de atributos obrigatórios nos campos que vao retornar na busca
        # Referência: http://dev.lightbase.cc/projects/liblightbase/repository/revisions/master/entry/liblightbase/lbbase/content.py#L34

        # A busca deve obrigatoriamente retornar todos os atributos obrigatórios
        search = Search(limit=None, select=[attr, "data_coleta"])
        get = self.documentrest.get_collection(search_obj=search)

        return get
예제 #27
0
    def get_collection(self, search_obj=None, instance=True, return_as_dict=False):
        """
        Retrieves collection of documents according to search object.
        @param search_obj: JSON which represents a search object.
        """
        if search_obj is not None:
            msg = 'search_obj must be a Search object.'
            assert isinstance(search_obj, Search), msg
        else:
            search_obj = Search()
        response = self.send_request(self.httpget,
            url_path=[self.basename, self.doc_prefix],
            params={self.search_param: search_obj._asjson()})

        # NOTE: Adicionado pelo Bleno 06/10/2016. Adicionado por Bleno Nascimento 
        # Silva aproximadamente 2 anos atrás removendo a validação no retorno do método 
        # "get_collection". By Alexandre
        # return Collection(self.base, **lbutils.json2object(response))
        # return dict2genericbase(response.json())

        if return_as_dict:
            return dict2genericbase(lbutils.json2object(response))
        else:            
            return Collection(self.base, **lbutils.json2object(response))
예제 #28
0
 def get_distinct_orgaos(self, attr):
     search = Search(limit=None, distinct=attr)
     return self.documentrest.get_collection(search)
예제 #29
0
 def get_count(self, user, notify_type):
     search = Search(select=[],
                     literal="document->>'notify' = '" + notify_type + "'")
     if user.permissao == 'Gestor':
         search.literal += " AND document->>'orgao' = '" + user.orgao + "'"
     return self.documentrest.get_collection(search_obj=search).result_count