Commit 4cf69e3a by Javier

Cadena de Registro y Rutas Absolutas

parent 6fdf07c0
...@@ -7,6 +7,9 @@ import mbilling.connector as mbc ...@@ -7,6 +7,9 @@ import mbilling.connector as mbc
import mbilling.exceptions as mbe import mbilling.exceptions as mbe
from mbilling.functions import MagnusCommandError from mbilling.functions import MagnusCommandError
import mbilling.functions as mbf import mbilling.functions as mbf
from sqlalchemy.exc import OperationalError
from mbilling.db import session
description = """ description = """
Servicio API para la interacción con el Tarficador de Telefonía ☎️ Servicio API para la interacción con el Tarficador de Telefonía ☎️
...@@ -51,6 +54,7 @@ class Refill(str, Enum): ...@@ -51,6 +54,7 @@ class Refill(str, Enum):
TRASPASO = 'Traspaso' TRASPASO = 'Traspaso'
INICIAL = 'Inicial' INICIAL = 'Inicial'
@app.exception_handler(MagnusCommandError) @app.exception_handler(MagnusCommandError)
def magnus_error_handler(request: Request, ex: MagnusCommandError): def magnus_error_handler(request: Request, ex: MagnusCommandError):
return JSONResponse( return JSONResponse(
...@@ -71,6 +75,17 @@ def magnus_error_handler(request: Request, ex: mbe.UserNotFound): ...@@ -71,6 +75,17 @@ def magnus_error_handler(request: Request, ex: mbe.UserNotFound):
) )
@app.exception_handler(OperationalError)
def magnus_error_handler(request: Request, ex: OperationalError):
session.rollback()
return JSONResponse(
status_code=400,
content={
"detail": f'Erro de Conexión con SQL, pruebe de nuevo.',
}
)
def get_user_response_model(number: str): def get_user_response_model(number: str):
"""Devuelve tupla Usuario / Modelo Respuesta """Devuelve tupla Usuario / Modelo Respuesta
""" """
...@@ -154,7 +169,6 @@ def add_account_sip(sip: models.CreateSipAccount, account_name: str = Query(..., ...@@ -154,7 +169,6 @@ def add_account_sip(sip: models.CreateSipAccount, account_name: str = Query(...,
raise HTTPException(status_code=409, detail=str(e)) raise HTTPException(status_code=409, detail=str(e))
@app.post('/v2/account/{account_name}/balance', name='Añade saldo a una cuenta SIP', description='Realiza una recarga en nombre del cliente.', tags=['Account']) @app.post('/v2/account/{account_name}/balance', name='Añade saldo a una cuenta SIP', description='Realiza una recarga en nombre del cliente.', tags=['Account'])
def add_balance(account_name: str = Query(..., regex=r'[89][1-9]\d{7}', name='Número', description='Cuenta SIP a recargar'), def add_balance(account_name: str = Query(..., regex=r'[89][1-9]\d{7}', name='Número', description='Cuenta SIP a recargar'),
quantity: float = Query( quantity: float = Query(
...@@ -193,6 +207,7 @@ def add_balance(account_name: str = Query(..., regex=r'[89][1-9]\d{7}', name='N ...@@ -193,6 +207,7 @@ def add_balance(account_name: str = Query(..., regex=r'[89][1-9]\d{7}', name='N
raise HTTPException( raise HTTPException(
status_code=400, detail="La cantidad debe ser mayor que 0.0€") status_code=400, detail="La cantidad debe ser mayor que 0.0€")
@app.get('/v2/account/{account_name}/sip', response_model=list[models.SipAccount], name="Obtener Cuentas SIP", @app.get('/v2/account/{account_name}/sip', response_model=list[models.SipAccount], name="Obtener Cuentas SIP",
description="Devuelve todas la cuentas SIP asignadas a la cuenta de Facturación", tags=["Account"], status_code=200) description="Devuelve todas la cuentas SIP asignadas a la cuenta de Facturación", tags=["Account"], status_code=200)
def get_account_sip(account_name: str = Query(..., regex=models.PHONE_REGEX, name='Número', description='Cuenta SIP a recargar')): def get_account_sip(account_name: str = Query(..., regex=models.PHONE_REGEX, name='Número', description='Cuenta SIP a recargar')):
......
...@@ -19,14 +19,13 @@ sql_server_hostname = "192.168.2.200" ...@@ -19,14 +19,13 @@ sql_server_hostname = "192.168.2.200"
sql_server_database = "bdd_wifi" sql_server_database = "bdd_wifi"
sql_server_username = "api-mbilling" sql_server_username = "api-mbilling"
sql_server_password = "mbillingmbilling" sql_server_password = "mbillingmbilling"
sql_server_driver = 'ODBC Driver 17 for SQL Server' if os.name == 'nt' else 'FreeTDS' sql_server_driver = '{ODBC Driver 17 for SQL Server}' if os.name == 'nt' else '{FreeTDS}'
# Cadena de Conexión # Cadena de Conexión
SQL_SERVER_CNX_STRING = "DRIVER={driver};SERVER={server};\ SQL_SERVER_CNX_STRING = "DRIVER={driver};SERVER={server};\
DATABASE={database};UID={username};PWD={password};TDS_Version=7.0;".format( DATABASE={database};UID={username};PWD={password};TDS_Version=7.0;PORT=1433;".format(
driver=sql_server_driver, server=sql_server_hostname, driver=sql_server_driver, server=sql_server_hostname, database=sql_server_database,
database=sql_server_database, username=sql_server_username, username=sql_server_username,password=sql_server_password)
password=sql_server_password)
# ID en Magnus de Tarifa Plana # ID en Magnus de Tarifa Plana
TARIFA_PLANA_ID = 4 TARIFA_PLANA_ID = 4
......
...@@ -8,7 +8,7 @@ from sqlalchemy.ext.automap import automap_base ...@@ -8,7 +8,7 @@ from sqlalchemy.ext.automap import automap_base
# CONFIGURACIÓN # CONFIGURACIÓN
# Path de MBILLING # Path de MBILLING
mbapi_path = pathlib.Path(pathlib.Path().resolve(), 'mbilling') mbapi_path = pathlib.Path('/home/rentel/scrapper-portabilidad/mbilling')
# Petición Correcta # Petición Correcta
succesful = re.compile(r'^\[20\d\]') succesful = re.compile(r'^\[20\d\]')
...@@ -22,5 +22,5 @@ engine = create_engine( ...@@ -22,5 +22,5 @@ engine = create_engine(
f"mariadb+pymysql://{values['DB_USER']}:{values['DB_PASSWORD']}@{values['DB_HOST']}/{values['DB_NAME']}?charset=utf8mb4" f"mariadb+pymysql://{values['DB_USER']}:{values['DB_PASSWORD']}@{values['DB_HOST']}/{values['DB_NAME']}?charset=utf8mb4"
) )
Base.prepare(engine, reflect=True) Base.prepare(engine, reflect=True)
Session = sessionmaker(bind=engine, transactional=False) Session = sessionmaker(bind=engine)
session = Session() session = Session()
...@@ -9,7 +9,7 @@ from datetime import datetime ...@@ -9,7 +9,7 @@ from datetime import datetime
from mbilling.db import session from mbilling.db import session
# Path de MBILLING # Path de MBILLING
mbapi_path = pathlib.Path(pathlib.Path().resolve(), 'mbilling') mbapi_path = pathlib.Path('/home/rentel/scrapper-portabilidad/mbilling')
# Petición Correcta # Petición Correcta
succesful = re.compile(r'^\[20\d\]') succesful = re.compile(r'^\[20\d\]')
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment