Commit 3b15017c by Javier

Nueva API

parent 5bb24443
...@@ -79,4 +79,4 @@ def account_data(callerid: str = None, account : str = None) -> dict: ...@@ -79,4 +79,4 @@ def account_data(callerid: str = None, account : str = None) -> dict:
return dict(zip(headers, data + get_dids_account(data[0]))) if data else None return dict(zip(headers, data + get_dids_account(data[0]))) if data else None
if __name__ == '__main__': if __name__ == '__main__':
print(account_data('956387046')) print(account_data('956377729'))
...@@ -108,9 +108,10 @@ def add_account_sip(sip: models.CreateSipAccount, account_name: str = Query(..., ...@@ -108,9 +108,10 @@ def add_account_sip(sip: models.CreateSipAccount, account_name: str = Query(...,
@app.get('/v2/account/{account_name}/balance') @app.get('/v2/account/{account_name}/balance')
def get_account_balance(account_name : str, last_movements : int = 10): def get_account_balance(account_name: str, last_movements: int = 10):
pass pass
@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')):
...@@ -126,12 +127,25 @@ def get_account_sip(account_name: str = Query(..., regex=models.PHONE_REGEX, nam ...@@ -126,12 +127,25 @@ def get_account_sip(account_name: str = Query(..., regex=models.PHONE_REGEX, nam
@app.get('/v2/sip/{caller_id}', response_model=models.SipAccount, name="Obtiene una Cuenta SIP", description="Devuelve los datos de conexión de la cuenta.", @app.get('/v2/sip/{caller_id}', response_model=models.SipAccount, name="Obtiene una Cuenta SIP", description="Devuelve los datos de conexión de la cuenta.",
tags=["SIP"], status_code=200) tags=["SIP"], status_code=200)
def add_account_sip(caller_id: str = Query(..., regex=models.PHONE_REGEX, name='Número', description='Cuenta SIP a consultar'),): def add_account_sip(caller_id: str = Query(..., regex=models.PHONE_REGEX, name='Número', description='Cuenta SIP a consultar'),):
try:
sip, user = mbc.get_sip_account(caller_id)
return models.SipAccount.generate_from_automap(sip, user.username)
except mbe.UserNotFound as e:
raise HTTPException(status_code=404, detail=str(e))
except mbe.SipNotFound as e:
raise HTTPException(status_code=404, detail=str(e))
@app.post('/v2/sip/{caller_id}/transfer', response_model=models.SipAccount, name="Transfiere la Cuenta", description="Modifica al Propietario de la Cuenta",
tags=["SIP"], status_code=200)
def add_account_sip(account : models.TransferSip, caller_id: str = Query(..., regex=models.PHONE_REGEX, name='Número', description='Cuenta SIP a consultar')):
try: try:
sip, user = mbc.get_sip_account(caller_id) sip, user = mbc.get_sip_account(caller_id)
return models.SipAccount.generate_from_automap(
sip, user.username
)
except mbe.UserNotFound as e: except mbe.UserNotFound as e:
raise HTTPException(status_code=404, detail=str(e)) raise HTTPException(status_code=404, detail=str(e))
......
...@@ -88,9 +88,8 @@ def get_sip_account(number: str) -> Tuple[Sip, User]: ...@@ -88,9 +88,8 @@ def get_sip_account(number: str) -> Tuple[Sip, User]:
models.SipAccount: Cuenta SIP Asociada models.SipAccount: Cuenta SIP Asociada
""" """
sip = session.query(Sip).filter_by(name=number).first() sip = session.query(Sip).filter_by(name=number).first()
user = session.query(User).filter_by(id=sip.id_user).first()
if sip: if sip:
return sip, user return sip, session.query(User).filter_by(id=sip.id_user).first()
else: else:
raise mbe.SipNotFound() raise mbe.SipNotFound()
...@@ -119,12 +118,11 @@ def find_user_account(number: str) -> User: ...@@ -119,12 +118,11 @@ def find_user_account(number: str) -> User:
Returns: Returns:
User: Cuenta de Facturación. User: Cuenta de Facturación.
""" """
try:
sip, user = get_sip_account(number) sip, user = get_sip_account(number)
if user:
return user return user
else: except mbe.SipNotFound:
raise mbe.UserNotFound() return None
def get_user(number: str) -> models.User: def get_user(number: str) -> models.User:
...@@ -285,7 +283,7 @@ def update_did_owner(did: Did, sip: Sip): ...@@ -285,7 +283,7 @@ def update_did_owner(did: Did, sip: Sip):
def create_or_update_did(number: str, user: User, sip: Sip = None): def create_or_update_did(number: str, user: User, sip: Sip = None):
if not sip: if not sip:
sip = get_sip_account(number) sip, owner = get_sip_account(number)
if not sip: if not sip:
raise mbe.SipRegisteredError() raise mbe.SipRegisteredError()
...@@ -328,3 +326,6 @@ def create_sip(username: str, create_sip: models.CreateSipAccount) -> models.Sip ...@@ -328,3 +326,6 @@ def create_sip(username: str, create_sip: models.CreateSipAccount) -> models.Sip
raise mbe.SipRegisteredError( raise mbe.SipRegisteredError(
'La cuenta SIP está asignada a otro usuario.') 'La cuenta SIP está asignada a otro usuario.')
def transfer_sip(sip : Sip, user : User):
pass
...@@ -12,7 +12,7 @@ class NotFound(Exception): ...@@ -12,7 +12,7 @@ class NotFound(Exception):
if not message: if not message:
message = 'No se ha localiado ningún elemento con la referencia indicada.' message = 'No se ha localiado ningún elemento con la referencia indicada.'
super().__init__(message=message) super().__init__(message)
class SipNotFound(NotFound): class SipNotFound(NotFound):
...@@ -21,7 +21,7 @@ class SipNotFound(NotFound): ...@@ -21,7 +21,7 @@ class SipNotFound(NotFound):
if not message: if not message:
message = 'No existe ninguna cuenta SIP con el Caller ID indicado.' message = 'No existe ninguna cuenta SIP con el Caller ID indicado.'
super().__init__(message=message) super().__init__(message)
class UserNotFound(NotFound): class UserNotFound(NotFound):
...@@ -30,7 +30,7 @@ class UserNotFound(NotFound): ...@@ -30,7 +30,7 @@ class UserNotFound(NotFound):
if not message: if not message:
message = 'No existe ninguna cuenta de facturación con el número indicado.' message = 'No existe ninguna cuenta de facturación con el número indicado.'
super().__init__(message=message) super().__init__(message)
class DidNotFound(NotFound): class DidNotFound(NotFound):
...@@ -39,4 +39,4 @@ class DidNotFound(NotFound): ...@@ -39,4 +39,4 @@ class DidNotFound(NotFound):
if not message: if not message:
message = 'No existe ninguna cuenta DID con el Caller ID indicado.' message = 'No existe ninguna cuenta DID con el Caller ID indicado.'
super().__init__(message=message) super().__init__(message)
...@@ -204,6 +204,13 @@ class SipAccount(BaseModel): ...@@ -204,6 +204,13 @@ class SipAccount(BaseModel):
) )
class TransferSip(BaseModel):
account: str = Body(
..., title="Cuenta", description="Nuevo propietario de cuenta SIP"
)
class CreateSipAccount(BaseModel): class CreateSipAccount(BaseModel):
cid: str = Body( cid: str = Body(
......
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