Display user order info on home page (total + unpaid)

This commit is contained in:
Yohan Boniface 2019-05-22 15:31:58 +02:00
parent 132884385e
commit 2aeceeca3c
4 changed files with 53 additions and 40 deletions

View file

@ -290,3 +290,8 @@ class Delivery(Base):
def has_order(self, person):
return person.email in self.orders
def total_for(self, person):
if person.email not in self.orders:
return 0
return self.orders[person.email].total(self.products)

View file

@ -1,23 +1,14 @@
:root {
--primary-color: #0062b7;
--primary-color-light: #e6f0fa;
--secondary-color: #e10055;
--link-color: #00d1b2;
--text-color: #414664;
--border-color: #e6e6eb;
--primary-background-color: #fff;
--secondary-background-color: #fafafb;
--disease: #7846af;
--disease-light: #f5ebfa;
--country: #0f8796;
--country-light: #e6f5f5;
--group: #d03800;
--group-light: #fff5eb;
--keyword: #8c5a2d;
--keyword-light: #f5f0eb;
--kind: #cd0073;
--kind-light: #faf0f5;
--ern: #32009b;
--ern-light: #ebebf5;
--light-text-color: #fafafb;
--background-color: #fafafb;
--flag-color: #A87CA0;
--warning-color: #FFA631;
--danger-color: #d9534f;
--neutral-color: #4D8FAC;
--success-color: #0f8796;
}
@ -103,7 +94,7 @@ body {
font-size: .8rem;
font-family: 'Work Sans', sans-serif;
text-rendering: optimizeLegibility;
background-color: var(--secondary-background-color);
background-color: var(--background-color);
padding: 0;
margin: 0;
}
@ -113,7 +104,6 @@ h3,
h4,
h5,
legend {
/*margin: 0;*/
color: #444;
line-height: 1;
font-weight: 300;
@ -125,7 +115,7 @@ h3 { font-size: 1.4rem }
h4 { font-size: 1.1rem }
a {
color: #00d1b2;
color: var(--link-color);
cursor: pointer;
text-decoration: none;
-webkit-transition: none 86ms ease-out;
@ -165,6 +155,7 @@ main {
padding: 1rem;
}
.flag,
button,
a.button,
input[type=submit] {
@ -196,7 +187,7 @@ input[type=submit] + a.button {
input[type=submit]:hover,
.button:hover {
color: #fff;
color: var(--light-text-color);
background-color: var(--primary-color);
}
@ -204,29 +195,40 @@ input[type=submit]:hover,
button.primary,
a.button.primary,
input[type=submit].primary {
color: #fff;
color: var(--background-color);
background: var(--primary-color);
}
button.primary:hover,
a.button.primary:hover,
input[type=submit].primary:hover {
background-color: #fff;
background-color: var(--background-color);
color: var(--primary-color);
}
button.danger,
a.button.danger,
input[type=submit].danger {
color: #d9534f;
border-color: #d9534f;
color: var(--danger-color);
border-color: var(--danger-color);
}
button.danger:hover,
a.button.danger:hover,
input[type=submit].danger:hover {
background-color: #d9534f;
color: #fff;
background-color: var(--danger-color);
color: var(--light-text-color);
}
.flag {
border-color: var(--flag-color);
color: var(--light-text-color);
background-color: var(--flag-color);
cursor: help;
}
.flag.warning {
background-color: var(--warning-color);
border-color: var(--warning-color);
font-weight: 600;
}
@ -247,10 +249,10 @@ textarea {
position: relative;
height: 2rem;
padding: .4rem .8rem;
color: #50596c;
color: var(--text-color);
font-size: .8rem;
line-height: 1rem;
background-color: #fff;
background-color: var(--background-color);
border: .05rem solid #bbc;
box-sizing: border-box;
}
@ -354,10 +356,10 @@ tr:nth-child(even) {
background-color: #ddd;
}
thead tr {
background-color: #3498db;
background-color: var(--neutral-color);
}
thead tr * {
color: #f1f1f1;
color: var(--light-text-color);
}
thead th + th {
border-left: 1px solid white;
@ -387,11 +389,11 @@ article.delivery th.person {
}
td.missing,
th.missing {
background-color: #db7734;
background-color: var(--warning-color);
}
.missing a {
color: #f1f1f1;
border-color: #f1f1f1;
color: var(--light-text-color);
border-color: var(--light-text-color);
height: 1rem;
}
hr {
@ -427,26 +429,26 @@ hr {
vertical-align: middle;
}
.notification.success {
background-color: #0f8796;
background-color: var(--success-color);
}
.notification.error {
background-color: #e10055;
background-color: var(--danger-color);
}
.notification.warning {
background-color: #f9b42d;
background-color: var(--warning-color);
}
.notification i {
font-size: 2rem;
}
.not-paid {
background-color: #db7734;
background-color: var(--warning-color);
}
.toggle {
display: none;
}
.toggle-label {
cursor: pointer;
color: #00d1b2;
color: var(--link-color);
}
.toggle-container {
display: none;

View file

@ -3,7 +3,7 @@
<li><i class="icon-streetsign"></i> <strong>Lieu</strong> {{ delivery.where }}</li>
<li><i class="icon-strategy"></i> <strong>Référent</strong> <a href="mailto:{{ delivery.contact }}">{{ delivery.contact }}</a></li>
<li><i class="icon-clock"></i> <strong>Date de livraison</strong> <time datetime="{{ delivery.from_date }}">{{ delivery.from_date|date }} de {{ delivery.from_date|time }} à {{ delivery.to_date|time }}</time></li>
<li><i class="icon-hourglass"></i> {% if delivery.status == delivery.OPEN %}<strong>Date limite de commande</strong> <time datetime="{{ delivery.order_before.date() }}">{{ delivery.order_before|date }}</time>{% elif delivery.status == delivery.ADJUSTMENT %}<strong>Ajustement en cours</strong>{% elif delivery.status == delivery.CLOSED %}<strong>{% if delivery.is_foreseen %}Fermée{% else %}À solder{% endif %}</strong>{% else %}<strong>Archivée</strong>{% endif %}</li>
<li><i class="icon-hourglass"></i> {% if delivery.status == delivery.OPEN %}<strong>Date limite de commande</strong> <time datetime="{{ delivery.order_before.date() }}">{{ delivery.order_before|date }}</time>{% elif delivery.status == delivery.ADJUSTMENT %}<strong>Ajustement en cours</strong>{% elif delivery.status == delivery.CLOSED %}<strong>{% if delivery.is_foreseen %}Fermée{% else %}Solde en cours{% endif %}</strong>{% else %}<strong>Archivée</strong>{% endif %}</li>
{% if delivery.instructions %}<li><i class="icon-lightbulb"></i> <strong>À savoir</strong> {{ delivery.instructions }}</li>{% endif %}
{% if delivery.infos_url %}<li><i class="icon-global"></i><strong>Plus d'infos</strong> <a href="{{ delivery.infos_url }}" title="{{ delivery.infos_url }}">{{ delivery.infos_url|truncate(20)}}</a></li>{% endif %}
</ul>

View file

@ -7,3 +7,9 @@
{% endif %}
</a>
{% endif %}
{% if request.user.email in delivery.orders %}
<span class="flag" title="Mon solde"><i class="icon-wallet"></i>&nbsp;{{ delivery.total_for(request.user) }} €</span>
{% if delivery.status == delivery.CLOSED and delivery.is_passed and not delivery.orders[request.user.email].paid %}
<span class="flag warning" title="Ma commande n'est pas marquée comme soldée"><i class="icon-caution"></i>&nbsp;Commande à solder</span>
{% endif %}
{% endif %}