views.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. from itertools import chain
  2. from django.shortcuts import render
  3. from .models import Service, Cost, Good, CostUse, GoodUse
  4. def index(request):
  5. return render(request, 'costs/index.html')
  6. def list_services(request):
  7. context = {
  8. 'services': Service.objects.all(),
  9. }
  10. return render(request, 'costs/services_list.html', context)
  11. def list_resources(request):
  12. context = {
  13. 'goods': Good.objects.all(),
  14. 'costs': Cost.objects.all(),
  15. }
  16. return render(request, 'costs/resources_list.html', context)
  17. def detail_service(request, pk):
  18. service = Service.objects.get(pk=pk)
  19. costs_uses = CostUse.objects.filter(service=service)
  20. goods_uses = GoodUse.objects.filter(service=service)
  21. total_costs_price = sum(chain(
  22. (i.monthly_provision_share() for i in goods_uses),
  23. (i.cost_share() for i in costs_uses),
  24. ))
  25. total_goods_value_share = sum(i.value_share() for i in goods_uses)
  26. if service.subscriptions_count == 0:
  27. unit_costs_price = 0
  28. unit_goods_value_share = 0
  29. else:
  30. unit_costs_price = total_costs_price/service.subscriptions_count
  31. unit_goods_value_share = total_goods_value_share/service.subscriptions_count
  32. if unit_costs_price > 0:
  33. months_fas_equivalent = unit_goods_value_share/unit_costs_price
  34. else:
  35. months_fas_equivalent = 0
  36. context = {
  37. 'service': service,
  38. 'costs_uses': costs_uses,
  39. 'goods_uses': goods_uses,
  40. 'total_costs_price': total_costs_price,
  41. 'unit_costs_price': unit_costs_price,
  42. 'total_goods_value_share': total_goods_value_share,
  43. 'unit_goods_value_share': unit_goods_value_share,
  44. 'months_fas_equivalent': months_fas_equivalent,
  45. }
  46. return render(request, 'costs/service_detail.html', context)