def profile(): form = ProfileForm() if form.validate_on_submit(): name = form.name.data current_password = form.current_password.data new_password = form.new_password.data confirm_new_password = form.confirm_new_password.data #busca dados do usuário no banco query = database.filter_by('users', {"email": current_user.email}) if query: user_bd = query[0] #verificar se a senha atual é igual a sanha no banco de dados if check_password_hash(user_bd['password'], current_password): if new_password == confirm_new_password: user_temp = User(name, current_user.email, new_password, current_user.role, current_user.search_limit) database.update("users", user_bd, user_temp.get_as_json()) form.name.data = name flash('Dados do perfil alterados com sucesso!', 'success') return render_template('profile.html', form=form) else: flash('A confirmação de senha está incorreta!', 'danger') return render_template('profile.html', form=form) else: flash('A senha atual informada está incorreta!', 'danger') return render_template('profile.html', form=form) else: abort(500) else: form.name.data = current_user.name return render_template('profile.html', form=form)
def change_password(token_verification_code): if not current_user.is_authenticated: global cache_app_before_logi verification_code = int(token_verification_code[50:56]) token = f"{token_verification_code[:50]}{token_verification_code[56:]}" date_now = int(datetime.datetime.now().replace(tzinfo=pytz.utc).timestamp()) for x in range(len(cache_app_before_login)): if verification_code == cache_app_before_login[x][1] and token == cache_app_before_login[x][2]: if date_now < cache_app_before_login[x][3]: #verifica se o token passado no link é o mesmo que foi gerado pelo sistema e ainda está válido form = ChangePasswordForm() if form.validate_on_submit(): new_password = form.new_password.data confirm_new_password = form.confirm_new_password.data if new_password == confirm_new_password: #verifica se a senha está realmente correta user_recovery_password = User(cache_app_before_login[x][0]['name'], cache_app_before_login[x][0]['email'], new_password, cache_app_before_login[x][0]['role'], cache_app_before_login[x][0]['search_limit']) #gera um novo objeto de usuario para atualizar no banco database.update('users', cache_app_before_login[x][0], user_recovery_password.get_as_json()) cache_app_before_login.pop(x) #limpa o cache_app_before_login flash('Senha alterar com sucesso!', 'success') return redirect(url_for("login")) else: flash('A confirmação de senha está incorreta!', 'danger') return render_template('change_password.html', form=form) else: return render_template('change_password.html', form=form) else: flash('Token expirou! Reenvie outro código para recuperar sua senha!', 'warning') abort(404) #caso não encontre o token no cache flash('Token inválido! Reenvie outro código para recuperar sua senha!', 'danger') abort(404) else: flash('Você já está logado no sistema!', 'info') return redirect(url_for("index"))
def update_learning_object(id_learning_object_0, id_learning_object_1): save_edit_learning_object = request.get_json() if save_edit_learning_object: learning_object_db = database.filter_by('learning_objects', {"general.identifier": id_learning_object_0,"general.identifier": id_learning_object_1}) database.update("learning_objects", learning_object_db[0], save_edit_learning_object) #print('\n',json.dumps(save_edit_learning_object, indent=2),'\n') return redirect(url_for("view_learning_objects"))
def search_sites(): if current_user.role != "administrator": flash('Acesso não permitido a rota especificada!', 'danger') return redirect(url_for("index")) sites_database = database.list("sites") stackexchange = StackExchange(100, None) pages_sites = stackexchange.sites() if sites_database: for page in pages_sites: for site in page["items"]: site_object = Site(site) site_json = site_object.get_as_json() for site_database in sites_database: if site_json["site"]["api_parameter"] == site_database["site"]["api_parameter"]: #site_update = {**site_database, **site_json} site_update = site_json database.update("sites", site_database, site_update) break if site_update == None or "": database.create("sites", site_object) break else: for page in pages_sites: for site in page["items"]: try: site_object = Site(site) database.create("sites", site_object) except: continue return redirect(url_for('view_sites'))
def create_learning_object(index_list_results, index_result, name_site, api_site): list_results = [] list_sites_api = [] update_results = [] cache_user = [] global cache_app_after_login index_user = None for x in range(len(cache_app_after_login)): if current_user.email == cache_app_after_login[x][0]: cache_user = cache_app_after_login[x] index_user = x break if cache_user: list_results = cache_user[1] list_sites_api = cache_user[2] update_results = cache_user[3] save_item = list_results[index_list_results][index_result] #verificar se já esta no banco de dados e impedir de incluir novamente learning_object = LearningObject(save_item, name_site, api_site) learning_object_json = learning_object.get_as_json() print(learning_object_json) item_db = database.filter_by('learning_objects', {"general.identifier": learning_object_json['general']['identifier'][1]}) if not item_db: database.create("learning_objects", learning_object) update_results[index_list_results][index_result] = 1 cache_user[3] = update_results cache_app_after_login[index_user] = cache_user return render_template("results_search_api.html", list_results=list_results, list_sites_api=list_sites_api, update_results=update_results) else: database.update("learning_objects", item_db[0]) return render_template("results_search_api.html", list_results=list_results, list_sites_api=list_sites_api, update_results=update_results)
def reviews(pid): if request.method == "POST": update(pid, request.form) return {"ok": "True", "message": "Updated"} out = read(int(pid)) if out["body"]: return render_template("review/create.html", product=out["body"][0]) else: return render_template("404.html"), 404
def update_product(pid): #product_data = request.jason if request.method == "PUT": update(pid, request.form) return {"ok": True, "message": "Updated"} out = read(int(pid)) update_form = ProductForm() if out["body"]: return render_template("single_product.html", product=out["body"][0], form=update_form) else: return render_template("404.html"), 404
def remove_admin_access(email): if current_user.role != "administrator": flash('Acesso negado!', 'danger') return redirect(url_for("index")) user_bd = database.filter_by("users", {"email": email}) if user_bd: user_aux = user_bd[0] user_aux['role'] = "standard" user_aux['search_limit'] = 20 database.update("users", user_bd[0], user_aux) flash('Acesso como administrador removido do usuário!', 'success') flash('Ocorrreu um problema ao tentar remover o acesso como administrador do usuário !', 'danger') users = database.list("users") return render_template("view_users.html", users=users)
def results_search_api(): global cache_app_after_login if current_user.search_limit <= 0 and current_user.role != "administrator": flash('Limite diário de buscas na API atingido! Novas buscas na API somente a partir de amanhã!', 'danger') return redirect(url_for("index")) stackexchange = StackExchange(PAGE_SIZE, MAX_PAGES) sites = database.list("sites") list_sites_api = [] list_results = [] #pegar as datas try: date_start = datetime.datetime.strptime(request.form.get('date_start')[:10], "%d/%m/%Y").replace(tzinfo=pytz.utc).timestamp() #para pegar somente a data date_end = datetime.datetime.strptime(request.form.get('date_end')[:10], "%d/%m/%Y").replace(tzinfo=pytz.utc).timestamp() #para pegar somente a data except: date_start = datetime.datetime.strptime(request.form.get('date_start')[:10], "%m/%d/%Y").replace(tzinfo=pytz.utc).timestamp() #para pegar somente a data date_end = datetime.datetime.strptime(request.form.get('date_end')[:10], "%m/%d/%Y").replace(tzinfo=pytz.utc).timestamp() #para pegar somente a data #pegar as ordenações selected_sort = request.form.get('selected-sort') selected_order = request.form.get('selected-order') #pegar as tags e não tags selected_tagged = request.form.get('selected-tagged') selected_nottagged = request.form.get('selected-nottagged') #pegar os sites selected_sites = request.form.getlist('selected-sites') #pegar seleção de somente perguntas aceitas accepted = request.form.get('accepted') #pegar o tipo da busca selected_type_search = request.form.getlist('selected-type-search') #pegar a busca search = request.form.get('search') if selected_sites: for option in selected_sites: option = option.split("-")[1] for site in sites: if option == site["site"]["api_parameter"]: list_sites_api.append(site["site"]) break else: for site in sites: list_sites_api.append(site["site"]) for site in list_sites_api: list_result_items = stackexchange.search_advanced(str(search), str(site["api_parameter"]), date_start, date_end, str(selected_sort), str(selected_order), accepted, selected_tagged, selected_nottagged, str(selected_type_search[0])) list_results.append(list_result_items) update_results = [] update = [] for results, site in zip(list_results, list_sites_api): for result in results: item_db = database.filter_by('learning_objects', {"general.identifier": result["question_id"]}) if item_db: update.append(1) else: update.append(0) update_results.append(update) update = [] cache_user = [] for x in range(len(cache_app_after_login)): if current_user.email == cache_app_after_login[x][0]: cache_user = cache_app_after_login[x] cache_user[1] = list_results cache_user[2] = list_sites_api cache_user[3] = update_results cache_app_after_login[x] = cache_user break if not cache_user: cache_user.append(current_user.email) cache_user.append(list_results) cache_user.append(list_sites_api) cache_user.append(update_results) cache_app_after_login.append(cache_user) #controle do limite de pesquisas diárias na API if(current_user.role == "standard"): current_user.search_limit -= 1 database.update("users", database.filter_by('users', {"email": current_user.email})[0], current_user.get_as_json()) return render_template("results_search_api.html", list_results=cache_user[1], list_sites_api=cache_user[2], update_results=cache_user[3])
def delete_product(pid): out = update(int(pid), {"active": 0}) return {"ok": out, "message": "Deleted"}
def update_product(pid): product_data = request.json out = update(int(pid), product_data) return {"ok": out, "message": "Updated"}
def update(): if database.update(request.args.get('u'), request.args.get('a')) == True: return "OK"
def update_users(pid): users_data = request.json out = update(int(pid), users_data) return {"ok": out, "message": "Updated"}
def update_user(last_name): user_data = request.json out = update(last_name, user_data) return {"ok": out, "message": "Updated"}
def update_user(pid): user_data = request.json out = update(int(pid), user_data) return {'ok': out, "message": "updated"}