views.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. from django.core.urlresolvers import reverse
  2. from django.shortcuts import render, get_object_or_404
  3. from django.db.models import Sum
  4. from .models import Document, Service, ServiceUse, CostUse, GoodUse
  5. def index(request):
  6. return render(request, 'costs/index.html')
  7. def list_documents(request):
  8. breadcrumbs = (
  9. ('Documents', reverse('list-documents')),
  10. )
  11. docs = Document.objects.all().prefetch_related('service_set')
  12. return render(
  13. request, 'costs/documents_list.html', {
  14. 'documents': docs,
  15. 'breadcrumbs': breadcrumbs,
  16. })
  17. def detail_document(request, pk):
  18. doc = get_object_or_404(Document, pk=pk)
  19. breadcrumbs = (
  20. ('Documents', reverse('list-documents')),
  21. (str(doc), doc.get_absolute_url())
  22. )
  23. return render(
  24. request, 'costs/document_detail.html', {
  25. 'document': doc,
  26. 'breadcrumbs': breadcrumbs,
  27. 'total_recuring_costs': doc.cost_set.aggregate(
  28. sum=Sum('price'))['sum'],
  29. 'total_goods': doc.good_set.aggregate(sum=Sum('price'))['sum'],
  30. })
  31. def detail_service(request, pk):
  32. service = Service.objects.get(pk=pk)
  33. doc = service.document
  34. breadcrumbs = (
  35. ('Documents', reverse('list-documents')),
  36. (str(doc), doc.get_absolute_url()),
  37. (service.name, service.get_absolute_url())
  38. )
  39. costs_uses = CostUse.objects.filter(service=service)
  40. goods_uses = GoodUse.objects.filter(service=service)
  41. services_uses = ServiceUse.objects.filter(service=service)
  42. context = {}
  43. context.update(service.get_prices())
  44. monthly_fas = context['unit_goods_value_share']/36
  45. context.update({
  46. 'breadcrumbs': breadcrumbs,
  47. 'document': doc,
  48. 'service': service,
  49. 'costs_uses': costs_uses,
  50. 'goods_uses': goods_uses,
  51. 'services_uses': services_uses,
  52. 'monthly_fas': monthly_fas,
  53. 'consolidated_cost': monthly_fas + context['unit_recurring_price'],
  54. })
  55. return render(request, 'costs/service_detail.html', context)