Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from django.shortcuts import render, render_to_response, get_object_or_404
- from django.http import HttpResponse, HttpResponseRedirect
- from proyecto.forms import UserForm, ClienteForm, CuentaAhorroForm, MovimientoForm
- from proyecto.models import Cliente, Tarjeta, Banco, Movimiento, CuentaAhorro, Tarjeta
- from django.contrib.auth import authenticate, login, logout
- from django.contrib.auth.models import User
- from django.contrib.auth.decorators import login_required
- from apihelper import info
- from random import randint
- import datetime
- import math
- def index(request):
- template = "pages/homepage.html"
- return render(request, template, {})
- def register(request):
- registered = False
- if request.method == 'POST':
- user_form = UserForm(data=request.POST)
- cliente_form = ClienteForm(data=request.POST)
- if user_form.is_valid() and cliente_form.is_valid():
- user = user_form.save()
- user.set_password(user.password)
- user.save()
- cliente = cliente_form.save(commit=False)
- cliente.user = user
- cliente.save()
- registered = True
- else:
- user_form = UserForm()
- cliente_form = ClienteForm()
- context_dict = {'user_form': user_form, 'cliente_form': cliente_form, 'registered': registered}
- return render(request, 'pages/register.html', context_dict)
- def user_login(request):
- if request.method == 'POST':
- username = request.POST['username']
- password = request.POST['password']
- user = authenticate(username=username, password=password)
- if user:
- if user.is_active:
- login(request, user)
- return HttpResponseRedirect('/')
- else:
- return HttpResponse(' Tu cuenta no esta activa ')
- else:
- return render(request, 'pages/login.html', {'mensaje': 'Usuario incorrecto'})
- else:
- return render(request, 'pages/login.html', {})
- @login_required
- def user_logout(request):
- logout(request)
- return HttpResponseRedirect('/')
- @login_required
- def create_account(request):
- bancos = Banco.objects.all()
- if request.method == 'POST':
- cuentaahorro_form = CuentaAhorroForm(data=request.POST)
- if cuentaahorro_form.is_valid():
- # Crea la cuenta de ahorros
- montoinicial = request.POST['montoinicial']
- cliente = Cliente.objects.get(user=request.user)
- cuentaahorro = cuentaahorro_form.save(commit=False)
- cuentaahorro.cliente = cliente
- cuentaahorro.saldocontable = montoinicial
- cuentaahorro.saldodisponible = montoinicial
- cuentaahorro.save()
- # Asocia una tarjeta a la cuenta creada
- tarjeta = Tarjeta()
- tarjeta.cuentaahorro = cuentaahorro
- tarjeta.numerotarjeta = randint(10000000,99999999)
- hoy = datetime.date.today()
- dia = hoy.day
- mes = hoy.month
- anio = hoy.year
- vencimiento = datetime.date(anio+1 ,mes ,dia)
- tarjeta.fechavencimiento = vencimiento
- tarjeta.estadotarjeta = 0
- tarjeta.save()
- # Registra como primer movimiento
- movimiento = Movimiento()
- movimiento.cuentaahorro = cuentaahorro
- movimiento.tipomovimiento = 'D'
- movimiento.montomovimiento = montoinicial
- movimiento.fechamovimiento = hoy
- movimiento.save()
- return dashboard(request)
- else:
- cuentaahorro_form = CuentaAhorroForm()
- context_dict = {'cuentaahorro_form': cuentaahorro_form, 'bancos': bancos}
- return render(request, 'pages/create_account.html', context_dict)
- @login_required
- def dashboard(request):
- cliente = Cliente.objects.get(user=request.user)
- cuentas = CuentaAhorro.objects.filter(cliente=cliente)
- tarjetas = Tarjeta.objects.filter(cuentaahorro=cuentas)
- context_dict = {'tarjetas':tarjetas}
- return render(request, 'pages/dashboard.html', context_dict)
- def capitaliza(saldoAnt, tep, diasTRANS, diasTEP, montoTrans):
- return 10
- @login_required
- def bankdetail(request, numerotarjeta):
- tarjeta = get_object_or_404(Tarjeta, numerotarjeta=numerotarjeta)
- cuenta = tarjeta.cuentaahorro
- movimientos = Movimiento.objects.filter(cuentaahorro=cuenta)
- movimientos = movimientos.order_by('-fechamovimiento')
- saldo = 0
- if request.method == 'POST':
- movimiento_form = MovimientoForm(data=request.POST)
- if movimiento_form.is_valid():
- nuevomonto = request.POST['nuevomonto']
- fechamov = request.POST['fechamov']
- # validacion si puede sacar el dinero
- # segun fecha
- tipomovimiento = request.POST['tipomovimiento']
- fechamovFIXED = datetime.datetime.strptime(fechamov, "%Y-%m-%d")
- fechamovFIXED = fechamovFIXED.date()
- movimientosAnteriores = []
- for mov in movimientos:
- if mov.fechamovimiento <= fechamovFIXED:
- movimientosAnteriores.append(mov)
- movimientosAnteriores.reverse()
- for m in movimientosAnteriores:
- print "%s - %s" % (m.fechamovimiento,m.montomovimiento)
- saldoAFecha = 0
- diasTrans = 0
- diasExtra = 0
- for i in range(len(movimientosAnteriores)):
- if i == 0:
- if len(movimientosAnteriores) == 1:
- print ">>ENTRO CUANDO HAY UNO"
- diasExtra = (fechamovFIXED-movimientosAnteriores[i].fechamovimiento).days
- diasTrans = 0
- else:
- if i == (len(movimientosAnteriores)-1):
- print ">>ENTRO CUANDO HAY VARIOS"
- diasExtra = (fechamovFIXED-movimientosAnteriores[i].fechamovimiento).days
- diasTrans = (movimientosAnteriores[i].fechamovimiento -
- movimientosAnteriores[i-1].fechamovimiento).days
- exp = float(diasTrans)/float(360)
- if movimientosAnteriores[i].tipomovimiento == 'R':
- movimientosAnteriores[i].montomovimiento = movimientosAnteriores[i].montomovimiento * -1
- saldoAFecha = saldoAFecha*(1.0+0.05)**exp
- saldoAFecha = saldoAFecha + float(movimientosAnteriores[i].montomovimiento)
- #aumentandole los dias que el usuario setea
- print diasExtra
- if diasExtra > 0:
- print "MOSO"
- exp = float(diasExtra)/float(360)
- saldoAFecha = saldoAFecha*(1.0+0.05)**exp
- saldo = saldoAFecha
- print saldo
- print nuevomonto
- puedeTransaccionar = True
- if tipomovimiento == 'R':
- if float(saldo) <= float(nuevomonto):
- puedeTransaccionar = False
- if puedeTransaccionar:
- print "SI PUEDE CAUSA"
- movimientonuevo = movimiento_form.save(commit=False)
- movimientonuevo.cuentaahorro = cuenta
- movimientonuevo.montomovimiento = nuevomonto
- movimientonuevo.fechamovimiento = fechamov
- movimientonuevo.save()
- template = "/dashboard/%s" % numerotarjeta
- #return render(request, template, {'saldo':saldo}
- #return HttpResponseRedirect(template)
- else:
- movimiento_form = MovimientoForm()
- # movimientos
- moneda = cuenta.moneda.simbolomoneda
- primerMov = movimientos.last()
- ultimoMov = movimientos.first()
- # Resumen
- diasElapsed = (ultimoMov.fechamovimiento-primerMov.fechamovimiento).days
- cantDepositos = 0
- cantRetiros = 0
- for m in movimientos:
- if m.tipomovimiento == 'D':
- cantDepositos = cantDepositos + 1
- elif m.tipomovimiento == 'R':
- cantRetiros = cantRetiros + 1
- context_dict = {'movimiento_form':movimiento_form, 'tarjeta':tarjeta,
- 'movimientos':movimientos,'moneda':moneda,
- 'diasElapsed':diasElapsed, 'cantDepositos':cantDepositos,
- 'cantRetiros':cantRetiros, 'saldo':saldo}
- return render(request, 'pages/dashboard-bank.html', context_dict)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement