views.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. from django.contrib import messages
  2. from django.shortcuts import redirect, render
  3. from .services import actualizar_precios, desglose_fifo, posiciones, resumen_fiscal, totales
  4. def dashboard(request):
  5. pos = posiciones()
  6. context = {
  7. 'posiciones': pos,
  8. 'abiertas': [p for p in pos if p['acciones'] > 0],
  9. 'cerradas': [p for p in pos if p['acciones'] == 0],
  10. 'totales': totales(pos),
  11. }
  12. return render(request, 'cartera/dashboard.html', context)
  13. def actualizar(request):
  14. if request.method == 'POST':
  15. correctos, errores = actualizar_precios()
  16. if correctos:
  17. messages.success(request, f'Precios actualizados: {correctos}')
  18. for ticker, motivo in errores:
  19. messages.warning(request, f'{ticker}: {motivo}')
  20. return redirect('cartera:dashboard')
  21. def fifo(request):
  22. filas = desglose_fifo()
  23. context = {
  24. 'filas': filas,
  25. 'fiscal': resumen_fiscal(filas),
  26. 'total': sum((f['resultado'] or 0 for f in filas), start=0),
  27. }
  28. return render(request, 'cartera/fifo.html', context)