1
0
mirror of https://gitlab.crans.org/bde/nk20 synced 2024-12-25 00:42:22 +00:00

Replace ... by …

Signed-off-by: Emmy D'ANELLO <ynerant@crans.org>
This commit is contained in:
Emmy D'ANELLO 2022-08-29 11:17:17 +02:00
parent a69573ccdb
commit 3306aed6dc
Signed by: ynerant
GPG Key ID: 3A75C55819C8CF85
36 changed files with 92 additions and 92 deletions

View File

@ -26,7 +26,7 @@ class ActivityForm(forms.ModelForm):
clubs = list(Club.objects.filter(PermissionBackend
.filter_queryset(get_current_request(), Club, "view")).all())
shuffle(clubs)
self.fields["organizer"].widget.attrs["placeholder"] = ", ".join(club.name for club in clubs[:4]) + ", ..."
self.fields["organizer"].widget.attrs["placeholder"] = ", ".join(club.name for club in clubs[:4]) + ","
def clean_organizer(self):
organizer = self.cleaned_data['organizer']
@ -53,7 +53,7 @@ class ActivityForm(forms.ModelForm):
model=Note,
attrs={
"api_url": "/api/note/note/",
'placeholder': 'Note de l\'événement sur laquelle envoyer les crédits d\'invitation ...'
'placeholder': 'Note de l\'événement sur laquelle envoyer les crédits d\'invitation'
},
),
"attendees_club": Autocomplete(
@ -115,7 +115,7 @@ class GuestForm(forms.ModelForm):
# We don't evaluate the content type at launch because the DB might be not initialized
'api_url_suffix':
lambda: '&polymorphic_ctype=' + str(ContentType.objects.get_for_model(NoteUser).pk),
'placeholder': 'Note ...',
'placeholder': 'Note',
},
),
}

View File

@ -126,7 +126,7 @@ class Activity(models.Model):
@transaction.atomic
def save(self, *args, **kwargs):
"""
Update the activity wiki page each time the activity is updated (validation, change description, ...)
Update the activity wiki page each time the activity is updated (validation, change description,)
"""
if self.date_end < self.date_start:
raise ValidationError(_("The end date must be after the start date."))

View File

@ -37,7 +37,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
<button class="btn btn-light">{% trans "Return to activity page" %}</button>
</a>
<input id="alias" type="text" class="form-control" placeholder="Nom/note ...">
<input id="alias" type="text" class="form-control" placeholder="Nom/note">
<hr>

View File

@ -210,7 +210,7 @@ class MembershipForm(forms.ModelForm):
attrs={
'api_url': '/api/user/',
'name_field': 'username',
'placeholder': 'Nom ...',
'placeholder': 'Nom',
},
),
'date_start': DatePickerInput(),
@ -227,7 +227,7 @@ class MembershipRolesForm(forms.ModelForm):
attrs={
'api_url': '/api/user/',
'name_field': 'username',
'placeholder': 'Nom ...',
'placeholder': 'Nom',
},
),
)

View File

@ -26,7 +26,7 @@ class TransactionTemplateForm(forms.ModelForm):
# We don't evaluate the content type at launch because the DB might be not initialized
'api_url_suffix':
lambda: '&polymorphic_ctype=' + str(ContentType.objects.get_for_model(NoteClub).pk),
'placeholder': 'Note ...',
'placeholder': 'Note',
},
),
'amount': AmountInput(),
@ -43,7 +43,7 @@ class SearchTransactionForm(forms.Form):
resetable=True,
attrs={
'api_url': '/api/note/alias/',
'placeholder': 'Note ...',
'placeholder': 'Note',
},
),
)
@ -57,7 +57,7 @@ class SearchTransactionForm(forms.Form):
resetable=True,
attrs={
'api_url': '/api/note/alias/',
'placeholder': 'Note ...',
'placeholder': 'Note',
},
),
)

View File

