item details view (#8221)
This commit is contained in:
parent
c51fdf226a
commit
7ce8833aa0
|
@ -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
|
||||
|
||||
|
|
|
@ -0,0 +1,41 @@
|
|||
{% load i18n %}
|
||||
<div id="content">
|
||||
<div id="appbar">
|
||||
<h2>
|
||||
{% blocktrans with number=item.display_id %}
|
||||
Item nr. {{ number }}
|
||||
{% endblocktrans %}
|
||||
</h2>
|
||||
<div id="item">
|
||||
<form action="{% url 'lingo-pay' %}" method="POST">
|
||||
<h4>
|
||||
{% blocktrans with label=item.subject %}
|
||||
Label: {{ label }}
|
||||
{% endblocktrans %}
|
||||
</h4>
|
||||
<p>
|
||||
{% blocktrans with amount=item.total_amount %}
|
||||
Total amount: {{ amount }}€
|
||||
{% endblocktrans %}
|
||||
</p>
|
||||
{% if item.amount %}
|
||||
<p>
|
||||
{% blocktrans with amount=item.amount %}
|
||||
Amount to pay: {{ amount }}€
|
||||
{% endblocktrans %}
|
||||
</p>
|
||||
{% endif %}
|
||||
<p>{% trans "Issued on : " %} {{ item.creation_date|date:"SHORT_DATE_FORMAT" }}</p>
|
||||
{% if item.payment_date %}
|
||||
<p>{% trans "Payed on : " %} {{ item.payment_date|date:"SHORT_DATE_FORMAT" }}</p>
|
||||
{% endif %}
|
||||
{% if item.amount %}
|
||||
{% csrf_token %}
|
||||
<input type="hidden" name="regie" value="{{ regie.pk }}" />
|
||||
<input type="hidden" name="item" value="{{ item.pk }}" />
|
||||
<button>{% trans "Pay" %}</button>
|
||||
{% endif %}
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -23,7 +23,8 @@
|
|||
{% endblocktrans %}
|
||||
</td>
|
||||
<td>
|
||||
{% if item.has_pdf %}
|
||||
<a href="{% url 'view-item' regie_id=item.regie.pk item_id=item.id %}" rel="popup" class="icon-view">{% trans "View" %}</a>
|
||||
{% if item.has_pdf %} /
|
||||
<a href="{% url 'download-item-pdf' regie_id=item.regie.pk item_id=item.id %}" class="icon-pdf">
|
||||
{% trans "Download" %}</a>
|
||||
{% endif %}
|
||||
|
|
|
@ -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<regie_id>[\w,-]+)/(?P<item_id>[\w,-]+)/pdf$',
|
||||
ItemDownloadView.as_view(), name='download-item-pdf'),
|
||||
url(r'^lingo/item/(?P<regie_id>[\w,-]+)/(?P<item_id>[\w,-]+)/$',
|
||||
ItemView.as_view(), name='view-item'),
|
||||
)
|
||||
|
|
|
@ -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}
|
||||
|
|
Reference in New Issue