예제 #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
    def search_list_orgaos(self):
        """
        Retorna todos os docs da base
        """
        search = Search(limit=None)
        results = self.documentrest.get_collection(search)

        return results
예제 #3
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
예제 #4
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
예제 #5
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
예제 #6
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
예제 #7
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
예제 #8
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
예제 #9
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)
예제 #10
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
예제 #11
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
예제 #12
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
예제 #13
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
예제 #14
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
예제 #15
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
예제 #16
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))
예제 #17
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
예제 #18
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
예제 #19
0
    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()
예제 #20
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))
예제 #21
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
예제 #22
0
 def get_distinct_orgaos(self, attr):
     search = Search(limit=None, distinct=attr)
     return self.documentrest.get_collection(search)
예제 #23
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