-
Notifications
You must be signed in to change notification settings - Fork 0
/
transaction.py
70 lines (62 loc) · 2.79 KB
/
transaction.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
from sqlalchemy import text
from sqlalchemy.engine import ResultProxy
from sqlalchemy.sql.elements import TextClause
from pyramid.response import Response
from database import db
from encoder import Encoder
import json
def get_transactions(request):
user_id = request.params.get('tarjeta', -1)
try:
stmt: TextClause = text('SELECT * from Bancoco."Transaccion" where "Tarjeta" = :id')
stmt = stmt.bindparams(id=user_id)
transaction = db.execute(stmt)
return Response(status=200, body=json.dumps([dict(r) for r in transaction], default=Encoder),
content_type='text/json')
except Exception as e:
print(e)
return Response(status=404, content_type='text/plain')
def create_transaction(request):
try:
user_data = request.json_body
str = 'En proceso'
stmt: TextClause = text('INSERT into bancoco."Transaccion"("Monto",'
'"Fecha",'
'"Status",'
'"Descripcion",'
'"Institucion",'
'"Tarjeta") VALUES (:monto, NOW(), :status,'
':desc, :institucion, :cuentahabiente) RETURNING "ID"')
stmt = stmt.bindparams(monto=user_data['monto'], status=str,
desc=user_data['descripcion'],
institucion=user_data['institucion'], cuentahabiente=user_data['tarjeta'])
results = db.execute(stmt)
result = [dict(r) for r in results][0]
stmt: TextClause = text('Select "Status" from bancoco."Transaccion" where "ID" = :id')
stmt = stmt.bindparams(id=result['ID'])
results = db.execute(stmt)
result = [dict(r) for r in results][0]
if result['Status'] == 'Aprobado':
return Response(status=200)
else:
return Response(status=500)
except Exception as e:
print(e)
return Response(status=400)
def delete_transaction(request):
try:
user_data = request.json_body
stmt: TextClause = text('Delete from bancoco."Transaccion" where "ID" = :id')
stmt = stmt.bindparams(id=user_data['id'])
db.execute(stmt)
return Response(status=200, content_type='text/json')
except Exception as e:
print(e)
return Response(status=400, content_type='text/plain')
def transaction_request(request):
if request.method == 'GET':
return get_transactions(request)
elif request.method == 'POST':
return create_transaction(request)
elif request.method == 'DELETE':
return delete_transaction(request)