Some templating and migration fix

This commit is contained in:
Skia 2016-08-24 21:49:46 +02:00
parent 078b63d970
commit fb8e7ceb5b
13 changed files with 358 additions and 196 deletions

View File

@ -0,0 +1,34 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('accounting', '0003_auto_20160824_1732'),
]
operations = [
migrations.AlterModelOptions(
name='accountingtype',
options={'ordering': ['movement_type', 'code'], 'verbose_name': 'accounting type'},
),
migrations.AlterModelOptions(
name='bankaccount',
options={'ordering': ['club', 'name'], 'verbose_name': 'Bank account'},
),
migrations.AlterModelOptions(
name='clubaccount',
options={'ordering': ['bank_account', 'name'], 'verbose_name': 'Club account'},
),
migrations.AlterModelOptions(
name='generaljournal',
options={'ordering': ['-start_date'], 'verbose_name': 'General journal'},
),
migrations.AlterModelOptions(
name='simplifiedaccountingtype',
options={'ordering': ['accounting_type__movement_type', 'accounting_type__code'], 'verbose_name': 'simplified type'},
),
]

View File

@ -48,6 +48,10 @@ class BankAccount(models.Model):
number = models.CharField(_('account number'), max_length=255, blank=True) number = models.CharField(_('account number'), max_length=255, blank=True)
club = models.ForeignKey(Club, related_name="bank_accounts", verbose_name=_("club")) club = models.ForeignKey(Club, related_name="bank_accounts", verbose_name=_("club"))
class Meta:
verbose_name = _("Bank account")
ordering = ['club', 'name']
def is_owned_by(self, user): def is_owned_by(self, user):
""" """
Method to see if that object can be edited by the given user Method to see if that object can be edited by the given user
@ -70,6 +74,10 @@ class ClubAccount(models.Model):
club = models.ForeignKey(Club, related_name="club_account", verbose_name=_("club")) club = models.ForeignKey(Club, related_name="club_account", verbose_name=_("club"))
bank_account = models.ForeignKey(BankAccount, related_name="club_accounts", verbose_name=_("bank account")) bank_account = models.ForeignKey(BankAccount, related_name="club_accounts", verbose_name=_("bank account"))
class Meta:
verbose_name = _("Club account")
ordering = ['bank_account', 'name']
def is_owned_by(self, user): def is_owned_by(self, user):
""" """
Method to see if that object can be edited by the given user Method to see if that object can be edited by the given user
@ -118,6 +126,10 @@ class GeneralJournal(models.Model):
amount = CurrencyField(_('amount'), default=0) amount = CurrencyField(_('amount'), default=0)
effective_amount = CurrencyField(_('effective_amount'), default=0) effective_amount = CurrencyField(_('effective_amount'), default=0)
class Meta:
verbose_name = _("General journal")
ordering = ['-start_date']
def is_owned_by(self, user): def is_owned_by(self, user):
""" """
Method to see if that object can be edited by the given user Method to see if that object can be edited by the given user
@ -259,10 +271,12 @@ class AccountingType(models.Model):
], ],
) )
label = models.CharField(_('label'), max_length=128) label = models.CharField(_('label'), max_length=128)
movement_type = models.CharField(_('movement type'), choices=[('CREDIT', 'Credit'), ('DEBIT', 'Debit'), ('NEUTRAL', 'Neutral')], max_length=12) movement_type = models.CharField(_('movement type'), choices=[('CREDIT', _('Credit')), ('DEBIT', _('Debit')),
('NEUTRAL', _('Neutral'))], max_length=12)
class Meta: class Meta:
verbose_name = _("accounting type") verbose_name = _("accounting type")
ordering = ['movement_type', 'code']
def is_owned_by(self, user): def is_owned_by(self, user):
""" """
@ -276,7 +290,7 @@ class AccountingType(models.Model):
return reverse('accounting:type_list') return reverse('accounting:type_list')
def __str__(self): def __str__(self):
return self.code+" - "+self.movement_type+" - "+self.label return self.code+" - "+self.get_movement_type_display()+" - "+self.label
class SimplifiedAccountingType(models.Model): class SimplifiedAccountingType(models.Model):
""" """
@ -288,6 +302,7 @@ class SimplifiedAccountingType(models.Model):
class Meta: class Meta:
verbose_name = _("simplified type") verbose_name = _("simplified type")
ordering = ['accounting_type__movement_type', 'accounting_type__code']
@property @property
def movement_type(self): def movement_type(self):
@ -300,5 +315,5 @@ class SimplifiedAccountingType(models.Model):
return reverse('accounting:simple_type_list') return reverse('accounting:simple_type_list')
def __str__(self): def __str__(self):
return self.label+" - "+self.accounting_type.code+" - "+self.get_movement_type_display() return self.get_movement_type_display()+" - "+self.accounting_type.code+" - "+self.label

View File

@ -11,6 +11,9 @@
</p> </p>
<hr> <hr>
<h2>{% trans %}Bank account: {% endtrans %}{{ object.name }}</h2> <h2>{% trans %}Bank account: {% endtrans %}{{ object.name }}</h2>
{% if user.is_root and not object.club_accounts.exists() %}
<a href="{{ url('accounting:bank_delete', b_account_id=object.id) }}">{% trans %}Delete{% endtrans %}</a>
{% endif %}
<h4>{% trans %}Infos{% endtrans %}</h4> <h4>{% trans %}Infos{% endtrans %}</h4>
<ul> <ul>
<li><strong>{% trans %}IBAN: {% endtrans %}</strong>{{ object.iban }}</li> <li><strong>{% trans %}IBAN: {% endtrans %}</strong>{{ object.iban }}</li>
@ -21,9 +24,6 @@
{% for c in object.club_accounts.all() %} {% for c in object.club_accounts.all() %}
<li><a href="{{ url('accounting:club_details', c_account_id=c.id) }}">{{ c }}</a> <li><a href="{{ url('accounting:club_details', c_account_id=c.id) }}">{{ c }}</a>
- <a href="{{ url('accounting:club_edit', c_account_id=c.id) }}">{% trans %}Edit{% endtrans %}</a> - <a href="{{ url('accounting:club_edit', c_account_id=c.id) }}">{% trans %}Edit{% endtrans %}</a>
{% if user.is_root %}
- <a href="{{ url('accounting:club_delete', c_account_id=c.id) }}">{% trans %}Delete{% endtrans %}</a>
{% endif %}
</li> </li>
{% endfor %} {% endfor %}
</ul> </ul>

