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
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()
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))
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")
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))
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
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
def search_list_orgaos(self): """ Retorna todos os docs da base """ search = Search(limit=None) results = self.documentrest.get_collection(search) return results
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))
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
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
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
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
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
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
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
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
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
def search_desc(self, attr): """ Executa uma Busca na Base """ search = Search( select = [attr] ) results = self.documentrest.get_collection(search_obj=search) return results
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)
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
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
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')
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
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
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
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))
def get_distinct_orgaos(self, attr): search = Search(limit=None, distinct=attr) return self.documentrest.get_collection(search)
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