Commit 2daaf992 authored by Sli's avatar Sli

Add groups, allow to ban users from counters and from buying alcohol

parent 1c97c8a7
Pipeline #302 failed with stage
in 3 minutes and 34 seconds
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('core', '0004_user_godfathers'),
]
operations = [
migrations.AddField(
model_name='user',
name='is_banned_alcohol',
field=models.BooleanField(help_text='Designates whether this user is denyed from buying alchool. ', verbose_name='banned from buying alcohol', default=False),
),
]
...@@ -169,13 +169,6 @@ class User(AbstractBaseUser): ...@@ -169,13 +169,6 @@ class User(AbstractBaseUser):
parent_address = models.CharField(_("parent address"), max_length=128, blank=True, default="") parent_address = models.CharField(_("parent address"), max_length=128, blank=True, default="")
is_subscriber_viewable = models.BooleanField(_("is subscriber viewable"), default=True) is_subscriber_viewable = models.BooleanField(_("is subscriber viewable"), default=True)
godfathers = models.ManyToManyField('User', related_name='godchildren', blank=True) godfathers = models.ManyToManyField('User', related_name='godchildren', blank=True)
is_banned_alcohol = models.BooleanField(
_('banned from buying alcohol'),
default=False,
help_text=_(
'Designates whether this user is denyed from buying alchool. '
),
)
objects = UserManager() objects = UserManager()
...@@ -248,6 +241,14 @@ class User(AbstractBaseUser): ...@@ -248,6 +241,14 @@ class User(AbstractBaseUser):
from club.models import Club from club.models import Club
return Club.objects.filter(unix_name=settings.SITH_LAUNDERETTE_MANAGER['unix_name']).first().get_membership_for(self) return Club.objects.filter(unix_name=settings.SITH_LAUNDERETTE_MANAGER['unix_name']).first().get_membership_for(self)
@property
def is_banned_alcohol(self):
return self.groups.filter(name=settings.SITH_GROUPS['banned-alcohol']['name']).exists()
@property
def is_banned_counter(self):
return self.groups.filter(name=settings.SITH_GROUPS['banned-from-counters']['name']).exists()
def save(self, *args, **kwargs): def save(self, *args, **kwargs):
create = False create = False
with transaction.atomic(): with transaction.atomic():
......
...@@ -127,7 +127,7 @@ class UserProfileForm(forms.ModelForm): ...@@ -127,7 +127,7 @@ class UserProfileForm(forms.ModelForm):
fields = ['first_name', 'last_name', 'nick_name', 'email', 'date_of_birth', 'profile_pict', 'avatar_pict', fields = ['first_name', 'last_name', 'nick_name', 'email', 'date_of_birth', 'profile_pict', 'avatar_pict',
'scrub_pict', 'sex', 'second_email', 'address', 'parent_address', 'phone', 'parent_phone', 'scrub_pict', 'sex', 'second_email', 'address', 'parent_address', 'phone', 'parent_phone',
'tshirt_size', 'role', 'department', 'dpt_option', 'semester', 'quote', 'school', 'promo', 'tshirt_size', 'role', 'department', 'dpt_option', 'semester', 'quote', 'school', 'promo',
'forum_signature', 'is_subscriber_viewable', 'is_banned_alcohol'] 'forum_signature', 'is_subscriber_viewable']
widgets = { widgets = {
'date_of_birth': SelectDate, 'date_of_birth': SelectDate,
'profile_pict': forms.ClearableFileInput, 'profile_pict': forms.ClearableFileInput,
......
...@@ -319,7 +319,7 @@ class UserUpdateProfileView(UserTabsMixin, CanEditMixin, UpdateView): ...@@ -319,7 +319,7 @@ class UserUpdateProfileView(UserTabsMixin, CanEditMixin, UpdateView):
form_class = UserProfileForm form_class = UserProfileForm
current_tab = "edit" current_tab = "edit"
edit_once = ['profile_pict', 'date_of_birth', 'first_name', 'last_name'] edit_once = ['profile_pict', 'date_of_birth', 'first_name', 'last_name']
board_only = ['is_banned_alcohol'] board_only = []
def remove_restricted_fields(self, request): def remove_restricted_fields(self, request):
""" """
......
...@@ -284,6 +284,9 @@ class CounterClick(CounterTabsMixin, DetailView): ...@@ -284,6 +284,9 @@ class CounterClick(CounterTabsMixin, DetailView):
if product.limit_age >= 18 and self.customer.user.is_banned_alcohol: if product.limit_age >= 18 and self.customer.user.is_banned_alcohol:
request.session['not_allowed'] = True request.session['not_allowed'] = True
return False return False
if self.customer.user.is_banned_counter:
request.session['not_allowed'] = True
return False
if self.customer.user.date_of_birth and self.customer.user.get_age() < product.limit_age: # Check if affordable if self.customer.user.date_of_birth and self.customer.user.get_age() < product.limit_age: # Check if affordable
request.session['too_young'] = True request.session['too_young'] = True
return False return False
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-10-15 19:07+0200\n" "POT-Creation-Date: 2016-10-16 03:23+0200\n"
"PO-Revision-Date: 2016-07-18\n" "PO-Revision-Date: 2016-07-18\n"
"Last-Translator: Skia <skia@libskia.so>\n" "Last-Translator: Skia <skia@libskia.so>\n"
"Language-Team: AE info <ae.info@utbm.fr>\n" "Language-Team: AE info <ae.info@utbm.fr>\n"
...@@ -123,7 +123,7 @@ msgstr "numéro" ...@@ -123,7 +123,7 @@ msgstr "numéro"
msgid "journal" msgid "journal"
msgstr "classeur" msgstr "classeur"
#: accounting/models.py:191 core/models.py:486 core/models.py:764 #: accounting/models.py:191 core/models.py:487 core/models.py:765
#: counter/models.py:229 counter/models.py:272 counter/models.py:358 #: counter/models.py:229 counter/models.py:272 counter/models.py:358
#: eboutic/models.py:15 eboutic/models.py:48 #: eboutic/models.py:15 eboutic/models.py:48
msgid "date" msgid "date"
...@@ -190,7 +190,7 @@ msgstr "Compte" ...@@ -190,7 +190,7 @@ msgstr "Compte"
msgid "Company" msgid "Company"
msgstr "Entreprise" msgstr "Entreprise"
#: accounting/models.py:204 sith/settings.py:279 #: accounting/models.py:204 sith/settings.py:287
msgid "Other" msgid "Other"
msgstr "Autre" msgstr "Autre"
...@@ -306,7 +306,7 @@ msgstr "Compte en banque : " ...@@ -306,7 +306,7 @@ msgstr "Compte en banque : "
#: club/templates/club/club_sellings.jinja:48 #: club/templates/club/club_sellings.jinja:48
#: core/templates/core/file_detail.jinja:43 #: core/templates/core/file_detail.jinja:43
#: core/templates/core/group_list.jinja:13 core/templates/core/macros.jinja:66 #: core/templates/core/group_list.jinja:13 core/templates/core/macros.jinja:66
#: core/templates/core/user_account_detail.jinja:67 #: core/templates/core/user_account_detail.jinja:38
#: core/templates/core/user_edit.jinja:18 #: core/templates/core/user_edit.jinja:18
#: counter/templates/counter/last_ops.jinja:29 #: counter/templates/counter/last_ops.jinja:29
#: counter/templates/counter/last_ops.jinja:59 #: counter/templates/counter/last_ops.jinja:59
...@@ -408,7 +408,7 @@ msgstr "Fin" ...@@ -408,7 +408,7 @@ msgstr "Fin"
#: accounting/templates/accounting/club_account_details.jinja:31 #: accounting/templates/accounting/club_account_details.jinja:31
#: accounting/templates/accounting/journal_details.jinja:31 #: accounting/templates/accounting/journal_details.jinja:31
#: core/templates/core/user_account_detail.jinja:20 #: core/templates/core/user_account_detail.jinja:53
#: core/templates/core/user_account_detail.jinja:81 #: core/templates/core/user_account_detail.jinja:81
#: counter/templates/counter/last_ops.jinja:17 #: counter/templates/counter/last_ops.jinja:17
msgid "Amount" msgid "Amount"
...@@ -448,7 +448,7 @@ msgid "General journal:" ...@@ -448,7 +448,7 @@ msgid "General journal:"
msgstr "Classeur : " msgstr "Classeur : "
#: accounting/templates/accounting/journal_details.jinja:18 #: accounting/templates/accounting/journal_details.jinja:18
#: core/templates/core/user_account.jinja:36 #: core/templates/core/user_account.jinja:38
#: core/templates/core/user_account_detail.jinja:10 #: core/templates/core/user_account_detail.jinja:10
#: counter/templates/counter/counter_click.jinja:32 #: counter/templates/counter/counter_click.jinja:32
msgid "Amount: " msgid "Amount: "
...@@ -474,7 +474,7 @@ msgstr "No" ...@@ -474,7 +474,7 @@ msgstr "No"
#: accounting/templates/accounting/journal_details.jinja:29 #: accounting/templates/accounting/journal_details.jinja:29
#: club/templates/club/club_sellings.jinja:18 #: club/templates/club/club_sellings.jinja:18
#: core/templates/core/user_account_detail.jinja:17 #: core/templates/core/user_account_detail.jinja:17
#: core/templates/core/user_account_detail.jinja:46 #: core/templates/core/user_account_detail.jinja:50
#: core/templates/core/user_account_detail.jinja:79 #: core/templates/core/user_account_detail.jinja:79
#: counter/templates/counter/cash_summary_list.jinja:34 #: counter/templates/counter/cash_summary_list.jinja:34
#: counter/templates/counter/last_ops.jinja:14 #: counter/templates/counter/last_ops.jinja:14
...@@ -484,7 +484,7 @@ msgstr "Date" ...@@ -484,7 +484,7 @@ msgstr "Date"
#: accounting/templates/accounting/journal_details.jinja:30 #: accounting/templates/accounting/journal_details.jinja:30
#: club/templates/club/club_sellings.jinja:22 #: club/templates/club/club_sellings.jinja:22
#: core/templates/core/user_account_detail.jinja:49 #: core/templates/core/user_account_detail.jinja:20
#: counter/templates/counter/last_ops.jinja:42 #: counter/templates/counter/last_ops.jinja:42
msgid "Label" msgid "Label"
msgstr "Étiquette" msgstr "Étiquette"
...@@ -510,7 +510,7 @@ msgid "Done" ...@@ -510,7 +510,7 @@ msgid "Done"
msgstr "Effectué" msgstr "Effectué"
#: accounting/templates/accounting/journal_details.jinja:37 #: accounting/templates/accounting/journal_details.jinja:37
#: counter/templates/counter/cash_summary_list.jinja:37 counter/views.py:705 #: counter/templates/counter/cash_summary_list.jinja:37 counter/views.py:711
msgid "Comment" msgid "Comment"
msgstr "Commentaire" msgstr "Commentaire"
...@@ -703,14 +703,14 @@ msgstr "Total : " ...@@ -703,14 +703,14 @@ msgstr "Total : "
#: club/templates/club/club_sellings.jinja:19 club/views.py:165 #: club/templates/club/club_sellings.jinja:19 club/views.py:165
#: core/templates/core/user_account_detail.jinja:18 #: core/templates/core/user_account_detail.jinja:18
#: core/templates/core/user_account_detail.jinja:47 #: core/templates/core/user_account_detail.jinja:51
#: counter/templates/counter/cash_summary_list.jinja:33 counter/views.py:75 #: counter/templates/counter/cash_summary_list.jinja:33 counter/views.py:78
msgid "Counter" msgid "Counter"
msgstr "Comptoir" msgstr "Comptoir"
#: club/templates/club/club_sellings.jinja:20 #: club/templates/club/club_sellings.jinja:20
#: core/templates/core/user_account_detail.jinja:19 #: core/templates/core/user_account_detail.jinja:19
#: core/templates/core/user_account_detail.jinja:48 #: core/templates/core/user_account_detail.jinja:52
#: counter/templates/counter/last_ops.jinja:15 #: counter/templates/counter/last_ops.jinja:15
#: counter/templates/counter/last_ops.jinja:40 #: counter/templates/counter/last_ops.jinja:40
msgid "Barman" msgid "Barman"
...@@ -724,15 +724,15 @@ msgid "Customer" ...@@ -724,15 +724,15 @@ msgid "Customer"
msgstr "Client" msgstr "Client"
#: club/templates/club/club_sellings.jinja:23 #: club/templates/club/club_sellings.jinja:23
#: core/templates/core/user_account_detail.jinja:50 #: core/templates/core/user_account_detail.jinja:21
#: core/templates/core/user_stats.jinja:28 #: core/templates/core/user_stats.jinja:28
#: counter/templates/counter/last_ops.jinja:43 #: counter/templates/counter/last_ops.jinja:43
msgid "Quantity" msgid "Quantity"
msgstr "Quantité" msgstr "Quantité"
#: club/templates/club/club_sellings.jinja:24 #: club/templates/club/club_sellings.jinja:24
#: core/templates/core/user_account.jinja:9 #: core/templates/core/user_account.jinja:10
#: core/templates/core/user_account_detail.jinja:51 #: core/templates/core/user_account_detail.jinja:22
#: counter/templates/counter/cash_summary_list.jinja:35 #: counter/templates/counter/cash_summary_list.jinja:35
#: counter/templates/counter/last_ops.jinja:44 #: counter/templates/counter/last_ops.jinja:44
#: counter/templates/counter/stats.jinja:18 #: counter/templates/counter/stats.jinja:18
...@@ -740,8 +740,8 @@ msgid "Total" ...@@ -740,8 +740,8 @@ msgid "Total"
msgstr "Total" msgstr "Total"
#: club/templates/club/club_sellings.jinja:25 #: club/templates/club/club_sellings.jinja:25
#: core/templates/core/user_account_detail.jinja:21 #: core/templates/core/user_account_detail.jinja:23
#: core/templates/core/user_account_detail.jinja:52 #: core/templates/core/user_account_detail.jinja:54
#: counter/templates/counter/last_ops.jinja:18 #: counter/templates/counter/last_ops.jinja:18
#: counter/templates/counter/last_ops.jinja:45 #: counter/templates/counter/last_ops.jinja:45
msgid "Payment method" msgid "Payment method"
...@@ -786,16 +786,16 @@ msgstr "Propriétés" ...@@ -786,16 +786,16 @@ msgstr "Propriétés"
msgid "Select user" msgid "Select user"
msgstr "Choisir un utilisateur" msgstr "Choisir un utilisateur"
#: club/views.py:163 counter/views.py:903 #: club/views.py:163 counter/views.py:909
msgid "Begin date" msgid "Begin date"
msgstr "Date de début" msgstr "Date de début"
#: club/views.py:164 counter/views.py:904 #: club/views.py:164 counter/views.py:910
msgid "End date" msgid "End date"
msgstr "Date de fin" msgstr "Date de fin"
#: club/views.py:178 core/templates/core/user_stats.jinja:27 #: club/views.py:178 core/templates/core/user_stats.jinja:27
#: counter/views.py:984 #: counter/views.py:990
msgid "Product" msgid "Product"
msgstr "Produit" msgstr "Produit"
...@@ -1074,130 +1074,120 @@ msgstr "adresse des parents" ...@@ -1074,130 +1074,120 @@ msgstr "adresse des parents"
msgid "is subscriber viewable" msgid "is subscriber viewable"
msgstr "profil visible par les cotisants" msgstr "profil visible par les cotisants"
#: core/models.py:173 #: core/models.py:293
msgid "banned from buying alcohol"
msgstr "Interdit d'achat d'alcool"
#: core/models.py:176
#, fuzzy
#| msgid "Designates whether this user is a superuser. "
msgid "Designates whether this user is denyed from buying alchool. "
msgstr "Est-ce que l'utilisateur est super-utilisateur."
#: core/models.py:292
msgid "A user with that username already exists" msgid "A user with that username already exists"
msgstr "Un utilisateur de ce nom d'utilisateur existe déjà" msgstr "Un utilisateur de ce nom d'utilisateur existe déjà"
#: core/models.py:413 core/templates/core/macros.jinja:17 #: core/models.py:414 core/templates/core/macros.jinja:17
#: core/templates/core/user_detail.jinja:14 #: core/templates/core/user_detail.jinja:14
#: core/templates/core/user_detail.jinja:16 #: core/templates/core/user_detail.jinja:16
#: core/templates/core/user_edit.jinja:16 #: core/templates/core/user_edit.jinja:16
msgid "Profile" msgid "Profile"
msgstr "Profil" msgstr "Profil"
#: core/models.py:463 #: core/models.py:464
msgid "Visitor" msgid "Visitor"
msgstr "Visiteur" msgstr "Visiteur"
#: core/models.py:468 #: core/models.py:469
msgid "define if we show a users stats" msgid "define if we show a users stats"
msgstr "Definit si l'on montre les statistiques de l'utilisateur" msgstr "Definit si l'on montre les statistiques de l'utilisateur"
#: core/models.py:470 #: core/models.py:471
msgid "Show your account statistics to others" msgid "Show your account statistics to others"
msgstr "Montrez vos statistiques de compte aux autres" msgstr "Montrez vos statistiques de compte aux autres"
#: core/models.py:477 #: core/models.py:478
msgid "file name" msgid "file name"
msgstr "nom du fichier" msgstr "nom du fichier"
#: core/models.py:478 core/models.py:613 #: core/models.py:479 core/models.py:614
msgid "parent" msgid "parent"
msgstr "parent" msgstr "parent"
#: core/models.py:479 core/models.py:489 #: core/models.py:480 core/models.py:490
msgid "file" msgid "file"
msgstr "fichier" msgstr "fichier"
#: core/models.py:480 #: core/models.py:481
msgid "owner" msgid "owner"
msgstr "propriétaire" msgstr "propriétaire"
#: core/models.py:481 core/models.py:619 #: core/models.py:482 core/models.py:620
msgid "edit group" msgid "edit group"
msgstr "groupe d'édition" msgstr "groupe d'édition"
#: core/models.py:482 core/models.py:620 #: core/models.py:483 core/models.py:621
msgid "view group" msgid "view group"
msgstr "groupe de vue" msgstr "groupe de vue"
#: core/models.py:483 #: core/models.py:484
msgid "is folder" msgid "is folder"
msgstr "est un dossier" msgstr "est un dossier"
#: core/models.py:484 #: core/models.py:485
msgid "mime type" msgid "mime type"
msgstr "type mime" msgstr "type mime"
#: core/models.py:485 #: core/models.py:486
msgid "size" msgid "size"
msgstr "taille" msgstr "taille"
#: core/models.py:517 #: core/models.py:518
msgid "Character '/' not authorized in name" msgid "Character '/' not authorized in name"
msgstr "Le caractère '/' n'est pas autorisé dans les noms de fichier" msgstr "Le caractère '/' n'est pas autorisé dans les noms de fichier"
#: core/models.py:520 core/models.py:525 #: core/models.py:521 core/models.py:526
msgid "Loop in folder tree" msgid "Loop in folder tree"
msgstr "Boucle dans l'arborescence des dossiers" msgstr "Boucle dans l'arborescence des dossiers"
#: core/models.py:529 #: core/models.py:530
msgid "You can not make a file be a children of a non folder file" msgid "You can not make a file be a children of a non folder file"
msgstr "" msgstr ""
"Vous ne pouvez pas mettre un fichier enfant de quelque chose qui n'est pas " "Vous ne pouvez pas mettre un fichier enfant de quelque chose qui n'est pas "
"un dossier" "un dossier"
#: core/models.py:533 #: core/models.py:534
msgid "Duplicate file" msgid "Duplicate file"
msgstr "Un fichier de ce nom existe déjà" msgstr "Un fichier de ce nom existe déjà"
#: core/models.py:543 #: core/models.py:544
msgid "You must provide a file" msgid "You must provide a file"
msgstr "Vous devez fournir un fichier" msgstr "Vous devez fournir un fichier"
#: core/models.py:568 #: core/models.py:569
msgid "Folder: " msgid "Folder: "
msgstr "Dossier : " msgstr "Dossier : "
#: core/models.py:570 #: core/models.py:571
msgid "File: " msgid "File: "
msgstr "Fichier : " msgstr "Fichier : "
#: core/models.py:612 core/models.py:616 #: core/models.py:613 core/models.py:617
msgid "page name" msgid "page name"
msgstr "nom de la page" msgstr "nom de la page"
#: core/models.py:617 #: core/models.py:618
msgid "owner group" msgid "owner group"
msgstr "groupe propriétaire" msgstr "groupe propriétaire"
#: core/models.py:648 #: core/models.py:649
msgid "Duplicate page" msgid "Duplicate page"
msgstr "Une page de ce nom existe déjà" msgstr "Une page de ce nom existe déjà"
#: core/models.py:654 #: core/models.py:655
msgid "Loop in page tree" msgid "Loop in page tree"
msgstr "Boucle dans l'arborescence des pages" msgstr "Boucle dans l'arborescence des pages"
#: core/models.py:761 #: core/models.py:762
msgid "revision" msgid "revision"
msgstr "révision" msgstr "révision"
#: core/models.py:762 #: core/models.py:763
msgid "page title" msgid "page title"
msgstr "titre de la page" msgstr "titre de la page"
#: core/models.py:763 #: core/models.py:764
msgid "page content" msgid "page content"
msgstr "contenu de la page" msgstr "contenu de la page"
...@@ -1646,47 +1636,47 @@ msgstr "Utilisateurs" ...@@ -1646,47 +1636,47 @@ msgstr "Utilisateurs"
msgid "Clubs" msgid "Clubs"
msgstr "Clubs" msgstr "Clubs"
#: core/templates/core/user_account.jinja:7 #: core/templates/core/user_account.jinja:8
msgid "Year" msgid "Year"
msgstr "Année" msgstr "Année"
#: core/templates/core/user_account.jinja:8 #: core/templates/core/user_account.jinja:9
msgid "Month" msgid "Month"
msgstr "Mois" msgstr "Mois"
#: core/templates/core/user_account.jinja:30 #: core/templates/core/user_account.jinja:32
#: core/templates/core/user_account_detail.jinja:4 #: core/templates/core/user_account_detail.jinja:4
#, python-format #, python-format
msgid "%(user_name)s's account" msgid "%(user_name)s's account"
msgstr "Compte de %(user_name)s" msgstr "Compte de %(user_name)s"
#: core/templates/core/user_account.jinja:35 #: core/templates/core/user_account.jinja:37
#: core/templates/core/user_account_detail.jinja:9 #: core/templates/core/user_account_detail.jinja:9
msgid "User account" msgid "User account"
msgstr "Compte utilisateur" msgstr "Compte utilisateur"
#: core/templates/core/user_account.jinja:38 #: core/templates/core/user_account.jinja:42
#: core/templates/core/user_account_detail.jinja:13 #: core/templates/core/user_account_detail.jinja:13
msgid "Account buyings"
msgstr "Achat sur compte utilisateur"
#: core/templates/core/user_account.jinja:45
#: core/templates/core/user_account_detail.jinja:46
#: counter/templates/counter/cash_summary_list.jinja:17 #: counter/templates/counter/cash_summary_list.jinja:17
#: counter/templates/counter/last_ops.jinja:10 #: counter/templates/counter/last_ops.jinja:10
msgid "Refillings" msgid "Refillings"
msgstr "Rechargements" msgstr "Rechargements"
#: core/templates/core/user_account.jinja:42 #: core/templates/core/user_account.jinja:49
#: core/templates/core/user_account_detail.jinja:42
msgid "Account buyings"
msgstr "Achat sur compte utilisateur"
#: core/templates/core/user_account.jinja:46
#: core/templates/core/user_account_detail.jinja:75 #: core/templates/core/user_account_detail.jinja:75
msgid "Eboutic invoices" msgid "Eboutic invoices"
msgstr "Facture eboutic" msgstr "Facture eboutic"
#: core/templates/core/user_account.jinja:50 counter/views.py:473 #: core/templates/core/user_account.jinja:53 counter/views.py:479
msgid "Etickets" msgid "Etickets"
msgstr "" msgstr ""
#: core/templates/core/user_account.jinja:58 #: core/templates/core/user_account.jinja:64
#: core/templates/core/user_account_detail.jinja:103 #: core/templates/core/user_account_detail.jinja:103
msgid "User has no account" msgid "User has no account"
msgstr "L'utilisateur n'a pas de compte" msgstr "L'utilisateur n'a pas de compte"
...@@ -1853,8 +1843,8 @@ msgstr "Fusionner deux utilisateurs" ...@@ -1853,8 +1843,8 @@ msgstr "Fusionner deux utilisateurs"
msgid "Subscriptions" msgid "Subscriptions"
msgstr "Cotisations" msgstr "Cotisations"
#: core/templates/core/user_tools.jinja:23 counter/views.py:443 #: core/templates/core/user_tools.jinja:23 counter/views.py:449
#: counter/views.py:592 #: counter/views.py:598
msgid "Counters" msgid "Counters"
msgstr "Comptoirs" msgstr "Comptoirs"
...@@ -1875,7 +1865,7 @@ msgid "Product types management" ...@@ -1875,7 +1865,7 @@ msgid "Product types management"
msgstr "Gestion des types de produit" msgstr "Gestion des types de produit"