mirror of
https://gitlab.crans.org/bde/nk20
synced 2025-06-29 20:51:11 +02:00
Compare commits
7 Commits
66b9d852f8
...
qrcode
Author | SHA1 | Date | |
---|---|---|---|
e6f3084588 | |||
145e55da75 | |||
d3ba95cdca | |||
8ffb0ebb56 | |||
5038af9e34 | |||
819b4214c9 | |||
b8a93b0b75 |
@ -38,6 +38,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
||||
</a>
|
||||
|
||||
<input id="alias" type="text" class="form-control" placeholder="Nom/note ...">
|
||||
<button id="trigger" class="btn btn-secondary">Click me !</button>
|
||||
|
||||
<hr>
|
||||
|
||||
@ -63,15 +64,46 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
||||
refreshBalance();
|
||||
}
|
||||
|
||||
function process_qrcode() {
|
||||
let name = alias_obj.val();
|
||||
$.get("/api/note/note?search=" + name + "&format=json").done(
|
||||
function (res) {
|
||||
let note = res.results[0];
|
||||
$.post("/api/activity/entry/?format=json", {
|
||||
csrfmiddlewaretoken: CSRF_TOKEN,
|
||||
activity: {{ activity.id }},
|
||||
note: note.id,
|
||||
guest: null
|
||||
}).done(function () {
|
||||
addMsg(interpolate(gettext(
|
||||
"Entry made for %s whose balance is %s €"),
|
||||
[note.name, note.balance / 100]), "success", 4000);
|
||||
reloadTable(true);
|
||||
}).fail(function (xhr) {
|
||||
errMsg(xhr.responseJSON, 4000);
|
||||
});
|
||||
}).fail(function (xhr) {
|
||||
errMsg(xhr.responseJSON, 4000);
|
||||
});
|
||||
}
|
||||
|
||||
alias_obj.keyup(function(event) {
|
||||
let code = event.originalEvent.keyCode
|
||||
if (65 <= code <= 122 || code === 13) {
|
||||
debounce(reloadTable)()
|
||||
}
|
||||
if (code === 0)
|
||||
process_qrcode();
|
||||
});
|
||||
|
||||
$(document).ready(init);
|
||||
|
||||
alias_obj2 = document.getElementById("alias");
|
||||
$("#trigger").click(function (e) {
|
||||
addMsg("Clicked", "success", 1000);
|
||||
alias_obj.val(alias_obj.val() + "\0");
|
||||
alias_obj2.dispatchEvent(new KeyboardEvent('keyup'));
|
||||
})
|
||||
function init() {
|
||||
$(".table-row").click(function (e) {
|
||||
let target = e.target.parentElement;
|
||||
@ -168,4 +200,4 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
||||
|
@ -1,64 +0,0 @@
|
||||
/**
|
||||
* On form submit, create a new friendship
|
||||
*/
|
||||
function form_create_trust (e) {
|
||||
// Do not submit HTML form
|
||||
e.preventDefault()
|
||||
|
||||
// Get data and send to API
|
||||
const formData = new FormData(e.target)
|
||||
$.getJSON('/api/note/alias/'+formData.get('trusted') + '/',
|
||||
function (trusted_alias) {
|
||||
if ((trusted_alias.note == formData.get('trusting')))
|
||||
{
|
||||
addMsg(gettext("You can't add yourself as a friend"), "danger")
|
||||
return
|
||||
}
|
||||
create_trust(formData.get('trusting'), trusted_alias.note)
|
||||
}).fail(function (xhr, _textStatus, _error) {
|
||||
errMsg(xhr.responseJSON)
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a trust between users
|
||||
* @param trusting:Integer trusting note id
|
||||
* @param trusted:Integer trusted note id
|
||||
*/
|
||||
function create_trust(trusting, trusted) {
|
||||
$.post('/api/note/trust/', {
|
||||
trusting: trusting,
|
||||
trusted: trusted,
|
||||
csrfmiddlewaretoken: CSRF_TOKEN
|
||||
}).done(function () {
|
||||
// Reload tables
|
||||
$('#trust_table').load(location.pathname + ' #trust_table')
|
||||
$('#trusted_table').load(location.pathname + ' #trusted_table')
|
||||
addMsg(gettext('Friendship successfully added'), 'success')
|
||||
}).fail(function (xhr, _textStatus, _error) {
|
||||
errMsg(xhr.responseJSON)
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* On click of "delete", delete the trust
|
||||
* @param button_id:Integer Trust id to remove
|
||||
*/
|
||||
function delete_button (button_id) {
|
||||
$.ajax({
|
||||
url: '/api/note/trust/' + button_id + '/',
|
||||
method: 'DELETE',
|
||||
headers: { 'X-CSRFTOKEN': CSRF_TOKEN }
|
||||
}).done(function () {
|
||||
addMsg(gettext('Friendship successfully deleted'), 'success')
|
||||
$('#trust_table').load(location.pathname + ' #trust_table')
|
||||
$('#trusted_table').load(location.pathname + ' #trusted_table')
|
||||
}).fail(function (xhr, _textStatus, _error) {
|
||||
errMsg(xhr.responseJSON)
|
||||
})
|
||||
}
|
||||
|
||||
$(document).ready(function () {
|
||||
// Attach event
|
||||
document.getElementById('form_trust').addEventListener('submit', form_create_trust)
|
||||
})
|
@ -25,14 +25,6 @@
|
||||
</a>
|
||||
</dd>
|
||||
|
||||
<dt class="col-xl-6">{% trans 'friendships'|capfirst %}</dt>
|
||||
<dd class="col-xl-6">
|
||||
<a class="badge badge-secondary" href="{% url 'member:user_trust' user_object.pk %}">
|
||||
<i class="fa fa-edit"></i>
|
||||
{% trans 'Manage friendships' %} ({{ user_object.note.trusting.all|length }})
|
||||
</a>
|
||||
</dd>
|
||||
|
||||
{% if "member.view_profile"|has_perm:user_object.profile %}
|
||||
<dt class="col-xl-6">{% trans 'section'|capfirst %}</dt>
|
||||
<dd class="col-xl-6">{{ user_object.profile.section }}</dd>
|
||||
@ -60,7 +52,10 @@
|
||||
{% if user_object.pk == user.pk %}
|
||||
<div class="text-center">
|
||||
<a class="small badge badge-secondary" href="{% url 'member:auth_token' %}">
|
||||
<i class="fa fa-cogs"></i>{% trans 'API token' %}
|
||||
<i class="fa fa-cogs"></i> {% trans 'API token' %}
|
||||
</a>
|
||||
<a class="small badge badge-secondary" href="{% url 'member:qr_code' user_object.pk %}">
|
||||
<i class="fa fa-qrcode"></i> {% trans 'QR Code' %}
|
||||
</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
@ -1,48 +0,0 @@
|
||||
{% extends "member/base.html" %}
|
||||
{% comment %}
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
{% endcomment %}
|
||||
{% load static django_tables2 i18n %}
|
||||
|
||||
{% block profile_content %}
|
||||
<div class="card bg-light mb-3">
|
||||
<h3 class="card-header text-center">
|
||||
{% trans "Add friends" %}
|
||||
</h3>
|
||||
<div class="card-body">
|
||||
{% if can_create %}
|
||||
<form class="input-group" method="POST" id="form_trust">
|
||||
{% csrf_token %}
|
||||
<input type="hidden" name="trusting" value="{{ object.note.pk }}">
|
||||
{%include "autocomplete_model.html" %}
|
||||
<div class="input-group-append">
|
||||
<input type="submit" class="btn btn-success" value="{% trans "Add" %}">
|
||||
</div>
|
||||
</form>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% render_table trusting %}
|
||||
</div>
|
||||
|
||||
<div class="alert alert-warning card mb-3">
|
||||
{% blocktrans trimmed %}
|
||||
Adding someone as a friend enables them to initiate transactions coming
|
||||
from your account (while keeping your balance positive). This is
|
||||
designed to simplify using note kfet transfers to transfer money between
|
||||
users. The intent is that one person can make all transfers for a group of
|
||||
friends without needing additional rights among them.
|
||||
{% endblocktrans %}
|
||||
</div>
|
||||
|
||||
<div class="card bg-light mb-3">
|
||||
<h3 class="card-header text-center">
|
||||
{% trans "People having you as a friend" %}
|
||||
</h3>
|
||||
{% render_table trusted_by %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block extrajavascript %}
|
||||
<script src="{% static "member/js/trust.js" %}"></script>
|
||||
<script src="{% static "js/autocomplete_model.js" %}"></script>
|
||||
{% endblock%}
|
36
apps/member/templates/member/qr_code.html
Normal file
36
apps/member/templates/member/qr_code.html
Normal file
@ -0,0 +1,36 @@
|
||||
{% extends "base.html" %}
|
||||
{% comment %}
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
{% endcomment %}
|
||||
{% load i18n %}
|
||||
|
||||
{% block content %}
|
||||
<div class="card bg-light">
|
||||
<h3 class="card-header text-center">
|
||||
{% trans "QR Code for" %} {{ user_object.username }} ({{ user_object.first_name }} {{user_object.last_name }})
|
||||
</h3>
|
||||
<div class="text-center" id="qrcode">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block extrajavascript %}
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/qrcodejs/1.0.0/qrcode.min.js" integrity="sha512-CNgIRecGo7nphbeZ04Sc13ka07paqdeTu0WR1IM4kNcpmBAUSHSQX0FslNhTDadL4O5SAGapGt4FodqL8My0mA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||||
<script>
|
||||
var qrc = new QRCode(document.getElementById("qrcode"), {
|
||||
text: "{{ user_object.pk }}\0",
|
||||
width: 1024,
|
||||
height: 1024
|
||||
});
|
||||
</script>
|
||||
{% endblock %}
|
||||
|
||||
{% block extracss %}
|
||||
<style>
|
||||
img {
|
||||
width: 100%
|
||||
}
|
||||
</style>
|
||||
{% endblock %}
|
@ -23,6 +23,6 @@ urlpatterns = [
|
||||
path('user/<int:pk>/update/', views.UserUpdateView.as_view(), name="user_update_profile"),
|
||||
path('user/<int:pk>/update_pic/', views.ProfilePictureUpdateView.as_view(), name="user_update_pic"),
|
||||
path('user/<int:pk>/aliases/', views.ProfileAliasView.as_view(), name="user_alias"),
|
||||
path('user/<int:pk>/trust', views.ProfileTrustView.as_view(), name="user_trust"),
|
||||
path('manage-auth-token/', views.ManageAuthTokens.as_view(), name='auth_token'),
|
||||
path('user/<int:pk>/qr_code/', views.QRCodeView.as_view(), name='qr_code'),
|
||||
]
|
||||
|
@ -18,9 +18,9 @@ from django.views.generic import DetailView, UpdateView, TemplateView
|
||||
from django.views.generic.edit import FormMixin
|
||||
from django_tables2.views import SingleTableView
|
||||
from rest_framework.authtoken.models import Token
|
||||
from note.models import Alias, NoteClub, NoteUser, Trust
|
||||
from note.models import Alias, NoteUser, NoteClub
|
||||
from note.models.transactions import Transaction, SpecialTransaction
|
||||
from note.tables import HistoryTable, AliasTable, TrustTable, TrustedTable
|
||||
from note.tables import HistoryTable, AliasTable
|
||||
from note_kfet.middlewares import _set_current_request
|
||||
from permission.backends import PermissionBackend
|
||||
from permission.models import Role
|
||||
@ -243,40 +243,6 @@ class UserListView(ProtectQuerysetMixin, LoginRequiredMixin, SingleTableView):
|
||||
return context
|
||||
|
||||
|
||||
class ProfileTrustView(ProtectQuerysetMixin, LoginRequiredMixin, DetailView):
|
||||
"""
|
||||
View and manage user trust relationships
|
||||
"""
|
||||
model = User
|
||||
template_name = 'member/profile_trust.html'
|
||||
context_object_name = 'user_object'
|
||||
extra_context = {"title": _("Note friendships")}
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
note = context['object'].note
|
||||
context["trusting"] = TrustTable(
|
||||
note.trusting.filter(PermissionBackend.filter_queryset(self.request, Trust, "view")).distinct().all())
|
||||
context["trusted_by"] = TrustedTable(
|
||||
note.trusted.filter(PermissionBackend.filter_queryset(self.request, Trust, "view")).distinct().all())
|
||||
context["can_create"] = PermissionBackend.check_perm(self.request, "note.add_trust", Trust(
|
||||
trusting=context["object"].note,
|
||||
trusted=context["object"].note
|
||||
))
|
||||
context["widget"] = {
|
||||
"name": "trusted",
|
||||
"resetable": True,
|
||||
"attrs": {
|
||||
"class": "autocomplete form-control",
|
||||
"id": "trusted",
|
||||
"api_url": "/api/note/alias/?note__polymorphic_ctype__model=noteuser",
|
||||
"name_field": "name",
|
||||
"placeholder": ""
|
||||
}
|
||||
}
|
||||
return context
|
||||
|
||||
|
||||
class ProfileAliasView(ProtectQuerysetMixin, LoginRequiredMixin, DetailView):
|
||||
"""
|
||||
View and manage user aliases.
|
||||
@ -365,6 +331,14 @@ class ManageAuthTokens(LoginRequiredMixin, TemplateView):
|
||||
context['token'] = Token.objects.get_or_create(user=self.request.user)[0]
|
||||
return context
|
||||
|
||||
class QRCodeView(LoginRequiredMixin, DetailView):
|
||||
"""
|
||||
Affiche le QR Code
|
||||
"""
|
||||
model = User
|
||||
context_object_name = "user_object"
|
||||
template_name = "member/qr_code.html"
|
||||
extra_context = {"title": _("QR Code")}
|
||||
|
||||
# ******************************* #
|
||||
# CLUB #
|
||||
|
@ -12,7 +12,7 @@ from note_kfet.middlewares import get_current_request
|
||||
from permission.backends import PermissionBackend
|
||||
from rest_framework.utils import model_meta
|
||||
|
||||
from ..models.notes import Note, NoteClub, NoteSpecial, NoteUser, Alias, Trust
|
||||
from ..models.notes import Note, NoteClub, NoteSpecial, NoteUser, Alias
|
||||
from ..models.transactions import TransactionTemplate, Transaction, MembershipTransaction, TemplateCategory, \
|
||||
RecurrentTransaction, SpecialTransaction
|
||||
|
||||
@ -77,22 +77,6 @@ class NoteUserSerializer(serializers.ModelSerializer):
|
||||
return str(obj)
|
||||
|
||||
|
||||
class TrustSerializer(serializers.ModelSerializer):
|
||||
"""
|
||||
REST API Serializer for Trusts.
|
||||
The djangorestframework plugin will analyse the model `Trust` and parse all fields in the API.
|
||||
"""
|
||||
|
||||
class Meta:
|
||||
model = Trust
|
||||
fields = '__all__'
|
||||
|
||||
def validate(self, attrs):
|
||||
instance = Trust(**attrs)
|
||||
instance.clean()
|
||||
return attrs
|
||||
|
||||
|
||||
class AliasSerializer(serializers.ModelSerializer):
|
||||
"""
|
||||
REST API Serializer for Aliases.
|
||||
|
@ -2,8 +2,7 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
from .views import NotePolymorphicViewSet, AliasViewSet, ConsumerViewSet, \
|
||||
TemplateCategoryViewSet, TransactionViewSet, TransactionTemplateViewSet, \
|
||||
TrustViewSet
|
||||
TemplateCategoryViewSet, TransactionViewSet, TransactionTemplateViewSet
|
||||
|
||||
|
||||
def register_note_urls(router, path):
|
||||
@ -12,7 +11,6 @@ def register_note_urls(router, path):
|
||||
"""
|
||||
router.register(path + '/note', NotePolymorphicViewSet)
|
||||
router.register(path + '/alias', AliasViewSet)
|
||||
router.register(path + '/trust', TrustViewSet)
|
||||
router.register(path + '/consumer', ConsumerViewSet)
|
||||
|
||||
router.register(path + '/transaction/category', TemplateCategoryViewSet)
|
||||
|
@ -14,9 +14,8 @@ from api.viewsets import ReadProtectedModelViewSet, ReadOnlyProtectedModelViewSe
|
||||
from permission.backends import PermissionBackend
|
||||
|
||||
from .serializers import NotePolymorphicSerializer, AliasSerializer, ConsumerSerializer,\
|
||||
TemplateCategorySerializer, TransactionTemplateSerializer, TransactionPolymorphicSerializer, \
|
||||
TrustSerializer
|
||||
from ..models.notes import Note, Alias, NoteUser, NoteClub, NoteSpecial, Trust
|
||||
TemplateCategorySerializer, TransactionTemplateSerializer, TransactionPolymorphicSerializer
|
||||
from ..models.notes import Note, Alias, NoteUser, NoteClub, NoteSpecial
|
||||
from ..models.transactions import TransactionTemplate, Transaction, TemplateCategory
|
||||
|
||||
|
||||
@ -57,41 +56,11 @@ class NotePolymorphicViewSet(ReadProtectedModelViewSet):
|
||||
return queryset.order_by("id")
|
||||
|
||||
|
||||
class TrustViewSet(ReadProtectedModelViewSet):
|
||||
"""
|
||||
REST Trust View set.
|
||||
The djangorestframework plugin will get all `Trust` objects, serialize it to JSON with the given serializer,
|
||||
then render it on /api/note/trust/
|
||||
"""
|
||||
queryset = Trust.objects
|
||||
serializer_class = TrustSerializer
|
||||
filter_backends = [SearchFilter, DjangoFilterBackend, OrderingFilter]
|
||||
search_fields = ['$trusting__alias__name', '$trusting__alias__normalized_name',
|
||||
'$trusted__alias__name', '$trusted__alias__normalized_name']
|
||||
filterset_fields = ['trusting', 'trusting__noteuser__user', 'trusted', 'trusted__noteuser__user']
|
||||
ordering_fields = ['trusting', 'trusted', ]
|
||||
|
||||
def get_serializer_class(self):
|
||||
serializer_class = self.serializer_class
|
||||
if self.request.method in ['PUT', 'PATCH']:
|
||||
# trust relationship can't change people involved
|
||||
serializer_class.Meta.read_only_fields = ('trusting', 'trusting',)
|
||||
return serializer_class
|
||||
|
||||
def destroy(self, request, *args, **kwargs):
|
||||
instance = self.get_object()
|
||||
try:
|
||||
self.perform_destroy(instance)
|
||||
except ValidationError as e:
|
||||
return Response({e.code: str(e)}, status.HTTP_400_BAD_REQUEST)
|
||||
return Response(status=status.HTTP_204_NO_CONTENT)
|
||||
|
||||
|
||||
class AliasViewSet(ReadProtectedModelViewSet):
|
||||
"""
|
||||
REST API View set.
|
||||
The djangorestframework plugin will get all `Alias` objects, serialize it to JSON with the given serializer,
|
||||
then render it on /api/note/aliases/
|
||||
then render it on /api/aliases/
|
||||
"""
|
||||
queryset = Alias.objects
|
||||
serializer_class = AliasSerializer
|
||||
|
@ -1,27 +0,0 @@
|
||||
# Generated by Django 2.2.24 on 2021-09-05 19:16
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('note', '0005_auto_20210313_1235'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Trust',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('trusted', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='trusted', to='note.Note', verbose_name='trusted')),
|
||||
('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_plural': 'friendships',
|
||||
'unique_together': {('trusting', 'trusted')},
|
||||
},
|
||||
),
|
||||
]
|
@ -1,13 +1,13 @@
|
||||
# Copyright (C) 2018-2021 by BDE ENS Paris-Saclay
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
from .notes import Alias, Note, NoteClub, NoteSpecial, NoteUser, Trust
|
||||
from .notes import Alias, Note, NoteClub, NoteSpecial, NoteUser
|
||||
from .transactions import MembershipTransaction, Transaction, \
|
||||
TemplateCategory, TransactionTemplate, RecurrentTransaction, SpecialTransaction
|
||||
|
||||
__all__ = [
|
||||
# Notes
|
||||
'Alias', 'Trust', 'Note', 'NoteClub', 'NoteSpecial', 'NoteUser',
|
||||
'Alias', 'Note', 'NoteClub', 'NoteSpecial', 'NoteUser',
|
||||
# Transactions
|
||||
'MembershipTransaction', 'Transaction', 'TemplateCategory', 'TransactionTemplate',
|
||||
'RecurrentTransaction', 'SpecialTransaction',
|
||||
|
@ -217,38 +217,6 @@ class NoteSpecial(Note):
|
||||
return self.special_type
|
||||
|
||||
|
||||
class Trust(models.Model):
|
||||
"""
|
||||
A one-sided trust relationship bertween two users
|
||||
|
||||
If another user considers you as your friend, you can transfer money from
|
||||
them
|
||||
"""
|
||||
|
||||
trusting = models.ForeignKey(
|
||||
Note,
|
||||
on_delete=models.CASCADE,
|
||||
related_name='trusting',
|
||||
verbose_name=_('trusting')
|
||||
)
|
||||
|
||||
trusted = models.ForeignKey(
|
||||
Note,
|
||||
on_delete=models.CASCADE,
|
||||
related_name='trusted',
|
||||
verbose_name=_('trusted')
|
||||
)
|
||||
|
||||
class Meta:
|
||||
verbose_name = _("frienship")
|
||||
verbose_name_plural = _("friendships")
|
||||
unique_together = ("trusting", "trusted")
|
||||
|
||||
def __str__(self):
|
||||
return _("Friendship between {trusting} and {trusted}").format(
|
||||
trusting=str(self.trusting), trusted=str(self.trusted))
|
||||
|
||||
|
||||
class Alias(models.Model):
|
||||
"""
|
||||
points toward a :model:`note.NoteUser` or :model;`note.NoteClub` instance.
|
||||
|
@ -325,8 +325,8 @@ class SpecialTransaction(Transaction):
|
||||
def clean(self):
|
||||
# SpecialTransaction are only possible with NoteSpecial object
|
||||
if self.is_credit() == self.is_debit():
|
||||
raise (ValidationError(_("A special transaction is only possible between a"
|
||||
" Note associated to a payment method and a User or a Club")))
|
||||
raise(ValidationError(_("A special transaction is only possible between a"
|
||||
" Note associated to a payment method and a User or a Club")))
|
||||
|
||||
@transaction.atomic
|
||||
def save(self, *args, **kwargs):
|
||||
|
@ -10,7 +10,7 @@ from django.utils.translation import gettext_lazy as _
|
||||
from note_kfet.middlewares import get_current_request
|
||||
from permission.backends import PermissionBackend
|
||||
|
||||
from .models.notes import Alias, Trust
|
||||
from .models.notes import Alias
|
||||
from .models.transactions import Transaction, TransactionTemplate
|
||||
from .templatetags.pretty_money import pretty_money
|
||||
|
||||
@ -148,71 +148,6 @@ DELETE_TEMPLATE = """
|
||||
"""
|
||||
|
||||
|
||||
class TrustTable(tables.Table):
|
||||
class Meta:
|
||||
attrs = {
|
||||
'class': 'table table condensed table-striped',
|
||||
'id': "trust_table"
|
||||
}
|
||||
model = Trust
|
||||
fields = ("trusted",)
|
||||
template_name = 'django_tables2/bootstrap4.html'
|
||||
|
||||
show_header = False
|
||||
trusted = tables.Column(attrs={'td': {'class': 'text-center'}})
|
||||
|
||||
delete_col = tables.TemplateColumn(
|
||||
template_code=DELETE_TEMPLATE,
|
||||
extra_context={"delete_trans": _('Delete')},
|
||||
attrs={
|
||||
'td': {
|
||||
'class': lambda record: 'col-sm-1'
|
||||
+ (' d-none' if not PermissionBackend.check_perm(
|
||||
get_current_request(), "note.delete_trust", record)
|
||||
else '')}},
|
||||
verbose_name=_("Delete"),)
|
||||
|
||||
|
||||
class TrustedTable(tables.Table):
|
||||
class Meta:
|
||||
attrs = {
|
||||
'class': 'table table condensed table-striped',
|
||||
'id': 'trusted_table'
|
||||
}
|
||||
Model = Trust
|
||||
fields = ("trusting",)
|
||||
template_name = "django_tables2/bootstrap4.html"
|
||||
|
||||
show_header = False
|
||||
trusting = tables.Column(attrs={
|
||||
'td': {'class': 'text-center', 'width': '100%'}})
|
||||
|
||||
trust_back = tables.Column(
|
||||
verbose_name=_("Trust back"),
|
||||
accessor="pk",
|
||||
attrs={
|
||||
'td': {
|
||||
'class': '',
|
||||
'id': lambda record: "trust_back_" + str(record.pk),
|
||||
}
|
||||
},
|
||||
)
|
||||
|
||||
def render_trust_back(self, record):
|
||||
user_note = record.trusted
|
||||
trusting_note = record.trusting
|
||||
if Trust.objects.filter(trusted=trusting_note, trusting=user_note):
|
||||
return ""
|
||||
val = '<button id="'
|
||||
val += str(record.pk)
|
||||
val += '" class="btn btn-success btn-sm text-nowrap" \
|
||||
onclick="create_trust(' + str(record.trusted.pk) + ',' + \
|
||||
str(record.trusting.pk) + ')">'
|
||||
val += str(_("Add back"))
|
||||
val += '</button>'
|
||||
return mark_safe(val)
|
||||
|
||||
|
||||
class AliasTable(tables.Table):
|
||||
class Meta:
|
||||
attrs = {
|
||||
|
@ -2967,134 +2967,6 @@
|
||||
"description": "Supprimer une application OAuth2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"model": "permission.permission",
|
||||
"pk": 190,
|
||||
"fields": {
|
||||
"model": [
|
||||
"note",
|
||||
"trust"
|
||||
],
|
||||
"query": "{\"trusting\": [\"user\", \"note\"]}",
|
||||
"type": "delete",
|
||||
"mask": 1,
|
||||
"field": "",
|
||||
"permanent": false,
|
||||
"description": "Supprimer une amitié à sa note"
|
||||
}
|
||||
},
|
||||
{
|
||||
"model": "permission.permission",
|
||||
"pk": 191,
|
||||
"fields": {
|
||||
"model": [
|
||||
"note",
|
||||
"trust"
|
||||
],
|
||||
"query": "{\"trusting\": [\"user\", \"note\"]}",
|
||||
"type": "add",
|
||||
"mask": 1,
|
||||
"field": "",
|
||||
"permanent": false,
|
||||
"description": "Ajouter une amitié à sa note"
|
||||
}
|
||||
},
|
||||
{
|
||||
"model": "permission.permission",
|
||||
"pk": 192,
|
||||
"fields": {
|
||||
"model": [
|
||||
"note",
|
||||
"trust"
|
||||
],
|
||||
"query": "{\"trusting__is_active\": true}",
|
||||
"type": "add",
|
||||
"mask": 1,
|
||||
"field": "",
|
||||
"permanent": false,
|
||||
"description": "Ajouter une amitié à une note non bloquée"
|
||||
}
|
||||
},
|
||||
{
|
||||
"model": "permission.permission",
|
||||
"pk": 193,
|
||||
"fields": {
|
||||
"model": [
|
||||
"note",
|
||||
"trust"
|
||||
],
|
||||
"query": "{\"trusting__is_active\": true}",
|
||||
"type": "delete",
|
||||
"mask": 3,
|
||||
"field": "",
|
||||
"permanent": false,
|
||||
"description": "Supprimer une amitié à une note non bloquée"
|
||||
}
|
||||
},
|
||||
{
|
||||
"model": "permission.permission",
|
||||
"pk": 194,
|
||||
"fields": {
|
||||
"model": [
|
||||
"note",
|
||||
"trust"
|
||||
],
|
||||
"query": "{}",
|
||||
"type": "view",
|
||||
"mask": 3,
|
||||
"field": "",
|
||||
"permanent": false,
|
||||
"description": "Voir toutes les amitiés, y compris celles des non adhérents"
|
||||
}
|
||||
},
|
||||
{
|
||||
"model": "permission.permission",
|
||||
"pk": 195,
|
||||
"fields": {
|
||||
"model": [
|
||||
"note",
|
||||
"trust"
|
||||
],
|
||||
"query": "{\"trusting__noteuser__user\": [\"user\"]}",
|
||||
"type": "view",
|
||||
"mask": 1,
|
||||
"field": "",
|
||||
"permanent": true,
|
||||
"description": "Voir ses propres amitiés, pour toujours"
|
||||
}
|
||||
},
|
||||
{
|
||||
"model": "permission.permission",
|
||||
"pk": 196,
|
||||
"fields": {
|
||||
"model": [
|
||||
"note",
|
||||
"transaction"
|
||||
],
|
||||
"query": "[\"AND\", {\"source__trusting__trusted\": [\"user\", \"note\"]}, [\"OR\", {\"source__balance__gte\": {\"F\": [\"MUL\", [\"F\", \"amount\"], [\"F\", \"quantity\"]]}}, {\"valid\": false}]]",
|
||||
"type": "add",
|
||||
"mask": 1,
|
||||
"field": "",
|
||||
"permanent": false,
|
||||
"description": "Transférer de l'argent depuis une note amie en restant positif"
|
||||
}
|
||||
},
|
||||
{
|
||||
"model": "permission.permission",
|
||||
"pk": 197,
|
||||
"fields": {
|
||||
"model": [
|
||||
"note",
|
||||
"trust"
|
||||
],
|
||||
"query": "{\"trusted__noteuser__user\": [\"user\"]}",
|
||||
"type": "view",
|
||||
"mask": 1,
|
||||
"field": "",
|
||||
"permanent": true,
|
||||
"description": "Voir ceux nous ayant pour ami, pour toujours"
|
||||
}
|
||||
},
|
||||
{
|
||||
"model": "permission.role",
|
||||
"pk": 1,
|
||||
@ -3129,12 +3001,7 @@
|
||||
186,
|
||||
187,
|
||||
188,
|
||||
189,
|
||||
190,
|
||||
191,
|
||||
195,
|
||||
196,
|
||||
197
|
||||
189
|
||||
]
|
||||
}
|
||||
},
|
||||
@ -3175,9 +3042,7 @@
|
||||
158,
|
||||
159,
|
||||
160,
|
||||
179,
|
||||
189,
|
||||
190
|
||||
179
|
||||
]
|
||||
}
|
||||
},
|
||||
@ -3327,10 +3192,7 @@
|
||||
176,
|
||||
177,
|
||||
178,
|
||||
188,
|
||||
183,
|
||||
186,
|
||||
187
|
||||
183
|
||||
]
|
||||
}
|
||||
},
|
||||
@ -3524,15 +3386,7 @@
|
||||
186,
|
||||
187,
|
||||
188,
|
||||
189,
|
||||
190,
|
||||
191,
|
||||
192,
|
||||
193,
|
||||
194,
|
||||
195,
|
||||
196,
|
||||
197
|
||||
189
|
||||
]
|
||||
}
|
||||
},
|
||||
|
@ -324,23 +324,22 @@ class SogeCredit(models.Model):
|
||||
if self.valid or not self.pk:
|
||||
return
|
||||
|
||||
# bde = Club.objects.get(name="BDE")
|
||||
# kfet = Club.objects.get(name="Kfet")
|
||||
# bde_qs = Membership.objects.filter(user=self.user, club=bde, date_start__gte=bde.membership_start)
|
||||
# kfet_qs = Membership.objects.filter(user=self.user, club=kfet, date_start__gte=kfet.membership_start)
|
||||
bde = Club.objects.get(name="BDE")
|
||||
kfet = Club.objects.get(name="Kfet")
|
||||
bde_qs = Membership.objects.filter(user=self.user, club=bde, date_start__gte=bde.membership_start)
|
||||
kfet_qs = Membership.objects.filter(user=self.user, club=kfet, date_start__gte=kfet.membership_start)
|
||||
|
||||
# # Soge do not pay BDE and kfet memberships this year (2022-2023)
|
||||
# if bde_qs.exists():
|
||||
# m = bde_qs.get()
|
||||
# if MembershipTransaction.objects.filter(membership=m).exists(): # non-free membership
|
||||
# if m.transaction not in self.transactions.all():
|
||||
# self.transactions.add(m.transaction)
|
||||
#
|
||||
# if kfet_qs.exists():
|
||||
# m = kfet_qs.get()
|
||||
# if MembershipTransaction.objects.filter(membership=m).exists(): # non-free membership
|
||||
# if m.transaction not in self.transactions.all():
|
||||
# self.transactions.add(m.transaction)
|
||||
if bde_qs.exists():
|
||||
m = bde_qs.get()
|
||||
if MembershipTransaction.objects.filter(membership=m).exists(): # non-free membership
|
||||
if m.transaction not in self.transactions.all():
|
||||
self.transactions.add(m.transaction)
|
||||
|
||||
if kfet_qs.exists():
|
||||
m = kfet_qs.get()
|
||||
if MembershipTransaction.objects.filter(membership=m).exists(): # non-free membership
|
||||
if m.transaction not in self.transactions.all():
|
||||
self.transactions.add(m.transaction)
|
||||
|
||||
if 'wei' in settings.INSTALLED_APPS:
|
||||
from wei.models import WEIClub
|
||||
|
@ -14,17 +14,14 @@ from .base import WEISurvey, WEISurveyInformation, WEISurveyAlgorithm, WEIBusInf
|
||||
from ...models import WEIMembership
|
||||
|
||||
WORDS = [
|
||||
'ABBA', 'After', 'Alcoolique anonyme', 'Ambiance festive', 'Années 2000', 'Apéro', 'Art',
|
||||
'Baby foot billard biere pong', 'BBQ', 'Before', 'Bière pong', 'Bon enfant', 'Calme', 'Canapé',
|
||||
'Chanson paillarde', 'Chanson populaire', 'Chartreuse', 'Cheerleader', 'Chill', 'Choré',
|
||||
'Cinéma', 'Cocktail', 'Comédie musicle', 'Commercial', 'Copaing', 'Danse', 'Dancefloor',
|
||||
'Electro', 'Fanfare', 'Gin tonic', 'Inclusif', 'Jazz', "Jeux d'alcool", 'Jeux de carte',
|
||||
'Jeux de rôle', 'Jeux de société', 'JUL', 'Jus de fruit', 'Kfet', 'Kleptomanie assurée',
|
||||
'LGBTQ+', 'Livre', 'Morning beer', 'Musique', 'NAPS', 'Paillettes', 'Pastis', 'Paté Hénaff',
|
||||
'Peluche', 'Pena baiona', "Peu d'alcool", 'Pilier de bar', 'PMU', 'Poulpe', 'Punch', 'Rap',
|
||||
'Réveil', 'Rock', 'Rugby', 'Sandwich', 'Serge', 'Shot', 'Sociable', 'Spectacle', 'Techno',
|
||||
'Techno house', 'Thérapie Taxi', 'Tradition kchanaises', 'Troisième mi-temps', 'Turn up',
|
||||
'Vodka', 'Vodka pomme', 'Volley', 'Vomi stratégique'
|
||||
'13 organisé', '3ième mi temps', 'Années 2000', 'Apéro', 'BBQ', 'BP', 'Beauf', 'Binge drinking', 'Bon enfant',
|
||||
'Cartouche', 'Catacombes', 'Chansons paillardes', 'Chansons populaires', 'Chanteur', 'Chartreuse', 'Chill',
|
||||
'Core', 'DJ', 'Dancefloor', 'Danse', 'David Guetta', 'Disco', 'Eau de vie', 'Électro', 'Escalade', 'Familial',
|
||||
'Fanfare', 'Fracassage', 'Féria', 'Hard rock', 'Hoeggarden', 'House', 'Huit-six', 'IPA', 'Inclusif', 'Inferno',
|
||||
'Introverti', 'Jager bomb', 'Jazz', 'Jeux d\'alcool', 'Jeux de rôles', 'Jeux vidéo', 'Jul', 'Jus de fruit',
|
||||
'Karaoké', 'LGBTQI+', 'Lady Gaga', 'Loup garou', 'Morning beer', 'Métal', 'Nuit blanche', 'Ovalie', 'Psychedelic',
|
||||
'Pétanque', 'Rave', 'Reggae', 'Rhum', 'Ricard', 'Rock', 'Rosé', 'Rétro', 'Séducteur', 'Techno', 'Thérapie taxi',
|
||||
'Théâtre', 'Trap', 'Turn up', 'Underground', 'Volley', 'Wati B', 'Zinédine Zidane',
|
||||
]
|
||||
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -7,11 +7,11 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-10-07 09:07+0200\n"
|
||||
"POT-Creation-Date: 2020-11-15 23:21+0100\n"
|
||||
"PO-Revision-Date: 2020-11-16 20:21+0000\n"
|
||||
"Last-Translator: Yohann D'ANELLO <ynerant@crans.org>\n"
|
||||
"Language-Team: German <http://translate.ynerant.fr/projects/nk20/nk20-js/de/"
|
||||
">\n"
|
||||
"Language-Team: German <http://translate.ynerant.fr/projects/nk20/nk20-js/de/>"
|
||||
"\n"
|
||||
"Language: de\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -27,22 +27,6 @@ msgstr "Alias erfolgreich hinzugefügt"
|
||||
msgid "Alias successfully deleted"
|
||||
msgstr "Alias erfolgreich gelöscht"
|
||||
|
||||
#: apps/member/static/member/js/trust.js:14
|
||||
msgid "You can't add yourself as a friend"
|
||||
msgstr ""
|
||||
|
||||
#: apps/member/static/member/js/trust.js:37
|
||||
#, fuzzy
|
||||
#| msgid "Alias successfully added"
|
||||
msgid "Friendship successfully added"
|
||||
msgstr "Alias erfolgreich hinzugefügt"
|
||||
|
||||
#: apps/member/static/member/js/trust.js:53
|
||||
#, fuzzy
|
||||
#| msgid "Alias successfully deleted"
|
||||
msgid "Friendship successfully deleted"
|
||||
msgstr "Alias erfolgreich gelöscht"
|
||||
|
||||
#: apps/note/static/note/js/consos.js:225
|
||||
#, javascript-format
|
||||
msgid ""
|
||||
@ -62,32 +46,32 @@ msgstr ""
|
||||
"ist negativ."
|
||||
|
||||
#: apps/note/static/note/js/consos.js:232
|
||||
#: apps/note/static/note/js/transfer.js:309
|
||||
#: apps/note/static/note/js/transfer.js:412
|
||||
#: apps/note/static/note/js/transfer.js:298
|
||||
#: apps/note/static/note/js/transfer.js:401
|
||||
#, javascript-format
|
||||
msgid "Warning, the emitter note %s is no more a BDE member."
|
||||
msgstr "Warnung, der Emittent Hinweis %s ist kein BDE-Mitglied mehr."
|
||||
|
||||
#: apps/note/static/note/js/consos.js:254
|
||||
#: apps/note/static/note/js/consos.js:253
|
||||
msgid "The transaction couldn't be validated because of insufficient balance."
|
||||
msgstr ""
|
||||
"Die Transaktion konnte aufgrund eines unzureichenden Saldos nicht validiert "
|
||||
"werden."
|
||||
|
||||
#: apps/note/static/note/js/transfer.js:249
|
||||
#: apps/note/static/note/js/transfer.js:238
|
||||
msgid "This field is required and must contain a decimal positive number."
|
||||
msgstr ""
|
||||
"Dieses Feld ist erforderlich und muss eine positive Dezimalzahl enthalten."
|
||||
|
||||
#: apps/note/static/note/js/transfer.js:256
|
||||
#: apps/note/static/note/js/transfer.js:245
|
||||
msgid "The amount must stay under 21,474,836.47 €."
|
||||
msgstr "Der Betrag muss unter 21.474.836,47 € bleiben."
|
||||
|
||||
#: apps/note/static/note/js/transfer.js:262
|
||||
#: apps/note/static/note/js/transfer.js:251
|
||||
msgid "This field is required."
|
||||
msgstr "Dies ist ein Pflichtfeld."
|
||||
|
||||
#: apps/note/static/note/js/transfer.js:288
|
||||
#: apps/note/static/note/js/transfer.js:277
|
||||
#, javascript-format
|
||||
msgid ""
|
||||
"Warning: the transaction of %s from %s to %s was not made because it is the "
|
||||
@ -96,12 +80,12 @@ msgstr ""
|
||||
"Warnung: Die Transaktion von %s von %s nach %s wurde nicht durchgeführt, da "
|
||||
"es sich um die gleiche Quell- und Zielnotiz handelt."
|
||||
|
||||
#: apps/note/static/note/js/transfer.js:312
|
||||
#: apps/note/static/note/js/transfer.js:301
|
||||
#, javascript-format
|
||||
msgid "Warning, the destination note %s is no more a BDE member."
|
||||
msgstr "Warnung, der Bestimmungsvermerk %s ist kein BDE-Mitglied mehr."
|
||||
|
||||
#: apps/note/static/note/js/transfer.js:318
|
||||
#: apps/note/static/note/js/transfer.js:307
|
||||
#, javascript-format
|
||||
msgid ""
|
||||
"Warning, the transaction of %s from the note %s to the note %s succeed, but "
|
||||
@ -110,7 +94,7 @@ msgstr ""
|
||||
"Warnung, die Transaktion von %s von der Note %s zur Note %s gelingt, aber "
|
||||
"die Emitternote %s ist sehr negativ."
|
||||
|
||||
#: apps/note/static/note/js/transfer.js:323
|
||||
#: apps/note/static/note/js/transfer.js:312
|
||||
#, javascript-format
|
||||
msgid ""
|
||||
"Warning, the transaction of %s from the note %s to the note %s succeed, but "
|
||||
@ -119,32 +103,31 @@ msgstr ""
|
||||
"Warnung, die Transaktion von %s von der Note %s zur Note %s gelingt, aber "
|
||||
"die Emitternote %s ist negativ."
|
||||
|
||||
#: apps/note/static/note/js/transfer.js:329
|
||||
#: apps/note/static/note/js/transfer.js:318
|
||||
#, javascript-format
|
||||
msgid "Transfer of %s from %s to %s succeed!"
|
||||
msgstr "Übertragung von %s von %s auf %s gelingt!"
|
||||
|
||||
#: apps/note/static/note/js/transfer.js:336
|
||||
#: apps/note/static/note/js/transfer.js:357
|
||||
#: apps/note/static/note/js/transfer.js:364
|
||||
#: apps/note/static/note/js/transfer.js:325
|
||||
#: apps/note/static/note/js/transfer.js:346
|
||||
#: apps/note/static/note/js/transfer.js:353
|
||||
#, javascript-format
|
||||
msgid "Transfer of %s from %s to %s failed: %s"
|
||||
msgstr "Übertragung von %s von %s auf %s fehlgeschlagen: %s"
|
||||
|
||||
#: apps/note/static/note/js/transfer.js:358
|
||||
#: apps/note/static/note/js/transfer.js:347
|
||||
msgid "insufficient funds"
|
||||
msgstr "unzureichende Geldmittel"
|
||||
|
||||
#: apps/note/static/note/js/transfer.js:411
|
||||
#: apps/note/static/note/js/transfer.js:400
|
||||
msgid "Credit/debit succeed!"
|
||||
msgstr "Kredit/Debit erfolgreich!"
|
||||
|
||||
#: apps/note/static/note/js/transfer.js:418
|
||||
#: apps/note/static/note/js/transfer.js:407
|
||||
#, javascript-format
|
||||
msgid "Credit/debit failed: %s"
|
||||
msgstr "Kredit/Debit fehlgeschlagen: %s"
|
||||
|
||||
#: note_kfet/static/js/base.js:370
|
||||
#: note_kfet/static/js/base.js:366
|
||||
msgid "An error occured while (in)validating this transaction:"
|
||||
msgstr ""
|
||||
"Bei der (Un-)Validierung dieser Transaktion ist ein Fehler aufgetreten:"
|
||||
msgstr "Bei der (Un-)Validierung dieser Transaktion ist ein Fehler aufgetreten:"
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -7,16 +7,16 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-10-07 09:07+0200\n"
|
||||
"PO-Revision-Date: 2022-10-07 13:20+0200\n"
|
||||
"Last-Translator: elkmaennchen <elkmaennchen@crans.org>\n"
|
||||
"Language-Team: \n"
|
||||
"POT-Creation-Date: 2020-11-15 23:21+0100\n"
|
||||
"PO-Revision-Date: 2020-11-21 12:23+0100\n"
|
||||
"Language: es\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Poedit 3.0.1\n"
|
||||
"Last-Translator: elkmaennchen <elkmaennchen@crans.org>\n"
|
||||
"Language-Team: \n"
|
||||
"X-Generator: Poedit 2.3\n"
|
||||
|
||||
#: apps/member/static/member/js/alias.js:17
|
||||
msgid "Alias successfully added"
|
||||
@ -26,18 +26,6 @@ msgstr "Alias añadido con éxito"
|
||||
msgid "Alias successfully deleted"
|
||||
msgstr "Alias suprimido con éxito"
|
||||
|
||||
#: apps/member/static/member/js/trust.js:14
|
||||
msgid "You can't add yourself as a friend"
|
||||
msgstr "No puede añadir asimismo como amig@"
|
||||
|
||||
#: apps/member/static/member/js/trust.js:37
|
||||
msgid "Friendship successfully added"
|
||||
msgstr "Amig@ añadido con éxito"
|
||||
|
||||
#: apps/member/static/member/js/trust.js:53
|
||||
msgid "Friendship successfully deleted"
|
||||
msgstr "Amig@ suprimido con éxito"
|
||||
|
||||
#: apps/note/static/note/js/consos.js:225
|
||||
#, javascript-format
|
||||
msgid ""
|
||||
@ -56,29 +44,30 @@ msgstr ""
|
||||
"Cuidado, la transacción de %s fue un éxito, pero la note %s está negativa."
|
||||
|
||||
#: apps/note/static/note/js/consos.js:232
|
||||
#: apps/note/static/note/js/transfer.js:309
|
||||
#: apps/note/static/note/js/transfer.js:412
|
||||
#: apps/note/static/note/js/transfer.js:298
|
||||
#: apps/note/static/note/js/transfer.js:401
|
||||
#, javascript-format
|
||||
msgid "Warning, the emitter note %s is no more a BDE member."
|
||||
msgstr "Cuidado, la note remitente %s no está más miembro del BDE."
|
||||
|
||||
#: apps/note/static/note/js/consos.js:254
|
||||
#: apps/note/static/note/js/consos.js:253
|
||||
msgid "The transaction couldn't be validated because of insufficient balance."
|
||||
msgstr "La transacción no pudo ser validada por culpa de saldo demasiado bajo."
|
||||
msgstr ""
|
||||
"La transacción no pudo ser validada por culpa de saldo demasiado bajo."
|
||||
|
||||
#: apps/note/static/note/js/transfer.js:249
|
||||
#: apps/note/static/note/js/transfer.js:238
|
||||
msgid "This field is required and must contain a decimal positive number."
|
||||
msgstr "Este campo obligatorio requiere un número decimal positivo."
|
||||
|
||||
#: apps/note/static/note/js/transfer.js:256
|
||||
#: apps/note/static/note/js/transfer.js:245
|
||||
msgid "The amount must stay under 21,474,836.47 €."
|
||||
msgstr "El monto no puede superar los 21 474 836,47 €."
|
||||
|
||||
#: apps/note/static/note/js/transfer.js:262
|
||||
#: apps/note/static/note/js/transfer.js:251
|
||||
msgid "This field is required."
|
||||
msgstr "Este campo es obligatorio."
|
||||
|
||||
#: apps/note/static/note/js/transfer.js:288
|
||||
#: apps/note/static/note/js/transfer.js:277
|
||||
#, javascript-format
|
||||
msgid ""
|
||||
"Warning: the transaction of %s from %s to %s was not made because it is the "
|
||||
@ -87,12 +76,12 @@ msgstr ""
|
||||
"Cuidado : la transacción de %s de %s a %s no fue echa porque la fuente y el "
|
||||
"destino son iguales."
|
||||
|
||||
#: apps/note/static/note/js/transfer.js:312
|
||||
#: apps/note/static/note/js/transfer.js:301
|
||||
#, javascript-format
|
||||
msgid "Warning, the destination note %s is no more a BDE member."
|
||||
msgstr "Cuidado, la note destino %s no está más miembro del BDE."
|
||||
|
||||
#: apps/note/static/note/js/transfer.js:318
|
||||
#: apps/note/static/note/js/transfer.js:307
|
||||
#, javascript-format
|
||||
msgid ""
|
||||
"Warning, the transaction of %s from the note %s to the note %s succeed, but "
|
||||
@ -101,7 +90,7 @@ msgstr ""
|
||||
"Cuidado, la transacción de %s de la note %s a la note %s fue un éxito, pero "
|
||||
"la note fuente %s está muy negativa."
|
||||
|
||||
#: apps/note/static/note/js/transfer.js:323
|
||||
#: apps/note/static/note/js/transfer.js:312
|
||||
#, javascript-format
|
||||
msgid ""
|
||||
"Warning, the transaction of %s from the note %s to the note %s succeed, but "
|
||||
@ -110,31 +99,31 @@ msgstr ""
|
||||
"Cuidado, la transacción de %s de la note %s a la note %s fue un éxito, pero "
|
||||
"la note fuente %s está negativa."
|
||||
|
||||
#: apps/note/static/note/js/transfer.js:329
|
||||
#: apps/note/static/note/js/transfer.js:318
|
||||
#, javascript-format
|
||||
msgid "Transfer of %s from %s to %s succeed!"
|
||||
msgstr "¡ La transacción de %s de %s a %s fue un éxito !"
|
||||
|
||||
#: apps/note/static/note/js/transfer.js:336
|
||||
#: apps/note/static/note/js/transfer.js:357
|
||||
#: apps/note/static/note/js/transfer.js:364
|
||||
#: apps/note/static/note/js/transfer.js:325
|
||||
#: apps/note/static/note/js/transfer.js:346
|
||||
#: apps/note/static/note/js/transfer.js:353
|
||||
#, javascript-format
|
||||
msgid "Transfer of %s from %s to %s failed: %s"
|
||||
msgstr "La transacción de %s de %s a %s fue un fracaso : %s"
|
||||
|
||||
#: apps/note/static/note/js/transfer.js:358
|
||||
#: apps/note/static/note/js/transfer.js:347
|
||||
msgid "insufficient funds"
|
||||
msgstr "fundos insuficientes"
|
||||
|
||||
#: apps/note/static/note/js/transfer.js:411
|
||||
#: apps/note/static/note/js/transfer.js:400
|
||||
msgid "Credit/debit succeed!"
|
||||
msgstr "¡ Crédito/débito tubo éxito !"
|
||||
|
||||
#: apps/note/static/note/js/transfer.js:418
|
||||
#: apps/note/static/note/js/transfer.js:407
|
||||
#, javascript-format
|
||||
msgid "Credit/debit failed: %s"
|
||||
msgstr "Crédito/débito falló : %s"
|
||||
|
||||
#: note_kfet/static/js/base.js:370
|
||||
#: note_kfet/static/js/base.js:366
|
||||
msgid "An error occured while (in)validating this transaction:"
|
||||
msgstr "Un error ocurrió durante la (in)validación de esta transacción :"
|
||||
|
@ -7,16 +7,16 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-10-07 09:10+0200\n"
|
||||
"PO-Revision-Date: 2022-04-11 22:05+0200\n"
|
||||
"Last-Translator: elkmaennchen <elkmaennchen@crans.org>\n"
|
||||
"POT-Creation-Date: 2021-10-07 22:55+0200\n"
|
||||
"PO-Revision-Date: 2020-11-16 20:02+0000\n"
|
||||
"Last-Translator: Yohann D'ANELLO <ynerant@crans.org>\n"
|
||||
"Language-Team: French <http://translate.ynerant.fr/projects/nk20/nk20/fr/>\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||
"X-Generator: Poedit 3.0\n"
|
||||
"X-Generator: Weblate 4.3.2\n"
|
||||
|
||||
#: apps/activity/apps.py:10 apps/activity/models.py:151
|
||||
#: apps/activity/models.py:167
|
||||
@ -56,7 +56,7 @@ msgstr "Vous ne pouvez pas inviter plus de 3 personnes à cette activité."
|
||||
#: apps/member/models.py:199
|
||||
#: apps/member/templates/member/includes/club_info.html:4
|
||||
#: apps/member/templates/member/includes/profile_info.html:4
|
||||
#: apps/note/models/notes.py:263 apps/note/models/transactions.py:26
|
||||
#: apps/note/models/notes.py:231 apps/note/models/transactions.py:26
|
||||
#: apps/note/models/transactions.py:46 apps/note/models/transactions.py:301
|
||||
#: apps/permission/models.py:330
|
||||
#: apps/registration/templates/registration/future_profile_detail.html:16
|
||||
@ -114,7 +114,7 @@ msgstr "Lieu où l'activité est organisée, par exemple la Kfet."
|
||||
msgid "type"
|
||||
msgstr "type"
|
||||
|
||||
#: apps/activity/models.py:89 apps/logs/models.py:22 apps/member/models.py:307
|
||||
#: apps/activity/models.py:89 apps/logs/models.py:22 apps/member/models.py:305
|
||||
#: apps/note/models/notes.py:148 apps/treasury/models.py:285
|
||||
#: apps/wei/models.py:173 apps/wei/templates/wei/attribute_bus_1A.html:13
|
||||
#: apps/wei/templates/wei/survey.html:15
|
||||
@ -295,7 +295,7 @@ msgstr "Invité supprimé"
|
||||
#: apps/note/models/transactions.py:257
|
||||
#: apps/note/templates/note/transaction_form.html:17
|
||||
#: apps/note/templates/note/transaction_form.html:152
|
||||
#: note_kfet/templates/base.html:72
|
||||
#: note_kfet/templates/base.html:73
|
||||
msgid "Transfer"
|
||||
msgstr "Virement"
|
||||
|
||||
@ -388,7 +388,7 @@ msgid "validate"
|
||||
msgstr "valider"
|
||||
|
||||
#: apps/activity/templates/activity/includes/activity_info.html:71
|
||||
#: apps/logs/models.py:64 apps/note/tables.py:260
|
||||
#: apps/logs/models.py:64 apps/note/tables.py:195
|
||||
msgid "edit"
|
||||
msgstr "modifier"
|
||||
|
||||
@ -400,7 +400,7 @@ msgstr "Inviter"
|
||||
msgid "Create new activity"
|
||||
msgstr "Créer une nouvelle activité"
|
||||
|
||||
#: apps/activity/views.py:67 note_kfet/templates/base.html:90
|
||||
#: apps/activity/views.py:67 note_kfet/templates/base.html:91
|
||||
msgid "Activities"
|
||||
msgstr "Activités"
|
||||
|
||||
@ -466,7 +466,7 @@ msgstr "nouvelles données"
|
||||
msgid "create"
|
||||
msgstr "créer"
|
||||
|
||||
#: apps/logs/models.py:65 apps/note/tables.py:230 apps/note/tables.py:277
|
||||
#: apps/logs/models.py:65 apps/note/tables.py:165 apps/note/tables.py:211
|
||||
#: apps/permission/models.py:127 apps/treasury/tables.py:38
|
||||
#: apps/wei/tables.py:74
|
||||
msgid "delete"
|
||||
@ -507,11 +507,11 @@ msgstr "cotisation pour adhérer (normalien élève)"
|
||||
msgid "membership fee (unpaid students)"
|
||||
msgstr "cotisation pour adhérer (normalien étudiant)"
|
||||
|
||||
#: apps/member/admin.py:65 apps/member/models.py:319
|
||||
#: apps/member/admin.py:65 apps/member/models.py:317
|
||||
msgid "roles"
|
||||
msgstr "rôles"
|
||||
|
||||
#: apps/member/admin.py:66 apps/member/models.py:333
|
||||
#: apps/member/admin.py:66 apps/member/models.py:331
|
||||
msgid "fee"
|
||||
msgstr "cotisation"
|
||||
|
||||
@ -610,14 +610,14 @@ msgid "hash"
|
||||
msgstr "haché"
|
||||
|
||||
#: apps/member/models.py:38
|
||||
#: apps/member/templates/member/includes/profile_info.html:43
|
||||
#: apps/member/templates/member/includes/profile_info.html:35
|
||||
#: apps/registration/templates/registration/future_profile_detail.html:40
|
||||
#: apps/wei/templates/wei/weimembership_form.html:44
|
||||
msgid "phone number"
|
||||
msgstr "numéro de téléphone"
|
||||
|
||||
#: apps/member/models.py:45
|
||||
#: apps/member/templates/member/includes/profile_info.html:37
|
||||
#: apps/member/templates/member/includes/profile_info.html:29
|
||||
#: apps/registration/templates/registration/future_profile_detail.html:34
|
||||
#: apps/wei/templates/wei/weimembership_form.html:38
|
||||
msgid "section"
|
||||
@ -705,14 +705,14 @@ msgid "Year of entry to the school (None if not ENS student)"
|
||||
msgstr "Année d'entrée dans l'école (None si non-étudiant·e de l'ENS)"
|
||||
|
||||
#: apps/member/models.py:83
|
||||
#: apps/member/templates/member/includes/profile_info.html:47
|
||||
#: apps/member/templates/member/includes/profile_info.html:39
|
||||
#: apps/registration/templates/registration/future_profile_detail.html:37
|
||||
#: apps/wei/templates/wei/weimembership_form.html:41
|
||||
msgid "address"
|
||||
msgstr "adresse"
|
||||
|
||||
#: apps/member/models.py:90
|
||||
#: apps/member/templates/member/includes/profile_info.html:50
|
||||
#: apps/member/templates/member/includes/profile_info.html:42
|
||||
#: apps/registration/templates/registration/future_profile_detail.html:43
|
||||
#: apps/wei/templates/wei/weimembership_form.html:47
|
||||
msgid "paid"
|
||||
@ -784,7 +784,7 @@ msgstr "Activez votre compte Note Kfet"
|
||||
|
||||
#: apps/member/models.py:204
|
||||
#: apps/member/templates/member/includes/club_info.html:55
|
||||
#: apps/member/templates/member/includes/profile_info.html:40
|
||||
#: apps/member/templates/member/includes/profile_info.html:32
|
||||
#: apps/registration/templates/registration/future_profile_detail.html:22
|
||||
#: apps/wei/templates/wei/base.html:70
|
||||
#: apps/wei/templates/wei/weimembership_form.html:20
|
||||
@ -833,46 +833,46 @@ msgstr ""
|
||||
"Date maximale d'une fin d'adhésion, après laquelle les adhérents doivent la "
|
||||
"renouveler."
|
||||
|
||||
#: apps/member/models.py:288 apps/member/models.py:313
|
||||
#: apps/member/models.py:286 apps/member/models.py:311
|
||||
#: apps/note/models/notes.py:176
|
||||
msgid "club"
|
||||
msgstr "club"
|
||||
|
||||
#: apps/member/models.py:289
|
||||
#: apps/member/models.py:287
|
||||
msgid "clubs"
|
||||
msgstr "clubs"
|
||||
|
||||
#: apps/member/models.py:324
|
||||
#: apps/member/models.py:322
|
||||
msgid "membership starts on"
|
||||
msgstr "l'adhésion commence le"
|
||||
|
||||
#: apps/member/models.py:328
|
||||
#: apps/member/models.py:326
|
||||
msgid "membership ends on"
|
||||
msgstr "l'adhésion finit le"
|
||||
|
||||
#: apps/member/models.py:430
|
||||
#: apps/member/models.py:428
|
||||
#, python-brace-format
|
||||
msgid "The role {role} does not apply to the club {club}."
|
||||
msgstr "Le rôle {role} ne s'applique pas au club {club}."
|
||||
|
||||
#: apps/member/models.py:439 apps/member/views.py:712
|
||||
#: apps/member/models.py:437 apps/member/views.py:651
|
||||
msgid "User is already a member of the club"
|
||||
msgstr "L'utilisateur est déjà membre du club"
|
||||
|
||||
#: apps/member/models.py:451 apps/member/views.py:721
|
||||
#: apps/member/models.py:449 apps/member/views.py:660
|
||||
msgid "User is not a member of the parent club"
|
||||
msgstr "L'utilisateur n'est pas membre du club parent"
|
||||
|
||||
#: apps/member/models.py:504
|
||||
#: apps/member/models.py:502
|
||||
#, python-brace-format
|
||||
msgid "Membership of {user} for the club {club}"
|
||||
msgstr "Adhésion de {user} pour le club {club}"
|
||||
|
||||
#: apps/member/models.py:507 apps/note/models/transactions.py:389
|
||||
#: apps/member/models.py:505 apps/note/models/transactions.py:389
|
||||
msgid "membership"
|
||||
msgstr "adhésion"
|
||||
|
||||
#: apps/member/models.py:508
|
||||
#: apps/member/models.py:506
|
||||
msgid "memberships"
|
||||
msgstr "adhésions"
|
||||
|
||||
@ -985,14 +985,13 @@ msgstr ""
|
||||
"seront à nouveau possible."
|
||||
|
||||
#: apps/member/templates/member/club_alias.html:10
|
||||
#: apps/member/templates/member/profile_alias.html:10 apps/member/views.py:287
|
||||
#: apps/member/views.py:517
|
||||
#: apps/member/templates/member/profile_alias.html:10 apps/member/views.py:253
|
||||
#: apps/member/views.py:456
|
||||
msgid "Note aliases"
|
||||
msgstr "Alias de la note"
|
||||
|
||||
#: apps/member/templates/member/club_alias.html:20
|
||||
#: apps/member/templates/member/profile_alias.html:19
|
||||
#: apps/member/templates/member/profile_trust.html:19
|
||||
#: apps/treasury/tables.py:99
|
||||
#: apps/treasury/templates/treasury/sogecredit_list.html:34
|
||||
#: apps/treasury/templates/treasury/sogecredit_list.html:73
|
||||
@ -1045,7 +1044,7 @@ msgid "membership fee"
|
||||
msgstr "cotisation pour adhérer"
|
||||
|
||||
#: apps/member/templates/member/includes/club_info.html:43
|
||||
#: apps/member/templates/member/includes/profile_info.html:55
|
||||
#: apps/member/templates/member/includes/profile_info.html:47
|
||||
#: apps/treasury/templates/treasury/sogecredit_detail.html:24
|
||||
#: apps/wei/templates/wei/base.html:60
|
||||
msgid "balance"
|
||||
@ -1053,7 +1052,7 @@ msgstr "solde du compte"
|
||||
|
||||
#: apps/member/templates/member/includes/club_info.html:47
|
||||
#: apps/member/templates/member/includes/profile_info.html:20
|
||||
#: apps/note/models/notes.py:287 apps/wei/templates/wei/base.html:66
|
||||
#: apps/note/models/notes.py:255 apps/wei/templates/wei/base.html:66
|
||||
msgid "aliases"
|
||||
msgstr "alias"
|
||||
|
||||
@ -1077,16 +1076,7 @@ msgstr "mot de passe"
|
||||
msgid "Change password"
|
||||
msgstr "Changer le mot de passe"
|
||||
|
||||
#: apps/member/templates/member/includes/profile_info.html:28
|
||||
#: apps/note/models/notes.py:244
|
||||
msgid "friendships"
|
||||
msgstr "amitiés"
|
||||
|
||||
#: apps/member/templates/member/includes/profile_info.html:32
|
||||
msgid "Manage friendships"
|
||||
msgstr "Gérer les amitiés"
|
||||
|
||||
#: apps/member/templates/member/includes/profile_info.html:63
|
||||
#: apps/member/templates/member/includes/profile_info.html:55
|
||||
msgid "API token"
|
||||
msgstr "Accès API"
|
||||
|
||||
@ -1158,27 +1148,6 @@ msgstr "Cliquez ici pour renvoyer un lien de validation."
|
||||
msgid "View my memberships"
|
||||
msgstr "Voir mes adhésions"
|
||||
|
||||
#: apps/member/templates/member/profile_trust.html:10
|
||||
msgid "Add friends"
|
||||
msgstr "Ajouter des amis"
|
||||
|
||||
#: apps/member/templates/member/profile_trust.html:28
|
||||
msgid ""
|
||||
"Adding someone as a friend enables them to initiate transactions coming from "
|
||||
"your account (while keeping your balance positive). This is designed to "
|
||||
"simplify using note kfet transfers to transfer money between users. The "
|
||||
"intent is that one person can make all transfers for a group of friends "
|
||||
"without needing additional rights among them."
|
||||
msgstr ""
|
||||
"Ajouter quelqu'un⋅e en ami⋅e lui permet de me prélever de l'argent (tant que "
|
||||
"ma note reste positive). Ceci sert à simplifier les remboursements entre "
|
||||
"ami⋅es via note. En effet, une personne peut effectuer tous les transferts "
|
||||
"sans posséder de droits supplémentaires."
|
||||
|
||||
#: apps/member/templates/member/profile_trust.html:39
|
||||
msgid "People having you as a friend"
|
||||
msgstr "Personnes vous ayant ajouté"
|
||||
|
||||
#: apps/member/templates/member/profile_update.html:18
|
||||
msgid "Save Changes"
|
||||
msgstr "Sauvegarder les changements"
|
||||
@ -1199,39 +1168,35 @@ msgstr "Détails de l'utilisateur"
|
||||
msgid "Search user"
|
||||
msgstr "Chercher un utilisateur"
|
||||
|
||||
#: apps/member/views.py:253
|
||||
msgid "Note friendships"
|
||||
msgstr "Amitiés note"
|
||||
|
||||
#: apps/member/views.py:308
|
||||
#: apps/member/views.py:273
|
||||
msgid "Update note picture"
|
||||
msgstr "Modifier la photo de la note"
|
||||
|
||||
#: apps/member/views.py:354
|
||||
#: apps/member/views.py:319
|
||||
msgid "Manage auth token"
|
||||
msgstr "Gérer les jetons d'authentification"
|
||||
|
||||
#: apps/member/views.py:381
|
||||
#: apps/member/views.py:346
|
||||
msgid "Create new club"
|
||||
msgstr "Créer un nouveau club"
|
||||
|
||||
#: apps/member/views.py:400
|
||||
#: apps/member/views.py:365
|
||||
msgid "Search club"
|
||||
msgstr "Chercher un club"
|
||||
|
||||
#: apps/member/views.py:433
|
||||
#: apps/member/views.py:398
|
||||
msgid "Club detail"
|
||||
msgstr "Détails du club"
|
||||
|
||||
#: apps/member/views.py:540
|
||||
#: apps/member/views.py:479
|
||||
msgid "Update club"
|
||||
msgstr "Modifier le club"
|
||||
|
||||
#: apps/member/views.py:574
|
||||
#: apps/member/views.py:513
|
||||
msgid "Add new member to the club"
|
||||
msgstr "Ajouter un nouveau membre au club"
|
||||
|
||||
#: apps/member/views.py:703 apps/wei/views.py:973
|
||||
#: apps/member/views.py:642 apps/wei/views.py:973
|
||||
msgid ""
|
||||
"This user don't have enough money to join this club, and can't have a "
|
||||
"negative balance."
|
||||
@ -1239,19 +1204,19 @@ msgstr ""
|
||||
"Cet utilisateur n'a pas assez d'argent pour rejoindre ce club et ne peut pas "
|
||||
"avoir un solde négatif."
|
||||
|
||||
#: apps/member/views.py:725
|
||||
#: apps/member/views.py:664
|
||||
msgid "The membership must start after {:%m-%d-%Y}."
|
||||
msgstr "L'adhésion doit commencer après le {:%d/%m/%Y}."
|
||||
|
||||
#: apps/member/views.py:730
|
||||
#: apps/member/views.py:669
|
||||
msgid "The membership must begin before {:%m-%d-%Y}."
|
||||
msgstr "L'adhésion doit commencer avant le {:%d/%m/%Y}."
|
||||
|
||||
#: apps/member/views.py:876
|
||||
#: apps/member/views.py:815
|
||||
msgid "Manage roles of an user in the club"
|
||||
msgstr "Gérer les rôles d'un utilisateur dans le club"
|
||||
|
||||
#: apps/member/views.py:901
|
||||
#: apps/member/views.py:840
|
||||
msgid "Members of the club"
|
||||
msgstr "Membres du club"
|
||||
|
||||
@ -1269,7 +1234,7 @@ msgstr "destination"
|
||||
msgid "amount"
|
||||
msgstr "montant"
|
||||
|
||||
#: apps/note/api/serializers.py:199 apps/note/api/serializers.py:205
|
||||
#: apps/note/api/serializers.py:183 apps/note/api/serializers.py:189
|
||||
#: apps/note/models/transactions.py:228
|
||||
msgid ""
|
||||
"The transaction can't be saved since the source note or the destination note "
|
||||
@ -1401,47 +1366,30 @@ msgstr "note spéciale"
|
||||
msgid "special notes"
|
||||
msgstr "notes spéciales"
|
||||
|
||||
#: apps/note/models/notes.py:232
|
||||
msgid "trusting"
|
||||
msgstr "note"
|
||||
|
||||
#: apps/note/models/notes.py:239
|
||||
msgid "trusted"
|
||||
msgstr "ami"
|
||||
|
||||
#: apps/note/models/notes.py:243
|
||||
msgid "frienship"
|
||||
msgstr "amitié"
|
||||
|
||||
#: apps/note/models/notes.py:248
|
||||
#, python-brace-format
|
||||
msgid "Friendship between {trusting} and {trusted}"
|
||||
msgstr "Amitié entre {trusting} et {trusted}"
|
||||
|
||||
#: apps/note/models/notes.py:269
|
||||
#: apps/note/models/notes.py:237
|
||||
msgid "Invalid alias"
|
||||
msgstr "Alias invalide"
|
||||
|
||||
#: apps/note/models/notes.py:286
|
||||
#: apps/note/models/notes.py:254
|
||||
msgid "alias"
|
||||
msgstr "alias"
|
||||
|
||||
#: apps/note/models/notes.py:310
|
||||
#: apps/note/models/notes.py:278
|
||||
msgid "Alias is too long."
|
||||
msgstr "L'alias est trop long."
|
||||
|
||||
#: apps/note/models/notes.py:313
|
||||
#: apps/note/models/notes.py:281
|
||||
msgid ""
|
||||
"This alias contains only complex character. Please use a more simple alias."
|
||||
msgstr ""
|
||||
"Cet alias ne contient que des caractères complexes. Merci d'utiliser un "
|
||||
"alias plus simple."
|
||||
|
||||
#: apps/note/models/notes.py:317
|
||||
#: apps/note/models/notes.py:285
|
||||
msgid "An alias with a similar name already exists: {} "
|
||||
msgstr "Un alias avec un nom similaire existe déjà : {} "
|
||||
|
||||
#: apps/note/models/notes.py:331
|
||||
#: apps/note/models/notes.py:299
|
||||
msgid "You can't delete your main alias."
|
||||
msgstr "Vous ne pouvez pas supprimer votre alias principal."
|
||||
|
||||
@ -1587,8 +1535,7 @@ msgstr "Cliquez pour valider"
|
||||
msgid "No reason specified"
|
||||
msgstr "Pas de motif spécifié"
|
||||
|
||||
#: apps/note/tables.py:166 apps/note/tables.py:173 apps/note/tables.py:234
|
||||
#: apps/note/tables.py:279 apps/treasury/tables.py:39
|
||||
#: apps/note/tables.py:169 apps/note/tables.py:213 apps/treasury/tables.py:39
|
||||
#: apps/treasury/templates/treasury/invoice_confirm_delete.html:30
|
||||
#: apps/treasury/templates/treasury/sogecredit_detail.html:65
|
||||
#: apps/wei/tables.py:75 apps/wei/tables.py:118
|
||||
@ -1599,15 +1546,7 @@ msgstr "Pas de motif spécifié"
|
||||
msgid "Delete"
|
||||
msgstr "Supprimer"
|
||||
|
||||
#: apps/note/tables.py:191
|
||||
msgid "Trust back"
|
||||
msgstr "Ajouter en ami"
|
||||
|
||||
#: apps/note/tables.py:211
|
||||
msgid "Add back"
|
||||
msgstr "Ajouter"
|
||||
|
||||
#: apps/note/tables.py:262 apps/note/templates/note/conso_form.html:132
|
||||
#: apps/note/tables.py:197 apps/note/templates/note/conso_form.html:132
|
||||
#: apps/wei/tables.py:49 apps/wei/tables.py:50
|
||||
#: apps/wei/templates/wei/base.html:89
|
||||
#: apps/wei/templates/wei/bus_detail.html:20
|
||||
@ -1617,7 +1556,7 @@ msgstr "Ajouter"
|
||||
msgid "Edit"
|
||||
msgstr "Éditer"
|
||||
|
||||
#: apps/note/tables.py:266 apps/note/tables.py:293
|
||||
#: apps/note/tables.py:201 apps/note/tables.py:224
|
||||
msgid "Hide/Show"
|
||||
msgstr "Afficher/Masquer"
|
||||
|
||||
@ -1778,7 +1717,7 @@ msgstr "Chercher un bouton"
|
||||
msgid "Update button"
|
||||
msgstr "Modifier le bouton"
|
||||
|
||||
#: apps/note/views.py:151 note_kfet/templates/base.html:66
|
||||
#: apps/note/views.py:151 note_kfet/templates/base.html:67
|
||||
msgid "Consumptions"
|
||||
msgstr "Consommations"
|
||||
|
||||
@ -1976,7 +1915,7 @@ msgstr ""
|
||||
"Vous n'avez pas la permission d'ajouter une instance du modèle « {model} » "
|
||||
"avec ces paramètres. Merci de les corriger et de réessayer."
|
||||
|
||||
#: apps/permission/views.py:112 note_kfet/templates/base.html:108
|
||||
#: apps/permission/views.py:112 note_kfet/templates/base.html:109
|
||||
msgid "Rights"
|
||||
msgstr "Droits"
|
||||
|
||||
@ -2183,7 +2122,7 @@ msgstr ""
|
||||
msgid "Invalidate pre-registration"
|
||||
msgstr "Invalider l'inscription"
|
||||
|
||||
#: apps/treasury/apps.py:12 note_kfet/templates/base.html:96
|
||||
#: apps/treasury/apps.py:12 note_kfet/templates/base.html:97
|
||||
msgid "Treasury"
|
||||
msgstr "Trésorerie"
|
||||
|
||||
@ -2325,7 +2264,7 @@ msgstr "proxys de transactions spéciales"
|
||||
msgid "credit transaction"
|
||||
msgstr "transaction de crédit"
|
||||
|
||||
#: apps/treasury/models.py:431
|
||||
#: apps/treasury/models.py:430
|
||||
msgid ""
|
||||
"This user doesn't have enough money to pay the memberships with its note. "
|
||||
"Please ask her/him to credit the note before invalidating this credit."
|
||||
@ -2333,16 +2272,16 @@ msgstr ""
|
||||
"Cet utilisateur n'a pas assez d'argent pour payer les adhésions avec sa "
|
||||
"note. Merci de lui demander de recharger sa note avant d'invalider ce crédit."
|
||||
|
||||
#: apps/treasury/models.py:452
|
||||
#: apps/treasury/models.py:451
|
||||
#: apps/treasury/templates/treasury/sogecredit_detail.html:10
|
||||
msgid "Credit from the Société générale"
|
||||
msgstr "Crédit de la Société générale"
|
||||
|
||||
#: apps/treasury/models.py:453
|
||||
#: apps/treasury/models.py:452
|
||||
msgid "Credits from the Société générale"
|
||||
msgstr "Crédits de la Société générale"
|
||||
|
||||
#: apps/treasury/models.py:456
|
||||
#: apps/treasury/models.py:455
|
||||
#, python-brace-format
|
||||
msgid "Soge credit for {user}"
|
||||
msgstr "Crédit de la société générale pour l'utilisateur {user}"
|
||||
@ -2591,7 +2530,7 @@ msgstr "Gérer les crédits de la Société générale"
|
||||
|
||||
#: apps/wei/apps.py:10 apps/wei/models.py:50 apps/wei/models.py:51
|
||||
#: apps/wei/models.py:62 apps/wei/models.py:180
|
||||
#: note_kfet/templates/base.html:102
|
||||
#: note_kfet/templates/base.html:103
|
||||
msgid "WEI"
|
||||
msgstr "WEI"
|
||||
|
||||
@ -2599,7 +2538,7 @@ msgstr "WEI"
|
||||
msgid "The selected user is not validated. Please validate its account first"
|
||||
msgstr ""
|
||||
"L'utilisateur sélectionné n'est pas validé. Merci de d'abord valider son "
|
||||
"compte"
|
||||
"compte."
|
||||
|
||||
#: apps/wei/forms/registration.py:59 apps/wei/models.py:126
|
||||
#: apps/wei/models.py:323
|
||||
@ -2640,7 +2579,7 @@ msgstr "Sélectionnez les rôles qui vous intéressent."
|
||||
msgid "This team doesn't belong to the given bus."
|
||||
msgstr "Cette équipe n'appartient pas à ce bus."
|
||||
|
||||
#: apps/wei/forms/surveys/wei2021.py:35 apps/wei/forms/surveys/wei2022.py:38
|
||||
#: apps/wei/forms/surveys/wei2021.py:35
|
||||
msgid "Choose a word:"
|
||||
msgstr "Choisissez un mot :"
|
||||
|
||||
@ -3201,19 +3140,19 @@ msgstr "Répartir les 1A dans les bus"
|
||||
msgid "Attribute bus"
|
||||
msgstr "Attribuer un bus"
|
||||
|
||||
#: note_kfet/settings/base.py:172
|
||||
#: note_kfet/settings/base.py:161
|
||||
msgid "German"
|
||||
msgstr "Allemand"
|
||||
|
||||
#: note_kfet/settings/base.py:173
|
||||
#: note_kfet/settings/base.py:162
|
||||
msgid "English"
|
||||
msgstr "Anglais"
|
||||
|
||||
#: note_kfet/settings/base.py:174
|
||||
#: note_kfet/settings/base.py:163
|
||||
msgid "Spanish"
|
||||
msgstr "Espagnol"
|
||||
|
||||
#: note_kfet/settings/base.py:175
|
||||
#: note_kfet/settings/base.py:164
|
||||
msgid "French"
|
||||
msgstr "Français"
|
||||
|
||||
@ -3270,7 +3209,7 @@ msgstr ""
|
||||
"erreur, qui sera corrigée rapidement. Vous pouvez désormais aller boire une "
|
||||
"bière."
|
||||
|
||||
#: note_kfet/templates/autocomplete_model.html:15
|
||||
#: note_kfet/templates/autocomplete_model.html:14
|
||||
msgid "Reset"
|
||||
msgstr "Réinitialiser"
|
||||
|
||||
@ -3278,34 +3217,34 @@ msgstr "Réinitialiser"
|
||||
msgid "The ENS Paris-Saclay BDE note."
|
||||
msgstr "La note du BDE de l'ENS Paris-Saclay."
|
||||
|
||||
#: note_kfet/templates/base.html:78
|
||||
#: note_kfet/templates/base.html:79
|
||||
msgid "Users"
|
||||
msgstr "Utilisateurs"
|
||||
|
||||
#: note_kfet/templates/base.html:84
|
||||
#: note_kfet/templates/base.html:85
|
||||
msgid "Clubs"
|
||||
msgstr "Clubs"
|
||||
|
||||
#: note_kfet/templates/base.html:113
|
||||
#: note_kfet/templates/base.html:114
|
||||
msgid "Admin"
|
||||
msgstr "Admin"
|
||||
|
||||
#: note_kfet/templates/base.html:127
|
||||
#: note_kfet/templates/base.html:128
|
||||
msgid "My account"
|
||||
msgstr "Mon compte"
|
||||
|
||||
#: note_kfet/templates/base.html:130
|
||||
#: note_kfet/templates/base.html:131
|
||||
msgid "Log out"
|
||||
msgstr "Se déconnecter"
|
||||
|
||||
#: note_kfet/templates/base.html:138
|
||||
#: note_kfet/templates/base.html:139
|
||||
#: note_kfet/templates/registration/signup.html:6
|
||||
#: note_kfet/templates/registration/signup.html:11
|
||||
#: note_kfet/templates/registration/signup.html:28
|
||||
msgid "Sign up"
|
||||
msgstr "Inscription"
|
||||
|
||||
#: note_kfet/templates/base.html:145
|
||||
#: note_kfet/templates/base.html:146
|
||||
#: note_kfet/templates/registration/login.html:6
|
||||
#: note_kfet/templates/registration/login.html:15
|
||||
#: note_kfet/templates/registration/login.html:38
|
||||
@ -3313,7 +3252,7 @@ msgstr "Inscription"
|
||||
msgid "Log in"
|
||||
msgstr "Se connecter"
|
||||
|
||||
#: note_kfet/templates/base.html:159
|
||||
#: note_kfet/templates/base.html:160
|
||||
msgid ""
|
||||
"You are not a BDE member anymore. Please renew your membership if you want "
|
||||
"to use the note."
|
||||
@ -3321,7 +3260,7 @@ msgstr ""
|
||||
"Vous n'êtes plus adhérent BDE. Merci de réadhérer si vous voulez profiter de "
|
||||
"la note."
|
||||
|
||||
#: note_kfet/templates/base.html:165
|
||||
#: note_kfet/templates/base.html:166
|
||||
msgid ""
|
||||
"Your e-mail address is not validated. Please check your mail inbox and click "
|
||||
"on the validation link."
|
||||
@ -3329,7 +3268,7 @@ msgstr ""
|
||||
"Votre adresse e-mail n'est pas validée. Merci de vérifier votre boîte mail "
|
||||
"et de cliquer sur le lien de validation."
|
||||
|
||||
#: note_kfet/templates/base.html:171
|
||||
#: note_kfet/templates/base.html:172
|
||||
msgid ""
|
||||
"You declared that you opened a bank account in the Société générale. The "
|
||||
"bank did not validate the creation of the account to the BDE, so the "
|
||||
@ -3343,11 +3282,11 @@ msgstr ""
|
||||
"vérification peut durer quelques jours. Merci de vous assurer de bien aller "
|
||||
"au bout de vos démarches."
|
||||
|
||||
#: note_kfet/templates/base.html:194
|
||||
#: note_kfet/templates/base.html:195
|
||||
msgid "Contact us"
|
||||
msgstr "Nous contacter"
|
||||
|
||||
#: note_kfet/templates/base.html:196
|
||||
#: note_kfet/templates/base.html:197
|
||||
msgid "Technical Support"
|
||||
msgstr "Support technique"
|
||||
|
||||
|
@ -3,11 +3,12 @@
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-10-07 09:07+0200\n"
|
||||
"POT-Creation-Date: 2020-11-15 23:21+0100\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -25,18 +26,6 @@ msgstr "Alias ajouté avec succès"
|
||||
msgid "Alias successfully deleted"
|
||||
msgstr "Alias supprimé avec succès"
|
||||
|
||||
#: apps/member/static/member/js/trust.js:14
|
||||
msgid "You can't add yourself as a friend"
|
||||
msgstr ""
|
||||
|
||||
#: apps/member/static/member/js/trust.js:37
|
||||
msgid "Friendship successfully added"
|
||||
msgstr "Amitié ajoutée avec succès"
|
||||
|
||||
#: apps/member/static/member/js/trust.js:53
|
||||
msgid "Friendship successfully deleted"
|
||||
msgstr "Amitié supprimée avec succès"
|
||||
|
||||
#: apps/note/static/note/js/consos.js:225
|
||||
#, javascript-format
|
||||
msgid ""
|
||||
@ -56,31 +45,31 @@ msgstr ""
|
||||
"la note émettrice %s est en négatif."
|
||||
|
||||
#: apps/note/static/note/js/consos.js:232
|
||||
#: apps/note/static/note/js/transfer.js:309
|
||||
#: apps/note/static/note/js/transfer.js:412
|
||||
#: apps/note/static/note/js/transfer.js:298
|
||||
#: apps/note/static/note/js/transfer.js:401
|
||||
#, javascript-format
|
||||
msgid "Warning, the emitter note %s is no more a BDE member."
|
||||
msgstr "Attention, la note émettrice %s n'est plus adhérente."
|
||||
|
||||
#: apps/note/static/note/js/consos.js:254
|
||||
#: apps/note/static/note/js/consos.js:253
|
||||
msgid "The transaction couldn't be validated because of insufficient balance."
|
||||
msgstr ""
|
||||
"La transaction n'a pas pu être validée pour cause de solde insuffisant."
|
||||
|
||||
#: apps/note/static/note/js/transfer.js:249
|
||||
#: apps/note/static/note/js/transfer.js:238
|
||||
msgid "This field is required and must contain a decimal positive number."
|
||||
msgstr ""
|
||||
"Ce champ est requis et doit comporter un nombre décimal strictement positif."
|
||||
|
||||
#: apps/note/static/note/js/transfer.js:256
|
||||
#: apps/note/static/note/js/transfer.js:245
|
||||
msgid "The amount must stay under 21,474,836.47 €."
|
||||
msgstr "Le montant ne doit pas excéder 21 474 836.47 €."
|
||||
|
||||
#: apps/note/static/note/js/transfer.js:262
|
||||
#: apps/note/static/note/js/transfer.js:251
|
||||
msgid "This field is required."
|
||||
msgstr "Ce champ est requis."
|
||||
|
||||
#: apps/note/static/note/js/transfer.js:288
|
||||
#: apps/note/static/note/js/transfer.js:277
|
||||
#, javascript-format
|
||||
msgid ""
|
||||
"Warning: the transaction of %s from %s to %s was not made because it is the "
|
||||
@ -89,12 +78,12 @@ msgstr ""
|
||||
"Attention : la transaction de %s de la note %s vers la note %s n'a pas été "
|
||||
"faite car il s'agit de la même note au départ et à l'arrivée."
|
||||
|
||||
#: apps/note/static/note/js/transfer.js:312
|
||||
#: apps/note/static/note/js/transfer.js:301
|
||||
#, javascript-format
|
||||
msgid "Warning, the destination note %s is no more a BDE member."
|
||||
msgstr "Attention, la note de destination %s n'est plus adhérente."
|
||||
|
||||
#: apps/note/static/note/js/transfer.js:318
|
||||
#: apps/note/static/note/js/transfer.js:307
|
||||
#, javascript-format
|
||||
msgid ""
|
||||
"Warning, the transaction of %s from the note %s to the note %s succeed, but "
|
||||
@ -103,7 +92,7 @@ msgstr ""
|
||||
"Attention, La transaction de %s depuis la note %s vers la note %s a été "
|
||||
"réalisée avec succès, mais la note émettrice %s est en négatif sévère."
|
||||
|
||||
#: apps/note/static/note/js/transfer.js:323
|
||||
#: apps/note/static/note/js/transfer.js:312
|
||||
#, javascript-format
|
||||
msgid ""
|
||||
"Warning, the transaction of %s from the note %s to the note %s succeed, but "
|
||||
@ -112,33 +101,33 @@ msgstr ""
|
||||
"Attention, La transaction de %s depuis la note %s vers la note %s a été "
|
||||
"réalisée avec succès, mais la note émettrice %s est en négatif."
|
||||
|
||||
#: apps/note/static/note/js/transfer.js:329
|
||||
#: apps/note/static/note/js/transfer.js:318
|
||||
#, javascript-format
|
||||
msgid "Transfer of %s from %s to %s succeed!"
|
||||
msgstr ""
|
||||
"Le transfert de %s de la note %s vers la note %s a été fait avec succès !"
|
||||
|
||||
#: apps/note/static/note/js/transfer.js:336
|
||||
#: apps/note/static/note/js/transfer.js:357
|
||||
#: apps/note/static/note/js/transfer.js:364
|
||||
#: apps/note/static/note/js/transfer.js:325
|
||||
#: apps/note/static/note/js/transfer.js:346
|
||||
#: apps/note/static/note/js/transfer.js:353
|
||||
#, javascript-format
|
||||
msgid "Transfer of %s from %s to %s failed: %s"
|
||||
msgstr "Le transfert de %s de la note %s vers la note %s a échoué : %s"
|
||||
|
||||
#: apps/note/static/note/js/transfer.js:358
|
||||
#: apps/note/static/note/js/transfer.js:347
|
||||
msgid "insufficient funds"
|
||||
msgstr "solde insuffisant"
|
||||
|
||||
#: apps/note/static/note/js/transfer.js:411
|
||||
#: apps/note/static/note/js/transfer.js:400
|
||||
msgid "Credit/debit succeed!"
|
||||
msgstr "Le crédit/retrait a bien été effectué !"
|
||||
|
||||
#: apps/note/static/note/js/transfer.js:418
|
||||
#: apps/note/static/note/js/transfer.js:407
|
||||
#, javascript-format
|
||||
msgid "Credit/debit failed: %s"
|
||||
msgstr "Le crédit/retrait a échoué : %s"
|
||||
|
||||
#: note_kfet/static/js/base.js:370
|
||||
#: note_kfet/static/js/base.js:366
|
||||
msgid "An error occured while (in)validating this transaction:"
|
||||
msgstr ""
|
||||
"Une erreur est survenue lors de la validation/dévalidation de cette "
|
||||
|
@ -65,7 +65,7 @@ mark {
|
||||
|
||||
/* Last BDE colors */
|
||||
.bg-primary {
|
||||
background-color: rgb(102, 83, 105) !important;
|
||||
background-color: rgb(18, 67, 4) !important;
|
||||
}
|
||||
|
||||
html {
|
||||
@ -81,14 +81,14 @@ body {
|
||||
.btn-outline-primary:not(:disabled):not(.disabled).active,
|
||||
.btn-outline-primary:not(:disabled):not(.disabled):active {
|
||||
color: #fff;
|
||||
background-color: rgb(102, 83, 105);
|
||||
border-color: rgb(102, 83, 105);
|
||||
background-color: rgb(18, 67, 46);
|
||||
border-color: rgb(18, 67, 46);
|
||||
}
|
||||
|
||||
.btn-outline-primary {
|
||||
color: rgb(102, 83, 105);
|
||||
color: rgb(18, 67, 46);
|
||||
background-color: rgba(248, 249, 250, 0.9);
|
||||
border-color: rgb(102, 83, 105);
|
||||
border-color: rgb(18, 67, 46);
|
||||
}
|
||||
|
||||
.turbolinks-progress-bar {
|
||||
@ -99,35 +99,35 @@ body {
|
||||
.btn-primary:not(:disabled):not(.disabled).active,
|
||||
.btn-primary:not(:disabled):not(.disabled):active {
|
||||
color: #fff;
|
||||
background-color: rgb(102, 83, 105);
|
||||
border-color: rgb(102, 83, 105);
|
||||
background-color: rgb(18, 67, 46);
|
||||
border-color: rgb(18, 67, 46);
|
||||
}
|
||||
|
||||
.btn-primary {
|
||||
color: rgba(248, 249, 250, 0.9);
|
||||
background-color: rgb(102, 83, 105);
|
||||
border-color: rgb(102, 83, 105);
|
||||
background-color: rgb(28, 114, 10);
|
||||
border-color: rgb(18, 67, 46);
|
||||
}
|
||||
|
||||
.border-primary {
|
||||
border-color: rgb(115, 15, 115) !important;
|
||||
border-color: rgb(28, 114, 10) !important;
|
||||
}
|
||||
|
||||
a {
|
||||
color: rgb(102, 83, 105);
|
||||
color: rgb(28, 114, 10);
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: rgb(200, 30, 200);
|
||||
color: rgb(122, 163, 75);
|
||||
}
|
||||
|
||||
.form-control:focus {
|
||||
box-shadow: 0 0 0 0.25rem rgba(200, 30, 200, 0.25);
|
||||
border-color: rgb(200, 30, 200);
|
||||
box-shadow: 0 0 0 0.25rem rgba(122, 163, 75, 0.25);
|
||||
border-color: rgb(122, 163, 75);
|
||||
}
|
||||
|
||||
.btn-outline-primary.focus {
|
||||
box-shadow: 0 0 0 0.25rem rgba(200, 30, 200, 0.5);
|
||||
box-shadow: 0 0 0 0.25rem rgba(122, 163, 75, 0.5);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1,5 +1,3 @@
|
||||
const keycodes = [32, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 106, 107, 109, 110, 111, 186, 187, 188, 189, 190, 191, 219, 220, 221, 222]
|
||||
|
||||
$(document).ready(function () {
|
||||
$('.autocomplete').keyup(function (e) {
|
||||
const target = $('#' + e.target.id)
|
||||
@ -12,45 +10,35 @@ $(document).ready(function () {
|
||||
const input = target.val()
|
||||
target.addClass('is-invalid')
|
||||
target.removeClass('is-valid')
|
||||
$('#' + prefix + '_reset').removeClass('d-none')
|
||||
|
||||
$.getJSON(api_url + (api_url.includes('?') ? '&' : '?') + 'format=json&search=^' + input + api_url_suffix, function (objects) {
|
||||
let html = '<ul class="list-group list-group-flush" id="' + prefix + '_list">'
|
||||
let html = ''
|
||||
|
||||
objects.results.forEach(function (obj) {
|
||||
html += li(prefix + '_' + obj.id, obj[name_field])
|
||||
})
|
||||
html += '</ul>'
|
||||
|
||||
target.tooltip({
|
||||
html: true,
|
||||
placement: 'bottom',
|
||||
trigger: 'manual',
|
||||
container: target.parent(),
|
||||
fallbackPlacement: 'clockwise'
|
||||
})
|
||||
|
||||
target.attr("data-original-title", html).tooltip("show")
|
||||
const results_list = $('#' + prefix + '_list')
|
||||
results_list.html(html)
|
||||
|
||||
objects.results.forEach(function (obj) {
|
||||
$('#' + prefix + '_' + obj.id).click(function () {
|
||||
target.val(obj[name_field])
|
||||
$('#' + prefix + '_pk').val(obj.id)
|
||||
|
||||
target.tooltip("hide")
|
||||
results_list.html('')
|
||||
target.removeClass('is-invalid')
|
||||
target.addClass('is-valid')
|
||||
|
||||
if (typeof autocompleted !== 'undefined') { autocompleted(obj, prefix) }
|
||||
})
|
||||
|
||||
if (input === obj[name_field]) { $('#' + prefix + '_pk').val(obj.id) }
|
||||
})
|
||||
|
||||
if (objects.results.length >= 2) {
|
||||
$('#' + prefix + '_pk').val(objects.results[0].id)
|
||||
}
|
||||
if (objects.results.length === 1 &&
|
||||
(keycodes.includes(e.originalEvent.keyCode) ||
|
||||
input === objects.results[0][name_field])) {
|
||||
$('#' + prefix + '_' + objects.results[0].id).trigger('click')
|
||||
if (results_list.children().length === 1 && e.originalEvent.keyCode >= 32) {
|
||||
results_list.children().first().trigger('click')
|
||||
}
|
||||
})
|
||||
})
|
||||
@ -59,6 +47,7 @@ $(document).ready(function () {
|
||||
const name = $(this).attr('id').replace('_reset', '')
|
||||
$('#' + name + '_pk').val('')
|
||||
$('#' + name).val('')
|
||||
$('#' + name).tooltip('hide')
|
||||
$('#' + name + '_list').html('')
|
||||
$(this).addClass('d-none')
|
||||
})
|
||||
})
|
||||
|
@ -9,9 +9,9 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
||||
name="{{ widget.name }}_name" autocomplete="off"
|
||||
{% for name, value in widget.attrs.items %}
|
||||
{% ifnotequal value False %}{{ name }}{% ifnotequal value True %}="{{ value|stringformat:'s' }}"{% endifnotequal %}{% endifnotequal %}
|
||||
{% endfor %}
|
||||
aria-describedby="{{widget.attrs.id}}_tooltip">
|
||||
{% endfor %}>
|
||||
{% if widget.resetable %}
|
||||
<a id="{{ widget.attrs.id }}_reset" class="btn btn-light autocomplete-reset">{% trans "Reset" %}</a>
|
||||
<a id="{{ widget.attrs.id }}_reset" class="btn btn-light autocomplete-reset{% if not widget.value %} d-none{% endif %}">{% trans "Reset" %}</a>
|
||||
{% endif %}
|
||||
|
||||
<ul class="list-group list-group-flush" id="{{ widget.attrs.id }}_list">
|
||||
</ul>
|
||||
|
@ -23,11 +23,11 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
||||
{% csrf_token %}
|
||||
{{ form|crispy }}
|
||||
{{ profile_form|crispy }}
|
||||
{% comment "Soge not for membership (only WEI)" %} {{ soge_form|crispy }} {% endcomment %}
|
||||
{{ soge_form|crispy }}
|
||||
<button class="btn btn-success" type="submit">
|
||||
{% trans "Sign up" %}
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
Reference in New Issue
Block a user