View File

@ -19,9 +19,6 @@
{% for a in object_list %} {% for a in object_list %}
<li><a href="{{ url('accounting:bank_details', b_account_id=a.id) }}">{{ a }}</a> <li><a href="{{ url('accounting:bank_details', b_account_id=a.id) }}">{{ a }}</a>
- <a href="{{ url('accounting:bank_edit', b_account_id=a.id) }}">{% trans %}Edit{% endtrans %}</a> - <a href="{{ url('accounting:bank_edit', b_account_id=a.id) }}">{% trans %}Edit{% endtrans %}</a>
{% if user.is_root %}
- <a href="{{ url('accounting:bank_delete', b_account_id=a.id) }}">{% trans %}Delete{% endtrans %}</a>
{% endif %}
</li> </li>
{% endfor %} {% endfor %}
</ul> </ul>

View File

@ -12,6 +12,9 @@
</p> </p>
<hr> <hr>
<h2>{% trans %}Club account:{% endtrans %} {{ object.name }}</h2> <h2>{% trans %}Club account:{% endtrans %} {{ object.name }}</h2>
{% if user.is_root and not object.journals.exists() %}
<a href="{{ url('accounting:club_delete', c_account_id=object.id) }}">{% trans %}Delete{% endtrans %}</a>
{% endif %}
{% if not object.has_open_journal() %} {% if not object.has_open_journal() %}
<p><a href="{{ url('accounting:journal_new') }}?parent={{ object.id }}">{% trans %}New journal{% endtrans %}</a></p> <p><a href="{{ url('accounting:journal_new') }}?parent={{ object.id }}">{% trans %}New journal{% endtrans %}</a></p>
{% else %} {% else %}

View File

