mirror of
https://github.com/ae-utbm/sith.git
synced 2024-11-22 06:03:20 +00:00
Add token handling form in launderette
This commit is contained in:
parent
31ecb50c1d
commit
1529af32c5
18
launderette/migrations/0010_auto_20160806_1242.py
Normal file
18
launderette/migrations/0010_auto_20160806_1242.py
Normal file
@ -0,0 +1,18 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('launderette', '0009_remove_token_product'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelOptions(
|
||||
name='token',
|
||||
options={'verbose_name': 'Token', 'ordering': ['name']},
|
||||
),
|
||||
]
|
18
launderette/migrations/0011_auto_20160806_1459.py
Normal file
18
launderette/migrations/0011_auto_20160806_1459.py
Normal file
@ -0,0 +1,18 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('launderette', '0010_auto_20160806_1242'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelOptions(
|
||||
name='token',
|
||||
options={'ordering': ['type', 'name'], 'verbose_name': 'Token'},
|
||||
),
|
||||
]
|
@ -1,4 +1,4 @@
|
||||
from django.db import models
|
||||
from django.db import models, DataError
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.conf import settings
|
||||
from django.core.urlresolvers import reverse
|
||||
@ -41,7 +41,7 @@ class Launderette(models.Model):
|
||||
class Machine(models.Model):
|
||||
name = models.CharField(_('name'), max_length=30)
|
||||
launderette = models.ForeignKey(Launderette, related_name='machines', verbose_name=_('launderette'))
|
||||
type = models.CharField(_('type'), max_length=10, choices=[('WASHING', _('Washing')), ('DRYING', _('Drying'))])
|
||||
type = models.CharField(_('type'), max_length=10, choices=settings.SITH_LAUNDERETTE_MACHINE_TYPES)
|
||||
is_working = models.BooleanField(_('is working'), default=True)
|
||||
|
||||
class Meta:
|
||||
@ -59,18 +59,25 @@ class Machine(models.Model):
|
||||
return "%s %s" % (self._meta.verbose_name, self.name)
|
||||
|
||||
def get_absolute_url(self):
|
||||
return reverse('launderette:launderette_details', kwargs={"launderette_id": self.launderette.id})
|
||||
return reverse('launderette:launderette_admin', kwargs={"launderette_id": self.launderette.id})
|
||||
|
||||
class Token(models.Model):
|
||||
name = models.CharField(_('name'), max_length=5)
|
||||
launderette = models.ForeignKey(Launderette, related_name='tokens', verbose_name=_('launderette'))
|
||||
type = models.CharField(_('type'), max_length=10, choices=[('WASHING', _('Washing')), ('DRYING', _('Drying'))])
|
||||
type = models.CharField(_('type'), max_length=10, choices=settings.SITH_LAUNDERETTE_MACHINE_TYPES)
|
||||
borrow_date = models.DateTimeField(_('borrow date'), null=True, blank=True)
|
||||
user = models.ForeignKey(Subscriber, related_name='tokens', verbose_name=_('user'), null=True, blank=True)
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('Token')
|
||||
unique_together = ('name', 'launderette', 'type')
|
||||
ordering = ['type', 'name']
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
if self.name == "":
|
||||
raise DataError(_("Token name can not be blank"))
|
||||
else:
|
||||
super(Token, self).save(*args, **kwargs)
|
||||
|
||||
def is_owned_by(self, user):
|
||||
"""
|
||||
@ -85,7 +92,7 @@ class Token(models.Model):
|
||||
|
||||
class Slot(models.Model):
|
||||
start_date = models.DateTimeField(_('start date'))
|
||||
type = models.CharField(_('type'), max_length=10, choices=[('WASHING', _('Washing')), ('DRYING', _('Drying'))])
|
||||
type = models.CharField(_('type'), max_length=10, choices=settings.SITH_LAUNDERETTE_MACHINE_TYPES)
|
||||
machine = models.ForeignKey(Machine, related_name='slots', verbose_name=_('machine'))
|
||||
token = models.ForeignKey(Token, related_name='slots', verbose_name=_('token'), blank=True, null=True)
|
||||
user = models.ForeignKey(Subscriber, related_name='slots', verbose_name=_('user'))
|
||||
|
@ -7,12 +7,6 @@
|
||||
{% block content %}
|
||||
<h3>{% trans %}Selling{% endtrans %}</h3>
|
||||
<p><a href="{{ url('launderette:main_click', launderette_id=launderette.id) }}">{% trans %}Sell{% endtrans %}</a></p>
|
||||
<h3>{% trans %}Tokens{% endtrans %}</h3>
|
||||
<ul>
|
||||
{% for t in launderette.tokens.all() %}
|
||||
<li>{{ t }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<hr>
|
||||
<h3>{% trans %}Machines{% endtrans %}</h3>
|
||||
<p><a href="{{ url('launderette:machine_new') }}?launderette={{ launderette.id }}">{% trans %}New machine{% endtrans %}</a></p>
|
||||
@ -22,6 +16,42 @@
|
||||
<a href="{{ url('launderette:machine_delete', machine_id=m.id) }}">{% trans %}Delete{% endtrans %}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<hr>
|
||||
<h3>{% trans %}Tokens{% endtrans %}</h3>
|
||||
<p>
|
||||
<form method="post" action="">
|
||||
{% csrf_token %}
|
||||
{{ form.as_p() }}
|
||||
<p><input type="submit" value="{% trans %}Go{% endtrans %}" /></p>
|
||||
</form>
|
||||
</p>
|
||||
<p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<td>{% trans %}Type{% endtrans %}</td>
|
||||
<td>{% trans %}Name{% endtrans %}</td>
|
||||
<td>{% trans %}User{% endtrans %}</td>
|
||||
<td>{% trans %}Since{% endtrans %}</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for t in launderette.tokens.all() %}
|
||||
<tr>
|
||||
<td>{{ t.get_type_display() }}</td>
|
||||
<td>{{ t.name }}</td>
|
||||
{% if t.user %}
|
||||
<td>{{ t.user.get_display_name() }}</td>
|
||||
<td>{{ t.borrow_date|date(DATETIME_FORMAT) }} - {{ t.borrow_date|time(DATETIME_FORMAT) }}</td>
|
||||
{% else %}
|
||||
<td></td>
|
||||
<td></td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</p>
|
||||
{% endblock %}
|
||||
|
||||
|
@ -10,7 +10,7 @@
|
||||
<h3>{% trans %}Launderette admin list{% endtrans %}</h3>
|
||||
<ul>
|
||||
{% for l in launderette_list %}
|
||||
<li><a href="{{ url('launderette:launderette_details', launderette_id=l.id) }}">{{ l }}</a> -
|
||||
<li><a href="{{ url('launderette:launderette_admin', launderette_id=l.id) }}">{{ l }}</a> -
|
||||
<a href="{{ url('launderette:launderette_edit', launderette_id=l.id) }}">{% trans %}Edit{% endtrans %}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
@ -10,7 +10,7 @@ urlpatterns = [
|
||||
url(r'^(?P<launderette_id>[0-9]+)/click$', LaunderetteMainClickView.as_view(), name='main_click'),
|
||||
url(r'^(?P<launderette_id>[0-9]+)/click/(?P<user_id>[0-9]+)$', LaunderetteClickView.as_view(), name='click'),
|
||||
url(r'^admin$', LaunderetteListView.as_view(), name='launderette_list'),
|
||||
url(r'^admin/(?P<launderette_id>[0-9]+)$', LaunderetteDetailView.as_view(), name='launderette_details'),
|
||||
url(r'^admin/(?P<launderette_id>[0-9]+)$', LaunderetteAdminView.as_view(), name='launderette_admin'),
|
||||
url(r'^admin/(?P<launderette_id>[0-9]+)/edit$', LaunderetteEditView.as_view(), name='launderette_edit'),
|
||||
url(r'^admin/new$', LaunderetteCreateView.as_view(), name='launderette_new'),
|
||||
url(r'^admin/machine/new$', MachineCreateView.as_view(), name='machine_new'),
|
||||
|
@ -11,7 +11,7 @@ from django.utils.translation import ugettext as _
|
||||
from django.utils import dateparse
|
||||
from django.core.urlresolvers import reverse_lazy
|
||||
from django.conf import settings
|
||||
from django.db import transaction
|
||||
from django.db import transaction, DataError
|
||||
from django import forms
|
||||
from django.template import defaultfilters
|
||||
from django.utils import formats
|
||||
@ -142,11 +142,82 @@ class LaunderetteCreateView(CanCreateMixin, CreateView):
|
||||
form.instance.counter = c
|
||||
return super(LaunderetteCreateView, self).form_valid(form)
|
||||
|
||||
class LaunderetteDetailView(CanEditPropMixin, DetailView):
|
||||
class ManageTokenForm(forms.Form):
|
||||
action = forms.ChoiceField(choices=[("BACK", _("Back")), ("ADD", _("Add")), ("DEL", _("Delete"))], label=_("Action"))
|
||||
token_type = forms.ChoiceField(choices=settings.SITH_LAUNDERETTE_MACHINE_TYPES, label=_("Type"))
|
||||
tokens = forms.CharField(max_length=512, widget=forms.widgets.Textarea, label=_("Tokens, separated by spaces"))
|
||||
|
||||
def process(self, launderette):
|
||||
cleaned_data = self.cleaned_data
|
||||
token_list = cleaned_data['tokens'].strip(" ").split(" ")
|
||||
token_type = cleaned_data['token_type']
|
||||
self.data = {}
|
||||
if cleaned_data['action'] == "BACK":
|
||||
for t in token_list:
|
||||
try:
|
||||
tok = Token.objects.filter(launderette=launderette, type=token_type, name=t).first()
|
||||
tok.borrow_date = None
|
||||
tok.user = None
|
||||
tok.save()
|
||||
except:
|
||||
self.add_error(None, _("Token %(token_name)s does not exists") % {'token_name': t})
|
||||
elif cleaned_data['action'] == "ADD":
|
||||
for t in token_list:
|
||||
try:
|
||||
Token(launderette=launderette, type=token_type, name=t).save()
|
||||
except DataError as e:
|
||||
self.add_error(None, e)
|
||||
except:
|
||||
self.add_error(None, _("Token %(token_name)s already exists") % {'token_name': t})
|
||||
elif cleaned_data['action'] == "DEL":
|
||||
for t in token_list:
|
||||
try:
|
||||
Token.objects.filter(launderette=launderette, type=token_type, name=t).delete()
|
||||
except:
|
||||
self.add_error(None, _("Token %(token_name)s does not exists") % {'token_name': t})
|
||||
|
||||
class LaunderetteAdminView(CanEditPropMixin, BaseFormView, DetailView):
|
||||
"""The admin page of the launderette"""
|
||||
model = Launderette
|
||||
pk_url_kwarg = "launderette_id"
|
||||
template_name = 'launderette/launderette_detail.jinja'
|
||||
template_name = 'launderette/launderette_admin.jinja'
|
||||
form_class = ManageTokenForm
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
self.object = self.get_object()
|
||||
return super(LaunderetteAdminView, self).get(request, *args, **kwargs)
|
||||
|
||||
def post(self, request, *args, **kwargs):
|
||||
self.object = self.get_object()
|
||||
form = self.get_form()
|
||||
return super(LaunderetteAdminView, self).post(request, *args, **kwargs)
|
||||
form.launderette = self.object
|
||||
if form.is_valid():
|
||||
return self.form_valid(form)
|
||||
else:
|
||||
return self.form_invalid(form)
|
||||
|
||||
def form_valid(self, form):
|
||||
"""
|
||||
We handle here the redirection, passing the user id of the asked customer
|
||||
"""
|
||||
form.process(self.object)
|
||||
if form.is_valid():
|
||||
return super(LaunderetteAdminView, self).form_valid(form)
|
||||
else:
|
||||
return super(LaunderetteAdminView, self).form_invalid(form)
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
"""
|
||||
We handle here the login form for the barman
|
||||
"""
|
||||
kwargs = super(LaunderetteAdminView, self).get_context_data(**kwargs)
|
||||
if self.request.method == "GET":
|
||||
kwargs['form'] = self.get_form()
|
||||
return kwargs
|
||||
|
||||
def get_success_url(self):
|
||||
return reverse_lazy('launderette:launderette_admin', args=self.args, kwargs=self.kwargs)
|
||||
|
||||
class GetLaunderetteUserForm(GetUserForm):
|
||||
def clean(self):
|
||||
|
Binary file not shown.
@ -6,7 +6,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-08-02 00:28+0200\n"
|
||||
"POT-Creation-Date: 2016-08-06 15:08+0200\n"
|
||||
"PO-Revision-Date: 2016-07-18\n"
|
||||
"Last-Translator: Skia <skia@libskia.so>\n"
|
||||
"Language-Team: AE info <ae.info@utbm.fr>\n"
|
||||
@ -17,8 +17,8 @@ msgstr ""
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#: accounting/models.py:32 accounting/models.py:55 accounting/models.py:94
|
||||
#: club/models.py:18 counter/models.py:46 counter/models.py:71
|
||||
#: counter/models.py:99 launderette/models.py:14 launderette/models.py:42
|
||||
#: club/models.py:18 counter/models.py:52 counter/models.py:77
|
||||
#: counter/models.py:105 launderette/models.py:14 launderette/models.py:42
|
||||
#: launderette/models.py:65
|
||||
msgid "name"
|
||||
msgstr "nom"
|
||||
@ -31,12 +31,12 @@ msgstr "IBAN"
|
||||
msgid "account number"
|
||||
msgstr "numero de compte"
|
||||
|
||||
#: accounting/models.py:92 club/models.py:109 counter/models.py:253
|
||||
#: launderette/models.py:87
|
||||
#: accounting/models.py:92 club/models.py:109 counter/models.py:259
|
||||
#: launderette/models.py:94
|
||||
msgid "start date"
|
||||
msgstr "date de début"
|
||||
|
||||
#: accounting/models.py:93 club/models.py:110 counter/models.py:254
|
||||
#: accounting/models.py:93 club/models.py:110 counter/models.py:260
|
||||
msgid "end date"
|
||||
msgstr "date de fin"
|
||||
|
||||
@ -44,8 +44,8 @@ msgstr "date de fin"
|
||||
msgid "is closed"
|
||||
msgstr "est fermé"
|
||||
|
||||
#: accounting/models.py:97 accounting/models.py:136 counter/models.py:24
|
||||
#: counter/models.py:191
|
||||
#: accounting/models.py:97 accounting/models.py:136 counter/models.py:25
|
||||
#: counter/models.py:197
|
||||
msgid "amount"
|
||||
msgstr "montant"
|
||||
|
||||
@ -57,12 +57,12 @@ msgstr "montant effectif"
|
||||
msgid "number"
|
||||
msgstr "numéro"
|
||||
|
||||
#: accounting/models.py:137 core/models.py:463 counter/models.py:194
|
||||
#: counter/models.py:229 eboutic/models.py:13 eboutic/models.py:46
|
||||
#: accounting/models.py:137 core/models.py:466 counter/models.py:200
|
||||
#: counter/models.py:235 eboutic/models.py:13 eboutic/models.py:46
|
||||
msgid "date"
|
||||
msgstr "date"
|
||||
|
||||
#: accounting/models.py:138 accounting/models.py:198 counter/models.py:222
|
||||
#: accounting/models.py:138 accounting/models.py:198 counter/models.py:228
|
||||
msgid "label"
|
||||
msgstr "intitulé"
|
||||
|
||||
@ -70,7 +70,7 @@ msgstr "intitulé"
|
||||
msgid "remark"
|
||||
msgstr "remarque"
|
||||
|
||||
#: accounting/models.py:140 counter/models.py:195 eboutic/models.py:48
|
||||
#: accounting/models.py:140 counter/models.py:201 eboutic/models.py:48
|
||||
#: subscription/models.py:34
|
||||
msgid "payment method"
|
||||
msgstr "méthode de paiement"
|
||||
@ -92,7 +92,7 @@ msgstr ""
|
||||
"La date ne peut pas être avant la date de début du journal, qui est\n"
|
||||
"%(start_date)s."
|
||||
|
||||
#: accounting/models.py:197 counter/models.py:74
|
||||
#: accounting/models.py:197 counter/models.py:80
|
||||
msgid "code"
|
||||
msgstr "code"
|
||||
|
||||
@ -158,7 +158,8 @@ msgstr "Éditer"
|
||||
#: accounting/templates/accounting/bank_account_details.jinja:19
|
||||
#: accounting/templates/accounting/bank_account_list.jinja:16
|
||||
#: core/templates/core/group_list.jinja:13
|
||||
#: launderette/templates/launderette/launderette_detail.jinja:22
|
||||
#: launderette/templates/launderette/launderette_admin.jinja:16
|
||||
#: launderette/views.py:147
|
||||
msgid "Delete"
|
||||
msgstr "Supprimer"
|
||||
|
||||
@ -192,6 +193,7 @@ msgid "You can not create new journal while you still have one opened"
|
||||
msgstr "Vous ne pouvez pas créer de journal tant qu'il y en a un d'ouvert"
|
||||
|
||||
#: accounting/templates/accounting/club_account_details.jinja:17
|
||||
#: launderette/templates/launderette/launderette_admin.jinja:33
|
||||
msgid "Name"
|
||||
msgstr "Nom"
|
||||
|
||||
@ -205,8 +207,8 @@ msgstr "Fin"
|
||||
|
||||
#: accounting/templates/accounting/club_account_details.jinja:20
|
||||
#: accounting/templates/accounting/journal_details.jinja:23
|
||||
#: counter/templates/counter/user_account.jinja:17
|
||||
#: counter/templates/counter/user_account.jinja:63
|
||||
#: core/templates/core/user_account.jinja:18
|
||||
#: core/templates/core/user_account.jinja:64
|
||||
msgid "Amount"
|
||||
msgstr "Montant"
|
||||
|
||||
@ -239,7 +241,7 @@ msgid "View"
|
||||
msgstr "Voir"
|
||||
|
||||
#: accounting/templates/accounting/journal_details.jinja:10
|
||||
#: counter/templates/counter/user_account.jinja:9
|
||||
#: core/templates/core/user_account.jinja:10
|
||||
msgid "Amount: "
|
||||
msgstr "Montant: "
|
||||
|
||||
@ -260,14 +262,14 @@ msgid "Nb"
|
||||
msgstr "No"
|
||||
|
||||
#: accounting/templates/accounting/journal_details.jinja:21
|
||||
#: counter/templates/counter/user_account.jinja:15
|
||||
#: counter/templates/counter/user_account.jinja:36
|
||||
#: counter/templates/counter/user_account.jinja:61
|
||||
#: core/templates/core/user_account.jinja:16
|
||||
#: core/templates/core/user_account.jinja:37
|
||||
#: core/templates/core/user_account.jinja:62
|
||||
msgid "Date"
|
||||
msgstr "Date"
|
||||
|
||||
#: accounting/templates/accounting/journal_details.jinja:22
|
||||
#: counter/templates/counter/user_account.jinja:38
|
||||
#: core/templates/core/user_account.jinja:39
|
||||
msgid "Label"
|
||||
msgstr "Intitulé"
|
||||
|
||||
@ -316,7 +318,7 @@ msgid "You can not make loops in clubs"
|
||||
msgstr "Vous ne pouvez pas faire de boucles dans les clubs"
|
||||
|
||||
#: club/models.py:107 eboutic/models.py:12 eboutic/models.py:45
|
||||
#: launderette/models.py:69 launderette/models.py:91
|
||||
#: launderette/models.py:69 launderette/models.py:98
|
||||
msgid "user"
|
||||
msgstr "nom d'utilisateur"
|
||||
|
||||
@ -328,8 +330,8 @@ msgstr "club"
|
||||
msgid "role"
|
||||
msgstr "rôle"
|
||||
|
||||
#: club/models.py:113 core/models.py:27 counter/models.py:47
|
||||
#: counter/models.py:72
|
||||
#: club/models.py:113 core/models.py:27 counter/models.py:53
|
||||
#: counter/models.py:78
|
||||
msgid "description"
|
||||
msgstr "description"
|
||||
|
||||
@ -396,7 +398,7 @@ msgstr "Il n'y a pas de club dans ce site web."
|
||||
msgid "Club members"
|
||||
msgstr "Membres du club"
|
||||
|
||||
#: club/templates/club/club_members.jinja:13
|
||||
#: club/templates/club/club_members.jinja:13 launderette/views.py:147
|
||||
msgid "Add"
|
||||
msgstr "Ajouter"
|
||||
|
||||
@ -511,15 +513,15 @@ msgstr "Duppliquer la page"
|
||||
msgid "Loop in page tree"
|
||||
msgstr "Boucle dans l'arborescence des pages"
|
||||
|
||||
#: core/models.py:460
|
||||
#: core/models.py:463
|
||||
msgid "revision"
|
||||
msgstr "révision"
|
||||
|
||||
#: core/models.py:461
|
||||
#: core/models.py:464
|
||||
msgid "page title"
|
||||
msgstr "titre de la page"
|
||||
|
||||
#: core/models.py:462
|
||||
#: core/models.py:465
|
||||
msgid "page content"
|
||||
msgstr "contenu de la page"
|
||||
|
||||
@ -632,7 +634,9 @@ msgstr "Hello, world! Vous êtes sur la page d'accueil utilisant Jinja2."
|
||||
|
||||
#: core/templates/core/login.jinja:6
|
||||
msgid "Your username and password didn't match. Please try again."
|
||||
msgstr "Votre nom d'utilisateur et votre mot de passe ne correspondent pas. Merci de réessayer."
|
||||
msgstr ""
|
||||
"Votre nom d'utilisateur et votre mot de passe ne correspondent pas. Merci de "
|
||||
"réessayer."
|
||||
|
||||
#: core/templates/core/login.jinja:11
|
||||
msgid ""
|
||||
@ -683,7 +687,9 @@ msgstr "La créer ?"
|
||||
#: core/templates/core/page_detail.jinja:5
|
||||
#, python-format
|
||||
msgid "This may not be the last update, you are seeing revision %(rev_id)s!"
|
||||
msgstr "Ceci n'est peut-être pas la dernière version de la page. Vous consultez la version %(rev_id)s."
|
||||
msgstr ""
|
||||
"Ceci n'est peut-être pas la dernière version de la page. Vous consultez la "
|
||||
"version %(rev_id)s."
|
||||
|
||||
#: core/templates/core/page_hist.jinja:6
|
||||
msgid "Page history"
|
||||
@ -766,7 +772,9 @@ msgstr ""
|
||||
|
||||
#: core/templates/core/password_reset_email.jinja:4
|
||||
msgid "Please go to the following page and choose a new password:"
|
||||
msgstr "Merci de vous rendre sur la page suivante et de choisir un nouveau mot de passe :"
|
||||
msgstr ""
|
||||
"Merci de vous rendre sur la page suivante et de choisir un nouveau mot de "
|
||||
"passe :"
|
||||
|
||||
#: core/templates/core/password_reset_email.jinja:8
|
||||
msgid "Your username, in case you've forgotten: "
|
||||
@ -791,14 +799,59 @@ msgid "Welcome %(user_name)s!"
|
||||
msgstr "Bienvenue, %(user_name)s!"
|
||||
|
||||
#: core/templates/core/register.jinja:10
|
||||
msgid "You successfully registred and you will soon receive a confirmation mail."
|
||||
msgstr "Vous vous êtes correctement enregistré, et vous devriez recevoir rapidement un email de confirmation."
|
||||
msgid ""
|
||||
"You successfully registred and you will soon receive a confirmation mail."
|
||||
msgstr ""
|
||||
"Vous vous êtes correctement enregistré, et vous devriez recevoir rapidement "
|
||||
"un email de confirmation."
|
||||
|
||||
#: core/templates/core/register.jinja:12
|
||||
#, python-format
|
||||
msgid "Your username is %(username)s."
|
||||
msgstr "Votre nom d'utilisateur est %(username)s."
|
||||
|
||||
#: core/templates/core/user_account.jinja:4
|
||||
#, python-format
|
||||
msgid "%(user_name)s's account"
|
||||
msgstr "Compte de %(user_name)s"
|
||||
|
||||
#: core/templates/core/user_account.jinja:9
|
||||
msgid "User account"
|
||||
msgstr "Compte utilisateur"
|
||||
|
||||
#: core/templates/core/user_account.jinja:12
|
||||
msgid "Refillings"
|
||||
msgstr "Rechargements"
|
||||
|
||||
#: core/templates/core/user_account.jinja:17
|
||||
#: core/templates/core/user_account.jinja:38
|
||||
msgid "Barman"
|
||||
msgstr "Barman"
|
||||
|
||||
#: core/templates/core/user_account.jinja:33
|
||||
msgid "Buyings"
|
||||
msgstr "Achats"
|
||||
|
||||
#: core/templates/core/user_account.jinja:40
|
||||
msgid "Quantity"
|
||||
msgstr "Quantité"
|
||||
|
||||
#: core/templates/core/user_account.jinja:41
|
||||
msgid "Total"
|
||||
msgstr "Total"
|
||||
|
||||
#: core/templates/core/user_account.jinja:58
|
||||
msgid "Invoices"
|
||||
msgstr "Factures"
|
||||
|
||||
#: core/templates/core/user_account.jinja:63
|
||||
msgid "Items"
|
||||
msgstr "Articles"
|
||||
|
||||
#: core/templates/core/user_account.jinja:85
|
||||
msgid "User has no account"
|
||||
msgstr "L'utilisateur n'a pas de compte"
|
||||
|
||||
#: core/templates/core/user_base.jinja:11
|
||||
#: core/templates/core/user_tools.jinja:14
|
||||
msgid "Groups"
|
||||
@ -822,6 +875,7 @@ msgid "Born: "
|
||||
msgstr "Né le : "
|
||||
|
||||
#: core/templates/core/user_detail.jinja:20
|
||||
#, python-format
|
||||
msgid "User is subscriber until %(subscription_end)s"
|
||||
msgstr "L'utilisateur est cotisant jusqu'au %(subscription_end)s"
|
||||
|
||||
@ -905,93 +959,93 @@ msgstr "Comptabilité générale"
|
||||
msgid "Club account: "
|
||||
msgstr "Compte club : "
|
||||
|
||||
#: counter/models.py:23
|
||||
#: counter/models.py:24
|
||||
msgid "account id"
|
||||
msgstr "numéro de compte"
|
||||
|
||||
#: counter/models.py:27
|
||||
#: counter/models.py:28
|
||||
msgid "customer"
|
||||
msgstr "client"
|
||||
|
||||
#: counter/models.py:28
|
||||
#: counter/models.py:29
|
||||
msgid "customers"
|
||||
msgstr "clients"
|
||||
|
||||
#: counter/models.py:38 counter/templates/counter/counter_click.jinja:46
|
||||
#: counter/models.py:44 counter/templates/counter/counter_click.jinja:46
|
||||
msgid "Not enough money"
|
||||
msgstr "Solde insuffisant"
|
||||
|
||||
#: counter/models.py:51 eboutic/models.py:77
|
||||
#: counter/models.py:57 eboutic/models.py:78
|
||||
msgid "product type"
|
||||
msgstr "type du produit"
|
||||
|
||||
#: counter/models.py:75
|
||||
#: counter/models.py:81
|
||||
msgid "purchase price"
|
||||
msgstr "prix d'achat"
|
||||
|
||||
#: counter/models.py:76
|
||||
#: counter/models.py:82
|
||||
msgid "selling price"
|
||||
msgstr "prix de vente"
|
||||
|
||||
#: counter/models.py:77
|
||||
#: counter/models.py:83
|
||||
msgid "special selling price"
|
||||
msgstr "prix de vente spécial"
|
||||
|
||||
#: counter/models.py:82
|
||||
#: counter/models.py:88
|
||||
msgid "product"
|
||||
msgstr "produit"
|
||||
|
||||
#: counter/models.py:102 subscription/models.py:29
|
||||
#: counter/models.py:108 subscription/models.py:29
|
||||
msgid "subscription type"
|
||||
msgstr "type d'inscription"
|
||||
|
||||
#: counter/models.py:104
|
||||
#: counter/models.py:110
|
||||
msgid "Bar"
|
||||
msgstr "Bar"
|
||||
|
||||
#: counter/models.py:104
|
||||
#: counter/models.py:110
|
||||
msgid "Office"
|
||||
msgstr "Bureau"
|
||||
|
||||
#: counter/models.py:104 eboutic/templates/eboutic/eboutic_main.jinja:20
|
||||
#: counter/models.py:110 eboutic/templates/eboutic/eboutic_main.jinja:20
|
||||
#: eboutic/templates/eboutic/eboutic_makecommand.jinja:4
|
||||
#: eboutic/templates/eboutic/eboutic_payment_result.jinja:4
|
||||
msgid "Eboutic"
|
||||
msgstr "Eboutic"
|
||||
|
||||
#: counter/models.py:105
|
||||
#: counter/models.py:111
|
||||
msgid "sellers"
|
||||
msgstr "vendeurs"
|
||||
|
||||
#: counter/models.py:111 launderette/models.py:15
|
||||
#: counter/models.py:117 launderette/models.py:15
|
||||
msgid "counter"
|
||||
msgstr "comptoir"
|
||||
|
||||
#: counter/models.py:197
|
||||
#: counter/models.py:203
|
||||
msgid "bank"
|
||||
msgstr "banque"
|
||||
|
||||
#: counter/models.py:199 counter/models.py:230
|
||||
#: counter/models.py:205 counter/models.py:236
|
||||
msgid "is validated"
|
||||
msgstr "est validé"
|
||||
|
||||
#: counter/models.py:202
|
||||
#: counter/models.py:208
|
||||
msgid "refilling"
|
||||
msgstr "rechargement"
|
||||
|
||||
#: counter/models.py:225 eboutic/models.py:78
|
||||
#: counter/models.py:231 eboutic/models.py:79
|
||||
msgid "unit price"
|
||||
msgstr "prix unitaire"
|
||||
|
||||
#: counter/models.py:226 eboutic/models.py:79
|
||||
#: counter/models.py:232 eboutic/models.py:80
|
||||
msgid "quantity"
|
||||
msgstr "quantité"
|
||||
|
||||
#: counter/models.py:233
|
||||
#: counter/models.py:239
|
||||
msgid "selling"
|
||||
msgstr "vente"
|
||||
|
||||
#: counter/models.py:257
|
||||
#: counter/models.py:263
|
||||
msgid "permanency"
|
||||
msgstr "permanence"
|
||||
|
||||
@ -1013,12 +1067,13 @@ msgstr "Rechargement"
|
||||
|
||||
#: counter/templates/counter/counter_click.jinja:39
|
||||
#: counter/templates/counter/counter_click.jinja:52
|
||||
#: launderette/templates/launderette/launderette_admin.jinja:25
|
||||
#: launderette/templates/launderette/launderette_click.jinja:14
|
||||
msgid "Go"
|
||||
msgstr "Valider"
|
||||
|
||||
#: counter/templates/counter/counter_click.jinja:44
|
||||
#: launderette/templates/launderette/launderette_detail.jinja:8
|
||||
#: launderette/templates/launderette/launderette_admin.jinja:8
|
||||
msgid "Selling"
|
||||
msgstr "Vente"
|
||||
|
||||
@ -1124,44 +1179,6 @@ msgstr "Nouveau type de produit"
|
||||
msgid "There is no product types in this website."
|
||||
msgstr "Il n'y a pas de types de produit dans ce site web."
|
||||
|
||||
#: counter/templates/counter/user_account.jinja:4
|
||||
#, python-format
|
||||
msgid "%(user_name)s's account"
|
||||
msgstr "Compte de %(user_name)s"
|
||||
|
||||
#: counter/templates/counter/user_account.jinja:8
|
||||
msgid "User account"
|
||||
msgstr "Compte utilisateur"
|
||||
|
||||
#: counter/templates/counter/user_account.jinja:11
|
||||
msgid "Refillings"
|
||||
msgstr "Rechargements"
|
||||
|
||||
#: counter/templates/counter/user_account.jinja:16
|
||||
#: counter/templates/counter/user_account.jinja:37
|
||||
msgid "Barman"
|
||||
msgstr "Barman"
|
||||
|
||||
#: counter/templates/counter/user_account.jinja:32
|
||||
msgid "Buyings"
|
||||
msgstr "Achats"
|
||||
|
||||
#: counter/templates/counter/user_account.jinja:39
|
||||
msgid "Quantity"
|
||||
msgstr "Quantité"
|
||||
|
||||
#: counter/templates/counter/user_account.jinja:40
|
||||
msgid "Total"
|
||||
msgstr "Total"
|
||||
|
||||
#: counter/templates/counter/user_account.jinja:57
|
||||
msgid "Invoices"
|
||||
msgstr "Factures"
|
||||
|
||||
#: counter/templates/counter/user_account.jinja:62
|
||||
msgid "Items"
|
||||
msgstr "Articles"
|
||||
|
||||
#: counter/views.py:48
|
||||
msgid "User not found"
|
||||
msgstr "Utilisateur non trouvé"
|
||||
@ -1178,7 +1195,7 @@ msgstr "ANN"
|
||||
msgid "You have not enough money to buy all the basket"
|
||||
msgstr "Vous n'avez pas assez d'argent pour acheter le panier"
|
||||
|
||||
#: eboutic/models.py:47 sith/settings.py:247 sith/settings_sample.py:243
|
||||
#: eboutic/models.py:47 sith/settings.py:252 sith/settings_sample.py:251
|
||||
msgid "Credit card"
|
||||
msgstr "Carte banquaire"
|
||||
|
||||
@ -1194,19 +1211,19 @@ msgstr "validé"
|
||||
msgid "Invoice already validated"
|
||||
msgstr "Facture déjà validée"
|
||||
|
||||
#: eboutic/models.py:75
|
||||
#: eboutic/models.py:76
|
||||
msgid "product id"
|
||||
msgstr "ID du produit"
|
||||
|
||||
#: eboutic/models.py:76
|
||||
#: eboutic/models.py:77
|
||||
msgid "product name"
|
||||
msgstr "nom du produit"
|
||||
|
||||
#: eboutic/models.py:88
|
||||
#: eboutic/models.py:89
|
||||
msgid "basket"
|
||||
msgstr "panier"
|
||||
|
||||
#: eboutic/models.py:91
|
||||
#: eboutic/models.py:92
|
||||
msgid "invoice"
|
||||
msgstr "facture"
|
||||
|
||||
@ -1219,8 +1236,11 @@ msgid "Pay with credit card"
|
||||
msgstr "Payer avec une carte banquaire"
|
||||
|
||||
#: eboutic/templates/eboutic/eboutic_makecommand.jinja:34
|
||||
msgid "AE account payment disabled because your basket contains refilling items."
|
||||
msgstr "Paiement par compte AE désactivé parce que votre panier contient des bons de rechargement."
|
||||
msgid ""
|
||||
"AE account payment disabled because your basket contains refilling items."
|
||||
msgstr ""
|
||||
"Paiement par compte AE désactivé parce que votre panier contient des bons de "
|
||||
"rechargement."
|
||||
|
||||
#: eboutic/templates/eboutic/eboutic_makecommand.jinja:39
|
||||
msgid "Pay with Sith account"
|
||||
@ -1246,20 +1266,10 @@ msgstr "Vous n'avez pas assez d'argent pour acheter le panier"
|
||||
msgid "launderette"
|
||||
msgstr "laverie"
|
||||
|
||||
#: launderette/models.py:44 launderette/models.py:67 launderette/models.py:88
|
||||
#: launderette/models.py:44 launderette/models.py:67 launderette/models.py:95
|
||||
msgid "type"
|
||||
msgstr "type"
|
||||
|
||||
#: launderette/models.py:44 launderette/models.py:67 launderette/models.py:88
|
||||
#: launderette/templates/launderette/launderette_book.jinja:26
|
||||
msgid "Washing"
|
||||
msgstr "Lavage"
|
||||
|
||||
#: launderette/models.py:44 launderette/models.py:67 launderette/models.py:88
|
||||
#: launderette/templates/launderette/launderette_book.jinja:30
|
||||
msgid "Drying"
|
||||
msgstr "Séchage"
|
||||
|
||||
#: launderette/models.py:45
|
||||
msgid "is working"
|
||||
msgstr "fonctionne"
|
||||
@ -1276,18 +1286,55 @@ msgstr "date d'emprunt"
|
||||
msgid "Token"
|
||||
msgstr "Jeton"
|
||||
|
||||
#: launderette/models.py:89
|
||||
#: launderette/models.py:78
|
||||
msgid "Token name can not be blank"
|
||||
msgstr "Le nom du jeton ne peut pas être vide"
|
||||
|
||||
#: launderette/models.py:96
|
||||
msgid "machine"
|
||||
msgstr "machine"
|
||||
|
||||
#: launderette/models.py:90
|
||||
#: launderette/models.py:97
|
||||
msgid "token"
|
||||
msgstr "jeton"
|
||||
|
||||
#: launderette/models.py:94
|
||||
#: launderette/models.py:101
|
||||
msgid "Slot"
|
||||
msgstr "Créneau"
|
||||
|
||||
#: launderette/templates/launderette/launderette_admin.jinja:4
|
||||
msgid "Launderette admin"
|
||||
msgstr "Gestion de la laverie"
|
||||
|
||||
#: launderette/templates/launderette/launderette_admin.jinja:9
|
||||
msgid "Sell"
|
||||
msgstr "Vendre"
|
||||
|
||||
#: launderette/templates/launderette/launderette_admin.jinja:11
|
||||
msgid "Machines"
|
||||
msgstr "Machines"
|
||||
|
||||
#: launderette/templates/launderette/launderette_admin.jinja:12
|
||||
msgid "New machine"
|
||||
msgstr "Nouvelle machine"
|
||||
|
||||
#: launderette/templates/launderette/launderette_admin.jinja:20
|
||||
msgid "Tokens"
|
||||
msgstr "Jetons"
|
||||
|
||||
#: launderette/templates/launderette/launderette_admin.jinja:32
|
||||
#: launderette/views.py:148
|
||||
msgid "Type"
|
||||
msgstr "Type"
|
||||
|
||||
#: launderette/templates/launderette/launderette_admin.jinja:34
|
||||
msgid "User"
|
||||
msgstr "Utilisateur"
|
||||
|
||||
#: launderette/templates/launderette/launderette_admin.jinja:35
|
||||
msgid "Since"
|
||||
msgstr "Depuis"
|
||||
|
||||
#: launderette/templates/launderette/launderette_book.jinja:11
|
||||
msgid "Choose"
|
||||
msgstr "Choisir"
|
||||
@ -1296,25 +1343,15 @@ msgstr "Choisir"
|
||||
msgid "Washing and drying"
|
||||
msgstr "Lavage et séchage"
|
||||
|
||||
#: launderette/templates/launderette/launderette_detail.jinja:4
|
||||
msgid "Launderette admin"
|
||||
msgstr "Gestion de la laverie"
|
||||
#: launderette/templates/launderette/launderette_book.jinja:26
|
||||
#: sith/settings.py:340 sith/settings_sample.py:339
|
||||
msgid "Washing"
|
||||
msgstr "Lavage"
|
||||
|
||||
#: launderette/templates/launderette/launderette_detail.jinja:9
|
||||
msgid "Sell"
|
||||
msgstr "Vendre"
|
||||
|
||||
#: launderette/templates/launderette/launderette_detail.jinja:10
|
||||
msgid "Tokens"
|
||||
msgstr "Jetons"
|
||||
|
||||
#: launderette/templates/launderette/launderette_detail.jinja:17
|
||||
msgid "Machines"
|
||||
msgstr "Machines"
|
||||
|
||||
#: launderette/templates/launderette/launderette_detail.jinja:18
|
||||
msgid "New machine"
|
||||
msgstr "Nouvelle machine"
|
||||
#: launderette/templates/launderette/launderette_book.jinja:30
|
||||
#: sith/settings.py:340 sith/settings_sample.py:339
|
||||
msgid "Drying"
|
||||
msgstr "Séchage"
|
||||
|
||||
#: launderette/templates/launderette/launderette_list.jinja:4
|
||||
#: launderette/templates/launderette/launderette_list.jinja:10
|
||||
@ -1337,83 +1374,115 @@ msgstr "Éditer la page de présentation"
|
||||
msgid "Book launderette slot"
|
||||
msgstr "Réserver un créneau de laverie"
|
||||
|
||||
#: launderette/views.py:156
|
||||
#: launderette/views.py:147
|
||||
msgid "Back"
|
||||
msgstr "Retour"
|
||||
|
||||
#: launderette/views.py:147
|
||||
msgid "Action"
|
||||
msgstr "Action"
|
||||
|
||||
#: launderette/views.py:149
|
||||
msgid "Tokens, separated by spaces"
|
||||
msgstr "Jetons, séparés par des espaces"
|
||||
|
||||
#: launderette/views.py:164 launderette/views.py:178
|
||||
msgid "Token %(token_name)s does not exists"
|
||||
msgstr "Le jeton %(token_name)s n'existe pas"
|
||||
|
||||
#: launderette/views.py:172
|
||||
msgid "Token %(token_name)s already exists"
|
||||
msgstr "Un jeton %(token_name)s existe déjà"
|
||||
|
||||
#: launderette/views.py:230
|
||||
msgid "User has booked no slot"
|
||||
msgstr "L'utilisateur n'a pas réservé de créneau"
|
||||
|
||||
#: launderette/views.py:246
|
||||
#: launderette/views.py:320
|
||||
msgid "Token not found"
|
||||
msgstr "Jeton non trouvé"
|
||||
|
||||
#: sith/settings.py:244 sith/settings.py:251 sith/settings.py:263
|
||||
#: sith/settings_sample.py:240 sith/settings_sample.py:247
|
||||
#: sith/settings_sample.py:259
|
||||
#: sith/settings.py:249 sith/settings.py:256 sith/settings.py:274
|
||||
#: sith/settings_sample.py:248 sith/settings_sample.py:255
|
||||
#: sith/settings_sample.py:273
|
||||
msgid "Check"
|
||||
msgstr "Chèque"
|
||||
|
||||
#: sith/settings.py:245 sith/settings.py:252 sith/settings.py:264
|
||||
#: sith/settings_sample.py:241 sith/settings_sample.py:248
|
||||
#: sith/settings_sample.py:260
|
||||
#: sith/settings.py:250 sith/settings.py:257 sith/settings.py:275
|
||||
#: sith/settings_sample.py:249 sith/settings_sample.py:256
|
||||
#: sith/settings_sample.py:274
|
||||
msgid "Cash"
|
||||
msgstr "Espèces"
|
||||
|
||||
#: sith/settings.py:246 sith/settings_sample.py:242
|
||||
#: sith/settings.py:251 sith/settings_sample.py:250
|
||||
msgid "Transfert"
|
||||
msgstr "Virement"
|
||||
|
||||
#: sith/settings.py:253 sith/settings_sample.py:249
|
||||
#: sith/settings.py:258 sith/settings_sample.py:257
|
||||
msgid "Other"
|
||||
msgstr "Autre"
|
||||
|
||||
#: sith/settings.py:277 sith/settings_sample.py:273
|
||||
#: sith/settings.py:262 sith/settings_sample.py:261
|
||||
msgid "Belfort"
|
||||
msgstr "Belfort"
|
||||
|
||||
#: sith/settings.py:263 sith/settings_sample.py:262
|
||||
msgid "Sevenans"
|
||||
msgstr "Sevenans"
|
||||
|
||||
#: sith/settings.py:264 sith/settings_sample.py:263
|
||||
msgid "Montbéliard"
|
||||
msgstr "Montbéliard"
|
||||
|
||||
#: sith/settings.py:288 sith/settings_sample.py:287
|
||||
msgid "One semester"
|
||||
msgstr "Un semestre"
|
||||
|
||||
#: sith/settings.py:282 sith/settings_sample.py:278
|
||||
#: sith/settings.py:293 sith/settings_sample.py:292
|
||||
msgid "Two semesters"
|
||||
msgstr "Deux semestres"
|
||||
|
||||
#: sith/settings.py:287 sith/settings_sample.py:283
|
||||
#: sith/settings.py:298 sith/settings_sample.py:297
|
||||
msgid "Common core cursus"
|
||||
msgstr "Cursus tronc commun"
|
||||
|
||||
#: sith/settings.py:292 sith/settings_sample.py:288
|
||||
#: sith/settings.py:303 sith/settings_sample.py:302
|
||||
msgid "Branch cursus"
|
||||
msgstr "Cursus branche"
|
||||
|
||||
#: sith/settings.py:300 sith/settings_sample.py:296
|
||||
#: sith/settings.py:311 sith/settings_sample.py:310
|
||||
msgid "President"
|
||||
msgstr "Président"
|
||||
|
||||
#: sith/settings.py:301 sith/settings_sample.py:297
|
||||
#: sith/settings.py:312 sith/settings_sample.py:311
|
||||
msgid "Vice-President"
|
||||
msgstr "Vice-Président"
|
||||
|
||||
#: sith/settings.py:302 sith/settings_sample.py:298
|
||||
#: sith/settings.py:313 sith/settings_sample.py:312
|
||||
msgid "Treasurer"
|
||||
msgstr "Trésorier"
|
||||
|
||||
#: sith/settings.py:303 sith/settings_sample.py:299
|
||||
#: sith/settings.py:314 sith/settings_sample.py:313
|
||||
msgid "Communication supervisor"
|
||||
msgstr "Responsable com"
|
||||
|
||||
#: sith/settings.py:304 sith/settings_sample.py:300
|
||||
#: sith/settings.py:315 sith/settings_sample.py:314
|
||||
msgid "Secretary"
|
||||
msgstr "Secrétaire"
|
||||
|
||||
#: sith/settings.py:305 sith/settings_sample.py:301
|
||||
#: sith/settings.py:316 sith/settings_sample.py:315
|
||||
msgid "IT supervisor"
|
||||
msgstr "Responsable info"
|
||||
|
||||
#: sith/settings.py:306 sith/settings_sample.py:302
|
||||
#: sith/settings.py:317 sith/settings_sample.py:316
|
||||
msgid "Board member"
|
||||
msgstr "Membre du bureau"
|
||||
|
||||
#: sith/settings.py:307 sith/settings_sample.py:303
|
||||
#: sith/settings.py:318 sith/settings_sample.py:317
|
||||
msgid "Active member"
|
||||
msgstr "Membre actif"
|
||||
|
||||
#: sith/settings.py:308 sith/settings_sample.py:304
|
||||
#: sith/settings.py:319 sith/settings_sample.py:318
|
||||
msgid "Curious"
|
||||
msgstr "Curieux"
|
||||
|
||||
@ -1433,21 +1502,23 @@ msgstr "début de la cotisation"
|
||||
msgid "subscription end"
|
||||
msgstr "fin de la cotisation"
|
||||
|
||||
#: subscription/models.py:44
|
||||
#: subscription/models.py:36
|
||||
msgid "location"
|
||||
msgstr "lieu"
|
||||
|
||||
#: subscription/models.py:46
|
||||
msgid "You can not subscribe many time for the same period"
|
||||
msgstr "Vous ne pouvez pas cotiser plusieurs fois pour la même période"
|
||||
|
||||
#: subscription/models.py:48
|
||||
#: subscription/models.py:50
|
||||
msgid "You are trying to create a subscription without member"
|
||||
msgstr "Vous essayez de créer une cotisation sans membre"
|
||||
|
||||
#: subscription/views.py:41
|
||||
#: subscription/views.py:42
|
||||
msgid "A user with that email address already exists"
|
||||
msgstr "Un utilisateur avec cette adresse email existe déjà"
|
||||
|
||||
#: subscription/views.py:56
|
||||
#: subscription/views.py:57
|
||||
msgid "You must either choose an existing user or create a new one properly"
|
||||
msgstr "Vous devez soit choisir un utilisateur existant, ou en créer un proprement."
|
||||
|
||||
#~ msgid "Product"
|
||||
#~ msgstr "Produit"
|
||||
|
@ -336,6 +336,7 @@ with open('./sith/et_keys/pubkey.pem') as f:
|
||||
SITH_EBOUTIC_PUB_KEY = f.read()
|
||||
|
||||
# Launderette variables
|
||||
SITH_LAUNDERETTE_MACHINE_TYPES = [('WASHING', _('Washing')), ('DRYING', _('Drying'))]
|
||||
SITH_LAUNDERETTE_PRICES = {
|
||||
'WASHING': 1.0,
|
||||
'DRYING': 0.75,
|
||||
|
Loading…
Reference in New Issue
Block a user