From 7ce8833aa01650a173bc696bfbbae0c848bc05ab Mon Sep 17 00:00:00 2001 From: Serghei Mihai Date: Fri, 4 Sep 2015 10:41:57 +0200 Subject: [PATCH] item details view (#8221) --- lingo/models.py | 18 +++++++++-- lingo/templates/lingo/combo/item.html | 41 ++++++++++++++++++++++++++ lingo/templates/lingo/combo/items.html | 3 +- lingo/urls.py | 4 ++- lingo/views.py | 12 +++++++- 5 files changed, 73 insertions(+), 5 deletions(-) create mode 100644 lingo/templates/lingo/combo/item.html diff --git a/lingo/models.py b/lingo/models.py index f196a5b..e2d7d1d 100644 --- a/lingo/models.py +++ b/lingo/models.py @@ -19,6 +19,7 @@ import json import requests import urllib from dateutil import parser +from decimal import Decimal import eopayment from jsonfield import JSONField @@ -47,6 +48,7 @@ SERVICES = [ (eopayment.PAYBOX, _('Paybox')), ] + def build_remote_item(data, regie): return RemoteItem(id=data.get('id'), regie=regie, creation_date=data['created'], @@ -119,6 +121,18 @@ class Regie(models.Model): return self.get_url(request, url, NameID=mellon['name_id_content']) raise PermissionDenied + def get_item(self, request, item): + if not self.is_remote(): + return self.basketitem_set.get(pk=item) + + if hasattr(request, 'session') and request.session.get('mellon_session'): + mellon = request.session.get('mellon_session') + url = self.webservice_url + '/invoice/%s/' % item + item = self.get_url(request, url, + NameID=mellon['name_id_content']).json() + return build_remote_item(item.get('data'), self) + return {} + def as_api_dict(self): return {'slug': self.slug, 'label': self.label, @@ -161,9 +175,9 @@ class RemoteItem(object): self.id = id self.regie = regie self.creation_date = parser.parse(creation_date) - self.total_amount = total_amount + self.total_amount = Decimal(total_amount) + self.amount = Decimal(amount) self.display_id = display_id - self.amount = amount self.subject = subject self.has_pdf = has_pdf diff --git a/lingo/templates/lingo/combo/item.html b/lingo/templates/lingo/combo/item.html new file mode 100644 index 0000000..470409b --- /dev/null +++ b/lingo/templates/lingo/combo/item.html @@ -0,0 +1,41 @@ +{% load i18n %} +
+
+

+ {% blocktrans with number=item.display_id %} + Item nr. {{ number }} + {% endblocktrans %} +

+
+
+

+ {% blocktrans with label=item.subject %} + Label: {{ label }} + {% endblocktrans %} +

+

+ {% blocktrans with amount=item.total_amount %} + Total amount: {{ amount }}€ + {% endblocktrans %} +

+ {% if item.amount %} +

+ {% blocktrans with amount=item.amount %} + Amount to pay: {{ amount }}€ + {% endblocktrans %} +

+ {% endif %} +

{% trans "Issued on : " %} {{ item.creation_date|date:"SHORT_DATE_FORMAT" }}

+ {% if item.payment_date %} +

{% trans "Payed on : " %} {{ item.payment_date|date:"SHORT_DATE_FORMAT" }}

+ {% endif %} + {% if item.amount %} + {% csrf_token %} + + + + {% endif %} +
+
+
+
diff --git a/lingo/templates/lingo/combo/items.html b/lingo/templates/lingo/combo/items.html index 304f941..1dafa16 100644 --- a/lingo/templates/lingo/combo/items.html +++ b/lingo/templates/lingo/combo/items.html @@ -23,7 +23,8 @@ {% endblocktrans %} - {% if item.has_pdf %} + {% trans "View" %} + {% if item.has_pdf %} / {% trans "Download" %} {% endif %} diff --git a/lingo/urls.py b/lingo/urls.py index f7b3e8e..70193c3 100644 --- a/lingo/urls.py +++ b/lingo/urls.py @@ -19,7 +19,7 @@ from django.conf.urls import patterns, url, include from combo.urls_utils import decorated_includes, manager_required from .views import (RegiesApiView, AddBasketItemApiView, PayView, CallbackView, - ItemDownloadView) + ItemDownloadView, ItemView) from .manager_views import (RegieListView, RegieCreateView, RegieUpdateView, RegieDeleteView) @@ -42,4 +42,6 @@ urlpatterns = patterns('', include(lingo_manager_urls))), url(r'^lingo/item/(?P[\w,-]+)/(?P[\w,-]+)/pdf$', ItemDownloadView.as_view(), name='download-item-pdf'), + url(r'^lingo/item/(?P[\w,-]+)/(?P[\w,-]+)/$', + ItemView.as_view(), name='view-item'), ) diff --git a/lingo/views.py b/lingo/views.py index 12e10ce..b888fad 100644 --- a/lingo/views.py +++ b/lingo/views.py @@ -23,7 +23,7 @@ from django.http import HttpResponse, HttpResponseRedirect from django.template.response import TemplateResponse from django.utils import timezone from django.views.decorators.csrf import csrf_exempt -from django.views.generic import View, ListView +from django.views.generic import View, ListView, TemplateView import eopayment @@ -171,3 +171,13 @@ class ItemDownloadView(View): r = HttpResponse(data, content_type='application/pdf') r['Content-Disposition'] = 'attachment; filename="%(item_id)s.pdf"' % kwargs return r + + +class ItemView(TemplateView): + http_method_names = [u'get'] + template_name = 'lingo/combo/item.html' + + def get_context_data(self, **kwargs): + regie = Regie.objects.get(pk=kwargs['regie_id']) + item = regie.get_item(self.request, kwargs['item_id']) + return {'item': item, 'regie': regie}