@ -5,6 +5,14 @@
{% endblock %} {% endblock %}
{% block content %} {% block content %}
<p>
<a href="{{ url('accounting:bank_list') }}">{% trans %}Accounting{% endtrans %}</a> >
<a href="{{ url('accounting:bank_details', b_account_id=object.club_account.bank_account.id) }}">{{object.club_account.bank_account }}</a> >
<a href="{{ url('accounting:club_details', c_account_id=object.club_account.id) }}">{{ object.club_account }}</a> >
<a href="{{ url('accounting:journal_details', j_id=object.id) }}">{{ object.name }}</a> >
{% trans %}Edit operation{% endtrans %}
</p>
<hr>
<h2>{% trans %}Edit operation{% endtrans %}</h2> <h2>{% trans %}Edit operation{% endtrans %}</h2>
<form action="" method="post"> <form action="" method="post">
{% csrf_token %} {% csrf_token %}
@ -12,24 +20,12 @@
{{ form.target_id }} {{ form.target_id }}
<p>{{ form.amount.errors }}<label for="{{ form.amount.name }}">{{ form.amount.label }}</label> {{ form.amount }}</p> <p>{{ form.amount.errors }}<label for="{{ form.amount.name }}">{{ form.amount.label }}</label> {{ form.amount }}</p>
<p>{{ form.remark.errors }}<label for="{{ form.remark.name }}">{{ form.remark.label }}</label> {{ form.remark }}</p> <p>{{ form.remark.errors }}<label for="{{ form.remark.name }}">{{ form.remark.label }}</label> {{ form.remark }}</p>
<p>{{ form.target_type.errors }}<label for="{{ form.target_type.name }}">{{ form.target_type.label }}</label> </p> <p>{{ form.target_type.errors }}<label for="{{ form.target_type.name }}">{{ form.target_type.label }}</label> {{ form.target_type }}</p>
{% for choice in form.target_type %}
{% if choice.choice_value != "" %}
{{ choice }}
{% if choice.choice_value == "USER" %}
{{ form.user }} {{ form.user }}
{% elif choice.choice_value == "CLUB" %}
{{ form.club }} {{ form.club }}
{% elif choice.choice_value == "ACCOUNT" %}
{{ form.club_account }} {{ form.club_account }}
{% elif choice.choice_value == "COMPANY" %}
{{ form.company }} {{ form.company }}
{% elif choice.choice_value == "OTHER" %}
{{ form.target_label }} {{ form.target_label }}
{% endif %}
{% else %}
{% endif %}
{% endfor %}
<p>{{ form.date.errors }}<label for="{{ form.date.name }}">{{ form.date.label }}</label> {{ form.date }}</p> <p>{{ form.date.errors }}<label for="{{ form.date.name }}">{{ form.date.label }}</label> {{ form.date }}</p>
<p>{{ form.mode.errors }}<label for="{{ form.mode.name }}">{{ form.mode.label }}</label> {{ form.mode }}</p> <p>{{ form.mode.errors }}<label for="{{ form.mode.name }}">{{ form.mode.label }}</label> {{ form.mode }}</p>
<p>{{ form.cheque_number.errors }}<label for="{{ form.cheque_number.name }}">{{ form.cheque_number.label }}</label> {{ <p>{{ form.cheque_number.errors }}<label for="{{ form.cheque_number.name }}">{{ form.cheque_number.label }}</label> {{
@ -48,6 +44,54 @@
{{ super() }} {{ super() }}
<script> <script>
$( function() { $( function() {
var target_type = $('#id_target_type');
var user = $('#id_user_wrapper');
var club = $('#id_club_wrapper');
var club_account = $('#id_club_account_wrapper');
var company = $('#id_company_wrapper');
var other = $('#id_target_label');
function update_targets () {
if (target_type.val() == "USER") {
console.log(user);
user.show();
club.hide();
club_account.hide();
company.hide();
other.hide();
} else if (target_type.val() == "ACCOUNT") {
club_account.show();
user.hide();
club.hide();
company.hide();
other.hide();
} else if (target_type.val() == "CLUB") {
club.show();
user.hide();
club_account.hide();
company.hide();
other.hide();
} else if (target_type.val() == "COMPANY") {
company.show();
user.hide();
club_account.hide();
club.hide();
other.hide();
} else if (target_type.val() == "OTHER") {
other.show();
user.hide();
club.hide();
club_account.hide();
company.hide();
} else {
company.hide();
user.hide();
club_account.hide();
club.hide();
other.hide();
}
}
update_targets();
target_type.change(update_targets);
} ); } );
</script> </script>
{% endblock %} {% endblock %}

View File

@ -202,7 +202,6 @@ class OperationForm(forms.ModelForm):
'target_id': HiddenInput, 'target_id': HiddenInput,
'date': SelectDate, 'date': SelectDate,
'invoice': SelectFile, 'invoice': SelectFile,
'target_type': forms.RadioSelect,
} }
user = AutoCompleteSelectField('users', help_text=None, required=False) user = AutoCompleteSelectField('users', help_text=None, required=False)
club_account = AutoCompleteSelectField('club_accounts', help_text=None, required=False) club_account = AutoCompleteSelectField('club_accounts', help_text=None, required=False)
@ -272,11 +271,18 @@ class OperationCreateView(CanCreateMixin, CreateView):
def get_initial(self): def get_initial(self):
ret = super(OperationCreateView, self).get_initial() ret = super(OperationCreateView, self).get_initial()
if 'parent' in self.request.GET.keys(): if 'parent' in self.request.GET.keys():
obj = GeneralJournal.objects.filter(id=int(self.request.GET['parent'])).first() self.journal = GeneralJournal.objects.filter(id=int(self.request.GET['parent'])).first()
if obj is not None: if self.journal is not None:
ret['journal'] = obj.id ret['journal'] = self.journal.id
return ret return ret
def get_context_data(self, **kwargs):
""" Add journal to the context """
kwargs = super(OperationCreateView, self).get_context_data(**kwargs)
if self.journal:
kwargs['object'] = self.journal
return kwargs
class OperationEditView(CanEditMixin, UpdateView): class OperationEditView(CanEditMixin, UpdateView):
""" """
An edit view, working as detail for the moment An edit view, working as detail for the moment
@ -286,6 +292,12 @@ class OperationEditView(CanEditMixin, UpdateView):
form_class = OperationForm form_class = OperationForm
template_name = 'accounting/operation_edit.jinja' template_name = 'accounting/operation_edit.jinja'
def get_context_data(self, **kwargs):
""" Add journal to the context """
kwargs = super(OperationCreateView, self).get_context_data(**kwargs)
kwargs['object'] = self.object.journal
return kwargs
# Company views # Company views
class CompanyCreateView(CanCreateMixin, CreateView): class CompanyCreateView(CanCreateMixin, CreateView):

View File

@ -1,3 +1,4 @@
from django.core.exceptions import PermissionDenied
from ajax_select import register, LookupChannel from ajax_select import register, LookupChannel
from core.views.site import search_user from core.views.site import search_user
@ -6,8 +7,13 @@ from club.models import Club
from counter.models import Product, Counter from counter.models import Product, Counter
from accounting.models import ClubAccount, Company from accounting.models import ClubAccount, Company
class RightManagedLookupChannel(LookupChannel):
def check_auth(self, request):
if not request.user.subscribed:
raise PermissionDenied
@register('users') @register('users')
class UsersLookup(LookupChannel): class UsersLookup(RightManagedLookupChannel):
model = User model = User
def get_query(self, q, request): def get_query(self, q, request):
@ -20,7 +26,7 @@ class UsersLookup(LookupChannel):
return item.get_display_name() return item.get_display_name()
@register('groups') @register('groups')
class GroupsLookup(LookupChannel): class GroupsLookup(RightManagedLookupChannel):
model = Group model = Group
def get_query(self, q, request): def get_query(self, q, request):
@ -33,7 +39,7 @@ class GroupsLookup(LookupChannel):
return item.name return item.name
@register('clubs') @register('clubs')
class ClubLookup(LookupChannel): class ClubLookup(RightManagedLookupChannel):
model = Club model = Club
def get_query(self, q, request): def get_query(self, q, request):
@ -46,7 +52,7 @@ class ClubLookup(LookupChannel):
return item.name return item.name
@register('counters') @register('counters')
class CountersLookup(LookupChannel): class CountersLookup(RightManagedLookupChannel):
model = Counter model = Counter
def get_query(self, q, request): def get_query(self, q, request):
@ -56,7 +62,7 @@ class CountersLookup(LookupChannel):
return item.name return item.name
@register('products') @register('products')
class ProductsLookup(LookupChannel): class ProductsLookup(RightManagedLookupChannel):
model = Product model = Product
def get_query(self, q, request): def get_query(self, q, request):
@ -66,7 +72,7 @@ class ProductsLookup(LookupChannel):
return item.name return item.name
@register('club_accounts') @register('club_accounts')
class ClubAccountLookup(LookupChannel): class ClubAccountLookup(RightManagedLookupChannel):
model = ClubAccount model = ClubAccount
def get_query(self, q, request): def get_query(self, q, request):
@ -76,7 +82,7 @@ class ClubAccountLookup(LookupChannel):
return item.name return item.name
@register('companies') @register('companies')
class CompaniesLookup(LookupChannel): class CompaniesLookup(RightManagedLookupChannel):
model = Company model = Company
def get_query(self, q, request): def get_query(self, q, request):

View File

@ -377,11 +377,18 @@ class User(AbstractBaseUser):
escape(self.get_display_name()), escape(self.get_display_name()),
) )
@property
def subscribed(self):
return self.is_in_group(settings.SITH_MAIN_MEMBERS_GROUP)
class AnonymousUser(AuthAnonymousUser): class AnonymousUser(AuthAnonymousUser):
def __init__(self, request): def __init__(self, request):
super(AnonymousUser, self).__init__() super(AnonymousUser, self).__init__()
@property
def subscribed(self):
return False
def is_in_group(self, group_name): def is_in_group(self, group_name):
""" """
The anonymous user is only the public group The anonymous user is only the public group

View File

