コード例 #1
0
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)
コード例 #2
0
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"))
コード例 #3
0
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"))
コード例 #4
0
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'))
コード例 #5
0
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)
コード例 #6
0
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
コード例 #7
0
ファイル: routes.py プロジェクト: Marisol610/catalog-app
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
コード例 #8
0
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)
コード例 #9
0
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])
コード例 #10
0
ファイル: routes.py プロジェクト: Marisol610/catalog-app
def delete_product(pid):
    out = update(int(pid), {"active": 0})

    return {"ok": out, "message": "Deleted"}
コード例 #11
0
def update_product(pid):
    product_data = request.json
    out = update(int(pid), product_data)
    return {"ok": out, "message": "Updated"}
コード例 #12
0
ファイル: routes.py プロジェクト: JHernan4/Web-Page
def update():
    if database.update(request.args.get('u'), request.args.get('a')) == True:
        return "OK"
コード例 #13
0
def update_users(pid):
    users_data = request.json
    out = update(int(pid), users_data)
    return {"ok": out, "message": "Updated"}
コード例 #14
0
ファイル: routes.py プロジェクト: nathanlucianortiz/user_crud
def update_user(last_name):
    user_data = request.json
    out = update(last_name, user_data)
    return {"ok": out, "message": "Updated"}
コード例 #15
0
def update_user(pid):
    user_data = request.json
    out = update(int(pid), user_data)
    return {'ok': out, "message": "updated"}