From 7a2985b1866d144d2a9f5214fc67bac264d026be Mon Sep 17 00:00:00 2001 From: Skia Date: Thu, 22 Sep 2016 11:09:15 +0200 Subject: [PATCH] Add product top 10 --- core/templates/core/user_stats.jinja | 21 ++++- core/views/user.py | 5 +- locale/fr/LC_MESSAGES/django.mo | Bin 35271 -> 35318 bytes locale/fr/LC_MESSAGES/django.po | 132 ++++++++++++++------------- 4 files changed, 92 insertions(+), 66 deletions(-) diff --git a/core/templates/core/user_stats.jinja b/core/templates/core/user_stats.jinja index 69692ff1..a481ca99 100644 --- a/core/templates/core/user_stats.jinja +++ b/core/templates/core/user_stats.jinja @@ -6,20 +6,37 @@ {% block content %} {% if profile.permanencies %} +

{% trans %}Permanencies{% endtrans %}

-

{% trans %}Permanencies{% endtrans %}

Total: {{ total_perm_time }}

Foyer: {{ total_foyer_time }}

MDE: {{ total_mde_time }}

La Gommette: {{ total_gommette_time }}

{% endif %} +

{% trans %}Buyings{% endtrans %}

-

{% trans %}Buyings{% endtrans %}

Foyer: {{ total_foyer_buyings }} €

MDE: {{ total_mde_buyings }} €

La Gommette: {{ total_gommette_buyings }} €

+

{% trans %}Product top 10{% endtrans %}