@ -38,6 +38,7 @@
<div id="language_chooser"> <div id="language_chooser">
{% for language in LANGUAGES %} {% for language in LANGUAGES %}
<form action="{{ url('set_language') }}" method="post">{% csrf_token %} <form action="{{ url('set_language') }}" method="post">{% csrf_token %}
<input name="next" value="{{ request.path }}" type="hidden" />
<input name="language" value="{{ language[0] }}" type="hidden" /> <input name="language" value="{{ language[0] }}" type="hidden" />
<input type="submit" value="{{ language[1]}}" /> <input type="submit" value="{{ language[1]}}" />
</form> </form>

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-08-24 16:57+0200\n" "POT-Creation-Date: 2016-08-24 21:38+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"
@ -16,8 +16,8 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: accounting/models.py:34 accounting/models.py:46 accounting/models.py:69 #: accounting/models.py:34 accounting/models.py:46 accounting/models.py:73
#: accounting/models.py:115 club/models.py:18 counter/models.py:52 #: accounting/models.py:123 club/models.py:18 counter/models.py:52
#: counter/models.py:77 counter/models.py:111 launderette/models.py:15 #: counter/models.py:77 counter/models.py:111 launderette/models.py:15
#: launderette/models.py:60 launderette/models.py:85 #: launderette/models.py:60 launderette/models.py:85
msgid "name" msgid "name"
@ -35,127 +35,139 @@ msgstr "IBAN"
msgid "account number" msgid "account number"
msgstr "numero de compte" msgstr "numero de compte"
#: accounting/models.py:49 accounting/models.py:70 club/models.py:146 #: accounting/models.py:49 accounting/models.py:74 club/models.py:146
#: counter/models.py:86 #: counter/models.py:86
msgid "club" msgid "club"
msgstr "club" msgstr "club"
#: accounting/models.py:71 #: accounting/models.py:52
msgid "Bank account"
msgstr "Compte en banque"
#: accounting/models.py:75
msgid "bank account" msgid "bank account"
msgstr "compte en banque" msgstr "compte en banque"
#: accounting/models.py:106 #: accounting/models.py:78
msgid "Club account"
msgstr "Compte club"
#: accounting/models.py:114
#, python-format #, python-format
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:113 club/models.py:147 counter/models.py:297 #: accounting/models.py:121 club/models.py:147 counter/models.py:297
#: 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:114 club/models.py:148 counter/models.py:298 #: accounting/models.py:122 club/models.py:148 counter/models.py:298
msgid "end date" msgid "end date"
msgstr "date de fin" msgstr "date de fin"
#: accounting/models.py:116 #: accounting/models.py:124
msgid "is closed" msgid "is closed"
msgstr "est fermé" msgstr "est fermé"
#: accounting/models.py:117 #: accounting/models.py:125
msgid "club account" msgid "club account"
msgstr "compte club" msgstr "compte club"
#: accounting/models.py:118 accounting/models.py:157 counter/models.py:25 #: accounting/models.py:126 accounting/models.py:169 counter/models.py:25
#: counter/models.py:212 #: counter/models.py:212
msgid "amount" msgid "amount"
msgstr "montant" msgstr "montant"
#: accounting/models.py:119 #: accounting/models.py:127
msgid "effective_amount" msgid "effective_amount"
msgstr "montant effectif" msgstr "montant effectif"
#: accounting/models.py:155 #: accounting/models.py:130
msgid "General journal"
msgstr "Classeur"
#: accounting/models.py:167
msgid "number" msgid "number"
msgstr "numéro" msgstr "numéro"
#: accounting/models.py:156 #: accounting/models.py:168
msgid "journal" msgid "journal"
msgstr "classeur" msgstr "classeur"
#: accounting/models.py:158 core/models.py:430 core/models.py:706 #: accounting/models.py:170 core/models.py:437 core/models.py:713
#: counter/models.py:215 counter/models.py:261 eboutic/models.py:14 #: counter/models.py:215 counter/models.py:261 eboutic/models.py:14
#: eboutic/models.py:47 #: eboutic/models.py:47
msgid "date" msgid "date"
msgstr "date" msgstr "date"
#: accounting/models.py:159 #: accounting/models.py:171
msgid "comment" msgid "comment"
msgstr "commentaire" msgstr "commentaire"
#: accounting/models.py:160 counter/models.py:216 counter/models.py:262 #: accounting/models.py:172 counter/models.py:216 counter/models.py:262
#: subscription/models.py:34 #: subscription/models.py:34
msgid "payment method" msgid "payment method"
msgstr "méthode de paiement" msgstr "méthode de paiement"
#: accounting/models.py:161 #: accounting/models.py:173
msgid "cheque number" msgid "cheque number"
msgstr "numéro de chèque" msgstr "numéro de chèque"
#: accounting/models.py:162 eboutic/models.py:115 #: accounting/models.py:174 eboutic/models.py:115
msgid "invoice" msgid "invoice"
msgstr "facture" msgstr "facture"
#: accounting/models.py:163 #: accounting/models.py:175
msgid "is done" msgid "is done"
msgstr "est fait" msgstr "est fait"
#: accounting/models.py:165 #: accounting/models.py:177
msgid "simple type" msgid "simple type"
msgstr "type simplifié" msgstr "type simplifié"
#: accounting/models.py:167 accounting/models.py:265 #: accounting/models.py:179 accounting/models.py:278
msgid "accounting type" msgid "accounting type"
msgstr "type comptable" msgstr "type comptable"
#: accounting/models.py:168 #: accounting/models.py:180
msgid "target type" msgid "target type"
msgstr "type de cible" msgstr "type de cible"
#: accounting/models.py:169 #: accounting/models.py:181
#: launderette/templates/launderette/launderette_admin.jinja:44 #: launderette/templates/launderette/launderette_admin.jinja:44
msgid "User" msgid "User"
msgstr "Utilisateur" msgstr "Utilisateur"
#: accounting/models.py:169 club/templates/club/club_detail.jinja:4 #: accounting/models.py:181 club/templates/club/club_detail.jinja:4
msgid "Club" msgid "Club"
msgstr "Club" msgstr "Club"
#: accounting/models.py:169 core/templates/core/user_base.jinja:18 #: accounting/models.py:181 core/templates/core/user_base.jinja:18
msgid "Account" msgid "Account"
msgstr "Compte" msgstr "Compte"
#: accounting/models.py:169 #: accounting/models.py:181
msgid "Company" msgid "Company"
msgstr "Entreprise" msgstr "Entreprise"
#: accounting/models.py:169 sith/settings.py:284 sith/settings_sample.py:267 #: accounting/models.py:181 sith/settings.py:289 sith/settings_sample.py:272
msgid "Other" msgid "Other"
msgstr "Autre" msgstr "Autre"
#: accounting/models.py:170 #: accounting/models.py:182
msgid "target id" msgid "target id"
msgstr "id de la cible" msgstr "id de la cible"
#: accounting/models.py:171 #: accounting/models.py:183
msgid "target label" msgid "target label"
msgstr "nom de la cible" msgstr "nom de la cible"
#: accounting/models.py:172 #: accounting/models.py:184
msgid "linked operation" msgid "linked operation"
msgstr "opération liée" msgstr "opération liée"
#: accounting/models.py:188 #: accounting/models.py:200
#, python-format #, python-format
msgid "" msgid ""
"The date can not be before the start date of the journal, which is\n" "The date can not be before the start date of the journal, which is\n"
@ -164,16 +176,16 @@ msgstr ""
"La date ne peut pas être avant la date de début du journal, qui est\n" "La date ne peut pas être avant la date de début du journal, qui est\n"
"%(start_date)s." "%(start_date)s."
#: accounting/models.py:191 #: accounting/models.py:203
msgid "Target does not exists" msgid "Target does not exists"
msgstr "La cible n'existe pas." msgstr "La cible n'existe pas."
#: accounting/models.py:193 #: accounting/models.py:205
msgid "Please add a target label if you set no existing target" msgid "Please add a target label if you set no existing target"
msgstr "" msgstr ""
"Merci d'ajouter un nom de cible si vous ne spécifiez pas de cible existante" "Merci d'ajouter un nom de cible si vous ne spécifiez pas de cible existante"
#: accounting/models.py:195 #: accounting/models.py:207
msgid "" msgid ""
"You need to provide ether a simplified accounting type or a standard " "You need to provide ether a simplified accounting type or a standard "
"accounting type" "accounting type"
@ -181,27 +193,39 @@ msgstr ""
"Vous devez fournir soit un type comptable simplifié ou un type comptable " "Vous devez fournir soit un type comptable simplifié ou un type comptable "
"standard" "standard"
#: accounting/models.py:256 counter/models.py:81 #: accounting/models.py:268 counter/models.py:81
msgid "code" msgid "code"
msgstr "code" msgstr "code"
#: accounting/models.py:258 #: accounting/models.py:270
msgid "An accounting type code contains only numbers" msgid "An accounting type code contains only numbers"
msgstr "Un code comptable ne contient que des numéros" msgstr "Un code comptable ne contient que des numéros"
#: accounting/models.py:261 accounting/models.py:285 counter/models.py:253 #: accounting/models.py:273 accounting/models.py:299 counter/models.py:253
msgid "label" msgid "label"
msgstr "intitulé" msgstr "intitulé"
#: accounting/models.py:262 #: accounting/models.py:274
msgid "movement type" msgid "movement type"
msgstr "type de mouvement" msgstr "type de mouvement"
#: accounting/models.py:287 #: accounting/models.py:274
msgid "Credit"
msgstr "Crédit"
#: accounting/models.py:274
msgid "Debit"
msgstr "Débit"
#: accounting/models.py:275
msgid "Neutral"
msgstr "Neutre"
#: accounting/models.py:301
msgid "simplified accounting types" msgid "simplified accounting types"
msgstr "type simplifié" msgstr "type simplifié"
#: accounting/models.py:290 #: accounting/models.py:304
msgid "simplified type" msgid "simplified type"
msgstr "type simplifié" msgstr "type simplifié"
@ -215,6 +239,7 @@ msgstr "Liste des types comptable"
#: accounting/templates/accounting/bank_account_list.jinja:9 #: accounting/templates/accounting/bank_account_list.jinja:9
#: accounting/templates/accounting/club_account_details.jinja:9 #: accounting/templates/accounting/club_account_details.jinja:9
#: accounting/templates/accounting/journal_details.jinja:9 #: accounting/templates/accounting/journal_details.jinja:9
#: accounting/templates/accounting/operation_edit.jinja:9
#: accounting/templates/accounting/simplifiedaccountingtype_list.jinja:9 #: accounting/templates/accounting/simplifiedaccountingtype_list.jinja:9
#: core/templates/core/user_tools.jinja:39 #: core/templates/core/user_tools.jinja:39
msgid "Accounting" msgid "Accounting"
@ -259,7 +284,7 @@ msgstr "Nouveau compte club"
#: accounting/templates/accounting/bank_account_details.jinja:23 #: accounting/templates/accounting/bank_account_details.jinja:23
#: accounting/templates/accounting/bank_account_list.jinja:21 #: accounting/templates/accounting/bank_account_list.jinja:21
#: accounting/templates/accounting/club_account_details.jinja:50 #: accounting/templates/accounting/club_account_details.jinja:50
#: accounting/templates/accounting/journal_details.jinja:68 #: accounting/templates/accounting/journal_details.jinja:66
#: club/templates/club/club_detail.jinja:7 core/templates/core/file.jinja:38 #: club/templates/club/club_detail.jinja:7 core/templates/core/file.jinja:38
#: core/templates/core/page.jinja:31 core/templates/core/user_base.jinja:10 #: core/templates/core/page.jinja:31 core/templates/core/user_base.jinja:10
#: core/templates/core/user_tools.jinja:33 #: core/templates/core/user_tools.jinja:33
@ -326,7 +351,7 @@ msgid "End"
msgstr "Fin" msgstr "Fin"
#: accounting/templates/accounting/club_account_details.jinja:26 #: accounting/templates/accounting/club_account_details.jinja:26
#: accounting/templates/accounting/journal_details.jinja:29 #: accounting/templates/accounting/journal_details.jinja:28
#: core/templates/core/user_account.jinja:19 #: core/templates/core/user_account.jinja:19
#: core/templates/core/user_account.jinja:78 #: core/templates/core/user_account.jinja:78
msgid "Amount" msgid "Amount"
@ -341,17 +366,17 @@ msgid "Closed"
msgstr "Fermé" msgstr "Fermé"
#: accounting/templates/accounting/club_account_details.jinja:29 #: accounting/templates/accounting/club_account_details.jinja:29
#: accounting/templates/accounting/journal_details.jinja:37 #: accounting/templates/accounting/journal_details.jinja:36
msgid "Actions" msgid "Actions"
msgstr "Actions" msgstr "Actions"
#: accounting/templates/accounting/club_account_details.jinja:45 #: accounting/templates/accounting/club_account_details.jinja:45
#: accounting/templates/accounting/journal_details.jinja:56 #: accounting/templates/accounting/journal_details.jinja:54
msgid "Yes" msgid "Yes"
msgstr "Oui" msgstr "Oui"
#: accounting/templates/accounting/club_account_details.jinja:47 #: accounting/templates/accounting/club_account_details.jinja:47
#: accounting/templates/accounting/journal_details.jinja:58 #: accounting/templates/accounting/journal_details.jinja:56
msgid "No" msgid "No"
msgstr "Non" msgstr "Non"
@ -394,45 +419,41 @@ msgstr "No"
msgid "Date" msgid "Date"
msgstr "Date" msgstr "Date"
#: accounting/templates/accounting/journal_details.jinja:28 #: accounting/templates/accounting/journal_details.jinja:29
#: core/templates/core/user_account.jinja:47
msgid "Label"
msgstr "Intitulé"
#: accounting/templates/accounting/journal_details.jinja:30
msgid "Payment mode" msgid "Payment mode"
msgstr "Méthode de paiement" msgstr "Méthode de paiement"
#: accounting/templates/accounting/journal_details.jinja:31 #: accounting/templates/accounting/journal_details.jinja:30
msgid "Target" msgid "Target"
msgstr "Cible" msgstr "Cible"
#: accounting/templates/accounting/journal_details.jinja:32 #: accounting/templates/accounting/journal_details.jinja:31
msgid "Code" msgid "Code"
msgstr "Code" msgstr "Code"
#: accounting/templates/accounting/journal_details.jinja:33 #: accounting/templates/accounting/journal_details.jinja:32
msgid "Nature" msgid "Nature"
msgstr "Nature" msgstr "Nature"
#: accounting/templates/accounting/journal_details.jinja:34 #: accounting/templates/accounting/journal_details.jinja:33
msgid "Done" msgid "Done"
msgstr "Effectué" msgstr "Effectué"
#: accounting/templates/accounting/journal_details.jinja:35 #: accounting/templates/accounting/journal_details.jinja:34
msgid "Comment" msgid "Comment"
msgstr "Commentaire" msgstr "Commentaire"
#: accounting/templates/accounting/journal_details.jinja:36 #: accounting/templates/accounting/journal_details.jinja:35
msgid "File" msgid "File"
msgstr "Fichier" msgstr "Fichier"
#: accounting/templates/accounting/operation_edit.jinja:4 #: accounting/templates/accounting/operation_edit.jinja:4
#: accounting/templates/accounting/operation_edit.jinja:8 #: accounting/templates/accounting/operation_edit.jinja:13
#: accounting/templates/accounting/operation_edit.jinja:16
msgid "Edit operation" msgid "Edit operation"
msgstr "Éditer l'opération" msgstr "Éditer l'opération"
#: accounting/templates/accounting/operation_edit.jinja:43 #: accounting/templates/accounting/operation_edit.jinja:39
#: club/templates/club/club_edit.jinja:8 #: club/templates/club/club_edit.jinja:8
#: club/templates/club/club_edit_prop.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
@ -866,109 +887,109 @@ msgstr "Un utilisateur de ce nom d'utilisateur existe déjà"
msgid "Profile" msgid "Profile"
msgstr "Profil" msgstr "Profil"
#: core/models.py:407 #: core/models.py:414
msgid "Visitor" msgid "Visitor"
msgstr "Visiteur" msgstr "Visiteur"
#: core/models.py:412 #: core/models.py:419
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:414 #: core/models.py:421
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:421 #: core/models.py:428
msgid "file name" msgid "file name"
msgstr "nom du fichier" msgstr "nom du fichier"
#: core/models.py:422 core/models.py:555 #: core/models.py:429 core/models.py:562
msgid "parent" msgid "parent"
msgstr "parent" msgstr "parent"
#: core/models.py:423 core/models.py:433 #: core/models.py:430 core/models.py:440
msgid "file" msgid "file"
msgstr "fichier" msgstr "fichier"
#: core/models.py:424 #: core/models.py:431
msgid "owner" msgid "owner"
msgstr "propriétaire" msgstr "propriétaire"
#: core/models.py:425 core/models.py:561 #: core/models.py:432 core/models.py:568
msgid "edit group" msgid "edit group"
msgstr "groupe d'édition" msgstr "groupe d'édition"
#: core/models.py:426 core/models.py:562 #: core/models.py:433 core/models.py:569
msgid "view group" msgid "view group"
msgstr "groupe de vue" msgstr "groupe de vue"
#: core/models.py:427 #: core/models.py:434
msgid "is folder" msgid "is folder"
msgstr "est un dossier" msgstr "est un dossier"
#: core/models.py:428 #: core/models.py:435
msgid "mime type" msgid "mime type"
msgstr "type mime" msgstr "type mime"
#: core/models.py:429 #: core/models.py:436
msgid "size" msgid "size"
msgstr "taille" msgstr "taille"
#: core/models.py:459 #: core/models.py:466
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:462 core/models.py:467 #: core/models.py:469 core/models.py:474
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:471 #: core/models.py:478
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:475 #: core/models.py:482
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:485 #: core/models.py:492
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:510 #: core/models.py:517
msgid "Folder: " msgid "Folder: "
msgstr "Dossier : " msgstr "Dossier : "
#: core/models.py:512 #: core/models.py:519
msgid "File: " msgid "File: "
msgstr "Fichier : " msgstr "Fichier : "
#: core/models.py:554 core/models.py:558 #: core/models.py:561 core/models.py:565
msgid "page name" msgid "page name"
msgstr "nom de la page" msgstr "nom de la page"
#: core/models.py:559 #: core/models.py:566
msgid "owner group" msgid "owner group"
msgstr "groupe propriétaire" msgstr "groupe propriétaire"
#: core/models.py:590 #: core/models.py:597
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:596 #: core/models.py:603
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:703 #: core/models.py:710
msgid "revision" msgid "revision"
msgstr "révision" msgstr "révision"
#: core/models.py:704 #: core/models.py:711
msgid "page title" msgid "page title"
msgstr "titre de la page" msgstr "titre de la page"
#: core/models.py:705 #: core/models.py:712
msgid "page content" msgid "page content"
msgstr "contenu de la page" msgstr "contenu de la page"
@ -1009,27 +1030,27 @@ msgstr "Déconnexion"
msgid "Search" msgid "Search"
msgstr "Recherche" msgstr "Recherche"
#: core/templates/core/base.jinja:40 core/templates/core/search.jinja:10 #: core/templates/core/base.jinja:51 core/templates/core/search.jinja:10
msgid "Users" msgid "Users"
msgstr "Utilisateurs" msgstr "Utilisateurs"
#: core/templates/core/base.jinja:41 #: core/templates/core/base.jinja:52
msgid "Wiki" msgid "Wiki"
msgstr "Wiki" msgstr "Wiki"
#: core/templates/core/base.jinja:42 #: core/templates/core/base.jinja:53
msgid "Pages" msgid "Pages"
msgstr "Pages" msgstr "Pages"
#: core/templates/core/base.jinja:43 core/templates/core/search.jinja:18 #: core/templates/core/base.jinja:54 core/templates/core/search.jinja:18
msgid "Clubs" msgid "Clubs"
msgstr "Clubs" msgstr "Clubs"
#: core/templates/core/base.jinja:44 #: core/templates/core/base.jinja:55
msgid "Services" msgid "Services"
msgstr "Services" msgstr "Services"
#: core/templates/core/base.jinja:60 #: core/templates/core/base.jinja:71
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"
@ -1370,6 +1391,10 @@ msgstr "Méthode de paiement"
msgid "Account buyings" msgid "Account buyings"
msgstr "Achat sur compte utilisateur" msgstr "Achat sur compte utilisateur"
#: core/templates/core/user_account.jinja:47
msgid "Label"
msgstr "Intitulé"
#: core/templates/core/user_account.jinja:48 #: core/templates/core/user_account.jinja:48
msgid "Quantity" msgid "Quantity"
msgstr "Quantité" msgstr "Quantité"
@ -1652,7 +1677,7 @@ 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:283 sith/settings_sample.py:266 #: sith/settings.py:288 sith/settings_sample.py:271
msgid "Eboutic" msgid "Eboutic"
msgstr "Eboutic" msgstr "Eboutic"
@ -1688,9 +1713,9 @@ msgstr "quantité"
msgid "Sith account" msgid "Sith account"
msgstr "Compte utilisateur" msgstr "Compte utilisateur"
#: counter/models.py:263 sith/settings.py:276 sith/settings.py:281 #: counter/models.py:263 sith/settings.py:281 sith/settings.py:286
#: sith/settings.py:302 sith/settings_sample.py:259 #: sith/settings.py:307 sith/settings_sample.py:264
#: sith/settings_sample.py:264 sith/settings_sample.py:285 #: sith/settings_sample.py:269 sith/settings_sample.py:290
msgid "Credit card" msgid "Credit card"
msgstr "Carte banquaire" msgstr "Carte banquaire"
@ -2012,12 +2037,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:412 sith/settings_sample.py:395 #: sith/settings.py:417 sith/settings_sample.py:400
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:412 sith/settings_sample.py:395 #: sith/settings.py:417 sith/settings_sample.py:400
msgid "Drying" msgid "Drying"
msgstr "Séchage" msgstr "Séchage"
@ -2072,108 +2097,116 @@ 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:273 sith/settings.py:280 sith/settings.py:300 #: sith/settings.py:172 sith/settings_sample.py:160
#: sith/settings_sample.py:256 sith/settings_sample.py:263 msgid "English"
#: sith/settings_sample.py:283 msgstr "Anglais"
#: sith/settings.py:173 sith/settings_sample.py:161
msgid "French"
msgstr "Français"
#: sith/settings.py:278 sith/settings.py:285 sith/settings.py:305
#: sith/settings_sample.py:261 sith/settings_sample.py:268
#: sith/settings_sample.py:288
msgid "Check" msgid "Check"
msgstr "Chèque" msgstr "Chèque"
#: sith/settings.py:274 sith/settings.py:282 sith/settings.py:301 #: sith/settings.py:279 sith/settings.py:287 sith/settings.py:306
#: sith/settings_sample.py:257 sith/settings_sample.py:265 #: sith/settings_sample.py:262 sith/settings_sample.py:270
#: sith/settings_sample.py:284 #: sith/settings_sample.py:289
msgid "Cash" msgid "Cash"
msgstr "Espèces" msgstr "Espèces"
#: sith/settings.py:275 sith/settings_sample.py:258 #: sith/settings.py:280 sith/settings_sample.py:263
msgid "Transfert" msgid "Transfert"
msgstr "Virement" msgstr "Virement"
#: sith/settings.py:288 sith/settings_sample.py:271 #: sith/settings.py:293 sith/settings_sample.py:276
msgid "Belfort" msgid "Belfort"
msgstr "Belfort" msgstr "Belfort"
#: sith/settings.py:289 sith/settings_sample.py:272 #: sith/settings.py:294 sith/settings_sample.py:277
msgid "Sevenans" msgid "Sevenans"
msgstr "Sevenans" msgstr "Sevenans"
#: sith/settings.py:290 sith/settings_sample.py:273 #: sith/settings.py:295 sith/settings_sample.py:278
msgid "Montbéliard" msgid "Montbéliard"
msgstr "Montbéliard" msgstr "Montbéliard"
#: sith/settings.py:325 sith/settings_sample.py:308 #: sith/settings.py:330 sith/settings_sample.py:313
msgid "One semester" msgid "One semester"
msgstr "Un semestre" msgstr "Un semestre"
#: sith/settings.py:330 sith/settings_sample.py:313 #: sith/settings.py:335 sith/settings_sample.py:318
msgid "Two semesters" msgid "Two semesters"
msgstr "Deux semestres" msgstr "Deux semestres"
#: sith/settings.py:335 sith/settings_sample.py:318 #: sith/settings.py:340 sith/settings_sample.py:323
msgid "Common core cursus" msgid "Common core cursus"
msgstr "Cursus tronc commun" msgstr "Cursus tronc commun"
#: sith/settings.py:340 sith/settings.py:345 sith/settings_sample.py:323 #: sith/settings.py:345 sith/settings.py:350 sith/settings_sample.py:328
#: sith/settings_sample.py:328 #: sith/settings_sample.py:333
msgid "Branch cursus" msgid "Branch cursus"
msgstr "Cursus branche" msgstr "Cursus branche"
#: sith/settings.py:350 sith/settings_sample.py:333 #: sith/settings.py:355 sith/settings_sample.py:338
msgid "Honorary member" msgid "Honorary member"
msgstr "Membre honoraire" msgstr "Membre honoraire"
#: sith/settings.py:355 sith/settings_sample.py:338 #: sith/settings.py:360 sith/settings_sample.py:343
msgid "Assidu member" msgid "Assidu member"
msgstr "Membre d'Assidu" msgstr "Membre d'Assidu"
#: sith/settings.py:360 sith/settings_sample.py:343 #: sith/settings.py:365 sith/settings_sample.py:348
msgid "Amicale/DOCEO member" msgid "Amicale/DOCEO member"
msgstr "Membre de l'Amicale/DOCEO" msgstr "Membre de l'Amicale/DOCEO"
#: sith/settings.py:365 sith/settings_sample.py:348 #: sith/settings.py:370 sith/settings_sample.py:353
msgid "UT network member" msgid "UT network member"
msgstr "Cotisant du réseau UT" msgstr "Cotisant du réseau UT"
#: sith/settings.py:370 sith/settings_sample.py:353 #: sith/settings.py:375 sith/settings_sample.py:358
msgid "CROUS member" msgid "CROUS member"
msgstr "Membres du CROUS" msgstr "Membres du CROUS"
#: sith/settings.py:375 sith/settings_sample.py:358 #: sith/settings.py:380 sith/settings_sample.py:363
msgid "Sbarro/ESTA member" msgid "Sbarro/ESTA member"
msgstr "Membre de Sbarro ou de l'ESTA" msgstr "Membre de Sbarro ou de l'ESTA"
#: sith/settings.py:383 sith/settings_sample.py:366 #: sith/settings.py:388 sith/settings_sample.py:371
msgid "President" msgid "President"
msgstr "Président" msgstr "Président"
#: sith/settings.py:384 sith/settings_sample.py:367 #: sith/settings.py:389 sith/settings_sample.py:372
msgid "Vice-President" msgid "Vice-President"
msgstr "Vice-Président" msgstr "Vice-Président"
#: sith/settings.py:385 sith/settings_sample.py:368 #: sith/settings.py:390 sith/settings_sample.py:373
msgid "Treasurer" msgid "Treasurer"
msgstr "Trésorier" msgstr "Trésorier"
#: sith/settings.py:386 sith/settings_sample.py:369 #: sith/settings.py:391 sith/settings_sample.py:374
msgid "Communication supervisor" msgid "Communication supervisor"
msgstr "Responsable com" msgstr "Responsable com"
#: sith/settings.py:387 sith/settings_sample.py:370 #: sith/settings.py:392 sith/settings_sample.py:375
msgid "Secretary" msgid "Secretary"
msgstr "Secrétaire" msgstr "Secrétaire"
#: sith/settings.py:388 sith/settings_sample.py:371 #: sith/settings.py:393 sith/settings_sample.py:376
msgid "IT supervisor" msgid "IT supervisor"
msgstr "Responsable info" msgstr "Responsable info"
#: sith/settings.py:389 sith/settings_sample.py:372 #: sith/settings.py:394 sith/settings_sample.py:377
msgid "Board member" msgid "Board member"
msgstr "Membre du bureau" msgstr "Membre du bureau"
#: sith/settings.py:390 sith/settings_sample.py:373 #: sith/settings.py:395 sith/settings_sample.py:378
msgid "Active member" msgid "Active member"
msgstr "Membre actif" msgstr "Membre actif"
#: sith/settings.py:391 sith/settings_sample.py:374 #: sith/settings.py:396 sith/settings_sample.py:379
msgid "Curious" msgid "Curious"
msgstr "Curieux" msgstr "Curieux"
@ -2218,5 +2251,3 @@ 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 "remark"
#~ msgstr "remarque"

