views.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. from django.contrib.auth.decorators import login_required
  2. from django.core.urlresolvers import reverse
  3. from django.shortcuts import render, get_object_or_404
  4. from .models import Document, Service, ServiceUse, CostUse, GoodUse
  5. @login_required
  6. def list_documents(request):
  7. breadcrumbs = (
  8. ('Documents', reverse('list-documents')),
  9. )
  10. docs = Document.objects.all()\
  11. .prefetch_related('service_set')\
  12. .order_by('-date')
  13. return render(
  14. request, 'costs/documents_list.html', {
  15. 'documents': docs,
  16. 'planning_documents': docs.filter(type=Document.TYPE_PLAN),
  17. 'factual_documents': docs.filter(type=Document.TYPE_FACT),
  18. 'breadcrumbs': breadcrumbs,
  19. })
  20. @login_required
  21. def detail_document(request, pk):
  22. doc = get_object_or_404(Document, pk=pk)
  23. breadcrumbs = (
  24. ('Documents', reverse('list-documents')),
  25. (str(doc), doc.get_absolute_url())
  26. )
  27. return render(
  28. request, 'costs/document_detail.html', {
  29. 'document': doc,
  30. 'other_documents': Document.objects.exclude(pk=doc.pk),
  31. 'breadcrumbs': breadcrumbs,
  32. 'total_recuring_costs': doc.get_total_recuring_costs(),
  33. 'total_goods': doc.get_total_goods()
  34. })
  35. @login_required
  36. def compare_document(request, pk, other_pk):
  37. doc = Document.objects.get(pk=pk)
  38. other_doc = Document.objects.get(pk=other_pk)
  39. breadcrumbs = (
  40. ('Documents', reverse('list-documents')),
  41. (str(doc), doc.get_absolute_url()),
  42. ('Variations depuis {}'.format(other_doc), request.path),
  43. )
  44. context = {
  45. 'breadcrumbs': breadcrumbs,
  46. 'document': doc,
  47. 'other_document': other_doc,
  48. 'other_documents': Document.objects.exclude(pk=doc.pk),
  49. 'deltas': doc.compare(other_doc),
  50. }
  51. return render(request, 'costs/document_compare.html', context)
  52. @login_required
  53. def detail_service(request, pk):
  54. service = Service.objects.get(pk=pk)
  55. doc = service.document
  56. breadcrumbs = (
  57. ('Documents', reverse('list-documents')),
  58. (str(doc), doc.get_absolute_url()),
  59. (service.name, service.get_absolute_url())
  60. )
  61. costs_uses = CostUse.objects.filter(service=service)
  62. goods_uses = GoodUse.objects.filter(service=service)
  63. services_uses = ServiceUse.objects.filter(service=service)
  64. context = {}
  65. context.update(service.get_prices())
  66. context.update({
  67. 'breadcrumbs': breadcrumbs,
  68. 'document': doc,
  69. 'service': service,
  70. 'costs_uses': costs_uses,
  71. 'goods_uses': goods_uses,
  72. 'services_uses': services_uses,
  73. })
  74. return render(request, 'costs/service_detail.html', context)