mirror of
https://github.com/ae-utbm/sith.git
synced 2024-12-22 07:41:14 +00:00
Merge pull request #945 from ae-utbm/refactor-product
Remove `Product.parent_product`
This commit is contained in:
commit
a975824481
@ -143,7 +143,6 @@ class ProductEditForm(forms.ModelForm):
|
|||||||
"description",
|
"description",
|
||||||
"product_type",
|
"product_type",
|
||||||
"code",
|
"code",
|
||||||
"parent_product",
|
|
||||||
"buying_groups",
|
"buying_groups",
|
||||||
"purchase_price",
|
"purchase_price",
|
||||||
"selling_price",
|
"selling_price",
|
||||||
@ -155,7 +154,6 @@ class ProductEditForm(forms.ModelForm):
|
|||||||
"archived",
|
"archived",
|
||||||
]
|
]
|
||||||
widgets = {
|
widgets = {
|
||||||
"parent_product": AutoCompleteSelectMultipleProduct,
|
|
||||||
"product_type": AutoCompleteSelect,
|
"product_type": AutoCompleteSelect,
|
||||||
"buying_groups": AutoCompleteSelectMultipleGroup,
|
"buying_groups": AutoCompleteSelectMultipleGroup,
|
||||||
"club": AutoCompleteSelectClub,
|
"club": AutoCompleteSelectClub,
|
||||||
|
@ -0,0 +1,38 @@
|
|||||||
|
# Generated by Django 4.2.17 on 2024-12-09 11:07
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
import accounting.models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
dependencies = [("counter", "0024_accountdump_accountdump_unique_ongoing_dump")]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RemoveField(model_name="product", name="parent_product"),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="product",
|
||||||
|
name="description",
|
||||||
|
field=models.TextField(default="", verbose_name="description"),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="product",
|
||||||
|
name="purchase_price",
|
||||||
|
field=accounting.models.CurrencyField(
|
||||||
|
decimal_places=2,
|
||||||
|
help_text="Initial cost of purchasing the product",
|
||||||
|
max_digits=12,
|
||||||
|
verbose_name="purchase price",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="product",
|
||||||
|
name="special_selling_price",
|
||||||
|
field=accounting.models.CurrencyField(
|
||||||
|
decimal_places=2,
|
||||||
|
help_text="Price for barmen during their permanence",
|
||||||
|
max_digits=12,
|
||||||
|
verbose_name="special selling price",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
@ -326,7 +326,7 @@ class Product(models.Model):
|
|||||||
"""A product, with all its related information."""
|
"""A product, with all its related information."""
|
||||||
|
|
||||||
name = models.CharField(_("name"), max_length=64)
|
name = models.CharField(_("name"), max_length=64)
|
||||||
description = models.TextField(_("description"), blank=True)
|
description = models.TextField(_("description"), default="")
|
||||||
product_type = models.ForeignKey(
|
product_type = models.ForeignKey(
|
||||||
ProductType,
|
ProductType,
|
||||||
related_name="products",
|
related_name="products",
|
||||||
@ -336,9 +336,15 @@ class Product(models.Model):
|
|||||||
on_delete=models.SET_NULL,
|
on_delete=models.SET_NULL,
|
||||||
)
|
)
|
||||||
code = models.CharField(_("code"), max_length=16, blank=True)
|
code = models.CharField(_("code"), max_length=16, blank=True)
|
||||||
purchase_price = CurrencyField(_("purchase price"))
|
purchase_price = CurrencyField(
|
||||||
|
_("purchase price"),
|
||||||
|
help_text=_("Initial cost of purchasing the product"),
|
||||||
|
)
|
||||||
selling_price = CurrencyField(_("selling price"))
|
selling_price = CurrencyField(_("selling price"))
|
||||||
special_selling_price = CurrencyField(_("special selling price"))
|
special_selling_price = CurrencyField(
|
||||||
|
_("special selling price"),
|
||||||
|
help_text=_("Price for barmen during their permanence"),
|
||||||
|
)
|
||||||
icon = ResizedImageField(
|
icon = ResizedImageField(
|
||||||
height=70,
|
height=70,
|
||||||
force_format="WEBP",
|
force_format="WEBP",
|
||||||
@ -352,14 +358,6 @@ class Product(models.Model):
|
|||||||
)
|
)
|
||||||
limit_age = models.IntegerField(_("limit age"), default=0)
|
limit_age = models.IntegerField(_("limit age"), default=0)
|
||||||
tray = models.BooleanField(_("tray price"), default=False)
|
tray = models.BooleanField(_("tray price"), default=False)
|
||||||
parent_product = models.ForeignKey(
|
|
||||||
"self",
|
|
||||||
related_name="children_products",
|
|
||||||
verbose_name=_("parent product"),
|
|
||||||
null=True,
|
|
||||||
blank=True,
|
|
||||||
on_delete=models.SET_NULL,
|
|
||||||
)
|
|
||||||
buying_groups = models.ManyToManyField(
|
buying_groups = models.ManyToManyField(
|
||||||
Group, related_name="products", verbose_name=_("buying groups"), blank=True
|
Group, related_name="products", verbose_name=_("buying groups"), blank=True
|
||||||
)
|
)
|
||||||
@ -369,7 +367,7 @@ class Product(models.Model):
|
|||||||
verbose_name = _("product")
|
verbose_name = _("product")
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return "%s (%s)" % (self.name, self.code)
|
return f"{self.name} ({self.code})"
|
||||||
|
|
||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse("counter:product_list")
|
return reverse("counter:product_list")
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2024-12-08 00:29+0100\n"
|
"POT-Creation-Date: 2024-12-09 12:28+0100\n"
|
||||||
"PO-Revision-Date: 2016-07-18\n"
|
"PO-Revision-Date: 2016-07-18\n"
|
||||||
"Last-Translator: Maréchal <thomas.girod@utbm.fr\n"
|
"Last-Translator: Maréchal <thomas.girod@utbm.fr\n"
|
||||||
"Language-Team: AE info <ae.info@utbm.fr>\n"
|
"Language-Team: AE info <ae.info@utbm.fr>\n"
|
||||||
@ -19,7 +19,7 @@ msgstr ""
|
|||||||
#: accounting/models.py:62 accounting/models.py:101 accounting/models.py:132
|
#: accounting/models.py:62 accounting/models.py:101 accounting/models.py:132
|
||||||
#: accounting/models.py:190 club/models.py:55 com/models.py:274
|
#: accounting/models.py:190 club/models.py:55 com/models.py:274
|
||||||
#: com/models.py:293 counter/models.py:297 counter/models.py:328
|
#: com/models.py:293 counter/models.py:297 counter/models.py:328
|
||||||
#: counter/models.py:481 forum/models.py:60 launderette/models.py:29
|
#: counter/models.py:479 forum/models.py:60 launderette/models.py:29
|
||||||
#: launderette/models.py:80 launderette/models.py:116
|
#: launderette/models.py:80 launderette/models.py:116
|
||||||
msgid "name"
|
msgid "name"
|
||||||
msgstr "nom"
|
msgstr "nom"
|
||||||
@ -65,8 +65,8 @@ msgid "account number"
|
|||||||
msgstr "numéro de compte"
|
msgstr "numéro de compte"
|
||||||
|
|
||||||
#: accounting/models.py:107 accounting/models.py:136 club/models.py:345
|
#: accounting/models.py:107 accounting/models.py:136 club/models.py:345
|
||||||
#: com/models.py:74 com/models.py:259 com/models.py:299 counter/models.py:351
|
#: com/models.py:74 com/models.py:259 com/models.py:299 counter/models.py:357
|
||||||
#: counter/models.py:483 trombi/models.py:209
|
#: counter/models.py:481 trombi/models.py:209
|
||||||
msgid "club"
|
msgid "club"
|
||||||
msgstr "club"
|
msgstr "club"
|
||||||
|
|
||||||
@ -87,12 +87,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:188 club/models.py:351 counter/models.py:961
|
#: accounting/models.py:188 club/models.py:351 counter/models.py:959
|
||||||
#: election/models.py:16 launderette/models.py:165
|
#: election/models.py:16 launderette/models.py:165
|
||||||
msgid "start date"
|
msgid "start date"
|
||||||
msgstr "date de début"
|
msgstr "date de début"
|
||||||
|
|
||||||
#: accounting/models.py:189 club/models.py:352 counter/models.py:962
|
#: accounting/models.py:189 club/models.py:352 counter/models.py:960
|
||||||
#: election/models.py:17
|
#: election/models.py:17
|
||||||
msgid "end date"
|
msgid "end date"
|
||||||
msgstr "date de fin"
|
msgstr "date de fin"
|
||||||
@ -106,7 +106,7 @@ msgid "club account"
|
|||||||
msgstr "compte club"
|
msgstr "compte club"
|
||||||
|
|
||||||
#: accounting/models.py:199 accounting/models.py:255 counter/models.py:91
|
#: accounting/models.py:199 accounting/models.py:255 counter/models.py:91
|
||||||
#: counter/models.py:679
|
#: counter/models.py:677
|
||||||
msgid "amount"
|
msgid "amount"
|
||||||
msgstr "montant"
|
msgstr "montant"
|
||||||
|
|
||||||
@ -128,18 +128,18 @@ msgstr "classeur"
|
|||||||
|
|
||||||
#: accounting/models.py:256 core/models.py:956 core/models.py:1467
|
#: accounting/models.py:256 core/models.py:956 core/models.py:1467
|
||||||
#: core/models.py:1512 core/models.py:1541 core/models.py:1565
|
#: core/models.py:1512 core/models.py:1541 core/models.py:1565
|
||||||
#: counter/models.py:689 counter/models.py:793 counter/models.py:997
|
#: counter/models.py:687 counter/models.py:791 counter/models.py:995
|
||||||
#: eboutic/models.py:57 eboutic/models.py:193 forum/models.py:312
|
#: eboutic/models.py:57 eboutic/models.py:193 forum/models.py:312
|
||||||
#: forum/models.py:413
|
#: forum/models.py:413
|
||||||
msgid "date"
|
msgid "date"
|
||||||
msgstr "date"
|
msgstr "date"
|
||||||
|
|
||||||
#: accounting/models.py:257 counter/models.py:299 counter/models.py:998
|
#: accounting/models.py:257 counter/models.py:299 counter/models.py:996
|
||||||
#: pedagogy/models.py:208
|
#: pedagogy/models.py:208
|
||||||
msgid "comment"
|
msgid "comment"
|
||||||
msgstr "commentaire"
|
msgstr "commentaire"
|
||||||
|
|
||||||
#: accounting/models.py:259 counter/models.py:691 counter/models.py:795
|
#: accounting/models.py:259 counter/models.py:689 counter/models.py:793
|
||||||
#: subscription/models.py:56
|
#: subscription/models.py:56
|
||||||
msgid "payment method"
|
msgid "payment method"
|
||||||
msgstr "méthode de paiement"
|
msgstr "méthode de paiement"
|
||||||
@ -166,7 +166,7 @@ msgstr "type comptable"
|
|||||||
|
|
||||||
#: accounting/models.py:294 accounting/models.py:429 accounting/models.py:460
|
#: accounting/models.py:294 accounting/models.py:429 accounting/models.py:460
|
||||||
#: accounting/models.py:492 core/models.py:1540 core/models.py:1566
|
#: accounting/models.py:492 core/models.py:1540 core/models.py:1566
|
||||||
#: counter/models.py:759
|
#: counter/models.py:757
|
||||||
msgid "label"
|
msgid "label"
|
||||||
msgstr "étiquette"
|
msgstr "étiquette"
|
||||||
|
|
||||||
@ -375,7 +375,7 @@ msgstr "Compte en banque : "
|
|||||||
#: election/templates/election/election_detail.jinja:191
|
#: election/templates/election/election_detail.jinja:191
|
||||||
#: forum/templates/forum/macros.jinja:21
|
#: forum/templates/forum/macros.jinja:21
|
||||||
#: launderette/templates/launderette/launderette_admin.jinja:16
|
#: launderette/templates/launderette/launderette_admin.jinja:16
|
||||||
#: launderette/views.py:210 pedagogy/templates/pedagogy/guide.jinja:99
|
#: launderette/views.py:208 pedagogy/templates/pedagogy/guide.jinja:99
|
||||||
#: pedagogy/templates/pedagogy/guide.jinja:114
|
#: pedagogy/templates/pedagogy/guide.jinja:114
|
||||||
#: pedagogy/templates/pedagogy/uv_detail.jinja:189
|
#: pedagogy/templates/pedagogy/uv_detail.jinja:189
|
||||||
#: sas/templates/sas/album.jinja:36 sas/templates/sas/moderation.jinja:18
|
#: sas/templates/sas/album.jinja:36 sas/templates/sas/moderation.jinja:18
|
||||||
@ -929,7 +929,7 @@ msgstr "S'abonner"
|
|||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Retirer"
|
msgstr "Retirer"
|
||||||
|
|
||||||
#: club/forms.py:71 launderette/views.py:212
|
#: club/forms.py:71 launderette/views.py:210
|
||||||
#: pedagogy/templates/pedagogy/moderation.jinja:15
|
#: pedagogy/templates/pedagogy/moderation.jinja:15
|
||||||
msgid "Action"
|
msgid "Action"
|
||||||
msgstr "Action"
|
msgstr "Action"
|
||||||
@ -1041,7 +1041,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:337 counter/models.py:952 counter/models.py:988
|
#: club/models.py:337 counter/models.py:950 counter/models.py:986
|
||||||
#: eboutic/models.py:53 eboutic/models.py:189 election/models.py:183
|
#: eboutic/models.py:53 eboutic/models.py:189 election/models.py:183
|
||||||
#: launderette/models.py:130 launderette/models.py:184 sas/models.py:273
|
#: launderette/models.py:130 launderette/models.py:184 sas/models.py:273
|
||||||
#: trombi/models.py:205
|
#: trombi/models.py:205
|
||||||
@ -1147,7 +1147,7 @@ msgstr "Il n'y a pas de membres dans ce club."
|
|||||||
|
|
||||||
#: club/templates/club/club_members.jinja:80
|
#: club/templates/club/club_members.jinja:80
|
||||||
#: core/templates/core/file_detail.jinja:19 core/views/forms.py:307
|
#: core/templates/core/file_detail.jinja:19 core/views/forms.py:307
|
||||||
#: launderette/views.py:210 trombi/templates/trombi/detail.jinja:19
|
#: launderette/views.py:208 trombi/templates/trombi/detail.jinja:19
|
||||||
msgid "Add"
|
msgid "Add"
|
||||||
msgstr "Ajouter"
|
msgstr "Ajouter"
|
||||||
|
|
||||||
@ -1573,7 +1573,7 @@ msgstr "Informations affichées"
|
|||||||
#: com/templates/com/news_admin_list.jinja:248
|
#: com/templates/com/news_admin_list.jinja:248
|
||||||
#: com/templates/com/news_admin_list.jinja:285
|
#: com/templates/com/news_admin_list.jinja:285
|
||||||
#: launderette/templates/launderette/launderette_admin.jinja:42
|
#: launderette/templates/launderette/launderette_admin.jinja:42
|
||||||
#: launderette/views.py:217
|
#: launderette/views.py:215
|
||||||
msgid "Type"
|
msgid "Type"
|
||||||
msgstr "Type"
|
msgstr "Type"
|
||||||
|
|
||||||
@ -1862,7 +1862,7 @@ msgstr "Supprimer du Weekmail"
|
|||||||
|
|
||||||
#: com/templates/com/weekmail_preview.jinja:9
|
#: com/templates/com/weekmail_preview.jinja:9
|
||||||
#: core/templates/core/user_account_detail.jinja:10
|
#: core/templates/core/user_account_detail.jinja:10
|
||||||
#: core/templates/core/user_account_detail.jinja:116 launderette/views.py:210
|
#: core/templates/core/user_account_detail.jinja:116 launderette/views.py:208
|
||||||
#: pedagogy/templates/pedagogy/uv_detail.jinja:16
|
#: pedagogy/templates/pedagogy/uv_detail.jinja:16
|
||||||
#: pedagogy/templates/pedagogy/uv_detail.jinja:25
|
#: pedagogy/templates/pedagogy/uv_detail.jinja:25
|
||||||
#: trombi/templates/trombi/comment_moderation.jinja:10
|
#: trombi/templates/trombi/comment_moderation.jinja:10
|
||||||
@ -2501,7 +2501,7 @@ msgstr "Forum"
|
|||||||
msgid "Gallery"
|
msgid "Gallery"
|
||||||
msgstr "Photos"
|
msgstr "Photos"
|
||||||
|
|
||||||
#: core/templates/core/base/navbar.jinja:22 counter/models.py:491
|
#: core/templates/core/base/navbar.jinja:22 counter/models.py:489
|
||||||
#: counter/templates/counter/counter_list.jinja:11
|
#: counter/templates/counter/counter_list.jinja:11
|
||||||
#: eboutic/templates/eboutic/eboutic_main.jinja:4
|
#: eboutic/templates/eboutic/eboutic_main.jinja:4
|
||||||
#: eboutic/templates/eboutic/eboutic_main.jinja:22
|
#: eboutic/templates/eboutic/eboutic_main.jinja:22
|
||||||
@ -2585,7 +2585,7 @@ msgstr "Confirmation"
|
|||||||
|
|
||||||
#: core/templates/core/delete_confirm.jinja:20
|
#: core/templates/core/delete_confirm.jinja:20
|
||||||
#: core/templates/core/file_delete_confirm.jinja:46
|
#: core/templates/core/file_delete_confirm.jinja:46
|
||||||
#: counter/templates/counter/counter_click.jinja:111
|
#: counter/templates/counter/counter_click.jinja:104
|
||||||
#: sas/templates/sas/ask_picture_removal.jinja:20
|
#: sas/templates/sas/ask_picture_removal.jinja:20
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Annuler"
|
msgstr "Annuler"
|
||||||
@ -3297,7 +3297,7 @@ msgstr "Vous avez déjà choisi ce Trombi: %(trombi)s."
|
|||||||
msgid "Go to my Trombi tools"
|
msgid "Go to my Trombi tools"
|
||||||
msgstr "Allez à mes outils de Trombi"
|
msgstr "Allez à mes outils de Trombi"
|
||||||
|
|
||||||
#: core/templates/core/user_preferences.jinja:49
|
#: core/templates/core/user_preferences.jinja:41
|
||||||
msgid ""
|
msgid ""
|
||||||
"You can add a card by asking at a counter or add it yourself here. If you "
|
"You can add a card by asking at a counter or add it yourself here. If you "
|
||||||
"want to manually\n"
|
"want to manually\n"
|
||||||
@ -3591,8 +3591,8 @@ msgstr "Photos"
|
|||||||
msgid "Galaxy"
|
msgid "Galaxy"
|
||||||
msgstr "Galaxie"
|
msgstr "Galaxie"
|
||||||
|
|
||||||
#: counter/apps.py:30 counter/models.py:507 counter/models.py:958
|
#: counter/apps.py:30 counter/models.py:505 counter/models.py:956
|
||||||
#: counter/models.py:994 launderette/models.py:32
|
#: counter/models.py:992 launderette/models.py:32
|
||||||
msgid "counter"
|
msgid "counter"
|
||||||
msgstr "comptoir"
|
msgstr "comptoir"
|
||||||
|
|
||||||
@ -3684,113 +3684,117 @@ msgstr "L'opération qui a vidé le compte."
|
|||||||
msgid "product type"
|
msgid "product type"
|
||||||
msgstr "type du produit"
|
msgstr "type du produit"
|
||||||
|
|
||||||
#: counter/models.py:339
|
#: counter/models.py:340
|
||||||
msgid "purchase price"
|
msgid "purchase price"
|
||||||
msgstr "prix d'achat"
|
msgstr "prix d'achat"
|
||||||
|
|
||||||
#: counter/models.py:340
|
#: counter/models.py:341
|
||||||
|
msgid "Initial cost of purchasing the product"
|
||||||
|
msgstr "Coût initial d'achat du produit"
|
||||||
|
|
||||||
|
#: counter/models.py:343
|
||||||
msgid "selling price"
|
msgid "selling price"
|
||||||
msgstr "prix de vente"
|
msgstr "prix de vente"
|
||||||
|
|
||||||
#: counter/models.py:341
|
#: counter/models.py:345
|
||||||
msgid "special selling price"
|
msgid "special selling price"
|
||||||
msgstr "prix de vente spécial"
|
msgstr "prix de vente spécial"
|
||||||
|
|
||||||
#: counter/models.py:348
|
#: counter/models.py:346
|
||||||
|
msgid "Price for barmen during their permanence"
|
||||||
|
msgstr "Prix pour les barmen durant leur permanence"
|
||||||
|
|
||||||
|
#: counter/models.py:354
|
||||||
msgid "icon"
|
msgid "icon"
|
||||||
msgstr "icône"
|
msgstr "icône"
|
||||||
|
|
||||||
#: counter/models.py:353
|
#: counter/models.py:359
|
||||||
msgid "limit age"
|
msgid "limit age"
|
||||||
msgstr "âge limite"
|
msgstr "âge limite"
|
||||||
|
|
||||||
#: counter/models.py:354
|
#: counter/models.py:360
|
||||||
msgid "tray price"
|
msgid "tray price"
|
||||||
msgstr "prix plateau"
|
msgstr "prix plateau"
|
||||||
|
|
||||||
#: counter/models.py:358
|
#: counter/models.py:362
|
||||||
msgid "parent product"
|
|
||||||
msgstr "produit parent"
|
|
||||||
|
|
||||||
#: counter/models.py:364
|
|
||||||
msgid "buying groups"
|
msgid "buying groups"
|
||||||
msgstr "groupe d'achat"
|
msgstr "groupe d'achat"
|
||||||
|
|
||||||
#: counter/models.py:366 election/models.py:50
|
#: counter/models.py:364 election/models.py:50
|
||||||
msgid "archived"
|
msgid "archived"
|
||||||
msgstr "archivé"
|
msgstr "archivé"
|
||||||
|
|
||||||
#: counter/models.py:369 counter/models.py:1092
|
#: counter/models.py:367 counter/models.py:1090
|
||||||
msgid "product"
|
msgid "product"
|
||||||
msgstr "produit"
|
msgstr "produit"
|
||||||
|
|
||||||
#: counter/models.py:486
|
#: counter/models.py:484
|
||||||
msgid "products"
|
msgid "products"
|
||||||
msgstr "produits"
|
msgstr "produits"
|
||||||
|
|
||||||
#: counter/models.py:489
|
#: counter/models.py:487
|
||||||
msgid "counter type"
|
msgid "counter type"
|
||||||
msgstr "type de comptoir"
|
msgstr "type de comptoir"
|
||||||
|
|
||||||
#: counter/models.py:491
|
#: counter/models.py:489
|
||||||
msgid "Bar"
|
msgid "Bar"
|
||||||
msgstr "Bar"
|
msgstr "Bar"
|
||||||
|
|
||||||
#: counter/models.py:491
|
#: counter/models.py:489
|
||||||
msgid "Office"
|
msgid "Office"
|
||||||
msgstr "Bureau"
|
msgstr "Bureau"
|
||||||
|
|
||||||
#: counter/models.py:494
|
#: counter/models.py:492
|
||||||
msgid "sellers"
|
msgid "sellers"
|
||||||
msgstr "vendeurs"
|
msgstr "vendeurs"
|
||||||
|
|
||||||
#: counter/models.py:502 launderette/models.py:178
|
#: counter/models.py:500 launderette/models.py:178
|
||||||
msgid "token"
|
msgid "token"
|
||||||
msgstr "jeton"
|
msgstr "jeton"
|
||||||
|
|
||||||
#: counter/models.py:697
|
#: counter/models.py:695
|
||||||
msgid "bank"
|
msgid "bank"
|
||||||
msgstr "banque"
|
msgstr "banque"
|
||||||
|
|
||||||
#: counter/models.py:699 counter/models.py:800
|
#: counter/models.py:697 counter/models.py:798
|
||||||
msgid "is validated"
|
msgid "is validated"
|
||||||
msgstr "est validé"
|
msgstr "est validé"
|
||||||
|
|
||||||
#: counter/models.py:704
|
#: counter/models.py:702
|
||||||
msgid "refilling"
|
msgid "refilling"
|
||||||
msgstr "rechargement"
|
msgstr "rechargement"
|
||||||
|
|
||||||
#: counter/models.py:777 eboutic/models.py:249
|
#: counter/models.py:775 eboutic/models.py:249
|
||||||
msgid "unit price"
|
msgid "unit price"
|
||||||
msgstr "prix unitaire"
|
msgstr "prix unitaire"
|
||||||
|
|
||||||
#: counter/models.py:778 counter/models.py:1072 eboutic/models.py:250
|
#: counter/models.py:776 counter/models.py:1070 eboutic/models.py:250
|
||||||
msgid "quantity"
|
msgid "quantity"
|
||||||
msgstr "quantité"
|
msgstr "quantité"
|
||||||
|
|
||||||
#: counter/models.py:797
|
#: counter/models.py:795
|
||||||
msgid "Sith account"
|
msgid "Sith account"
|
||||||
msgstr "Compte utilisateur"
|
msgstr "Compte utilisateur"
|
||||||
|
|
||||||
#: counter/models.py:797 sith/settings.py:415 sith/settings.py:420
|
#: counter/models.py:795 sith/settings.py:415 sith/settings.py:420
|
||||||
#: sith/settings.py:440
|
#: sith/settings.py:440
|
||||||
msgid "Credit card"
|
msgid "Credit card"
|
||||||
msgstr "Carte bancaire"
|
msgstr "Carte bancaire"
|
||||||
|
|
||||||
#: counter/models.py:805
|
#: counter/models.py:803
|
||||||
msgid "selling"
|
msgid "selling"
|
||||||
msgstr "vente"
|
msgstr "vente"
|
||||||
|
|
||||||
#: counter/models.py:909
|
#: counter/models.py:907
|
||||||
msgid "Unknown event"
|
msgid "Unknown event"
|
||||||
msgstr "Événement inconnu"
|
msgstr "Événement inconnu"
|
||||||
|
|
||||||
#: counter/models.py:910
|
#: counter/models.py:908
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Eticket bought for the event %(event)s"
|
msgid "Eticket bought for the event %(event)s"
|
||||||
msgstr "Eticket acheté pour l'événement %(event)s"
|
msgstr "Eticket acheté pour l'événement %(event)s"
|
||||||
|
|
||||||
#: counter/models.py:912 counter/models.py:925
|
#: counter/models.py:910 counter/models.py:923
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"You bought an eticket for the event %(event)s.\n"
|
"You bought an eticket for the event %(event)s.\n"
|
||||||
@ -3802,63 +3806,63 @@ msgstr ""
|
|||||||
"Vous pouvez également retrouver tous vos e-tickets sur votre page de compte "
|
"Vous pouvez également retrouver tous vos e-tickets sur votre page de compte "
|
||||||
"%(url)s."
|
"%(url)s."
|
||||||
|
|
||||||
#: counter/models.py:963
|
#: counter/models.py:961
|
||||||
msgid "last activity date"
|
msgid "last activity date"
|
||||||
msgstr "dernière activité"
|
msgstr "dernière activité"
|
||||||
|
|
||||||
#: counter/models.py:966
|
#: counter/models.py:964
|
||||||
msgid "permanency"
|
msgid "permanency"
|
||||||
msgstr "permanence"
|
msgstr "permanence"
|
||||||
|
|
||||||
#: counter/models.py:999
|
#: counter/models.py:997
|
||||||
msgid "emptied"
|
msgid "emptied"
|
||||||
msgstr "coffre vidée"
|
msgstr "coffre vidée"
|
||||||
|
|
||||||
#: counter/models.py:1002
|
#: counter/models.py:1000
|
||||||
msgid "cash register summary"
|
msgid "cash register summary"
|
||||||
msgstr "relevé de caisse"
|
msgstr "relevé de caisse"
|
||||||
|
|
||||||
#: counter/models.py:1068
|
#: counter/models.py:1066
|
||||||
msgid "cash summary"
|
msgid "cash summary"
|
||||||
msgstr "relevé"
|
msgstr "relevé"
|
||||||
|
|
||||||
#: counter/models.py:1071
|
#: counter/models.py:1069
|
||||||
msgid "value"
|
msgid "value"
|
||||||
msgstr "valeur"
|
msgstr "valeur"
|
||||||
|
|
||||||
#: counter/models.py:1074
|
#: counter/models.py:1072
|
||||||
msgid "check"
|
msgid "check"
|
||||||
msgstr "chèque"
|
msgstr "chèque"
|
||||||
|
|
||||||
#: counter/models.py:1076
|
#: counter/models.py:1074
|
||||||
msgid "True if this is a bank check, else False"
|
msgid "True if this is a bank check, else False"
|
||||||
msgstr "Vrai si c'est un chèque, sinon Faux."
|
msgstr "Vrai si c'est un chèque, sinon Faux."
|
||||||
|
|
||||||
#: counter/models.py:1080
|
#: counter/models.py:1078
|
||||||
msgid "cash register summary item"
|
msgid "cash register summary item"
|
||||||
msgstr "élément de relevé de caisse"
|
msgstr "élément de relevé de caisse"
|
||||||
|
|
||||||
#: counter/models.py:1096
|
#: counter/models.py:1094
|
||||||
msgid "banner"
|
msgid "banner"
|
||||||
msgstr "bannière"
|
msgstr "bannière"
|
||||||
|
|
||||||
#: counter/models.py:1098
|
#: counter/models.py:1096
|
||||||
msgid "event date"
|
msgid "event date"
|
||||||
msgstr "date de l'événement"
|
msgstr "date de l'événement"
|
||||||
|
|
||||||
#: counter/models.py:1100
|
#: counter/models.py:1098
|
||||||
msgid "event title"
|
msgid "event title"
|
||||||
msgstr "titre de l'événement"
|
msgstr "titre de l'événement"
|
||||||
|
|
||||||
#: counter/models.py:1102
|
#: counter/models.py:1100
|
||||||
msgid "secret"
|
msgid "secret"
|
||||||
msgstr "secret"
|
msgstr "secret"
|
||||||
|
|
||||||
#: counter/models.py:1141
|
#: counter/models.py:1139
|
||||||
msgid "uid"
|
msgid "uid"
|
||||||
msgstr "uid"
|
msgstr "uid"
|
||||||
|
|
||||||
#: counter/models.py:1146
|
#: counter/models.py:1144
|
||||||
msgid "student cards"
|
msgid "student cards"
|
||||||
msgstr "cartes étudiante"
|
msgstr "cartes étudiante"
|
||||||
|
|
||||||
@ -3918,13 +3922,13 @@ msgstr "oui"
|
|||||||
msgid "There is no cash register summary in this website."
|
msgid "There is no cash register summary in this website."
|
||||||
msgstr "Il n'y a pas de relevé de caisse dans ce site web."
|
msgstr "Il n'y a pas de relevé de caisse dans ce site web."
|
||||||
|
|
||||||
#: counter/templates/counter/counter_click.jinja:46
|
#: counter/templates/counter/counter_click.jinja:39
|
||||||
#: launderette/templates/launderette/launderette_admin.jinja:8
|
#: launderette/templates/launderette/launderette_admin.jinja:8
|
||||||
msgid "Selling"
|
msgid "Selling"
|
||||||
msgstr "Vente"
|
msgstr "Vente"
|
||||||
|
|
||||||
#: counter/templates/counter/counter_click.jinja:57
|
#: counter/templates/counter/counter_click.jinja:50
|
||||||
#: counter/templates/counter/counter_click.jinja:122
|
#: counter/templates/counter/counter_click.jinja:115
|
||||||
#: counter/templates/counter/fragments/create_student_card.jinja:10
|
#: counter/templates/counter/fragments/create_student_card.jinja:10
|
||||||
#: counter/templates/counter/invoices_call.jinja:16
|
#: counter/templates/counter/invoices_call.jinja:16
|
||||||
#: launderette/templates/launderette/launderette_admin.jinja:35
|
#: launderette/templates/launderette/launderette_admin.jinja:35
|
||||||
@ -3934,16 +3938,16 @@ msgstr "Vente"
|
|||||||
msgid "Go"
|
msgid "Go"
|
||||||
msgstr "Valider"
|
msgstr "Valider"
|
||||||
|
|
||||||
#: counter/templates/counter/counter_click.jinja:64
|
#: counter/templates/counter/counter_click.jinja:57
|
||||||
#: eboutic/templates/eboutic/eboutic_makecommand.jinja:19
|
#: eboutic/templates/eboutic/eboutic_makecommand.jinja:19
|
||||||
msgid "Basket: "
|
msgid "Basket: "
|
||||||
msgstr "Panier : "
|
msgstr "Panier : "
|
||||||
|
|
||||||
#: counter/templates/counter/counter_click.jinja:105
|
#: counter/templates/counter/counter_click.jinja:98
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr "Terminer"
|
msgstr "Terminer"
|
||||||
|
|
||||||
#: counter/templates/counter/counter_click.jinja:115
|
#: counter/templates/counter/counter_click.jinja:108
|
||||||
#: counter/templates/counter/refilling_list.jinja:9
|
#: counter/templates/counter/refilling_list.jinja:9
|
||||||
msgid "Refilling"
|
msgid "Refilling"
|
||||||
msgstr "Rechargement"
|
msgstr "Rechargement"
|
||||||
@ -4853,7 +4857,7 @@ msgstr "date d'emprunt"
|
|||||||
msgid "Token"
|
msgid "Token"
|
||||||
msgstr "Jeton"
|
msgstr "Jeton"
|
||||||
|
|
||||||
#: launderette/models.py:149 launderette/views.py:262
|
#: launderette/models.py:149 launderette/views.py:260
|
||||||
msgid "Token name can not be blank"
|
msgid "Token name can not be blank"
|
||||||
msgstr "Le nom du jeton ne peut pas être vide"
|
msgstr "Le nom du jeton ne peut pas être vide"
|
||||||
|
|
||||||
@ -4916,25 +4920,25 @@ msgstr "Éditer la page de présentation"
|
|||||||
msgid "Book launderette slot"
|
msgid "Book launderette slot"
|
||||||
msgstr "Réserver un créneau de laverie"
|
msgstr "Réserver un créneau de laverie"
|
||||||
|
|
||||||
#: launderette/views.py:224
|
#: launderette/views.py:222
|
||||||
msgid "Tokens, separated by spaces"
|
msgid "Tokens, separated by spaces"
|
||||||
msgstr "Jetons, séparés par des espaces"
|
msgstr "Jetons, séparés par des espaces"
|
||||||
|
|
||||||
#: launderette/views.py:246
|
#: launderette/views.py:244
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Token %(token_name)s does not exists"
|
msgid "Token %(token_name)s does not exists"
|
||||||
msgstr "Le jeton %(token_name)s n'existe pas"
|
msgstr "Le jeton %(token_name)s n'existe pas"
|
||||||
|
|
||||||
#: launderette/views.py:258
|
#: launderette/views.py:256
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Token %(token_name)s already exists"
|
msgid "Token %(token_name)s already exists"
|
||||||
msgstr "Un jeton %(token_name)s existe déjà"
|
msgstr "Un jeton %(token_name)s existe déjà"
|
||||||
|
|
||||||
#: launderette/views.py:309
|
#: launderette/views.py:307
|
||||||
msgid "User has booked no slot"
|
msgid "User has booked no slot"
|
||||||
msgstr "L'utilisateur n'a pas réservé de créneau"
|
msgstr "L'utilisateur n'a pas réservé de créneau"
|
||||||
|
|
||||||
#: launderette/views.py:417
|
#: launderette/views.py:415
|
||||||
msgid "Token not found"
|
msgid "Token not found"
|
||||||
msgstr "Jeton non trouvé"
|
msgstr "Jeton non trouvé"
|
||||||
|
|
||||||
@ -5820,11 +5824,20 @@ msgstr "Vous ne pouvez pas cotiser plusieurs fois pour la même période"
|
|||||||
msgid "Subscription created for %(user)s"
|
msgid "Subscription created for %(user)s"
|
||||||
msgstr "Cotisation créée pour %(user)s"
|
msgstr "Cotisation créée pour %(user)s"
|
||||||
|
|
||||||
#: subscription/templates/subscription/fragments/creation_success.jinja:19
|
#: subscription/templates/subscription/fragments/creation_success.jinja:7
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"%(user)s received its new %(type)s subscription. It will be active until "
|
||||||
|
"%(end)s included."
|
||||||
|
msgstr ""
|
||||||
|
"%(user)s a reçu sa nouvelle cotisaton %(type)s. Elle sert active jusqu'au "
|
||||||
|
"%(end)s inclu."
|
||||||
|
|
||||||
|
#: subscription/templates/subscription/fragments/creation_success.jinja:15
|
||||||
msgid "Go to user profile"
|
msgid "Go to user profile"
|
||||||
msgstr "Voir le profil de l'utilisateur"
|
msgstr "Voir le profil de l'utilisateur"
|
||||||
|
|
||||||
#: subscription/templates/subscription/fragments/creation_success.jinja:27
|
#: subscription/templates/subscription/fragments/creation_success.jinja:23
|
||||||
msgid "Create another subscription"
|
msgid "Create another subscription"
|
||||||
msgstr "Créer une nouvelle cotisation"
|
msgstr "Créer une nouvelle cotisation"
|
||||||
|
|
||||||
|
@ -4,11 +4,7 @@
|
|||||||
{% trans user=subscription.member %}Subscription created for {{ user }}{% endtrans %}
|
{% trans user=subscription.member %}Subscription created for {{ user }}{% endtrans %}
|
||||||
</h3>
|
</h3>
|
||||||
<p>
|
<p>
|
||||||
{% trans trimmed
|
{% trans trimmed user=subscription.member.get_short_name(), type=subscription.subscription_type, end=subscription.subscription_end %}
|
||||||
user=subscription.member.get_short_name(),
|
|
||||||
type=subscription.subscription_type,
|
|
||||||
end=subscription.subscription_end
|
|
||||||
%}
|
|
||||||
{{ user }} received its new {{ type }} subscription.
|
{{ user }} received its new {{ type }} subscription.
|
||||||
It will be active until {{ end }} included.
|
It will be active until {{ end }} included.
|
||||||
{% endtrans %}
|
{% endtrans %}
|
||||||
|
Loading…
Reference in New Issue
Block a user