Add a restriction on the counter login view to authorize only the sellers

This commit is contained in:
Skia 2016-09-09 01:54:26 +02:00
parent 4c2bf9cbf9
commit 90e47c9d7d
4 changed files with 163 additions and 168 deletions

View File

@ -151,6 +151,7 @@ class UserTabsMixin(TabedViewMixin):
try: try:
if (self.object.customer and (self.object == self.request.user if (self.object.customer and (self.object == self.request.user
or self.request.user.is_in_group(settings.SITH_GROUPS['accounting-admin']['name']) or self.request.user.is_in_group(settings.SITH_GROUPS['accounting-admin']['name'])
or self.request.user.is_in_group(settings.SITH_BAR_MANAGER['unix_name']+settings.SITH_BOARD_SUFFIX)
or self.request.user.is_root)): or self.request.user.is_root)):
tab_list.append({ tab_list.append({
'url': reverse('core:user_account', kwargs={'user_id': self.object.id}), 'url': reverse('core:user_account', kwargs={'user_id': self.object.id}),
@ -312,6 +313,7 @@ class UserAccountView(UserTabsMixin, DetailView):
res = super(UserAccountView, self).dispatch(request, *arg, **kwargs) res = super(UserAccountView, self).dispatch(request, *arg, **kwargs)
if (self.object == request.user if (self.object == request.user
or request.user.is_in_group(settings.SITH_GROUPS['accounting-admin']['name']) or request.user.is_in_group(settings.SITH_GROUPS['accounting-admin']['name'])
or request.user.is_in_group(settings.SITH_BAR_MANAGER['unix_name']+settings.SITH_BOARD_SUFFIX)
or request.user.is_root): or request.user.is_root):
return res return res
raise PermissionDenied raise PermissionDenied

View File

@ -81,8 +81,8 @@ class CounterMain(DetailView, ProcessFormView, FormMixin):
kwargs['login_form'].cleaned_data = {} # add_error fails if there are no cleaned_data kwargs['login_form'].cleaned_data = {} # add_error fails if there are no cleaned_data
if "credentials" in self.request.GET: if "credentials" in self.request.GET:
kwargs['login_form'].add_error(None, _("Bad credentials")) kwargs['login_form'].add_error(None, _("Bad credentials"))
if "subscription" in self.request.GET: if "sellers" in self.request.GET:
kwargs['login_form'].add_error(None, _("User is not subscriber")) kwargs['login_form'].add_error(None, _("User is not barman"))
kwargs['form'] = self.get_form() kwargs['form'] = self.get_form()
if self.object.type == 'BAR': if self.object.type == 'BAR':
kwargs['barmen'] = self.object.get_barmen_list() kwargs['barmen'] = self.object.get_barmen_list()
@ -356,10 +356,10 @@ class CounterLogin(RedirectView):
self.errors = [] self.errors = []
if form.is_valid(): if form.is_valid():
user = User.objects.filter(username=form.cleaned_data['username']).first() user = User.objects.filter(username=form.cleaned_data['username']).first()
if user.is_in_group(settings.SITH_MAIN_MEMBERS_GROUP) and not user in self.counter.get_barmen_list(): if user in self.counter.sellers.all() and not user in self.counter.get_barmen_list():
self.counter.add_barman(user) self.counter.add_barman(user)
else: else:
self.errors += ["subscription"] self.errors += ["sellers"]
else: else:
self.errors += ["credentials"] self.errors += ["credentials"]
return super(CounterLogin, self).post(request, *args, **kwargs) return super(CounterLogin, self).post(request, *args, **kwargs)

Binary file not shown.

View File

@ -6,7 +6,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-09-04 15:46+0200\n" "POT-Creation-Date: 2016-09-09 01:48+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"
@ -85,12 +85,12 @@ msgstr "Compte club"
msgid "%(club_account)s on %(bank_account)s" msgid "%(club_account)s on %(bank_account)s"
msgstr "%(club_account)s sur %(bank_account)s" msgstr "%(club_account)s sur %(bank_account)s"
#: accounting/models.py:130 club/models.py:146 counter/models.py:280 #: accounting/models.py:130 club/models.py:146 counter/models.py:310
#: launderette/models.py:122 #: launderette/models.py:122
msgid "start date" msgid "start date"
msgstr "date de début" msgstr "date de début"
#: accounting/models.py:131 club/models.py:147 counter/models.py:281 #: accounting/models.py:131 club/models.py:147 counter/models.py:311
msgid "end date" msgid "end date"
msgstr "date de fin" msgstr "date de fin"
@ -123,13 +123,13 @@ msgstr "numéro"
msgid "journal" msgid "journal"
msgstr "classeur" msgstr "classeur"
#: accounting/models.py:179 core/models.py:458 core/models.py:736 #: accounting/models.py:179 core/models.py:460 core/models.py:738
#: counter/models.py:201 counter/models.py:244 counter/models.py:294 #: counter/models.py:201 counter/models.py:244 counter/models.py:324
#: eboutic/models.py:15 eboutic/models.py:48 #: eboutic/models.py:15 eboutic/models.py:48
msgid "date" msgid "date"
msgstr "date" msgstr "date"
#: accounting/models.py:180 counter/models.py:295 #: accounting/models.py:180 counter/models.py:325
msgid "comment" msgid "comment"
msgstr "commentaire" msgstr "commentaire"
@ -142,7 +142,7 @@ msgstr "méthode de paiement"
msgid "cheque number" msgid "cheque number"
msgstr "numéro de chèque" msgstr "numéro de chèque"
#: accounting/models.py:183 eboutic/models.py:146 #: accounting/models.py:183 eboutic/models.py:116
msgid "invoice" msgid "invoice"
msgstr "facture" msgstr "facture"
@ -172,7 +172,7 @@ msgstr "Utilisateur"
msgid "Club" msgid "Club"
msgstr "Club" msgstr "Club"
#: accounting/models.py:190 core/templates/core/user_base.jinja:51 #: accounting/models.py:190 core/views/user.py:159
msgid "Account" msgid "Account"
msgstr "Compte" msgstr "Compte"
@ -180,7 +180,7 @@ msgstr "Compte"
msgid "Company" msgid "Company"
msgstr "Entreprise" msgstr "Entreprise"
#: accounting/models.py:190 sith/settings.py:285 sith/settings_sample.py:274 #: accounting/models.py:190 sith/settings.py:286 sith/settings_sample.py:275
msgid "Other" msgid "Other"
msgstr "Autre" msgstr "Autre"
@ -304,8 +304,8 @@ msgid "Delete"
msgstr "Supprimer" msgstr "Supprimer"
#: accounting/templates/accounting/bank_account_details.jinja:17 #: accounting/templates/accounting/bank_account_details.jinja:17
#: club/templates/club/club_base.jinja:11 #: club/templates/club/club_base.jinja:11 club/views.py:25
#: core/templates/core/user_base.jinja:12 #: core/views/user.py:126
msgid "Infos" msgid "Infos"
msgstr "Infos" msgstr "Infos"
@ -325,9 +325,9 @@ msgstr "Nouveau compte club"
#: accounting/templates/accounting/bank_account_list.jinja:21 #: accounting/templates/accounting/bank_account_list.jinja:21
#: accounting/templates/accounting/club_account_details.jinja:53 #: accounting/templates/accounting/club_account_details.jinja:53
#: accounting/templates/accounting/journal_details.jinja:66 #: accounting/templates/accounting/journal_details.jinja:66
#: club/templates/club/club_base.jinja:42 core/templates/core/file.jinja:38 #: club/templates/club/club_base.jinja:42 club/views.py:47
#: core/templates/core/page.jinja:31 core/templates/core/user_base.jinja:33 #: core/templates/core/file.jinja:38 core/templates/core/page.jinja:31
#: core/templates/core/user_tools.jinja:33 #: core/templates/core/user_tools.jinja:33 core/views/user.py:143
#: counter/templates/counter/counter_list.jinja:17 #: counter/templates/counter/counter_list.jinja:17
#: counter/templates/counter/counter_list.jinja:31 #: counter/templates/counter/counter_list.jinja:31
#: counter/templates/counter/counter_list.jinja:45 #: counter/templates/counter/counter_list.jinja:45
@ -472,7 +472,7 @@ msgid "Done"
msgstr "Effectué" msgstr "Effectué"
#: accounting/templates/accounting/journal_details.jinja:34 #: accounting/templates/accounting/journal_details.jinja:34
#: counter/views.py:596 #: counter/views.py:613
msgid "Comment" msgid "Comment"
msgstr "Commentaire" msgstr "Commentaire"
@ -487,8 +487,6 @@ msgid "Edit operation"
msgstr "Éditer l'opération" msgstr "Éditer l'opération"
#: accounting/templates/accounting/operation_edit.jinja:39 #: accounting/templates/accounting/operation_edit.jinja:39
#: club/templates/club/club_edit.jinja:8
#: club/templates/club/club_edit_prop.jinja:8
#: core/templates/core/create.jinja:12 core/templates/core/edit.jinja:12 #: core/templates/core/create.jinja:12 core/templates/core/edit.jinja:12
#: core/templates/core/file_edit.jinja:8 core/templates/core/page_prop.jinja:8 #: core/templates/core/file_edit.jinja:8 core/templates/core/page_prop.jinja:8
#: core/templates/core/pagerev_edit.jinja:24 #: core/templates/core/pagerev_edit.jinja:24
@ -542,7 +540,7 @@ msgstr "Vous ne pouvez pas faire de boucles dans les clubs"
msgid "A club with that unix_name already exists" msgid "A club with that unix_name already exists"
msgstr "Un club avec ce nom UNIX existe déjà." msgstr "Un club avec ce nom UNIX existe déjà."
#: club/models.py:144 counter/models.py:278 counter/models.py:292 #: club/models.py:144 counter/models.py:308 counter/models.py:322
#: eboutic/models.py:14 eboutic/models.py:47 launderette/models.py:89 #: eboutic/models.py:14 eboutic/models.py:47 launderette/models.py:89
#: launderette/models.py:126 #: launderette/models.py:126
msgid "user" msgid "user"
@ -569,34 +567,26 @@ msgstr "L'utilisateur est déjà membre de ce club"
msgid "past member" msgid "past member"
msgstr "Anciens membres" msgstr "Anciens membres"
#: club/templates/club/club_base.jinja:18 #: club/templates/club/club_base.jinja:18 club/views.py:31
msgid "Members" msgid "Members"
msgstr "Membres" msgstr "Membres"
#: club/templates/club/club_base.jinja:26 #: club/templates/club/club_base.jinja:26 club/views.py:36
msgid "Old members" msgid "Old members"
msgstr "Anciens membres" msgstr "Anciens membres"
#: club/templates/club/club_base.jinja:34 core/templates/core/base.jinja:37 #: club/templates/club/club_base.jinja:34 club/views.py:42
#: core/templates/core/user_base.jinja:19 #: core/templates/core/base.jinja:37 core/views/user.py:132
msgid "Tools" msgid "Tools"
msgstr "Outils" msgstr "Outils"
#: club/templates/club/club_base.jinja:50 #: club/templates/club/club_base.jinja:50 club/views.py:53
#: counter/templates/counter/counter_list.jinja:20 #: counter/templates/counter/counter_list.jinja:20
#: counter/templates/counter/counter_list.jinja:34 #: counter/templates/counter/counter_list.jinja:34
#: counter/templates/counter/counter_list.jinja:48 #: counter/templates/counter/counter_list.jinja:48
msgid "Props" msgid "Props"
msgstr "Propriétés" msgstr "Propriétés"
#: club/templates/club/club_edit.jinja:4
msgid "Edit club"
msgstr "Éditer le club"
#: club/templates/club/club_edit_prop.jinja:4
msgid "Edit club properties"
msgstr "Éditer les propriétés du club"
#: club/templates/club/club_list.jinja:4 #: club/templates/club/club_list.jinja:4
#: club/templates/club/club_list.jinja:24 #: club/templates/club/club_list.jinja:24
msgid "Club list" msgid "Club list"
@ -946,116 +936,116 @@ msgstr "profil visible par les cotisants"
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:393 core/templates/core/macros.jinja:17 #: core/models.py:395 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:435 #: core/models.py:437
msgid "Visitor" msgid "Visitor"
msgstr "Visiteur" msgstr "Visiteur"
#: core/models.py:440 #: core/models.py:442
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:442 #: core/models.py:444
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:449 #: core/models.py:451
msgid "file name" msgid "file name"
msgstr "nom du fichier" msgstr "nom du fichier"
#: core/models.py:450 core/models.py:585 #: core/models.py:452 core/models.py:587
msgid "parent" msgid "parent"
msgstr "parent" msgstr "parent"
#: core/models.py:451 core/models.py:461 #: core/models.py:453 core/models.py:463
msgid "file" msgid "file"
msgstr "fichier" msgstr "fichier"
#: core/models.py:452 #: core/models.py:454
msgid "owner" msgid "owner"
msgstr "propriétaire" msgstr "propriétaire"
#: core/models.py:453 core/models.py:591 #: core/models.py:455 core/models.py:593
msgid "edit group" msgid "edit group"
msgstr "groupe d'édition" msgstr "groupe d'édition"
#: core/models.py:454 core/models.py:592 #: core/models.py:456 core/models.py:594
msgid "view group" msgid "view group"
msgstr "groupe de vue" msgstr "groupe de vue"
#: core/models.py:455 #: core/models.py:457
msgid "is folder" msgid "is folder"
msgstr "est un dossier" msgstr "est un dossier"
#: core/models.py:456 #: core/models.py:458
msgid "mime type" msgid "mime type"
msgstr "type mime" msgstr "type mime"
#: core/models.py:457 #: core/models.py:459
msgid "size" msgid "size"
msgstr "taille" msgstr "taille"
#: core/models.py:489 #: core/models.py:491
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:492 core/models.py:497 #: core/models.py:494 core/models.py:499
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:501 #: core/models.py:503
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:505 #: core/models.py:507
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:515 #: core/models.py:517
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:540 #: core/models.py:542
msgid "Folder: " msgid "Folder: "
msgstr "Dossier : " msgstr "Dossier : "
#: core/models.py:542 #: core/models.py:544
msgid "File: " msgid "File: "
msgstr "Fichier : " msgstr "Fichier : "
#: core/models.py:584 core/models.py:588 #: core/models.py:586 core/models.py:590
msgid "page name" msgid "page name"
msgstr "nom de la page" msgstr "nom de la page"
#: core/models.py:589 #: core/models.py:591
msgid "owner group" msgid "owner group"
msgstr "groupe propriétaire" msgstr "groupe propriétaire"
#: core/models.py:620 #: core/models.py:622
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:626 #: core/models.py:628
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:733 #: core/models.py:735
msgid "revision" msgid "revision"
msgstr "révision" msgstr "révision"
#: core/models.py:734 #: core/models.py:736
msgid "page title" msgid "page title"
msgstr "titre de la page" msgstr "titre de la page"
#: core/models.py:735 #: core/models.py:737
msgid "page content" msgid "page content"
msgstr "contenu de la page" msgstr "contenu de la page"
@ -1129,7 +1119,7 @@ msgstr "Partenaires"
msgid "Help" msgid "Help"
msgstr "Aide" msgstr "Aide"
#: core/templates/core/base.jinja:87 #: core/templates/core/base.jinja:103
msgid "Site made by good people" msgid "Site made by good people"
msgstr "Site réalisé par des gens bons" msgstr "Site réalisé par des gens bons"
@ -1543,15 +1533,6 @@ msgstr "Articles"
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"
#: core/templates/core/user_base.jinja:26
msgid "Stats"
msgstr "Stats"
#: core/templates/core/user_base.jinja:41
#: core/templates/core/user_tools.jinja:14
msgid "Groups"
msgstr "Groupes"
#: core/templates/core/user_detail.jinja:4 #: core/templates/core/user_detail.jinja:4
#, python-format #, python-format
msgid "%(user_name)s's profile" msgid "%(user_name)s's profile"
@ -1656,12 +1637,16 @@ msgstr "Outils utilisateurs"
msgid "Sith management" msgid "Sith management"
msgstr "Gestion de Sith" msgstr "Gestion de Sith"
#: core/templates/core/user_tools.jinja:14 core/views/user.py:149
msgid "Groups"
msgstr "Groupes"
#: core/templates/core/user_tools.jinja:17 #: core/templates/core/user_tools.jinja:17
msgid "Subscriptions" msgid "Subscriptions"
msgstr "Cotisations" msgstr "Cotisations"
#: core/templates/core/user_tools.jinja:22 #: core/templates/core/user_tools.jinja:22 counter/views.py:392
#: counter/templates/counter/counter_base.jinja:11 counter/views.py:511 #: counter/views.py:526
msgid "Counters" msgid "Counters"
msgstr "Comptoirs" msgstr "Comptoirs"
@ -1737,7 +1722,11 @@ msgstr "Blouse : montrez aux autres à quoi ressemble votre blouse !"
msgid "Bad image format, only jpeg, png, and gif are accepted" msgid "Bad image format, only jpeg, png, and gif are accepted"
msgstr "Mauvais format d'image, seuls les jpeg, png, et gif sont acceptés" msgstr "Mauvais format d'image, seuls les jpeg, png, et gif sont acceptés"
#: core/views/user.py:184 #: core/views/user.py:137
msgid "Stats"
msgstr "Stats"
#: core/views/user.py:226
msgid "User already has a profile picture" msgid "User already has a profile picture"
msgstr "L'utilisateur a déjà une photo de profil" msgstr "L'utilisateur a déjà une photo de profil"
@ -1822,8 +1811,8 @@ msgstr "Bureau"
#: eboutic/templates/eboutic/eboutic_main.jinja:24 #: eboutic/templates/eboutic/eboutic_main.jinja:24
#: eboutic/templates/eboutic/eboutic_makecommand.jinja:8 #: eboutic/templates/eboutic/eboutic_makecommand.jinja:8
#: eboutic/templates/eboutic/eboutic_payment_result.jinja:4 #: eboutic/templates/eboutic/eboutic_payment_result.jinja:4
#: sith/settings.py:284 sith/settings.py:292 sith/settings_sample.py:273 #: sith/settings.py:285 sith/settings.py:293 sith/settings_sample.py:274
#: sith/settings_sample.py:281 #: sith/settings_sample.py:282
msgid "Eboutic" msgid "Eboutic"
msgstr "Eboutic" msgstr "Eboutic"
@ -1831,7 +1820,7 @@ msgstr "Eboutic"
msgid "sellers" msgid "sellers"
msgstr "vendeurs" msgstr "vendeurs"
#: counter/models.py:123 counter/models.py:279 counter/models.py:293 #: counter/models.py:123 counter/models.py:309 counter/models.py:323
#: launderette/models.py:16 #: launderette/models.py:16
msgid "counter" msgid "counter"
msgstr "comptoir" msgstr "comptoir"
@ -1848,11 +1837,11 @@ msgstr "est validé"
msgid "refilling" msgid "refilling"
msgstr "rechargement" msgstr "rechargement"
#: counter/models.py:240 eboutic/models.py:133 #: counter/models.py:240 eboutic/models.py:103
msgid "unit price" msgid "unit price"
msgstr "prix unitaire" msgstr "prix unitaire"
#: counter/models.py:241 counter/models.py:318 eboutic/models.py:134 #: counter/models.py:241 counter/models.py:348 eboutic/models.py:104
msgid "quantity" msgid "quantity"
msgstr "quantité" msgstr "quantité"
@ -1860,9 +1849,9 @@ msgstr "quantité"
msgid "Sith account" msgid "Sith account"
msgstr "Compte utilisateur" msgstr "Compte utilisateur"
#: counter/models.py:246 sith/settings.py:277 sith/settings.py:282 #: counter/models.py:246 sith/settings.py:278 sith/settings.py:283
#: sith/settings.py:304 sith/settings_sample.py:266 #: sith/settings.py:305 sith/settings_sample.py:267
#: sith/settings_sample.py:271 sith/settings_sample.py:293 #: sith/settings_sample.py:272 sith/settings_sample.py:294
msgid "Credit card" msgid "Credit card"
msgstr "Carte bancaire" msgstr "Carte bancaire"
@ -1870,35 +1859,35 @@ msgstr "Carte bancaire"
msgid "selling" msgid "selling"
msgstr "vente" msgstr "vente"
#: counter/models.py:282 #: counter/models.py:312
msgid "last activity date" msgid "last activity date"
msgstr "dernière activité" msgstr "dernière activité"
#: counter/models.py:285 #: counter/models.py:315
msgid "permanency" msgid "permanency"
msgstr "permanence" msgstr "permanence"
#: counter/models.py:296 #: counter/models.py:326
msgid "emptied" msgid "emptied"
msgstr "coffre vidée" msgstr "coffre vidée"
#: counter/models.py:299 #: counter/models.py:329
msgid "cash register summary" msgid "cash register summary"
msgstr "relevé de caisse" msgstr "relevé de caisse"
#: counter/models.py:316 #: counter/models.py:346
msgid "cash summary" msgid "cash summary"
msgstr "relevé" msgstr "relevé"
#: counter/models.py:317 #: counter/models.py:347
msgid "value" msgid "value"
msgstr "valeur" msgstr "valeur"
#: counter/models.py:319 #: counter/models.py:349
msgid "check" msgid "check"
msgstr "chèque" msgstr "chèque"
#: counter/models.py:322 #: counter/models.py:352
msgid "cash register summary item" msgid "cash register summary item"
msgstr "élément de relevé de caisse" msgstr "élément de relevé de caisse"
@ -1907,23 +1896,6 @@ msgstr "élément de relevé de caisse"
msgid "Make a cash register summary" msgid "Make a cash register summary"
msgstr "Faire un relevé de caisse" msgstr "Faire un relevé de caisse"
#: counter/templates/counter/counter_base.jinja:5
msgid "Counter administration"
msgstr "Administration des comptoirs"
#: counter/templates/counter/counter_base.jinja:16
msgid "Products"
msgstr "Produits"
#: counter/templates/counter/counter_base.jinja:21
#: counter/templates/counter/product_list.jinja:10
msgid "Archived products"
msgstr "Produits archivés"
#: counter/templates/counter/counter_base.jinja:26
msgid "Product types"
msgstr "Types de produit"
#: counter/templates/counter/counter_click.jinja:29 #: counter/templates/counter/counter_click.jinja:29
msgid "Customer" msgid "Customer"
msgstr "Client" msgstr "Client"
@ -2033,7 +2005,7 @@ msgid "Barman: "
msgstr "Barman : " msgstr "Barman : "
#: counter/templates/counter/product_list.jinja:4 #: counter/templates/counter/product_list.jinja:4
#: counter/templates/counter/product_list.jinja:13 #: counter/templates/counter/product_list.jinja:12
msgid "Product list" msgid "Product list"
msgstr "Liste des produits" msgstr "Liste des produits"
@ -2041,7 +2013,7 @@ msgstr "Liste des produits"
msgid "New product" msgid "New product"
msgstr "Nouveau produit" msgstr "Nouveau produit"
#: counter/templates/counter/product_list.jinja:23 #: counter/templates/counter/product_list.jinja:22
msgid "There is no products in this website." msgid "There is no products in this website."
msgstr "Il n'y a pas de produits dans ce site web." msgstr "Il n'y a pas de produits dans ce site web."
@ -2071,8 +2043,8 @@ msgid "Bad credentials"
msgstr "Mauvais identifiants" msgstr "Mauvais identifiants"
#: counter/views.py:85 #: counter/views.py:85
msgid "User is not subscriber" msgid "User is not barman"
msgstr "L'utilisateur n'est pas cotisant." msgstr "L'utilisateur n'est pas barman."
#: counter/views.py:265 #: counter/views.py:265
msgid "END" msgid "END"
@ -2086,65 +2058,81 @@ msgstr "ANN"
msgid "You have not enough money to buy all the basket" msgid "You have not enough money to buy all the basket"
msgstr "Vous n'avez pas assez d'argent pour acheter le panier" msgstr "Vous n'avez pas assez d'argent pour acheter le panier"
#: counter/views.py:508 #: counter/views.py:387
msgid "Counter administration"
msgstr "Administration des comptoirs"
#: counter/views.py:397
msgid "Products"
msgstr "Produits"
#: counter/views.py:402
msgid "Archived products"
msgstr "Produits archivés"
#: counter/views.py:407
msgid "Product types"
msgstr "Types de produit"
#: counter/views.py:523
msgid "Parent product" msgid "Parent product"
msgstr "Produit parent" msgstr "Produit parent"
#: counter/views.py:509 #: counter/views.py:524
msgid "Buying groups" msgid "Buying groups"
msgstr "Groupes d'achat" msgstr "Groupes d'achat"
#: counter/views.py:576 #: counter/views.py:593
msgid "10 cents" msgid "10 cents"
msgstr "10 centimes" msgstr "10 centimes"
#: counter/views.py:577 #: counter/views.py:594
msgid "20 cents" msgid "20 cents"
msgstr "20 centimes" msgstr "20 centimes"
#: counter/views.py:578 #: counter/views.py:595
msgid "50 cents" msgid "50 cents"
msgstr "50 centimes" msgstr "50 centimes"
#: counter/views.py:579 #: counter/views.py:596
msgid "1 euro" msgid "1 euro"
msgstr "1 €" msgstr "1 €"
#: counter/views.py:580 #: counter/views.py:597
msgid "2 euros" msgid "2 euros"
msgstr "2 €" msgstr "2 €"
#: counter/views.py:581 #: counter/views.py:598
msgid "5 euros" msgid "5 euros"
msgstr "5 €" msgstr "5 €"
#: counter/views.py:582 #: counter/views.py:599
msgid "10 euros" msgid "10 euros"
msgstr "10 €" msgstr "10 €"
#: counter/views.py:583 #: counter/views.py:600
msgid "20 euros" msgid "20 euros"
msgstr "20 €" msgstr "20 €"
#: counter/views.py:584 #: counter/views.py:601
msgid "50 euros" msgid "50 euros"
msgstr "50 €" msgstr "50 €"
#: counter/views.py:585 #: counter/views.py:602
msgid "100 euros" msgid "100 euros"
msgstr "100 €" msgstr "100 €"
#: counter/views.py:586 counter/views.py:588 counter/views.py:590 #: counter/views.py:603 counter/views.py:605 counter/views.py:607
#: counter/views.py:592 counter/views.py:594 #: counter/views.py:609 counter/views.py:611
msgid "Check amount" msgid "Check amount"
msgstr "Montant du chèque" msgstr "Montant du chèque"
#: counter/views.py:587 counter/views.py:589 counter/views.py:591 #: counter/views.py:604 counter/views.py:606 counter/views.py:608
#: counter/views.py:593 counter/views.py:595 #: counter/views.py:610 counter/views.py:612
msgid "Check quantity" msgid "Check quantity"
msgstr "Nombre de chèque" msgstr "Nombre de chèque"
#: counter/views.py:597 #: counter/views.py:614
msgid "Emptied" msgid "Emptied"
msgstr "Coffre vidé" msgstr "Coffre vidé"
@ -2156,19 +2144,19 @@ msgstr "validé"
msgid "Invoice already validated" msgid "Invoice already validated"
msgstr "Facture déjà validée" msgstr "Facture déjà validée"
#: eboutic/models.py:130 #: eboutic/models.py:100
msgid "product id" msgid "product id"
msgstr "ID du produit" msgstr "ID du produit"
#: eboutic/models.py:131 #: eboutic/models.py:101
msgid "product name" msgid "product name"
msgstr "nom du produit" msgstr "nom du produit"
#: eboutic/models.py:132 #: eboutic/models.py:102
msgid "product type id" msgid "product type id"
msgstr "id du type du produit" msgstr "id du type du produit"
#: eboutic/models.py:143 #: eboutic/models.py:113
msgid "basket" msgid "basket"
msgstr "panier" msgstr "panier"
@ -2292,12 +2280,12 @@ msgid "Washing and drying"
msgstr "Lavage et séchage" msgstr "Lavage et séchage"
#: launderette/templates/launderette/launderette_book.jinja:26 #: launderette/templates/launderette/launderette_book.jinja:26
#: sith/settings.py:418 sith/settings_sample.py:407 #: sith/settings.py:419 sith/settings_sample.py:408
msgid "Washing" msgid "Washing"
msgstr "Lavage" msgstr "Lavage"
#: launderette/templates/launderette/launderette_book.jinja:30 #: launderette/templates/launderette/launderette_book.jinja:30
#: sith/settings.py:418 sith/settings_sample.py:407 #: sith/settings.py:419 sith/settings_sample.py:408
msgid "Drying" msgid "Drying"
msgstr "Séchage" msgstr "Séchage"
@ -2352,120 +2340,119 @@ msgstr "L'utilisateur n'a pas réservé de créneau"
msgid "Token not found" msgid "Token not found"
msgstr "Jeton non trouvé" msgstr "Jeton non trouvé"
#: sith/settings.py:172 sith/settings_sample.py:162 #: sith/settings.py:173 sith/settings_sample.py:162
msgid "English" msgid "English"
msgstr "Anglais" msgstr "Anglais"
#: sith/settings.py:173 sith/settings_sample.py:163 #: sith/settings.py:174 sith/settings_sample.py:163
msgid "French" msgid "French"
msgstr "Français" msgstr "Français"
#: sith/settings.py:274 sith/settings.py:281 sith/settings.py:302 #: sith/settings.py:275 sith/settings.py:282 sith/settings.py:303
#: sith/settings_sample.py:263 sith/settings_sample.py:270 #: sith/settings_sample.py:264 sith/settings_sample.py:271
#: sith/settings_sample.py:291 #: sith/settings_sample.py:292
msgid "Check" msgid "Check"
msgstr "Chèque" msgstr "Chèque"
#: sith/settings.py:275 sith/settings.py:283 sith/settings.py:303 #: sith/settings.py:276 sith/settings.py:284 sith/settings.py:304
#: sith/settings_sample.py:264 sith/settings_sample.py:272 #: sith/settings_sample.py:265 sith/settings_sample.py:273
#: sith/settings_sample.py:292 #: sith/settings_sample.py:293
msgid "Cash" msgid "Cash"
msgstr "Espèces" msgstr "Espèces"
#: sith/settings.py:276 sith/settings_sample.py:265 #: sith/settings.py:277 sith/settings_sample.py:266
msgid "Transfert" msgid "Transfert"
msgstr "Virement" msgstr "Virement"
#: sith/settings.py:289 sith/settings_sample.py:278 #: sith/settings.py:290 sith/settings_sample.py:279
msgid "Belfort" msgid "Belfort"
msgstr "Belfort" msgstr "Belfort"
#: sith/settings.py:290 sith/settings_sample.py:279 #: sith/settings.py:291 sith/settings_sample.py:280
msgid "Sevenans" msgid "Sevenans"
msgstr "Sevenans" msgstr "Sevenans"
#: sith/settings.py:291 sith/settings_sample.py:280 #: sith/settings.py:292 sith/settings_sample.py:281
msgid "Montbéliard" msgid "Montbéliard"
msgstr "Montbéliard" msgstr "Montbéliard"
#: sith/settings.py:331 sith/settings_sample.py:320 #: sith/settings.py:332 sith/settings_sample.py:321
msgid "One semester" msgid "One semester"
msgstr "Un semestre, 15 €" msgstr "Un semestre, 15 €"
#: sith/settings.py:336 sith/settings_sample.py:325 #: sith/settings.py:337 sith/settings_sample.py:326
msgid "Two semesters" msgid "Two semesters"
msgstr "Deux semestres, 28 €" msgstr "Deux semestres, 28 €"
#: sith/settings.py:341 sith/settings_sample.py:330 #: sith/settings.py:342 sith/settings_sample.py:331
msgid "Common core cursus" msgid "Common core cursus"
msgstr "Cursus tronc commun, 45 €" msgstr "Cursus tronc commun, 45 €"
#: sith/settings.py:346 sith/settings_sample.py:335 #: sith/settings.py:347 sith/settings_sample.py:336
#: sith/settings_sample.py:340
msgid "Branch cursus" msgid "Branch cursus"
msgstr "Cursus branche, 45 €" msgstr "Cursus branche, 45 €"
#: sith/settings.py:351 #: sith/settings.py:352 sith/settings_sample.py:341
msgid "Alternating cursus" msgid "Alternating cursus"
msgstr "Cursus alternant, 30 €" msgstr "Cursus alternant, 30 €"
#: sith/settings.py:356 sith/settings_sample.py:345 #: sith/settings.py:357 sith/settings_sample.py:346
msgid "Honorary member" msgid "Honorary member"
msgstr "Membre honoraire, 0 €" msgstr "Membre honoraire, 0 €"
#: sith/settings.py:361 sith/settings_sample.py:350 #: sith/settings.py:362 sith/settings_sample.py:351
msgid "Assidu member" msgid "Assidu member"
msgstr "Membre d'Assidu, 0 €" msgstr "Membre d'Assidu, 0 €"
#: sith/settings.py:366 sith/settings_sample.py:355 #: sith/settings.py:367 sith/settings_sample.py:356
msgid "Amicale/DOCEO member" msgid "Amicale/DOCEO member"
msgstr "Membre de l'Amicale/DOCEO, 0 €" msgstr "Membre de l'Amicale/DOCEO, 0 €"
#: sith/settings.py:371 sith/settings_sample.py:360 #: sith/settings.py:372 sith/settings_sample.py:361
msgid "UT network member" msgid "UT network member"
msgstr "Cotisant du réseau UT, 0 €" msgstr "Cotisant du réseau UT, 0 €"
#: sith/settings.py:376 sith/settings_sample.py:365 #: sith/settings.py:377 sith/settings_sample.py:366
msgid "CROUS member" msgid "CROUS member"
msgstr "Membres du CROUS, 0 €" msgstr "Membres du CROUS, 0 €"
#: sith/settings.py:381 sith/settings_sample.py:370 #: sith/settings.py:382 sith/settings_sample.py:371
msgid "Sbarro/ESTA member" msgid "Sbarro/ESTA member"
msgstr "Membre de Sbarro ou de l'ESTA, 15 €" msgstr "Membre de Sbarro ou de l'ESTA, 15 €"
#: sith/settings.py:389 sith/settings_sample.py:378 #: sith/settings.py:390 sith/settings_sample.py:379
msgid "President" msgid "President"
msgstr "Président" msgstr "Président"
#: sith/settings.py:390 sith/settings_sample.py:379 #: sith/settings.py:391 sith/settings_sample.py:380
msgid "Vice-President" msgid "Vice-President"
msgstr "Vice-Président" msgstr "Vice-Président"
#: sith/settings.py:391 sith/settings_sample.py:380 #: sith/settings.py:392 sith/settings_sample.py:381
msgid "Treasurer" msgid "Treasurer"
msgstr "Trésorier" msgstr "Trésorier"
#: sith/settings.py:392 sith/settings_sample.py:381 #: sith/settings.py:393 sith/settings_sample.py:382
msgid "Communication supervisor" msgid "Communication supervisor"
msgstr "Responsable com" msgstr "Responsable com"
#: sith/settings.py:393 sith/settings_sample.py:382 #: sith/settings.py:394 sith/settings_sample.py:383
msgid "Secretary" msgid "Secretary"
msgstr "Secrétaire" msgstr "Secrétaire"
#: sith/settings.py:394 sith/settings_sample.py:383 #: sith/settings.py:395 sith/settings_sample.py:384
msgid "IT supervisor" msgid "IT supervisor"
msgstr "Responsable info" msgstr "Responsable info"
#: sith/settings.py:395 sith/settings_sample.py:384 #: sith/settings.py:396 sith/settings_sample.py:385
msgid "Board member" msgid "Board member"
msgstr "Membre du bureau" msgstr "Membre du bureau"
#: sith/settings.py:396 sith/settings_sample.py:385 #: sith/settings.py:397 sith/settings_sample.py:386
msgid "Active member" msgid "Active member"
msgstr "Membre actif" msgstr "Membre actif"
#: sith/settings.py:397 sith/settings_sample.py:386 #: sith/settings.py:398 sith/settings_sample.py:387
msgid "Curious" msgid "Curious"
msgstr "Curieux" msgstr "Curieux"
@ -2509,3 +2496,9 @@ msgstr "Un utilisateur avec cette adresse email existe déjà"
msgid "You must either choose an existing user or create a new one properly" msgid "You must either choose an existing user or create a new one properly"
msgstr "" msgstr ""
"Vous devez soit choisir un utilisateur existant, ou en créer un proprement." "Vous devez soit choisir un utilisateur existant, ou en créer un proprement."
#~ msgid "Edit club"
#~ msgstr "Éditer le club"
#~ msgid "Edit club properties"
#~ msgstr "Éditer les propriétés du club"