@ -19,7 +19,7 @@ class Migration(migrations.Migration):
('trusting', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='trusting', to='note.Note', verbose_name='trusting')),
],
options={
'verbose_name': 'frienship',
'verbose_name': 'friendship',
'verbose_name_plural': 'friendships',
'unique_together': {('trusting', 'trusted')},
},

View File

@ -240,7 +240,7 @@ class Trust(models.Model):
)
class Meta:
verbose_name = _("frienship")
verbose_name = _("friendship")
verbose_name_plural = _("friendships")
unique_together = ("trusting", "trusted")

View File

@ -20,7 +20,7 @@ class TemplateCategory(models.Model):
"""
Defined a recurrent transaction category
Example: food, softs, ...
Example: food, softs,
"""
name = models.CharField(
verbose_name=_("name"),
@ -40,7 +40,7 @@ class TransactionTemplate(models.Model):
"""
Defined a recurrent transaction
associated to selling something (a burger, a beer, ...)
associated to selling something (a burger, a beer,)
"""
name = models.CharField(
verbose_name=_('name'),

View File

@ -40,7 +40,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
{# User search with autocompletion #}
<div class="card-footer">
<input class="form-control mx-auto d-block"
placeholder="{% trans "Name or alias..." %}" type="text" id="note" autofocus />
placeholder="{% trans "Name or alias" %}" type="text" id="note" autofocus />
</div>
</div>
</div>

View File

@ -66,7 +66,7 @@ SPDX-License-Identifier: GPL-2.0-or-later
<option value="{{ special_type.id }}">{{ special_type.special_type }}</option>
{% endfor %}
</select>
<input class="form-control mx-auto" type="text" id="source_note" placeholder="{% trans "Name or alias..." %}" />
<input class="form-control mx-auto" type="text" id="source_note" placeholder="{% trans "Name or alias" %}" />
<div id="source_me_div">
<hr>
<a class="btn-block btn btn-secondary" href="#" id="source_me" data-turbolinks="false">
@ -93,14 +93,14 @@ SPDX-License-Identifier: GPL-2.0-or-later
<option value="{{ special_type.id }}">{{ special_type.special_type }}</option>
{% endfor %}
</select>
<input class="form-control mx-auto" type="text" id="dest_note" placeholder="{% trans "Name or alias..." %}" />
<input class="form-control mx-auto" type="text" id="dest_note" placeholder="{% trans "Name or alias" %}" />
<ul class="list-group list-group-flush" id="dest_alias_matched">
</ul>
</div>
</div>
</div>
{# Information on transaction (amount, reason, name,...) #}
{# Information on transaction (amount, reason, name,) #}
<div class="col-md" id="external_div">
<div class="card bg-light mb-4">
<div class="card-header">

View File

@ -10,7 +10,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
<div class="row justify-content-center mb-4">
<div class="col-md-10 text-center">
{# Search field , see js #}
<input class="form-control mx-auto w-25" type="text" id="search_field" placeholder="{% trans "Name of the button..." %}" value="{{ request.GET.search }}">
<input class="form-control mx-auto w-25" type="text" id="search_field" placeholder="{% trans "Name of the button" %}" value="{{ request.GET.search }}">
<hr>
<a class="btn btn-primary text-center my-1" href="{% url 'note:template_create' %}" data-turbolinks="false">{% trans "New button" %}</a>
</div>
@ -19,7 +19,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
<div class="col-md-12">
<div class="card card-border shadow">
<div class="card-header text-center">
<h5> {% trans "buttons listing "%}</h5>
<h5>{% trans "buttons listing"%}</h5>
</div>
<div class="card-body px-0 py-0" id="buttons_table">
{% render_table table %}
@ -70,11 +70,11 @@ SPDX-License-Identifier: GPL-3.0-or-later
headers: {"X-CSRFTOKEN": CSRF_TOKEN}
})
.done(function() {
addMsg('{% trans "button successfully deleted "%}','success');
addMsg('{% trans "button successfully deleted"%}','success');
$("#buttons_table").load(location.pathname + "?search=" + $("#search_field").val().replace(" ", "%20") + " #buttons_table");
})
.fail(function() {
addMsg('{% trans "Unable to delete button "%} #' + button_id, 'danger')
addMsg('{% trans "Unable to delete button"%} #' + button_id, 'danger')
});
}

View File

@ -1572,7 +1572,7 @@
"mask": 1,
"field": "information_json",
"permanent": false,
"description": "Modifier les informations (sondage 1A, ...) d'une inscription WEI"
"description": "Modifier les informations (sondage 1A,) d'une inscription WEI"
}
},
{

View File

@ -59,7 +59,7 @@ class InstancedPermission:
# Force insertion, no data verification, no trigger
obj._force_save = True
# We don't want to trigger any signal (log, ...)
# We don't want to trigger any signal (log,)
obj._no_signal = True
Model.save(obj, force_insert=True)
ret = self.model.model_class().objects.filter(self.query & Q(pk=0)).exists()
@ -227,7 +227,7 @@ class Permission(models.Model):
def compute_param(value, **kwargs):
"""
A parameter is given by a list. The first argument is the name of the parameter.
The parameters are the user, the club, and some classes (Note, ...)
The parameters are the user, the club, and some classes (Note,)
If there are more arguments in the list, then attributes are queried.
For example, ["user", "note", "balance"] will return the balance of the note of the user.
If an argument is a list, then this is interpreted with a function call:

@ -1 +1 @@
Subproject commit 86bc2d269853ad60391e242ff655f0dc83b5967d
Subproject commit 48d9a8b5d299160f0d48440f5544f0f786caec97

View File

@ -174,7 +174,7 @@ class SogeCreditForm(forms.ModelForm):
attrs={
'api_url': '/api/user/',
'name_field': 'username',
'placeholder': 'Nom ...',
'placeholder': 'Nom',
},
),
}

View File

@ -358,7 +358,7 @@ class SogeCredit(models.Model):
def invalidate(self):
"""
Invalidating a Société générale delete the transaction of the bank if it was already created.
Treasurers must know what they do, With Great Power Comes Great Responsibility...
Treasurers must know what they do, With Great Power Comes Great Responsibility
"""
if self.valid:
self.credit_transaction.valid = False
@ -422,7 +422,7 @@ class SogeCredit(models.Model):
"""
Deleting a SogeCredit is equivalent to say that the Société générale didn't pay.
Treasurers must know what they do, this is difficult to undo this operation.
With Great Power Comes Great Responsibility...
With Great Power Comes Great Responsibility
"""
total_fee = sum(transaction.total for transaction in self.transactions.all() if not transaction.valid)

View File

@ -29,7 +29,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
</h3>
<div class="card-body">
<div class="input-group">
<input id="searchbar" type="text" class="form-control" placeholder="Nom/prénom/note ...">
<input id="searchbar" type="text" class="form-control" placeholder="Nom/prénom/note">
<div class="input-group-append">
<button id="add_sogecredit" class="btn btn-success" data-toggle="modal" data-target="#add-sogecredit-modal">{% trans "Add" %}</button>
</div>

View File

@ -45,7 +45,7 @@ class WEIRegistrationForm(forms.ModelForm):
attrs={
'api_url': '/api/user/',
'name_field': 'username',
'placeholder': 'Nom ...',
'placeholder': 'Nom ',
},
),
"birth_date": DatePickerInput(options={'minDate': '1900-01-01',
@ -130,14 +130,14 @@ class WEIMembershipForm(forms.ModelForm):
Bus,
attrs={
'api_url': '/api/wei/bus/',
'placeholder': 'Bus ...',
'placeholder': 'Bus',
}
),
"team": Autocomplete(
BusTeam,
attrs={
'api_url': '/api/wei/team/',
'placeholder': 'Équipe ...',
'placeholder': 'Équipe',
},
resetable=True,
),
@ -167,7 +167,7 @@ class BusForm(forms.ModelForm):
WEIClub,
attrs={
'api_url': '/api/wei/club/',
'placeholder': 'WEI ...',
'placeholder': 'WEI',
},
),
}
@ -182,7 +182,7 @@ class BusTeamForm(forms.ModelForm):
Bus,
attrs={
'api_url': '/api/wei/bus/',
'placeholder': 'Bus ...',
'placeholder': 'Bus',
},
),
"color": ColorWidget(),

View File

@ -153,7 +153,7 @@ class BusTeam(models.Model):
class WEIRole(Role):
"""
A Role for the WEI can be bus chief, team chief, free electron, ...
A Role for the WEI can be bus chief, team chief, free electron,
"""
class Meta:
@ -258,7 +258,7 @@ class WEIRegistration(models.Model):
@property
def information(self):
"""
The information about the registration (the survey for the new members, the bus for the older members, ...)
The information about the registration (the survey for the new members, the bus for the older members,)
are stored in a dictionary that can evolve following the years. The dictionary is stored as a JSON string.
"""
return json.loads(self.information_json)

View File

@ -8,7 +8,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
{% block profile_content %}
<div class="card">
<div class="card-body">
<input id="searchbar" type="text" class="form-control" placeholder="Nom/prénom/note/bus/équipe ...">
<input id="searchbar" type="text" class="form-control" placeholder="Nom/prénom/note/bus/équipe">
<hr>
<div id="memberships_table">
@ -24,7 +24,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
<div class="card-footer text-center">
<a href="{% url 'wei:wei_registrations' pk=club.pk %}">
<button class="btn btn-block btn-info">{% trans "View unvalidated registrations..." %}</button>
<button class="btn btn-block btn-info">{% trans "View unvalidated registrations" %}</button>
</a>
<hr>
<a href="{% url 'wei:wei_memberships_pdf' wei_pk=club.pk %}" data-turbolinks="false">

View File

@ -8,7 +8,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
{% block profile_content %}
<div class="card">
<div class="card-body">
<input id="searchbar" type="text" class="form-control" placeholder="Nom/prénom/note ...">
<input id="searchbar" type="text" class="form-control" placeholder="Nom/prénom/note">
<hr>
<div id="registrations_table">
@ -24,7 +24,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
<div class="card-footer text-center">
<a href="{% url 'wei:wei_memberships' pk=club.pk %}">
<button class="btn btn-block btn-info">{% trans "View validated memberships..." %}</button>
<button class="btn btn-block btn-info">{% trans "View validated memberships" %}</button>
</a>
</div>
</div>

View File

@ -1235,7 +1235,7 @@ class WEIAttributeBus1ANextView(LoginRequiredMixin, RedirectView):
raise Http404
wei = wei.get()
qs = WEIRegistration.objects.filter(wei=wei, membership__isnull=False, membership__bus__isnull=True)
qs = qs.filter(information_json__contains='selected_bus_pk') # not perfect, but works...
qs = qs.filter(information_json__contains='selected_bus_pk') # not perfect, but works
if qs.exists():
return reverse_lazy('wei:wei_bus_1A', args=(qs.first().pk, ))
return reverse_lazy('wei:wei_1A_list', args=(wei.pk, ))

View File

@ -28,13 +28,13 @@ Il suffit d'ajouter le préfixe ``/api/`` pour arriver sur ces pages.
* `members/club <member#club>`_ : liste des différents clubs enregistrés
* `members/membership <member#adhesion>`_ : liste des adhésions enregistrées
* `activity/activity <activity#activite>`_ : liste des activités recensées
* `activity/type <activity#type-d-activite>`_ : liste des différents types d'activités : pots, soirées de club, ...
* `activity/type <activity#type-d-activite>`_ : liste des différents types d'activités : pots, soirées de club,
* `activity/guest <activity#invite>`_ : liste des personnes invitées lors d'une activité
* `activity/entry <activity#entree>`_ : liste des entrées effectuées lors des activités
* `note/note <note#note>`_ : liste des notes enregistrées
* `note/alias <note#alias>`_ : liste des alias enregistrés
* `note/consumer <note#consommateur>`_ : liste des alias enregistrés avec leur note associée
* `note/transaction/category <note#categorie-de-transaction>`_ : liste des différentes catégories de boutons : soft, alcool, ...
* `note/transaction/category <note#categorie-de-transaction>`_ : liste des différentes catégories de boutons : soft, alcool,
* `note/transaction/transaction <note#transaction>`_ : liste des transactions effectuées
* `note/transaction/template <note#modele-de-transaction>`_ : liste des boutons enregistrés
* `treasury/invoice <treasury#facture>`_ : liste des factures générées
@ -120,7 +120,7 @@ POST
~~~~
Une requête POST permet d'ajouter des éléments. Cette requête n'est possible que sur la page ``/api/<model>/``,
la requête POST n'est pas supportée sur les pages de détails (car cette requête permet ... l'ajout).
la requête POST n'est pas supportée sur les pages de détails (car cette requête permet l'ajout).
Des exceptions sont faites sur certaines pages : les pages de logs et de contenttypes sont en lecture uniquement.
@ -205,10 +205,10 @@ Une reqête OPTIONS affiche l'ensemble des opérations possibles sur un modèle
* ``<METHOD>`` est le type de requête HTTP supporté (pour modification, inclus dans {``POST``, ``PUT``, ``PATCH``}).
* ``<FIELD_NAME>`` est le nom du champ dans le modèle concerné (exemple : ``id``)
* ``<TYPE>`` représente le type de données : ``integer``, ``string``, ``date``, ``choice``, ``field`` (pour les clés étrangères), ...
* ``<TYPE>`` représente le type de données : ``integer``, ``string``, ``date``, ``choice``, ``field`` (pour les clés étrangères),
* ``<REQUIRED>`` est un booléen indiquant si le champ est requis dans le modèle ou s'il peut être nul/vide.
* ``<READ_ONLY>`` est un booléen indiquant si le champ est accessible en lecture uniquement.
* ``<LABEL>`` représente le label du champ, son nom traduit, qui s'affiche dans le formulaire accessible sur l'API Web.
Des contraintes peuvent s'ajouter à cela selon les champs : taille maximale de chaînes de caractères, valeurs minimales
et maximales pour les entiers ...
et maximales pour les entiers

View File

@ -13,7 +13,7 @@ L'application comporte 5 modèles : activités, types d'activité, invités, ent
Types d'activité
~~~~~~~~~~~~~~~~
Les activités sont triées par type (pots, soirées de club, ...), et chaque type regroupe diverses informations :
Les activités sont triées par type (pots, soirées de club,), et chaque type regroupe diverses informations :
* Nom du type
* Possibilité d'inviter des non-adhérents (booléen)

View File

@ -65,9 +65,9 @@ Applications facultatives
* ``cas-server``
Serveur central d'authenfication, permet d'utiliser son compte de la NoteKfet2020 pour se connecter à d'autre application ayant intégrer un client.
* `Script <https://gitlab.crans.org/bde/nk20-scripts>`_
Ensemble de commande `./manage.py` pour la gestion de la note: import de données, verification d'intégrité, etc ...
Ensemble de commande `./manage.py` pour la gestion de la note: import de données, verification d'intégrité, etc
* `Treasury <treasury>`_ :
Interface de gestion pour les trésoriers, émission de facture, remise de chèque, statistiques ...
Interface de gestion pour les trésoriers, émission de facture, remise de chèque, statistiques
* `WEI <wei>`_ :
Interface de gestion du WEI.

View File

@ -43,7 +43,7 @@ l'utilisateur, utiles pour l'adhésion au BDE :
* ``address`` : ``CharField``, adresse physique de l'utilisateur
* ``paid`` : ``BooleanField``, indique si l'utilisateur normalien est rémunéré ou non (utile pour différencier les montants d'adhésion aux clubs)
* ``phone_number`` : ``CharField``, numéro de téléphone de l'utilisateur
* ``section`` : ``CharField``, section de l'ENS à laquelle apartient l'utilisateur (exemple : 1A0, ...)
* ``section`` : ``CharField``, section de l'ENS à laquelle appartient l'utilisateur (exemple : 1A0,…)
Clubs
~~~~~
@ -59,7 +59,7 @@ utilisateurs aux différents clubs.
* ``membership_fee_paid`` : ``PositiveIntegerField``, montant de la cotisation (en centimes) pour qu'un élève normalien (donc rémunéré) puisse adhérer.
* ``membership_fee_unpaid`` : ``PositiveIntegerField``, montant de la cotisation (en centimes) pour qu'un étudiant normalien (donc non rémunéré) puisse adhérer.
* ``name`` : ``CharField``, nom du club.
* ``require_memberships`` : ``BooleanField``, indique si le club est un vrai club BDE qui nécessite des adhésions de club, ou s'il s'agit d'une note "pot commun" (organisation d'une activité, note de département, ...)
* ``require_memberships`` : ``BooleanField``, indique si le club est un vrai club BDE qui nécessite des adhésions de club, ou s'il s'agit d'une note "pot commun" (organisation d'une activité, note de département,)
Adhésions
~~~~~~~~~
@ -101,7 +101,7 @@ Adhésions
La Note Kfet offre la possibilité aux clubs de gérer l'adhésion de leurs membres. En plus de réguler les cotisations
des adhérents, des permissions sont octroyées sur la note en fonction des rôles au sein des clubs. Un rôle est une
fonction occupée au sein d'un club (Trésorier de club, président de club, GCKfet, Res[pot], respo info, ...).
fonction occupée au sein d'un club (Trésorier de club, président de club, GCKfet, Res[pot], respo info,).
Une adhésion attribue à un adhérent ses rôles. Les rôles fournissent les permissions. Par exemple, le trésorier d'un
club a le droit de faire des transferts de et vers la note du club, tant que la source reste au-dessus de -50 €.
Une adhésion est considérée comme valide si la date du jour est comprise (au sens large) entre les dates de début et

View File

@ -49,7 +49,7 @@ Une fois l'inscription validée, détail de ce qu'il se passe :
lui octroyant un faible nombre de permissions de base, telles que la visualisation de son compte.
* On adhère la personne au club Kfet si cela est demandé, l'adhésion commence aujourd'hui. Il dispose d'un unique rôle :
"Adhérent Kfet", lui octroyant un nombre un peu plus conséquent de permissions basiques, telles que la possibilité de
faire des transactions, d'accéder aux activités, au WEI, ...
faire des transactions, d'accéder aux activités, au WEI,
* Si le nouveau membre a indiqué avoir ouvert un compte à la société générale, alors les transactions sont invalidées,
la note n'est pas débitée (commence alors à 0 €).

View File

@ -33,7 +33,7 @@ Produits
* ``invoice`` : ``ForeignKey`` vers la facture associée au produit
* ``designation`` : Désignation du produit
* ``quantity`` : Quantité achetée
* ``amount`` : Prix unitaire (HT) du produit (peut être négatif si jamais il s'agit d'un rabais, d'un solde prépayé, ...)
* ``amount`` : Prix unitaire (HT) du produit (peut être négatif si jamais il s'agit d'un rabais, d'un solde prépayé,)
Pour ajouter des produits à une facture, cela se passe sur le même formulaire d'ajout/de modification de factures.
Pour cela, on utilise un ``FormSet``, qui permet de gérer un nombre arbitraire de formulaires
@ -208,7 +208,7 @@ Sur son interface, le trésorier peut récupérer les crédits de Société gén
* Demander à un respo info s'il y a un problème pour le régler avant de faire des bêtises. Je l'admets, ça fait trois options.
La validité d'une transaction d'adhésion n'a aucune influence sur l'adhésion elle-même. Toutefois, cela se remarque rapidement ...
La validité d'une transaction d'adhésion n'a aucune influence sur l'adhésion elle-même. Toutefois, cela se remarque rapidement
.. image:: /_static/img/treasury_validate_sogecredit.png

View File

@ -285,7 +285,7 @@ On doit compiler les traductions (pour pouvoir les lire plus vite par la suite)
$ ./manage.py compilemessages
Les fichiers statiques (fiches de style, fichiers Javascript, images, ...) doivent
Les fichiers statiques (fiches de style, fichiers Javascript, images,) doivent
être exportées dans le dossier ``static`` :
.. code:: bash

View File

@ -19,7 +19,7 @@ python3 manage.py migrate
if [ "$1" ]; then
# Command passed
echo "Running $@..."
echo "Running $@"
$@
else
# Launch server

View File

@ -1624,8 +1624,8 @@ msgstr "Konsumieren"
#: apps/note/templates/note/conso_form.html:43
#: apps/note/templates/note/transaction_form.html:69
#: apps/note/templates/note/transaction_form.html:96
msgid "Name or alias..."
msgstr "Name oder Alias..."
msgid "Name or alias"
msgstr "Name oder Alias"
#: apps/note/templates/note/conso_form.html:53
msgid "Select consumptions"
@ -1722,24 +1722,24 @@ msgid "Current price"
msgstr "Aktueller Preis"
#: apps/note/templates/note/transactiontemplate_list.html:13
msgid "Name of the button..."
msgstr "Name dessen Tatse."
msgid "Name of the button"
msgstr "Name dessen Tatse"
#: apps/note/templates/note/transactiontemplate_list.html:15
msgid "New button"
msgstr "Neue Tatsen"
#: apps/note/templates/note/transactiontemplate_list.html:22
msgid "buttons listing "
msgstr "Tatsenliste "
msgid "buttons listing"
msgstr "Tatsenliste"
#: apps/note/templates/note/transactiontemplate_list.html:73
msgid "button successfully deleted "
msgstr "Taste erfolgreich gelöscht "
msgid "button successfully deleted"
msgstr "Taste erfolgreich gelöscht"
#: apps/note/templates/note/transactiontemplate_list.html:77
msgid "Unable to delete button "
msgstr "Tatse kann nicht gelöscht werden "
msgid "Unable to delete button"
msgstr "Tatse kann nicht gelöscht werden"
#: apps/note/templates/note/transactiontemplate_list.html:95
#, fuzzy
@ -2546,9 +2546,9 @@ msgstr "Kredit von der Société générale"
#: apps/treasury/templates/treasury/sogecredit_list.html:109
#, fuzzy
#| msgid "button successfully deleted "
#| msgid "button successfully deleted"
msgid "Credit successfully registered"
msgstr "Taste erfolgreich gelöscht "
msgstr "Taste erfolgreich gelöscht"
#: apps/treasury/views.py:40
msgid "Create new invoice"
@ -3094,8 +3094,8 @@ msgstr ""
"den Mitgliedsbeitrag."
#: apps/wei/templates/wei/weimembership_list.html:27
msgid "View unvalidated registrations..."
msgstr "Nicht validierte Registrierungen anzeigen ..."
msgid "View unvalidated registrations"
msgstr "Nicht validierte Registrierungen anzeigen"
#: apps/wei/templates/wei/weiregistration_confirm_delete.html:16
msgid "This registration is already validated and can't be deleted."
@ -3116,8 +3116,8 @@ msgid "There is no pre-registration found with this pattern."
msgstr "Bei diesem Muster wurde keine Vorregistrierung gefunden."
#: apps/wei/templates/wei/weiregistration_list.html:27
msgid "View validated memberships..."
msgstr "Validierte Mitgliedschaften anzeigen ..."
msgid "View validated memberships"
msgstr "Validierte Mitgliedschaften anzeigen"
#: apps/wei/views.py:58
msgid "Search WEI"

View File

@ -1611,8 +1611,8 @@ msgstr "Consumir"
#: apps/note/templates/note/conso_form.html:43
#: apps/note/templates/note/transaction_form.html:69
#: apps/note/templates/note/transaction_form.html:96
msgid "Name or alias..."
msgstr "Nombre o alias..."
msgid "Name or alias"
msgstr "Nombre o alias"
#: apps/note/templates/note/conso_form.html:53
msgid "Select consumptions"
@ -1709,24 +1709,24 @@ msgid "Current price"
msgstr "Precio actual"
#: apps/note/templates/note/transactiontemplate_list.html:13
msgid "Name of the button..."
msgstr "Nombre del botón..."
msgid "Name of the button"
msgstr "Nombre del botón"
#: apps/note/templates/note/transactiontemplate_list.html:15
msgid "New button"
msgstr "Nuevo botón"
#: apps/note/templates/note/transactiontemplate_list.html:22
msgid "buttons listing "
msgstr "lista de los botones "
msgid "buttons listing"
msgstr "lista de los botones"
#: apps/note/templates/note/transactiontemplate_list.html:73
msgid "button successfully deleted "
msgstr "botón suprimido con éxito "
msgid "button successfully deleted"
msgstr "botón suprimido con éxito"
#: apps/note/templates/note/transactiontemplate_list.html:77
msgid "Unable to delete button "
msgstr "Imposible de suprimir el botón "
msgid "Unable to delete button"
msgstr "Imposible de suprimir el botón"
#: apps/note/templates/note/transactiontemplate_list.html:95
msgid "Button hidden"
@ -3048,8 +3048,8 @@ msgstr ""
"será hecha automáticamente, la afiliación al WEI incluye el pago de los dos."
#: apps/wei/templates/wei/weimembership_list.html:27
msgid "View unvalidated registrations..."
msgstr "Ver las inscripciones no validadas..."
msgid "View unvalidated registrations"
msgstr "Ver las inscripciones no validadas"
#: apps/wei/templates/wei/weiregistration_confirm_delete.html:16
msgid "This registration is already validated and can't be deleted."
@ -3069,8 +3069,8 @@ msgid "There is no pre-registration found with this pattern."
msgstr "No hay pre-inscripción encontrada con esta entrada."
#: apps/wei/templates/wei/weiregistration_list.html:27
msgid "View validated memberships..."
msgstr "Ver las inscripciones validadas..."
msgid "View validated memberships"
msgstr "Ver las inscripciones validadas"
#: apps/wei/views.py:58
msgid "Search WEI"

View File

@ -6,7 +6,7 @@
import os
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
# Build paths inside the project like this: os.path.join(BASE_DIR,)
from datetime import timedelta
BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

View File

@ -12,7 +12,7 @@
import os
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
# Build paths inside the project like this: os.path.join(BASE_DIR,)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
if os.getenv("DJANGO_DEV_STORE_METHOD", "sqlite") != "postgresql":

View File

@ -196,7 +196,7 @@ function autoCompleteNote (field_id, note_list_id, notes, notes_display, alias_p
field.tooltip({
html: true,
placement: 'bottom',
title: 'Loading...',
title: 'Loading',
trigger: 'manual',
container: field.parent(),
fallbackPlacement: 'clockwise'

View File

@ -179,7 +179,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
{# TODO Add banners #}
</div>
{% block content %}
<p>Default content...</p>
<p>Default content</p>
{% endblock %}
</div>
</main>