+ + + + + + + + + {% for p in top_product %} + + + + + {% endfor %} + +
{% trans %}Product{% endtrans %}{% trans %}Quantity{% endtrans %}
{{ p['product__name'] }}{{ p['product_sum'] }}
{% endblock %} diff --git a/core/views/user.py b/core/views/user.py index 7748c86f..f5eca7b3 100644 --- a/core/views/user.py +++ b/core/views/user.py @@ -222,7 +222,8 @@ class UserStatsView(UserTabsMixin, CanViewMixin, DetailView): def get_context_data(self, **kwargs): kwargs = super(UserStatsView, self).get_context_data(**kwargs) - from counter.models import Counter + from counter.models import Counter, Product, Selling + from django.db.models import Sum foyer = Counter.objects.filter(name="Foyer").first() mde = Counter.objects.filter(name="MDE").first() gommette = Counter.objects.filter(name="La Gommette").first() @@ -237,6 +238,8 @@ class UserStatsView(UserTabsMixin, CanViewMixin, DetailView): date__gte=semester_start)]) kwargs['total_gommette_buyings'] = sum([b.unit_price*b.quantity for b in self.object.customer.buyings.filter(counter=gommette, date__gte=semester_start)]) + kwargs['top_product'] = self.object.customer.buyings.values('product__name').annotate( + product_sum=Sum('quantity')).exclude(product_sum=None).order_by('-product_sum').all()[:10] return kwargs class UserMiniView(CanViewMixin, DetailView): diff --git a/locale/fr/LC_MESSAGES/django.mo b/locale/fr/LC_MESSAGES/django.mo index 0cbe6f47eb5ba5b672d1d6c369ee743a088c3f74..c6af0593675afdc216183d609ace4760cb9c0454 100644 GIT binary patch delta 12171 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 diff --git a/locale/fr/LC_MESSAGES/django.po b/locale/fr/LC_MESSAGES/django.po index b4bed85c..7737d0cc 100644 --- a/locale/fr/LC_MESSAGES/django.po +++ b/locale/fr/LC_MESSAGES/django.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-21 12:42+0200\n" +"POT-Creation-Date: 2016-09-22 11:08+0200\n" "PO-Revision-Date: 2016-07-18\n" "Last-Translator: Skia \n" "Language-Team: AE info \n" @@ -85,12 +85,12 @@ msgstr "Compte club" msgid "%(club_account)s on %(bank_account)s" msgstr "%(club_account)s sur %(bank_account)s" -#: accounting/models.py:130 club/models.py:146 counter/models.py:330 +#: accounting/models.py:130 club/models.py:146 counter/models.py:331 #: launderette/models.py:122 msgid "start date" msgstr "date de début" -#: accounting/models.py:131 club/models.py:147 counter/models.py:331 +#: accounting/models.py:131 club/models.py:147 counter/models.py:332 msgid "end date" msgstr "date de fin" @@ -103,7 +103,7 @@ msgid "club account" msgstr "compte club" #: accounting/models.py:135 accounting/models.py:178 counter/models.py:25 -#: counter/models.py:218 +#: counter/models.py:219 msgid "amount" msgstr "montant" @@ -124,16 +124,16 @@ msgid "journal" msgstr "classeur" #: accounting/models.py:179 core/models.py:461 core/models.py:739 -#: counter/models.py:221 counter/models.py:264 counter/models.py:347 +#: counter/models.py:222 counter/models.py:265 counter/models.py:348 #: eboutic/models.py:15 eboutic/models.py:48 msgid "date" msgstr "date" -#: accounting/models.py:180 counter/models.py:348 +#: accounting/models.py:180 counter/models.py:349 msgid "comment" msgstr "commentaire" -#: accounting/models.py:181 counter/models.py:222 counter/models.py:265 +#: accounting/models.py:181 counter/models.py:223 counter/models.py:266 #: subscription/models.py:57 msgid "payment method" msgstr "méthode de paiement" @@ -232,7 +232,7 @@ msgstr "code" msgid "An accounting type code contains only numbers" msgstr "Un code comptable ne contient que des numéros" -#: accounting/models.py:282 accounting/models.py:308 counter/models.py:256 +#: accounting/models.py:282 accounting/models.py:308 counter/models.py:257 msgid "label" msgstr "intitulé" @@ -272,7 +272,7 @@ msgstr "Liste des types comptable" #: accounting/templates/accounting/journal_details.jinja:9 #: accounting/templates/accounting/operation_edit.jinja:9 #: accounting/templates/accounting/simplifiedaccountingtype_list.jinja:9 -#: core/templates/core/user_tools.jinja:41 +#: core/templates/core/user_tools.jinja:42 msgid "Accounting" msgstr "Comptabilité" @@ -291,7 +291,7 @@ msgstr "Il n'y a pas de types comptable dans ce site web." #: accounting/templates/accounting/bank_account_details.jinja:4 #: accounting/templates/accounting/bank_account_details.jinja:13 -#: core/templates/core/user_tools.jinja:48 +#: core/templates/core/user_tools.jinja:49 msgid "Bank account: " msgstr "Compte en banque : " @@ -327,7 +327,7 @@ msgstr "Nouveau compte club" #: accounting/templates/accounting/club_account_details.jinja:53 #: accounting/templates/accounting/journal_details.jinja:66 club/views.py:52 #: core/templates/core/file.jinja:38 core/templates/core/page.jinja:31 -#: core/templates/core/user_tools.jinja:34 core/views/user.py:151 +#: core/templates/core/user_tools.jinja:35 core/views/user.py:151 #: counter/templates/counter/counter_list.jinja:17 #: counter/templates/counter/counter_list.jinja:32 #: counter/templates/counter/counter_list.jinja:47 @@ -545,7 +545,7 @@ msgstr "Vous ne pouvez pas faire de boucles dans les clubs" msgid "A club with that unix_name already exists" msgstr "Un club avec ce nom UNIX existe déjà." -#: club/models.py:144 counter/models.py:328 counter/models.py:345 +#: club/models.py:144 counter/models.py:329 counter/models.py:346 #: eboutic/models.py:14 eboutic/models.py:47 launderette/models.py:89 #: launderette/models.py:126 msgid "user" @@ -675,6 +675,7 @@ msgstr "Intitulé" #: club/templates/club/club_sellings.jinja:23 #: core/templates/core/user_account_detail.jinja:50 +#: core/templates/core/user_stats.jinja:28 msgid "Quantity" msgstr "Quantité" @@ -693,7 +694,7 @@ msgid "Payment method" msgstr "Méthode de paiement" #: club/templates/club/club_tools.jinja:4 -#: core/templates/core/user_tools.jinja:60 +#: core/templates/core/user_tools.jinja:61 msgid "Club tools" msgstr "Outils club" @@ -735,7 +736,7 @@ msgstr "Date de début" msgid "End date" msgstr "Date de fin" -#: club/views.py:172 +#: club/views.py:172 core/templates/core/user_stats.jinja:27 msgid "Product" msgstr "Produit" @@ -1019,8 +1020,8 @@ msgid "A user with that username already exists" msgstr "Un utilisateur de ce nom d'utilisateur existe déjà" #: core/models.py:396 core/templates/core/macros.jinja:17 -#: core/templates/core/user_detail.jinja:15 -#: core/templates/core/user_detail.jinja:17 +#: core/templates/core/user_detail.jinja:14 +#: core/templates/core/user_detail.jinja:16 #: core/templates/core/user_edit.jinja:16 msgid "Profile" msgstr "Profil" @@ -1348,12 +1349,12 @@ msgid "Lost password?" msgstr "Mot de passe perdu ?" #: core/templates/core/macros.jinja:27 -#: core/templates/core/user_detail.jinja:28 +#: core/templates/core/user_detail.jinja:27 msgid "Born: " msgstr "Né le : " #: core/templates/core/macros.jinja:31 -#: core/templates/core/user_detail.jinja:49 +#: core/templates/core/user_detail.jinja:48 msgid "Promo: " msgstr "Promo : " @@ -1623,25 +1624,25 @@ msgstr "Articles" msgid "%(user_name)s's profile" msgstr "Profil de %(user_name)s" -#: core/templates/core/user_detail.jinja:34 +#: core/templates/core/user_detail.jinja:33 msgid "Option: " msgstr "Filière : " -#: core/templates/core/user_detail.jinja:59 +#: core/templates/core/user_detail.jinja:58 #, python-format msgid "Subscribed until %(subscription_end)s" msgstr "Cotisant jusqu'au %(subscription_end)s" -#: core/templates/core/user_detail.jinja:61 +#: core/templates/core/user_detail.jinja:60 #: core/templates/core/user_edit.jinja:39 msgid "Account number: " msgstr "Numero de compte : " -#: core/templates/core/user_detail.jinja:68 +#: core/templates/core/user_detail.jinja:67 msgid "Not subscribed" msgstr "Non cotisant" -#: core/templates/core/user_detail.jinja:70 +#: core/templates/core/user_detail.jinja:69 #: subscription/templates/subscription/subscription.jinja:4 #: subscription/templates/subscription/subscription.jinja:8 msgid "New subscription" @@ -1718,14 +1719,18 @@ msgstr "Liste d'utilisateurs" msgid "%(user_name)s's stats" msgstr "Stats de %(user_name)s" -#: core/templates/core/user_stats.jinja:10 +#: core/templates/core/user_stats.jinja:9 msgid "Permanencies" msgstr "Permanences" -#: core/templates/core/user_stats.jinja:18 +#: core/templates/core/user_stats.jinja:17 msgid "Buyings" msgstr "Achats" +#: core/templates/core/user_stats.jinja:23 +msgid "Product top 10" +msgstr "Top 10 produits" + #: core/templates/core/user_tools.jinja:4 #, python-format msgid "%(user_name)s's tools" @@ -1743,48 +1748,53 @@ msgstr "Gestion de Sith" msgid "Groups" msgstr "Groupes" -#: core/templates/core/user_tools.jinja:17 +#: core/templates/core/user_tools.jinja:15 +#: rootplace/templates/rootplace/merge.jinja:4 +msgid "Merge users" +msgstr "Fusionner deux utilisateurs" + +#: core/templates/core/user_tools.jinja:18 msgid "Subscriptions" msgstr "Cotisations" -#: core/templates/core/user_tools.jinja:22 counter/views.py:395 +#: core/templates/core/user_tools.jinja:23 counter/views.py:395 #: counter/views.py:534 msgid "Counters" msgstr "Comptoirs" -#: core/templates/core/user_tools.jinja:25 +#: core/templates/core/user_tools.jinja:26 msgid "General management" msgstr "Gestion générale" -#: core/templates/core/user_tools.jinja:26 +#: core/templates/core/user_tools.jinja:27 msgid "General counters management" msgstr "Gestion générale des comptoirs" -#: core/templates/core/user_tools.jinja:27 +#: core/templates/core/user_tools.jinja:28 msgid "Products management" msgstr "Gestion des produits" -#: core/templates/core/user_tools.jinja:28 +#: core/templates/core/user_tools.jinja:29 msgid "Product types management" msgstr "Gestion des types de produit" -#: core/templates/core/user_tools.jinja:29 +#: core/templates/core/user_tools.jinja:30 #: counter/templates/counter/cash_summary_list.jinja:18 counter/views.py:415 msgid "Cash register summaries" msgstr "Relevés de caisse" -#: core/templates/core/user_tools.jinja:35 core/views/user.py:145 +#: core/templates/core/user_tools.jinja:36 core/views/user.py:145 #: counter/templates/counter/counter_list.jinja:18 #: counter/templates/counter/counter_list.jinja:33 #: counter/templates/counter/counter_list.jinja:48 msgid "Stats" msgstr "Stats" -#: core/templates/core/user_tools.jinja:44 +#: core/templates/core/user_tools.jinja:45 msgid "General accounting" msgstr "Comptabilité générale" -#: core/templates/core/user_tools.jinja:53 +#: core/templates/core/user_tools.jinja:54 msgid "Club account: " msgstr "Compte club : " @@ -1846,7 +1856,7 @@ msgstr "Fillot" msgid "Select user" msgstr "Choisir un utilisateur" -#: core/views/user.py:272 +#: core/views/user.py:275 msgid "User already has a profile picture" msgstr "L'utilisateur a déjà une photo de profil" @@ -1939,73 +1949,77 @@ msgstr "Eboutic" msgid "sellers" msgstr "vendeurs" -#: counter/models.py:131 counter/models.py:329 counter/models.py:346 +#: counter/models.py:129 launderette/models.py:125 +msgid "token" +msgstr "jeton" + +#: counter/models.py:132 counter/models.py:330 counter/models.py:347 #: launderette/models.py:16 msgid "counter" msgstr "comptoir" -#: counter/models.py:224 +#: counter/models.py:225 msgid "bank" msgstr "banque" -#: counter/models.py:226 counter/models.py:267 +#: counter/models.py:227 counter/models.py:268 msgid "is validated" msgstr "est validé" -#: counter/models.py:229 +#: counter/models.py:230 msgid "refilling" msgstr "rechargement" -#: counter/models.py:260 eboutic/models.py:103 +#: counter/models.py:261 eboutic/models.py:103 msgid "unit price" msgstr "prix unitaire" -#: counter/models.py:261 counter/models.py:379 eboutic/models.py:104 +#: counter/models.py:262 counter/models.py:380 eboutic/models.py:104 msgid "quantity" msgstr "quantité" -#: counter/models.py:266 +#: counter/models.py:267 msgid "Sith account" msgstr "Compte utilisateur" -#: counter/models.py:266 sith/settings.py:271 sith/settings.py:276 +#: counter/models.py:267 sith/settings.py:271 sith/settings.py:276 #: sith/settings.py:298 msgid "Credit card" msgstr "Carte bancaire" -#: counter/models.py:270 +#: counter/models.py:271 msgid "selling" msgstr "vente" -#: counter/models.py:332 +#: counter/models.py:333 msgid "last activity date" msgstr "dernière activité" -#: counter/models.py:335 +#: counter/models.py:336 msgid "permanency" msgstr "permanence" -#: counter/models.py:349 +#: counter/models.py:350 msgid "emptied" msgstr "coffre vidée" -#: counter/models.py:352 +#: counter/models.py:353 msgid "cash register summary" msgstr "relevé de caisse" -#: counter/models.py:377 +#: counter/models.py:378 msgid "cash summary" msgstr "relevé" -#: counter/models.py:378 +#: counter/models.py:379 msgid "value" msgstr "valeur" -#: counter/models.py:380 +#: counter/models.py:381 msgid "check" msgstr "chèque" -#: counter/models.py:383 +#: counter/models.py:384 msgid "cash register summary item" msgstr "élément de relevé de caisse" @@ -2384,10 +2398,6 @@ msgstr "Le nom du jeton ne peut pas être vide" msgid "machine" msgstr "machine" -#: launderette/models.py:125 -msgid "token" -msgstr "jeton" - #: launderette/templates/launderette/launderette_admin.jinja:4 msgid "Launderette admin" msgstr "Gestion de la laverie" @@ -2474,10 +2484,6 @@ msgstr "L'utilisateur n'a pas réservé de créneau" msgid "Token not found" msgstr "Jeton non trouvé" -#: rootplace/templates/rootplace/merge.jinja:4 -msgid "Merge users" -msgstr "Fusionner deux utilisateurs" - #: rootplace/templates/rootplace/merge.jinja:8 msgid "Merge two users" msgstr "Fusionner deux utilisateurs" @@ -2486,11 +2492,11 @@ msgstr "Fusionner deux utilisateurs" msgid "Merge" msgstr "Fusion" -#: rootplace/views.py:63 +#: rootplace/views.py:66 msgid "User that will be kept" msgstr "Utilisateur qui sera conservé" -#: rootplace/views.py:64 +#: rootplace/views.py:67 msgid "User that will be deleted" msgstr "Utilisateur qui sera supprimé"