View File

@ -730,10 +730,18 @@ def migrate_operations():
0: "CASH", 0: "CASH",
None: "CASH", None: "CASH",
} }
MOVEMENT_TYPE = {
-1: "DEBIT",
0: "NEUTRAL",
1: "CREDIT",
None: "NEUTRAL",
}
cur = db.cursor(MySQLdb.cursors.SSDictCursor) cur = db.cursor(MySQLdb.cursors.SSDictCursor)
cur.execute(""" cur.execute("""
SELECT * SELECT *
FROM cpta_operation FROM cpta_operation op
LEFT JOIN cpta_op_clb clb
ON op.id_opclb = clb.id_opclb
""") """)
Operation.objects.all().delete() Operation.objects.all().delete()
print("Operation deleted") print("Operation deleted")
@ -748,7 +756,7 @@ def migrate_operations():
if not accounting_type and simple_type: if not accounting_type and simple_type:
accounting_type = simple_type.accounting_type accounting_type = simple_type.accounting_type
if not accounting_type: if not accounting_type:
accounting_type = AccountingType.objects.filter(movement_type="NEUTRAL").first() accounting_type = AccountingType.objects.filter(movement_type=MOVEMENT_TYPE[r['type_mouvement']]).first()
journal = GeneralJournal.objects.filter(id=r['id_classeur']).first() journal = GeneralJournal.objects.filter(id=r['id_classeur']).first()
def get_target_type(): def get_target_type():
if r['id_utilisateur']: if r['id_utilisateur']:
@ -808,35 +816,39 @@ def make_operation_links():
def main(): def main():
start = datetime.datetime.now() start = datetime.datetime.now()
print("Start at %s" % start) print("Start at %s" % start)
# migrate_users() # Core
# migrate_profile_pict() migrate_users()
# migrate_clubs() migrate_profile_pict()
# migrate_club_memberships() # Club
# migrate_subscriptions() migrate_clubs()
# update_customer_account() migrate_club_memberships()
# migrate_counters() # Subscriptions
# migrate_permanencies() migrate_subscriptions()
# migrate_typeproducts() # Counters
# migrate_products() update_customer_account()
# migrate_product_pict() migrate_counters()
# migrate_products_to_counter() migrate_permanencies()
# reset_customer_amount() migrate_typeproducts()
# migrate_invoices() migrate_products()
# migrate_refillings() migrate_product_pict()
# migrate_sellings() migrate_products_to_counter()
# reset_index('core', 'club', 'subscription', 'accounting', 'eboutic', 'launderette', 'counter') reset_customer_amount()
# migrate_accounting_types() migrate_invoices()
# migrate_simpleaccounting_types() reset_index('counter')
# migrate_bank_accounts() migrate_refillings()
# migrate_club_accounts() migrate_sellings()
# migrate_journals() # Accounting
# migrate_operations() migrate_accounting_types()
migrate_simpleaccounting_types()
migrate_bank_accounts()
migrate_club_accounts()
migrate_journals()
migrate_operations()
make_operation_links() make_operation_links()
reset_index('core', 'club', 'subscription', 'accounting', 'eboutic', 'launderette', 'counter')
end = datetime.datetime.now() end = datetime.datetime.now()
print("End at %s" % end) print("End at %s" % end)
print("Running time: %s" % (end-start)) print("Running time: %s" % (end-start))
if __name__ == "__main__": if __name__ == "__main__":
main() main()