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 %}
+
+
+
+
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}
|