lingo: add a new manager page to list recent transactions (#9252)

This commit is contained in:
Frédéric Péters 2015-12-08 22:43:20 +01:00
parent e177ce4946
commit 5bbd0193cf
8 changed files with 115 additions and 10 deletions

View File

@ -15,9 +15,13 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from django.core.urlresolvers import reverse_lazy
from django.views.generic import CreateView, UpdateView, ListView, DeleteView
from django.http import HttpResponseRedirect
from django.views.generic import (CreateView, UpdateView, ListView,
DeleteView, TemplateView)
from .models import Regie
import eopayment
from .models import Regie, Transaction
class RegieListView(ListView):
model = Regie
@ -25,14 +29,26 @@ class RegieListView(ListView):
class RegieCreateView(CreateView):
model = Regie
success_url = reverse_lazy('lingo-manager-homepage')
success_url = reverse_lazy('lingo-manager-regie-list')
class RegieUpdateView(UpdateView):
model = Regie
success_url = reverse_lazy('lingo-manager-homepage')
success_url = reverse_lazy('lingo-manager-regie-list')
class RegieDeleteView(DeleteView):
model = Regie
success_url = reverse_lazy('lingo-manager-homepage')
success_url = reverse_lazy('lingo-manager-regie-list')
class TransactionListView(ListView):
model = Transaction
paginate_by = 10
def get_queryset(self):
return Transaction.objects.filter(status=eopayment.PAID).order_by('-start_date')
class ManagerHomeView(TemplateView):
template_name = 'lingo/manager_home.html'

View File

@ -220,7 +220,6 @@ class Transaction(models.Model):
eopayment.CANCELLED: _('Cancelled'),
}.get(self.status) or _('Unknown')
@register_cell_class
class LingoBasketCell(CellBase):

View File

@ -2,7 +2,7 @@
{% load i18n %}
{% block appbar %}
<h2>{% trans 'Regies' %}</h2>
<h2>{% trans 'Online Payment' %}</h2>
{% endblock %}
{% block breadcrumb %}

View File

@ -0,0 +1,9 @@
{% extends "lingo/manager_base.html" %}
{% load i18n %}
{% block content %}
<ul class="apps">
<li><a class="button" href="{% url 'lingo-manager-transactions-list' %}">{% trans 'Transactions' %}</a></li>
<li><a class="button" href="{% url 'lingo-manager-regie-list' %}">{% trans 'Regies' %}</a></li>
</ul>
{% endblock %}

View File

@ -1,4 +1,4 @@
{% extends "lingo/manager_base.html" %}
{% extends "lingo/regie_list.html" %}
{% load i18n %}
{% block appbar %}

View File

@ -6,6 +6,11 @@
<a rel="popup" href="{% url 'lingo-manager-regie-add' %}">{% trans 'New' %}</a>
{% endblock %}
{% block breadcrumb %}
{{ block.super }}
<a href="{% url 'lingo-manager-regie-list' %}">{% trans 'Regies' %}</a>
{% endblock %}
{% block content %}
{% if object_list %}

View File

@ -0,0 +1,74 @@
{% extends "lingo/manager_base.html" %}
{% load i18n %}
{% block appbar %}
<h2>{% trans 'Transactions' %}</h2>
{% endblock %}
{% block breadcrumb %}
{{ block.super }}
<a href="{% url 'lingo-manager-transactions-list' %}">{% trans 'Transactions' %}</a>
{% endblock %}
{% block content %}
{% if object_list %}
<table class="main">
<thead>
<tr>
<th>{% trans 'Transaction Identifier' %}</th>
<th>{% trans 'Date' %}</th>
<th>{% trans 'User' %}</th>
<th>{% trans 'Amount' %}</th>
<th colspan="2">{% trans 'Items' %}</th>
</tr>
</thead>
<tbody>
{% for object in object_list %}
<tr>
<td rowspan="{{object.items.all.count}}">{{object.order_id}}</td>
<td rowspan="{{object.items.all.count}}">{{object.start_date}}</td>
<td rowspan="{{object.items.all.count}}">{{object.user.first_name}} {{object.user.last_name}}</td>
<td rowspan="{{object.items.all.count}}">{{object.amount}} €</td>
{% for item in object.items.all %}
{% if not forloop.first %}<tr>{% endif %}
<td style="font-size: smaller">{{item.subject}}</td> <td style="font-size: smaller" class="price">{{item.amount}} €</td></tr>
{% endfor %}
{% if not object.items.all %}</tr>{% endif %}
{% endfor %}
</tbody>
</table>
{% if is_paginated %}
<p class="paginator">
{% if page_obj.has_previous %}
<a href="?page={{ page_obj.previous_page_number }}">&lt;&lt;</a>
{% else %}
<span>&lt;&lt;</span>
{% endif %}
&nbsp;
<span class="current">
{{ page_obj.number }} / {{ page_obj.paginator.num_pages }}
</span>
&nbsp;
{% if page_obj.has_next %}
<a href="?page={{ page_obj.next_page_number }}">&gt;&gt;</a>
{% else %}
<span>&gt;&gt;</span>
{% endif %}
</div>
{% endif %}
</div>
{% else %}
<div class="big-msg-info">
{% blocktrans %}
This site doesn't have any transaction yet.
{% endblocktrans %}
</div>
{% endif %}
{% endblock %}

View File

@ -21,10 +21,12 @@ from combo.urls_utils import decorated_includes, manager_required
from .views import (RegiesApiView, AddBasketItemApiView, PayView, CallbackView,
ReturnView, ItemDownloadView, ItemView)
from .manager_views import (RegieListView, RegieCreateView, RegieUpdateView,
RegieDeleteView)
RegieDeleteView, TransactionListView, ManagerHomeView)
lingo_manager_urls = patterns('lingo.manager_views',
url('^$', RegieListView.as_view(), name='lingo-manager-homepage'),
url('^$', ManagerHomeView.as_view(), name='lingo-manager-homepage'),
url('^transactions/$', TransactionListView.as_view(), name='lingo-manager-transactions-list'),
url('^regies/$', RegieListView.as_view(), name='lingo-manager-regie-list'),
url('^regies/add/$', RegieCreateView.as_view(), name='lingo-manager-regie-add'),
url('^regies/(?P<pk>\w+)/edit$', RegieUpdateView.as_view(),
name='lingo-manager-regie-edit'),