Spaces:
				
			
			
	
			
			
		Configuration error
		
	
	
	
			
			
	
	
	
	
		
		
		Configuration error
		
	| # -*- coding: utf-8 -*- | |
| """ | |
| Created on Tue Jan 25 10:35:00 2022 | |
| @author: bullm | |
| """ | |
| import streamlit as st | |
| from datetime import datetime | |
| from datetime import timedelta | |
| import pandas as pd | |
| import os | |
| import boto3 | |
| import json | |
| import io | |
| from sqlalchemy import create_engine | |
| import psycopg2 | |
| import hashlib | |
| import numpy as np | |
| from Data.credentials import credentials_s3 as creds3 | |
| from Data.credentials import credentials_postgresql as credpost | |
| def run_query(query): | |
| url = credpost["POSTGRESQL"] | |
| conn = psycopg2.connect(url, sslmode='require') | |
| cur = conn.cursor() | |
| cur.execute(query) | |
| conn.commit() | |
| cur.close() | |
| conn.close() | |
| def hashing(passw): | |
| return hashlib.sha256(passw.encode()).hexdigest() | |
| def style_table(): | |
| style_table = """ | |
| <style> | |
| tbody tr:hover { | |
| color:#BB1114;} | |
| thead { | |
| background-color:#BB1114 ; | |
| color: #E8E8E8; | |
| } | |
| tbody tr:nth-child(odd) { | |
| background-color: #fff; | |
| } | |
| tbody tr:nth-child(even) { | |
| background-color: #eee; | |
| } | |
| tbody tr:nth-child(odd) | |
| stTable { | |
| border-collapse: collapse; | |
| margin: 25px 0; | |
| font-size: 0.9em; | |
| min-width: 400px; | |
| box-shadow: 0 0 20px rgba(0, 0, 0, 0.15); | |
| } | |
| </style> | |
| """ | |
| st.markdown(style_table, unsafe_allow_html=True) | |
| def read_excel_s3(key, secret_key, bucket, path): | |
| s3_client = boto3.client('s3', aws_access_key_id = key, aws_secret_access_key= secret_key) | |
| response = s3_client.get_object(Bucket=bucket, Key=path) | |
| data = response["Body"].read() | |
| df = pd.read_excel(io.BytesIO(data)) | |
| return df | |
| def logs_portal(): | |
| style_table() | |
| key = creds3["S3_KEY_ID"] | |
| secret_key = creds3["S3_SECRET_KEY"] | |
| bucket = creds3["S3_BUCKET"] | |
| path ='Logs.xlsx' | |
| df = read_excel_s3(key, secret_key, bucket, path)[["Analista", "Fecha", | |
| "Vista", "Subvista"]] | |
| update_data = pd.read_excel('Data/update_data.xlsx', engine='openpyxl') | |
| update_data.index = update_data["View"] | |
| col1, col2 = st.beta_columns((3,1)) | |
| fecha_inicio = col1.date_input("Fecha inicio") | |
| st.write(fecha_inicio) | |
| fecha_inicio = datetime.combine(fecha_inicio, datetime.min.time()) | |
| df=df[df["Fecha"]> fecha_inicio] | |
| # col2.table(update_data[["Last_Update"]]) | |
| # col2.table(df.groupby("Analista").count()["Vista"]) | |
| # col1.table(df.groupby(["Vista"]).count()) | |
| # col2.table(df.groupby(["Vista", "Subvista"]).count()) | |
| df["Count"] =1 | |
| table = pd.pivot_table(df, values ='Count', index='Vista', | |
| columns='Analista', aggfunc=np.sum) | |
| table.drop(columns=["bull"], inplace=True) | |
| col1.table(table.fillna(0)) | |
| col2.table(table.sum(axis=1)) | |
| col1.table(table.sum(axis=0).T) | |
| # table = pd.pivot_table(df, values ='Count', index='Subvista', | |
| # columns='Analista', aggfunc=np.sum) | |
| # col1.table(table.fillna(0)) | |
| def edit_credentials(): | |
| url = credpost["POSTGRESQL"] | |
| engine = create_engine(url, echo=False) | |
| data = pd.read_sql_query("""select * from credenciales""", con=engine) | |
| col1, col2, col3 = st.beta_columns(3) | |
| with col1.form('New user'): | |
| user = st.text_input("Usuario") | |
| passw = st.text_input("Contraseña", type="password") | |
| passw2 = st.text_input("Repetir Contraseña", type="password") | |
| mail = st.text_input("Mail") | |
| nombre = st.text_input("Nombre") | |
| area = st.text_input("Area") | |
| cargo = st.text_input("Cargo") | |
| ingresar = st.form_submit_button(label='Ingresar') | |
| if ingresar: | |
| if passw == passw2: | |
| var = "(usuario, passw, area, cargo, mail, nombre)" | |
| varlist = [user, hashing(passw), area, cargo, mail, nombre] | |
| query = "INSERT INTO credenciales {Var} VALUES %r; ".format(Var=var) % (tuple(varlist),) | |
| run_query(query) | |
| st.info("Usuario agregado") | |
| with col2.form('Edit User'): | |
| user = st.selectbox("Seleccionar un Usuario", list(data["usuario"])) | |
| passw = st.text_input("Nueva Contraseña", type="password") | |
| passw2 = st.text_input("Repetir Contraseña", type="password") | |
| area = st.text_input("Area") | |
| cambiar = st.form_submit_button(label='Ingresar') | |
| if cambiar: | |
| if ingresar: | |
| if passw == passw: | |
| h_passw = hashing(passw) | |
| query='''UPDATE credenciales | |
| SET passw = '{}', | |
| area = '{}', | |
| WHERE user = '{}'; | |
| '''.format(h_passw, area, user) | |
| run_query(query) | |
| st.info("Usuario editado") | |
| else: | |
| st.error("Las contraseñas no coinciden") | |
| with col3.form('Delete User'): | |
| user_d = st.selectbox("Seleccionar un Usuario", list(data["usuario"])) | |
| user_d2 = st.text_input("Confirmar usuario") | |
| delete = st.form_submit_button(label='Delete') | |
| if delete: | |
| if user_d == user_d2: | |
| query = """delete from credenciales where usuario='{}';""".format(user_d) | |
| run_query(query) | |
| st.info("Usuario elemindo") | |
| else: | |
| st.info("Usuarios no coinciden") | |
| st.table(data[["usuario", "nombre", "area", "cargo"]]) |