misp-topcontrib/add_user.py

71 lines
2.2 KiB
Python
Raw Normal View History

2024-11-06 14:53:19 -03:00
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.exc import ProgrammingError
from models import Usuario, Base
import logging
from logging.handlers import RotatingFileHandler
import os
import sys
# Directorio actual
dir_actual = os.getcwd()
# Directorio para Logs
dir_logs = dir_actual+'/logs'
# Directorio para data BD
dir_data = dir_actual+'/data'
# Se crea directorio logs y data por si no existe...
os.makedirs(dir_logs, exist_ok=True)
os.makedirs(dir_data, exist_ok=True)
rotating_handler = RotatingFileHandler(os.path.join(dir_logs,"users.log"), maxBytes=262144000, backupCount=10)
logging.basicConfig(level=logging.INFO, handlers=[rotating_handler],
format='%(asctime)s - %(levelname)s - %(message)s')
# Definir la ruta personalizada para el archivo de la base de datos
ruta_base_datos = os.path.join(dir_data, "registros.db")
# Crear una conexión a la base de datos SQLite
engine = create_engine(f'sqlite:///{ruta_base_datos}')
# Crear la tabla en la base de datos si no existe
Base.metadata.create_all(engine)
# Crear una sesión
Session = sessionmaker(bind=engine)
session = Session()
def crear_usuario(user_sync, org):
# Verificar si el usuario ya existe
usuario_existente = session.query(Usuario).filter_by(usuario_sync=user_sync).first()
if usuario_existente:
logging.error(f"El usuario '{user_sync}' ya existe en la base de datos.")
print(f"El usuario '{user_sync}' ya existe en la base de datos.")
return
try:
# Crear un nuevo usuario
nuevo_usuario = Usuario(usuario_sync=str(user_sync).lower(), organizacion=org)
session.add(nuevo_usuario)
session.commit()
except Exception:
pass
finally:
session.close()
if __name__ == "__main__":
if len(sys.argv) != 3:
print("Uso: python add_user.py <user_sync> <organizacion>")
sys.exit(1)
user_par = sys.argv[1]
org_par = sys.argv[2]
try:
crear_usuario(user_par, org_par)
logging.info(f"Se crea usuario '{user_par}' en la base de datos.")
print(f"Se crea usuario '{user_par}' en la base de datos.")
except ProgrammingError as e:
logging.error(str(e))
print(str(e))