Create and code styles of billing view.
This commit is contained in:
parent
e59761a709
commit
f3adc60424
44
musician/templates/musician/billing.html
Normal file
44
musician/templates/musician/billing.html
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
{% extends "musician/base.html" %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<h1 class="service-name">{% trans "Billing" %}</h1>
|
||||||
|
<p class="service-description">Little description of what to be expected...</p>
|
||||||
|
|
||||||
|
<table class="table service-list">
|
||||||
|
<colgroup>
|
||||||
|
<col span="1" style="width: 15%;">
|
||||||
|
<col span="1" style="width: 15%;">
|
||||||
|
<col span="1" style="width: 40%;">
|
||||||
|
<col span="1" style="width: 10%;">
|
||||||
|
<col span="1" style="width: 10%;">
|
||||||
|
<col span="1" style="width: 10%;">
|
||||||
|
</colgroup>
|
||||||
|
<thead class="thead-dark">
|
||||||
|
<tr>
|
||||||
|
<th scope="col">Number</th>
|
||||||
|
<th scope="col">Bill date</th>
|
||||||
|
<th scope="col">Type</th>
|
||||||
|
<th scope="col">Total</th>
|
||||||
|
<th scope="col">Status</th>
|
||||||
|
<th scope="col">Download PDF</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{% for bill in object_list %}
|
||||||
|
<tr>
|
||||||
|
<th scope="row">{{ bill.number }}</th>
|
||||||
|
<td>{{ bill.date|date:"SHORT_DATE_FORMAT" }}</td>
|
||||||
|
<td>{{ bill.type }}</td>
|
||||||
|
<td>{{ bill.total_amount }}</td>
|
||||||
|
<td class="font-weight-bold">{{ bill.status }}</td>
|
||||||
|
<td><a class="text-dark" href="{{ bill.pdf_url }}" target="_blank" rel="noopener noreferrer"><i class="fas fa-file-pdf"></i></a></td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
{# TODO: define proper colspan #}
|
||||||
|
{% include "musician/components/table_paginator.html" %}
|
||||||
|
</table>
|
||||||
|
|
||||||
|
{% endblock %}
|
|
@ -15,6 +15,7 @@ urlpatterns = [
|
||||||
path('auth/login/', views.LoginView.as_view(), name='login'),
|
path('auth/login/', views.LoginView.as_view(), name='login'),
|
||||||
path('auth/logout/', views.LogoutView.as_view(), name='logout'),
|
path('auth/logout/', views.LogoutView.as_view(), name='logout'),
|
||||||
path('dashboard/', views.DashboardView.as_view(), name='dashboard'),
|
path('dashboard/', views.DashboardView.as_view(), name='dashboard'),
|
||||||
|
path('billing/', views.BillingView.as_view(), name='billing'),
|
||||||
path('profile/', views.ProfileView.as_view(), name='profile'),
|
path('profile/', views.ProfileView.as_view(), name='profile'),
|
||||||
path('mails/', views.MailView.as_view(), name='mails'),
|
path('mails/', views.MailView.as_view(), name='mails'),
|
||||||
path('mailing-lists/', views.MailingListsView.as_view(), name='mailing-lists'),
|
path('mailing-lists/', views.MailingListsView.as_view(), name='mailing-lists'),
|
||||||
|
|
|
@ -36,6 +36,24 @@ class DashboardView(CustomContextMixin, UserTokenRequiredMixin, TemplateView):
|
||||||
return context
|
return context
|
||||||
|
|
||||||
|
|
||||||
|
class BillingView(CustomContextMixin, ExtendedPaginationMixin, UserTokenRequiredMixin, ListView):
|
||||||
|
template_name = "musician/billing.html"
|
||||||
|
|
||||||
|
def get_queryset(self):
|
||||||
|
# TODO (@slamora) retrieve user bills
|
||||||
|
from django.utils import timezone
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
'number': 24,
|
||||||
|
'date': timezone.now(),
|
||||||
|
'type': 'subscription',
|
||||||
|
'total_amount': '25,00 €',
|
||||||
|
'status': 'paid',
|
||||||
|
'pdf_url': 'https://example.org/bill.pdf'
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
class ProfileView(CustomContextMixin, UserTokenRequiredMixin, TemplateView):
|
class ProfileView(CustomContextMixin, UserTokenRequiredMixin, TemplateView):
|
||||||
template_name = "musician/profile.html"
|
template_name = "musician/profile.html"
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue