mirror of https://gitlab.crans.org/bde/nk20
Add PDF member lists
This commit is contained in:
parent
38b32b0623
commit
b81f186866
|
@ -273,6 +273,7 @@ class Membership(models.Model):
|
||||||
user = models.ForeignKey(
|
user = models.ForeignKey(
|
||||||
User,
|
User,
|
||||||
on_delete=models.PROTECT,
|
on_delete=models.PROTECT,
|
||||||
|
related_name="memberships",
|
||||||
verbose_name=_("user"),
|
verbose_name=_("user"),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -36,8 +36,10 @@ class PermissionBackend(ModelBackend):
|
||||||
# Unauthenticated users have no permissions
|
# Unauthenticated users have no permissions
|
||||||
return Permission.objects.none()
|
return Permission.objects.none()
|
||||||
|
|
||||||
return Permission.objects.annotate(club=F("rolepermissions__role__membership__club")) \
|
return Permission.objects.annotate(
|
||||||
.filter(
|
club=F("rolepermissions__role__membership__club"),
|
||||||
|
membership=F("rolepermissions__role__membership"),
|
||||||
|
).filter(
|
||||||
rolepermissions__role__membership__user=user,
|
rolepermissions__role__membership__user=user,
|
||||||
rolepermissions__role__membership__date_start__lte=datetime.date.today(),
|
rolepermissions__role__membership__date_start__lte=datetime.date.today(),
|
||||||
rolepermissions__role__membership__date_end__gte=datetime.date.today(),
|
rolepermissions__role__membership__date_end__gte=datetime.date.today(),
|
||||||
|
@ -55,6 +57,7 @@ class PermissionBackend(ModelBackend):
|
||||||
:return: A generator of the requested permissions
|
:return: A generator of the requested permissions
|
||||||
"""
|
"""
|
||||||
clubs = {}
|
clubs = {}
|
||||||
|
memberships = {}
|
||||||
|
|
||||||
for permission in PermissionBackend.get_raw_permissions(user, type):
|
for permission in PermissionBackend.get_raw_permissions(user, type):
|
||||||
if not isinstance(model.model_class()(), permission.model.model_class()) or not permission.club:
|
if not isinstance(model.model_class()(), permission.model.model_class()) or not permission.club:
|
||||||
|
@ -64,9 +67,16 @@ class PermissionBackend(ModelBackend):
|
||||||
clubs[permission.club] = club = Club.objects.get(pk=permission.club)
|
clubs[permission.club] = club = Club.objects.get(pk=permission.club)
|
||||||
else:
|
else:
|
||||||
club = clubs[permission.club]
|
club = clubs[permission.club]
|
||||||
|
|
||||||
|
if permission.membership not in memberships:
|
||||||
|
memberships[permission.membership] = membership = Membership.objects.get(pk=permission.membership)
|
||||||
|
else:
|
||||||
|
membership = memberships[permission.membership]
|
||||||
|
|
||||||
permission = permission.about(
|
permission = permission.about(
|
||||||
user=user,
|
user=user,
|
||||||
club=club,
|
club=club,
|
||||||
|
membership=membership,
|
||||||
User=User,
|
User=User,
|
||||||
Club=Club,
|
Club=Club,
|
||||||
Membership=Membership,
|
Membership=Membership,
|
||||||
|
|
|
@ -1470,7 +1470,7 @@
|
||||||
"wei",
|
"wei",
|
||||||
"weiregistration"
|
"weiregistration"
|
||||||
],
|
],
|
||||||
"query": "{\"user\": [\"user\"], \"wei\": [\"club\"], \"wei__membership_start__lte\": [\"today\"], \"wei__year\": [\"today\", \"year\"]}",
|
"query": "{\"user\": [\"user\"], \"wei\": [\"club\"], \"wei__membership_start__lte\": [\"today\"]}",
|
||||||
"type": "view",
|
"type": "view",
|
||||||
"mask": 1,
|
"mask": 1,
|
||||||
"field": "",
|
"field": "",
|
||||||
|
@ -1882,6 +1882,36 @@
|
||||||
"description": "View my own WEI membership if I am an old member or if the WEI is past"
|
"description": "View my own WEI membership if I am an old member or if the WEI is past"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"model": "permission.permission",
|
||||||
|
"pk": 115,
|
||||||
|
"fields": {
|
||||||
|
"model": [
|
||||||
|
"wei",
|
||||||
|
"weimembership"
|
||||||
|
],
|
||||||
|
"query": "{\"wei\": [\"club\"], \"bus\": [\"membership\", \"weimembership\", \"bus\"]}",
|
||||||
|
"type": "view",
|
||||||
|
"mask": 1,
|
||||||
|
"field": "",
|
||||||
|
"description": "View the members of the bus"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model": "permission.permission",
|
||||||
|
"pk": 116,
|
||||||
|
"fields": {
|
||||||
|
"model": [
|
||||||
|
"wei",
|
||||||
|
"weimembership"
|
||||||
|
],
|
||||||
|
"query": "{\"wei\": [\"club\"], \"team\": [\"membership\", \"weimembership\", \"team\"]}",
|
||||||
|
"type": "view",
|
||||||
|
"mask": 1,
|
||||||
|
"field": "",
|
||||||
|
"description": "View the members of the team"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"model": "permission.rolepermissions",
|
"model": "permission.rolepermissions",
|
||||||
"pk": 1,
|
"pk": 1,
|
||||||
|
@ -2230,5 +2260,25 @@
|
||||||
113
|
113
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model": "permission.rolepermissions",
|
||||||
|
"pk": 13,
|
||||||
|
"fields": {
|
||||||
|
"role": 13,
|
||||||
|
"permissions": [
|
||||||
|
115
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model": "permission.rolepermissions",
|
||||||
|
"pk": 14,
|
||||||
|
"fields": {
|
||||||
|
"role": 14,
|
||||||
|
"permissions": [
|
||||||
|
116
|
||||||
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
|
@ -38,6 +38,7 @@ class UserCreateView(CreateView):
|
||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
context = super().get_context_data(**kwargs)
|
context = super().get_context_data(**kwargs)
|
||||||
context["profile_form"] = self.second_form()
|
context["profile_form"] = self.second_form()
|
||||||
|
del context["profile_form"].fields["section"]
|
||||||
|
|
||||||
return context
|
return context
|
||||||
|
|
||||||
|
|
|
@ -182,7 +182,7 @@ class InvoiceRenderView(LoginRequiredMixin, View):
|
||||||
# Display the generated pdf as a HTTP Response
|
# Display the generated pdf as a HTTP Response
|
||||||
pdf = open("{}/invoice-{}.pdf".format(tmp_dir, pk), 'rb').read()
|
pdf = open("{}/invoice-{}.pdf".format(tmp_dir, pk), 'rb').read()
|
||||||
response = HttpResponse(pdf, content_type="application/pdf")
|
response = HttpResponse(pdf, content_type="application/pdf")
|
||||||
response['Content-Disposition'] = "inline;filename=invoice-{:d}.pdf".format(pk)
|
response['Content-Disposition'] = "inline;filename=Facture%20n°{:d}.pdf".format(pk)
|
||||||
except IOError as e:
|
except IOError as e:
|
||||||
raise e
|
raise e
|
||||||
finally:
|
finally:
|
||||||
|
|
|
@ -265,6 +265,7 @@ class WEIMembership(Membership):
|
||||||
bus = models.ForeignKey(
|
bus = models.ForeignKey(
|
||||||
Bus,
|
Bus,
|
||||||
on_delete=models.PROTECT,
|
on_delete=models.PROTECT,
|
||||||
|
related_name="memberships",
|
||||||
null=True,
|
null=True,
|
||||||
default=None,
|
default=None,
|
||||||
verbose_name=_("bus"),
|
verbose_name=_("bus"),
|
||||||
|
|
|
@ -91,6 +91,11 @@ class WEIMembershipTable(tables.Table):
|
||||||
args=[A('registration.pk')],
|
args=[A('registration.pk')],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
year = tables.Column(
|
||||||
|
accessor=A("pk"),
|
||||||
|
verbose_name=_("Year"),
|
||||||
|
)
|
||||||
|
|
||||||
bus = tables.LinkColumn(
|
bus = tables.LinkColumn(
|
||||||
'wei:manage_bus',
|
'wei:manage_bus',
|
||||||
args=[A('bus.pk')],
|
args=[A('bus.pk')],
|
||||||
|
@ -101,13 +106,17 @@ class WEIMembershipTable(tables.Table):
|
||||||
args=[A('bus.pk')],
|
args=[A('bus.pk')],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def render_year(self, record):
|
||||||
|
return str(record.user.profile.ens_year) + "A"
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
attrs = {
|
attrs = {
|
||||||
'class': 'table table-condensed table-striped table-hover'
|
'class': 'table table-condensed table-striped table-hover'
|
||||||
}
|
}
|
||||||
model = WEIMembership
|
model = WEIMembership
|
||||||
template_name = 'django_tables2/bootstrap4.html'
|
template_name = 'django_tables2/bootstrap4.html'
|
||||||
fields = ('user', 'user.first_name', 'user.last_name', 'bus', 'team', )
|
fields = ('user', 'user.last_name', 'user.first_name', 'registration.gender', 'user.profile.department',
|
||||||
|
'year', 'bus', 'team', )
|
||||||
row_attrs = {
|
row_attrs = {
|
||||||
'class': 'table-row',
|
'class': 'table-row',
|
||||||
'id': lambda record: "row-" + str(record.pk),
|
'id': lambda record: "row-" + str(record.pk),
|
||||||
|
@ -130,9 +139,16 @@ class BusTable(tables.Table):
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
count = tables.Column(
|
||||||
|
verbose_name=_("Members count"),
|
||||||
|
)
|
||||||
|
|
||||||
def render_teams(self, value):
|
def render_teams(self, value):
|
||||||
return ", ".join(team.name for team in value.all())
|
return ", ".join(team.name for team in value.all())
|
||||||
|
|
||||||
|
def render_count(self, value):
|
||||||
|
return str(value) + " " + (str(_("members")) if value > 0 else str(_("member")))
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
attrs = {
|
attrs = {
|
||||||
'class': 'table table-condensed table-striped table-hover'
|
'class': 'table table-condensed table-striped table-hover'
|
||||||
|
@ -161,6 +177,13 @@ class BusTeamTable(tables.Table):
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def render_count(self, value):
|
||||||
|
return str(value) + " " + (str(_("members")) if value > 0 else str(_("member")))
|
||||||
|
|
||||||
|
count = tables.Column(
|
||||||
|
verbose_name=_("Members count"),
|
||||||
|
)
|
||||||
|
|
||||||
def render_color(self, value):
|
def render_color(self, value):
|
||||||
return "#{:06X}".format(value)
|
return "#{:06X}".format(value)
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
from django.urls import path
|
from django.urls import path
|
||||||
|
|
||||||
from .views import CurrentWEIDetailView, WEIListView, WEICreateView, WEIDetailView, WEIUpdateView,\
|
from .views import CurrentWEIDetailView, WEIListView, WEICreateView, WEIDetailView, WEIUpdateView,\
|
||||||
WEIRegistrationsView, WEIMembershipsView,\
|
WEIRegistrationsView, WEIMembershipsView, MemberListRenderView,\
|
||||||
BusCreateView, BusManageView, BusUpdateView, BusTeamCreateView, BusTeamManageView, BusTeamUpdateView,\
|
BusCreateView, BusManageView, BusUpdateView, BusTeamCreateView, BusTeamManageView, BusTeamUpdateView,\
|
||||||
WEIRegister1AView, WEIRegister2AView, WEIUpdateRegistrationView, WEIDeleteRegistrationView,\
|
WEIRegister1AView, WEIRegister2AView, WEIUpdateRegistrationView, WEIDeleteRegistrationView,\
|
||||||
WEIValidateRegistrationView, WEISurveyView, WEISurveyEndView, WEIClosedView
|
WEIValidateRegistrationView, WEISurveyView, WEISurveyEndView, WEIClosedView
|
||||||
|
@ -19,6 +19,11 @@ urlpatterns = [
|
||||||
path('update/<int:pk>/', WEIUpdateView.as_view(), name="wei_update"),
|
path('update/<int:pk>/', WEIUpdateView.as_view(), name="wei_update"),
|
||||||
path('detail/<int:pk>/registrations/', WEIRegistrationsView.as_view(), name="wei_registrations"),
|
path('detail/<int:pk>/registrations/', WEIRegistrationsView.as_view(), name="wei_registrations"),
|
||||||
path('detail/<int:pk>/memberships/', WEIMembershipsView.as_view(), name="wei_memberships"),
|
path('detail/<int:pk>/memberships/', WEIMembershipsView.as_view(), name="wei_memberships"),
|
||||||
|
path('detail/<int:wei_pk>/memberships/pdf/', MemberListRenderView.as_view(), name="wei_memberships_pdf"),
|
||||||
|
path('detail/<int:wei_pk>/memberships/pdf/<int:bus_pk>/', MemberListRenderView.as_view(),
|
||||||
|
name="wei_memberships_bus_pdf"),
|
||||||
|
path('detail/<int:wei_pk>/memberships/pdf/<int:bus_pk>/<int:team_pk>/', MemberListRenderView.as_view(),
|
||||||
|
name="wei_memberships_team_pdf"),
|
||||||
path('add-bus/<int:pk>/', BusCreateView.as_view(), name="add_bus"),
|
path('add-bus/<int:pk>/', BusCreateView.as_view(), name="add_bus"),
|
||||||
path('manage-bus/<int:pk>/', BusManageView.as_view(), name="manage_bus"),
|
path('manage-bus/<int:pk>/', BusManageView.as_view(), name="manage_bus"),
|
||||||
path('update-bus/<int:pk>/', BusUpdateView.as_view(), name="update_bus"),
|
path('update-bus/<int:pk>/', BusUpdateView.as_view(), name="update_bus"),
|
||||||
|
|
|
@ -1,15 +1,23 @@
|
||||||
# Copyright (C) 2018-2020 by BDE ENS Paris-Saclay
|
# Copyright (C) 2018-2020 by BDE ENS Paris-Saclay
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
import os
|
||||||
|
import shutil
|
||||||
|
import subprocess
|
||||||
from datetime import datetime, date
|
from datetime import datetime, date
|
||||||
|
from tempfile import mkdtemp
|
||||||
|
|
||||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from django.core.exceptions import PermissionDenied
|
from django.core.exceptions import PermissionDenied
|
||||||
from django.db.models import Q
|
from django.db.models import Q, Count
|
||||||
|
from django.db.models.functions import Lower
|
||||||
from django.forms import HiddenInput
|
from django.forms import HiddenInput
|
||||||
|
from django.http import HttpResponse
|
||||||
from django.shortcuts import redirect
|
from django.shortcuts import redirect
|
||||||
|
from django.template.loader import render_to_string
|
||||||
from django.urls import reverse_lazy
|
from django.urls import reverse_lazy
|
||||||
|
from django.views import View
|
||||||
from django.views.generic import DetailView, UpdateView, CreateView, RedirectView, TemplateView
|
from django.views.generic import DetailView, UpdateView, CreateView, RedirectView, TemplateView
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
from django.views.generic.edit import BaseFormView, DeleteView
|
from django.views.generic.edit import BaseFormView, DeleteView
|
||||||
|
@ -17,6 +25,7 @@ from django_tables2 import SingleTableView
|
||||||
from member.models import Membership, Club
|
from member.models import Membership, Club
|
||||||
from note.models import Transaction, NoteClub, Alias
|
from note.models import Transaction, NoteClub, Alias
|
||||||
from note.tables import HistoryTable
|
from note.tables import HistoryTable
|
||||||
|
from note_kfet.settings import BASE_DIR
|
||||||
from permission.backends import PermissionBackend
|
from permission.backends import PermissionBackend
|
||||||
from permission.views import ProtectQuerysetMixin
|
from permission.views import ProtectQuerysetMixin
|
||||||
|
|
||||||
|
@ -108,7 +117,7 @@ class WEIDetailView(ProtectQuerysetMixin, LoginRequiredMixin, DetailView):
|
||||||
context["my_registration"] = my_registration
|
context["my_registration"] = my_registration
|
||||||
|
|
||||||
buses = Bus.objects.filter(PermissionBackend.filter_queryset(self.request.user, Bus, "view"))\
|
buses = Bus.objects.filter(PermissionBackend.filter_queryset(self.request.user, Bus, "view"))\
|
||||||
.filter(wei=self.object)
|
.filter(wei=self.object).annotate(count=Count("memberships"))
|
||||||
bus_table = BusTable(data=buses, prefix="bus-")
|
bus_table = BusTable(data=buses, prefix="bus-")
|
||||||
context['buses'] = bus_table
|
context['buses'] = bus_table
|
||||||
|
|
||||||
|
@ -299,7 +308,7 @@ class BusManageView(ProtectQuerysetMixin, LoginRequiredMixin, DetailView):
|
||||||
|
|
||||||
bus = self.object
|
bus = self.object
|
||||||
teams = BusTeam.objects.filter(PermissionBackend.filter_queryset(self.request.user, BusTeam, "view"))\
|
teams = BusTeam.objects.filter(PermissionBackend.filter_queryset(self.request.user, BusTeam, "view"))\
|
||||||
.filter(bus=bus)
|
.filter(bus=bus).annotate(count=Count("memberships"))
|
||||||
teams_table = BusTeamTable(data=teams, prefix="team-")
|
teams_table = BusTeamTable(data=teams, prefix="team-")
|
||||||
context["teams"] = teams_table
|
context["teams"] = teams_table
|
||||||
|
|
||||||
|
@ -824,3 +833,80 @@ class WEIClosedView(LoginRequiredMixin, TemplateView):
|
||||||
context["club"] = WEIClub.objects.get(pk=self.kwargs["pk"])
|
context["club"] = WEIClub.objects.get(pk=self.kwargs["pk"])
|
||||||
context["title"] = _("Survey WEI")
|
context["title"] = _("Survey WEI")
|
||||||
return context
|
return context
|
||||||
|
|
||||||
|
|
||||||
|
class MemberListRenderView(LoginRequiredMixin, View):
|
||||||
|
"""
|
||||||
|
Render Invoice as a generated PDF with the given information and a LaTeX template
|
||||||
|
"""
|
||||||
|
|
||||||
|
def get_queryset(self, **kwargs):
|
||||||
|
qs = WEIMembership.objects.filter(PermissionBackend.filter_queryset(self.request.user, WEIMembership, "view"))
|
||||||
|
qs = qs.filter(club__pk=self.kwargs["wei_pk"]).order_by(
|
||||||
|
Lower('bus__name'),
|
||||||
|
Lower('team__name'),
|
||||||
|
'roles',
|
||||||
|
Lower('user__last_name'),
|
||||||
|
Lower('user__first_name'),
|
||||||
|
).distinct()
|
||||||
|
|
||||||
|
if "bus_pk" in self.kwargs:
|
||||||
|
qs = qs.filter(bus__pk=self.kwargs["bus_pk"])
|
||||||
|
|
||||||
|
if "team_pk" in self.kwargs:
|
||||||
|
qs = qs.filter(team__pk=self.kwargs["team_pk"] if self.kwargs["team_pk"] else None)
|
||||||
|
|
||||||
|
return qs
|
||||||
|
|
||||||
|
def get(self, request, **kwargs):
|
||||||
|
qs = self.get_queryset()
|
||||||
|
|
||||||
|
wei = WEIClub.objects.get(pk=self.kwargs["wei_pk"])
|
||||||
|
bus = team = None
|
||||||
|
if "bus_pk" in self.kwargs:
|
||||||
|
bus = Bus.objects.get(pk=self.kwargs["bus_pk"])
|
||||||
|
if "team_pk" in self.kwargs:
|
||||||
|
team = BusTeam.objects.filter(pk=self.kwargs["team_pk"] if self.kwargs["team_pk"] else None)
|
||||||
|
if team.exists():
|
||||||
|
team = team.get()
|
||||||
|
bus = team.bus
|
||||||
|
else:
|
||||||
|
team = dict(name="Staff")
|
||||||
|
|
||||||
|
# Fill the template with the information
|
||||||
|
tex = render_to_string("wei/weilist_sample.tex", dict(memberships=qs.all(), wei=wei, bus=bus, team=team))
|
||||||
|
|
||||||
|
try:
|
||||||
|
os.mkdir(BASE_DIR + "/tmp")
|
||||||
|
except FileExistsError:
|
||||||
|
pass
|
||||||
|
# We render the file in a temporary directory
|
||||||
|
tmp_dir = mkdtemp(prefix=BASE_DIR + "/tmp/")
|
||||||
|
|
||||||
|
try:
|
||||||
|
with open("{}/wei-list.tex".format(tmp_dir), "wb") as f:
|
||||||
|
f.write(tex.encode("UTF-8"))
|
||||||
|
del tex
|
||||||
|
|
||||||
|
error = subprocess.Popen(
|
||||||
|
["pdflatex", "{}/wei-list.tex".format(tmp_dir)],
|
||||||
|
cwd=tmp_dir,
|
||||||
|
stdin=open(os.devnull, "r"),
|
||||||
|
stderr=open(os.devnull, "wb"),
|
||||||
|
stdout=open(os.devnull, "wb"),
|
||||||
|
).wait()
|
||||||
|
|
||||||
|
if error:
|
||||||
|
raise IOError("An error attempted while generating a WEI list (code=" + str(error) + ")")
|
||||||
|
|
||||||
|
# Display the generated pdf as a HTTP Response
|
||||||
|
pdf = open("{}/wei-list.pdf".format(tmp_dir), 'rb').read()
|
||||||
|
response = HttpResponse(pdf, content_type="application/pdf")
|
||||||
|
response['Content-Disposition'] = "inline;filename=Liste%20des%20participants%20au%20WEI.pdf"
|
||||||
|
except IOError as e:
|
||||||
|
raise e
|
||||||
|
finally:
|
||||||
|
# Delete all temporary files
|
||||||
|
shutil.rmtree(tmp_dir)
|
||||||
|
|
||||||
|
return response
|
||||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2020-04-22 17:25+0200\n"
|
"POT-Creation-Date: 2020-04-23 18:21+0200\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -44,7 +44,7 @@ msgid "You can't invite more than 3 people to this activity."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/activity/models.py:23 apps/activity/models.py:48
|
#: apps/activity/models.py:23 apps/activity/models.py:48
|
||||||
#: apps/member/models.py:152 apps/member/models.py:256
|
#: apps/member/models.py:151 apps/member/models.py:255
|
||||||
#: apps/note/models/notes.py:188 apps/note/models/transactions.py:25
|
#: apps/note/models/notes.py:188 apps/note/models/transactions.py:25
|
||||||
#: apps/note/models/transactions.py:45 apps/note/models/transactions.py:250
|
#: apps/note/models/transactions.py:45 apps/note/models/transactions.py:250
|
||||||
#: apps/wei/models.py:62 templates/member/club_info.html:13
|
#: apps/wei/models.py:62 templates/member/club_info.html:13
|
||||||
|
@ -308,192 +308,192 @@ msgstr ""
|
||||||
msgid "Bank"
|
msgid "Bank"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:35
|
#: apps/member/models.py:34
|
||||||
#: templates/registration/future_profile_detail.html:47
|
#: templates/registration/future_profile_detail.html:47
|
||||||
#: templates/wei/weimembership_form.html:48
|
#: templates/wei/weimembership_form.html:48
|
||||||
msgid "phone number"
|
msgid "phone number"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:42 templates/member/profile_info.html:27
|
#: apps/member/models.py:41 templates/member/profile_info.html:27
|
||||||
#: templates/registration/future_profile_detail.html:41
|
#: templates/registration/future_profile_detail.html:41
|
||||||
#: templates/wei/weimembership_form.html:42
|
#: templates/wei/weimembership_form.html:42
|
||||||
msgid "section"
|
msgid "section"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:43
|
#: apps/member/models.py:42
|
||||||
msgid "e.g. \"1A0\", \"9A♥\", \"SAPHIRE\""
|
msgid "e.g. \"1A0\", \"9A♥\", \"SAPHIRE\""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:51 templates/wei/weimembership_form.html:36
|
#: apps/member/models.py:50 templates/wei/weimembership_form.html:36
|
||||||
msgid "department"
|
msgid "department"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:53
|
#: apps/member/models.py:52
|
||||||
msgid "Informatics (A0)"
|
msgid "Informatics (A0)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:54
|
#: apps/member/models.py:53
|
||||||
msgid "Mathematics (A1)"
|
msgid "Mathematics (A1)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:55
|
#: apps/member/models.py:54
|
||||||
msgid "Physics (A2)"
|
msgid "Physics (A2)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:56
|
#: apps/member/models.py:55
|
||||||
msgid "Applied physics (A'2)"
|
msgid "Applied physics (A'2)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:57
|
#: apps/member/models.py:56
|
||||||
msgid "Chemistry (A''2)"
|
msgid "Chemistry (A''2)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:58
|
#: apps/member/models.py:57
|
||||||
msgid "Biology (A3)"
|
msgid "Biology (A3)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:59
|
#: apps/member/models.py:58
|
||||||
msgid "SAPHIRE (B1234)"
|
msgid "SAPHIRE (B1234)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:60
|
#: apps/member/models.py:59
|
||||||
msgid "Mechanics (B1)"
|
msgid "Mechanics (B1)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:61
|
#: apps/member/models.py:60
|
||||||
msgid "Civil engineering (B2)"
|
msgid "Civil engineering (B2)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:62
|
#: apps/member/models.py:61
|
||||||
msgid "Mechanical engineering (B3)"
|
msgid "Mechanical engineering (B3)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:63
|
#: apps/member/models.py:62
|
||||||
msgid "EEA (B4)"
|
msgid "EEA (B4)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:64
|
#: apps/member/models.py:63
|
||||||
msgid "Design (C)"
|
msgid "Design (C)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:65
|
#: apps/member/models.py:64
|
||||||
msgid "Economy-management (D2)"
|
msgid "Economy-management (D2)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:66
|
#: apps/member/models.py:65
|
||||||
msgid "Social sciences (D3)"
|
msgid "Social sciences (D3)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:67
|
#: apps/member/models.py:66
|
||||||
msgid "English (E)"
|
msgid "English (E)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:68
|
#: apps/member/models.py:67
|
||||||
msgid "External (EXT)"
|
msgid "External (EXT)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:75
|
#: apps/member/models.py:74
|
||||||
msgid "promotion"
|
msgid "promotion"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:76
|
#: apps/member/models.py:75
|
||||||
msgid "Year of entry to the school (None if not ENS student)"
|
msgid "Year of entry to the school (None if not ENS student)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:80 templates/member/profile_info.html:30
|
#: apps/member/models.py:79 templates/member/profile_info.html:30
|
||||||
#: templates/registration/future_profile_detail.html:44
|
#: templates/registration/future_profile_detail.html:44
|
||||||
#: templates/wei/weimembership_form.html:45
|
#: templates/wei/weimembership_form.html:45
|
||||||
msgid "address"
|
msgid "address"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:87
|
#: apps/member/models.py:86
|
||||||
#: templates/registration/future_profile_detail.html:50
|
#: templates/registration/future_profile_detail.html:50
|
||||||
#: templates/wei/weimembership_form.html:51
|
#: templates/wei/weimembership_form.html:51
|
||||||
msgid "paid"
|
msgid "paid"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:88
|
#: apps/member/models.py:87
|
||||||
msgid "Tells if the user receive a salary."
|
msgid "Tells if the user receive a salary."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:93
|
#: apps/member/models.py:92
|
||||||
msgid "email confirmed"
|
msgid "email confirmed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:98
|
#: apps/member/models.py:97
|
||||||
msgid "registration valid"
|
msgid "registration valid"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:127 apps/member/models.py:128
|
#: apps/member/models.py:126 apps/member/models.py:127
|
||||||
msgid "user profile"
|
msgid "user profile"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:157 templates/member/club_info.html:57
|
#: apps/member/models.py:156 templates/member/club_info.html:57
|
||||||
#: templates/registration/future_profile_detail.html:22
|
#: templates/registration/future_profile_detail.html:22
|
||||||
#: templates/wei/weiclub_info.html:52 templates/wei/weimembership_form.html:24
|
#: templates/wei/weiclub_info.html:52 templates/wei/weimembership_form.html:24
|
||||||
msgid "email"
|
msgid "email"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:164
|
#: apps/member/models.py:163
|
||||||
msgid "parent club"
|
msgid "parent club"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:173
|
#: apps/member/models.py:172
|
||||||
msgid "require memberships"
|
msgid "require memberships"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:174
|
#: apps/member/models.py:173
|
||||||
msgid "Uncheck if this club don't require memberships."
|
msgid "Uncheck if this club don't require memberships."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:179 templates/member/club_info.html:41
|
#: apps/member/models.py:178 templates/member/club_info.html:41
|
||||||
msgid "membership fee (paid students)"
|
msgid "membership fee (paid students)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:184 templates/member/club_info.html:44
|
#: apps/member/models.py:183 templates/member/club_info.html:44
|
||||||
msgid "membership fee (unpaid students)"
|
msgid "membership fee (unpaid students)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:190 templates/member/club_info.html:33
|
#: apps/member/models.py:189 templates/member/club_info.html:33
|
||||||
msgid "membership duration"
|
msgid "membership duration"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:191
|
#: apps/member/models.py:190
|
||||||
msgid "The longest time (in days) a membership can last (NULL = infinite)."
|
msgid "The longest time (in days) a membership can last (NULL = infinite)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:198 templates/member/club_info.html:23
|
#: apps/member/models.py:197 templates/member/club_info.html:23
|
||||||
msgid "membership start"
|
msgid "membership start"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:199
|
#: apps/member/models.py:198
|
||||||
msgid "How long after January 1st the members can renew their membership."
|
msgid "How long after January 1st the members can renew their membership."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:206 templates/member/club_info.html:28
|
#: apps/member/models.py:205 templates/member/club_info.html:28
|
||||||
msgid "membership end"
|
msgid "membership end"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:207
|
#: apps/member/models.py:206
|
||||||
msgid ""
|
msgid ""
|
||||||
"How long the membership can last after January 1st of the next year after "
|
"How long the membership can last after January 1st of the next year after "
|
||||||
"members can renew their membership."
|
"members can renew their membership."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:241 apps/member/models.py:283
|
#: apps/member/models.py:240 apps/member/models.py:283
|
||||||
#: apps/note/models/notes.py:139
|
#: apps/note/models/notes.py:139
|
||||||
msgid "club"
|
msgid "club"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:242
|
#: apps/member/models.py:241
|
||||||
msgid "clubs"
|
msgid "clubs"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:262 apps/permission/models.py:312
|
#: apps/member/models.py:261 apps/permission/models.py:312
|
||||||
msgid "role"
|
msgid "role"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:263 apps/member/models.py:288
|
#: apps/member/models.py:262 apps/member/models.py:288
|
||||||
msgid "roles"
|
msgid "roles"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -509,7 +509,7 @@ msgstr ""
|
||||||
msgid "fee"
|
msgid "fee"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/models.py:320 apps/member/views.py:505 apps/wei/views.py:731
|
#: apps/member/models.py:320 apps/member/views.py:505 apps/wei/views.py:738
|
||||||
msgid "User is not a member of the parent club"
|
msgid "User is not a member of the parent club"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -552,7 +552,7 @@ msgstr ""
|
||||||
msgid "Search user"
|
msgid "Search user"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/views.py:500 apps/wei/views.py:722
|
#: apps/member/views.py:500 apps/wei/views.py:729
|
||||||
msgid ""
|
msgid ""
|
||||||
"This user don't have enough money to join this club, and can't have a "
|
"This user don't have enough money to join this club, and can't have a "
|
||||||
"negative balance."
|
"negative balance."
|
||||||
|
@ -567,8 +567,8 @@ msgid "The membership must begin before {:%m-%d-%Y}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/member/views.py:540 apps/member/views.py:542 apps/member/views.py:544
|
#: apps/member/views.py:540 apps/member/views.py:542 apps/member/views.py:544
|
||||||
#: apps/registration/views.py:288 apps/registration/views.py:290
|
#: apps/registration/views.py:289 apps/registration/views.py:291
|
||||||
#: apps/registration/views.py:292
|
#: apps/registration/views.py:293
|
||||||
msgid "This field is required."
|
msgid "This field is required."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -890,31 +890,31 @@ msgstr ""
|
||||||
msgid "Join Kfet Club"
|
msgid "Join Kfet Club"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/registration/views.py:77
|
#: apps/registration/views.py:78
|
||||||
msgid "Email validation"
|
msgid "Email validation"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/registration/views.py:123
|
#: apps/registration/views.py:124
|
||||||
msgid "Email validation unsuccessful"
|
msgid "Email validation unsuccessful"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/registration/views.py:134
|
#: apps/registration/views.py:135
|
||||||
msgid "Email validation email sent"
|
msgid "Email validation email sent"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/registration/views.py:187
|
#: apps/registration/views.py:188
|
||||||
msgid "Unregistered users"
|
msgid "Unregistered users"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/registration/views.py:254
|
#: apps/registration/views.py:255
|
||||||
msgid "You must join the BDE."
|
msgid "You must join the BDE."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/registration/views.py:276
|
#: apps/registration/views.py:277
|
||||||
msgid "You must join BDE club before joining Kfet club."
|
msgid "You must join BDE club before joining Kfet club."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/registration/views.py:281
|
#: apps/registration/views.py:282
|
||||||
msgid ""
|
msgid ""
|
||||||
"The entered amount is not enough for the memberships, should be at least {}"
|
"The entered amount is not enough for the memberships, should be at least {}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -1121,7 +1121,7 @@ msgid "WEI"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/wei/forms/registration.py:47 apps/wei/models.py:109
|
#: apps/wei/forms/registration.py:47 apps/wei/models.py:109
|
||||||
#: apps/wei/models.py:270
|
#: apps/wei/models.py:271
|
||||||
msgid "bus"
|
msgid "bus"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -1154,10 +1154,6 @@ msgstr ""
|
||||||
msgid "This team doesn't belong to the given bus."
|
msgid "This team doesn't belong to the given bus."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/wei/management/commands/wei_algorithm.py:11
|
|
||||||
msgid "Attribute to each first year member a bus for the WEI"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: apps/wei/models.py:20 templates/wei/weiclub_info.html:23
|
#: apps/wei/models.py:20 templates/wei/weiclub_info.html:23
|
||||||
msgid "year"
|
msgid "year"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -1290,19 +1286,19 @@ msgstr ""
|
||||||
msgid "WEI Users"
|
msgid "WEI Users"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/wei/models.py:280
|
#: apps/wei/models.py:281
|
||||||
msgid "team"
|
msgid "team"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/wei/models.py:290
|
#: apps/wei/models.py:291
|
||||||
msgid "WEI registration"
|
msgid "WEI registration"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/wei/models.py:294
|
#: apps/wei/models.py:295
|
||||||
msgid "WEI membership"
|
msgid "WEI membership"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/wei/models.py:295
|
#: apps/wei/models.py:296
|
||||||
msgid "WEI memberships"
|
msgid "WEI memberships"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -1311,46 +1307,58 @@ msgstr ""
|
||||||
msgid "Validate"
|
msgid "Validate"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/wei/tables.py:125 templates/wei/bus_tables.html:26
|
#: apps/wei/tables.py:96
|
||||||
|
msgid "Year"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: apps/wei/tables.py:134 templates/wei/bus_tables.html:26
|
||||||
#: templates/wei/busteam_tables.html:43
|
#: templates/wei/busteam_tables.html:43
|
||||||
msgid "Teams"
|
msgid "Teams"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/wei/views.py:170
|
#: apps/wei/tables.py:143 apps/wei/tables.py:185
|
||||||
|
msgid "Members count"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: apps/wei/tables.py:150 apps/wei/tables.py:151 apps/wei/tables.py:182
|
||||||
|
msgid "members"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: apps/wei/views.py:177
|
||||||
msgid "Find WEI Membership"
|
msgid "Find WEI Membership"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/wei/views.py:205
|
#: apps/wei/views.py:212
|
||||||
msgid "Find WEI Registration"
|
msgid "Find WEI Registration"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/wei/views.py:414 templates/wei/weiclub_info.html:62
|
#: apps/wei/views.py:421 templates/wei/weiclub_info.html:62
|
||||||
msgid "Register 1A"
|
msgid "Register 1A"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/wei/views.py:435 apps/wei/views.py:503
|
#: apps/wei/views.py:442 apps/wei/views.py:510
|
||||||
msgid "This user is already registered to this WEI."
|
msgid "This user is already registered to this WEI."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/wei/views.py:440
|
#: apps/wei/views.py:447
|
||||||
msgid ""
|
msgid ""
|
||||||
"This user can't be in her/his first year since he/she has already participed "
|
"This user can't be in her/his first year since he/she has already participed "
|
||||||
"to a WEI."
|
"to a WEI."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/wei/views.py:468 templates/wei/weiclub_info.html:63
|
#: apps/wei/views.py:475 templates/wei/weiclub_info.html:63
|
||||||
msgid "Register 2A+"
|
msgid "Register 2A+"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/wei/views.py:486 apps/wei/views.py:569
|
#: apps/wei/views.py:493 apps/wei/views.py:576
|
||||||
msgid "You already opened an account in the Société générale."
|
msgid "You already opened an account in the Société générale."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/wei/views.py:726
|
#: apps/wei/views.py:733
|
||||||
msgid "This user didn't give her/his caution check."
|
msgid "This user didn't give her/his caution check."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/wei/views.py:795 apps/wei/views.py:815 apps/wei/views.py:825
|
#: apps/wei/views.py:802 apps/wei/views.py:822 apps/wei/views.py:832
|
||||||
#: templates/wei/survey.html:12 templates/wei/survey_closed.html:12
|
#: templates/wei/survey.html:12 templates/wei/survey_closed.html:12
|
||||||
#: templates/wei/survey_end.html:12
|
#: templates/wei/survey_end.html:12
|
||||||
msgid "Survey WEI"
|
msgid "Survey WEI"
|
||||||
|
@ -2010,6 +2018,11 @@ msgstr ""
|
||||||
msgid "Members"
|
msgid "Members"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/wei/bus_tables.html:48 templates/wei/busteam_tables.html:52
|
||||||
|
#: templates/wei/weimembership_list.html:30
|
||||||
|
msgid "View as PDF"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: templates/wei/survey.html:24
|
#: templates/wei/survey.html:24
|
||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
|
@ -3,7 +3,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2020-04-22 17:25+0200\n"
|
"POT-Creation-Date: 2020-04-23 18:21+0200\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -40,7 +40,7 @@ msgid "You can't invite more than 3 people to this activity."
|
||||||
msgstr "Vous ne pouvez pas inviter plus de 3 personnes à cette activité."
|
msgstr "Vous ne pouvez pas inviter plus de 3 personnes à cette activité."
|
||||||
|
|
||||||
#: apps/activity/models.py:23 apps/activity/models.py:48
|
#: apps/activity/models.py:23 apps/activity/models.py:48
|
||||||
#: apps/member/models.py:152 apps/member/models.py:256
|
#: apps/member/models.py:151 apps/member/models.py:255
|
||||||
#: apps/note/models/notes.py:188 apps/note/models/transactions.py:25
|
#: apps/note/models/notes.py:188 apps/note/models/transactions.py:25
|
||||||
#: apps/note/models/transactions.py:45 apps/note/models/transactions.py:250
|
#: apps/note/models/transactions.py:45 apps/note/models/transactions.py:250
|
||||||
#: apps/wei/models.py:62 templates/member/club_info.html:13
|
#: apps/wei/models.py:62 templates/member/club_info.html:13
|
||||||
|
@ -304,175 +304,175 @@ msgstr "Montant à créditer"
|
||||||
msgid "Bank"
|
msgid "Bank"
|
||||||
msgstr "Banque"
|
msgstr "Banque"
|
||||||
|
|
||||||
#: apps/member/models.py:35
|
#: apps/member/models.py:34
|
||||||
#: templates/registration/future_profile_detail.html:47
|
#: templates/registration/future_profile_detail.html:47
|
||||||
#: templates/wei/weimembership_form.html:48
|
#: templates/wei/weimembership_form.html:48
|
||||||
msgid "phone number"
|
msgid "phone number"
|
||||||
msgstr "numéro de téléphone"
|
msgstr "numéro de téléphone"
|
||||||
|
|
||||||
#: apps/member/models.py:42 templates/member/profile_info.html:27
|
#: apps/member/models.py:41 templates/member/profile_info.html:27
|
||||||
#: templates/registration/future_profile_detail.html:41
|
#: templates/registration/future_profile_detail.html:41
|
||||||
#: templates/wei/weimembership_form.html:42
|
#: templates/wei/weimembership_form.html:42
|
||||||
msgid "section"
|
msgid "section"
|
||||||
msgstr "section"
|
msgstr "section"
|
||||||
|
|
||||||
#: apps/member/models.py:43
|
#: apps/member/models.py:42
|
||||||
msgid "e.g. \"1A0\", \"9A♥\", \"SAPHIRE\""
|
msgid "e.g. \"1A0\", \"9A♥\", \"SAPHIRE\""
|
||||||
msgstr "e.g. \"1A0\", \"9A♥\", \"SAPHIRE\""
|
msgstr "e.g. \"1A0\", \"9A♥\", \"SAPHIRE\""
|
||||||
|
|
||||||
#: apps/member/models.py:51 templates/wei/weimembership_form.html:36
|
#: apps/member/models.py:50 templates/wei/weimembership_form.html:36
|
||||||
msgid "department"
|
msgid "department"
|
||||||
msgstr "département"
|
msgstr "département"
|
||||||
|
|
||||||
#: apps/member/models.py:53
|
#: apps/member/models.py:52
|
||||||
msgid "Informatics (A0)"
|
msgid "Informatics (A0)"
|
||||||
msgstr "Informatique (A0)"
|
msgstr "Informatique (A0)"
|
||||||
|
|
||||||
#: apps/member/models.py:54
|
#: apps/member/models.py:53
|
||||||
msgid "Mathematics (A1)"
|
msgid "Mathematics (A1)"
|
||||||
msgstr "Mathématiques (A1)"
|
msgstr "Mathématiques (A1)"
|
||||||
|
|
||||||
#: apps/member/models.py:55
|
#: apps/member/models.py:54
|
||||||
msgid "Physics (A2)"
|
msgid "Physics (A2)"
|
||||||
msgstr "Physique (A2)"
|
msgstr "Physique (A2)"
|
||||||
|
|
||||||
#: apps/member/models.py:56
|
#: apps/member/models.py:55
|
||||||
msgid "Applied physics (A'2)"
|
msgid "Applied physics (A'2)"
|
||||||
msgstr "Physique appliquée (A'2)"
|
msgstr "Physique appliquée (A'2)"
|
||||||
|
|
||||||
#: apps/member/models.py:57
|
#: apps/member/models.py:56
|
||||||
msgid "Chemistry (A''2)"
|
msgid "Chemistry (A''2)"
|
||||||
msgstr "Chimie (A''2)"
|
msgstr "Chimie (A''2)"
|
||||||
|
|
||||||
#: apps/member/models.py:58
|
#: apps/member/models.py:57
|
||||||
msgid "Biology (A3)"
|
msgid "Biology (A3)"
|
||||||
msgstr "Biologie (A3)"
|
msgstr "Biologie (A3)"
|
||||||
|
|
||||||
#: apps/member/models.py:59
|
#: apps/member/models.py:58
|
||||||
msgid "SAPHIRE (B1234)"
|
msgid "SAPHIRE (B1234)"
|
||||||
msgstr "SAPHIRE (B1234)"
|
msgstr "SAPHIRE (B1234)"
|
||||||
|
|
||||||
#: apps/member/models.py:60
|
#: apps/member/models.py:59
|
||||||
msgid "Mechanics (B1)"
|
msgid "Mechanics (B1)"
|
||||||
msgstr "Mécanique (B1)"
|
msgstr "Mécanique (B1)"
|
||||||
|
|
||||||
#: apps/member/models.py:61
|
#: apps/member/models.py:60
|
||||||
msgid "Civil engineering (B2)"
|
msgid "Civil engineering (B2)"
|
||||||
msgstr "Génie civil (B2)"
|
msgstr "Génie civil (B2)"
|
||||||
|
|
||||||
#: apps/member/models.py:62
|
#: apps/member/models.py:61
|
||||||
msgid "Mechanical engineering (B3)"
|
msgid "Mechanical engineering (B3)"
|
||||||
msgstr "Génie mécanique (B3)"
|
msgstr "Génie mécanique (B3)"
|
||||||
|
|
||||||
#: apps/member/models.py:63
|
#: apps/member/models.py:62
|
||||||
msgid "EEA (B4)"
|
msgid "EEA (B4)"
|
||||||
msgstr "EEA (B4)"
|
msgstr "EEA (B4)"
|
||||||
|
|
||||||
#: apps/member/models.py:64
|
#: apps/member/models.py:63
|
||||||
msgid "Design (C)"
|
msgid "Design (C)"
|
||||||
msgstr "Design (C)"
|
msgstr "Design (C)"
|
||||||
|
|
||||||
#: apps/member/models.py:65
|
#: apps/member/models.py:64
|
||||||
msgid "Economy-management (D2)"
|
msgid "Economy-management (D2)"
|
||||||
msgstr "Économie-gestion (D2)"
|
msgstr "Économie-gestion (D2)"
|
||||||
|
|
||||||
#: apps/member/models.py:66
|
#: apps/member/models.py:65
|
||||||
msgid "Social sciences (D3)"
|
msgid "Social sciences (D3)"
|
||||||
msgstr "Sciences sociales (D3)"
|
msgstr "Sciences sociales (D3)"
|
||||||
|
|
||||||
#: apps/member/models.py:67
|
#: apps/member/models.py:66
|
||||||
msgid "English (E)"
|
msgid "English (E)"
|
||||||
msgstr "Anglais (E)"
|
msgstr "Anglais (E)"
|
||||||
|
|
||||||
#: apps/member/models.py:68
|
#: apps/member/models.py:67
|
||||||
msgid "External (EXT)"
|
msgid "External (EXT)"
|
||||||
msgstr "Externe (EXT)"
|
msgstr "Externe (EXT)"
|
||||||
|
|
||||||
#: apps/member/models.py:75
|
#: apps/member/models.py:74
|
||||||
msgid "promotion"
|
msgid "promotion"
|
||||||
msgstr "promotion"
|
msgstr "promotion"
|
||||||
|
|
||||||
#: apps/member/models.py:76
|
#: apps/member/models.py:75
|
||||||
msgid "Year of entry to the school (None if not ENS student)"
|
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)"
|
msgstr "Année d'entrée dans l'école (None si non-étudiant·e de l'ENS)"
|
||||||
|
|
||||||
#: apps/member/models.py:80 templates/member/profile_info.html:30
|
#: apps/member/models.py:79 templates/member/profile_info.html:30
|
||||||
#: templates/registration/future_profile_detail.html:44
|
#: templates/registration/future_profile_detail.html:44
|
||||||
#: templates/wei/weimembership_form.html:45
|
#: templates/wei/weimembership_form.html:45
|
||||||
msgid "address"
|
msgid "address"
|
||||||
msgstr "adresse"
|
msgstr "adresse"
|
||||||
|
|
||||||
#: apps/member/models.py:87
|
#: apps/member/models.py:86
|
||||||
#: templates/registration/future_profile_detail.html:50
|
#: templates/registration/future_profile_detail.html:50
|
||||||
#: templates/wei/weimembership_form.html:51
|
#: templates/wei/weimembership_form.html:51
|
||||||
msgid "paid"
|
msgid "paid"
|
||||||
msgstr "payé"
|
msgstr "payé"
|
||||||
|
|
||||||
#: apps/member/models.py:88
|
#: apps/member/models.py:87
|
||||||
msgid "Tells if the user receive a salary."
|
msgid "Tells if the user receive a salary."
|
||||||
msgstr "Indique si l'utilisateur perçoit un salaire."
|
msgstr "Indique si l'utilisateur perçoit un salaire."
|
||||||
|
|
||||||
#: apps/member/models.py:93
|
#: apps/member/models.py:92
|
||||||
msgid "email confirmed"
|
msgid "email confirmed"
|
||||||
msgstr "adresse email confirmée"
|
msgstr "adresse email confirmée"
|
||||||
|
|
||||||
#: apps/member/models.py:98
|
#: apps/member/models.py:97
|
||||||
msgid "registration valid"
|
msgid "registration valid"
|
||||||
msgstr "inscription valid"
|
msgstr "inscription valid"
|
||||||
|
|
||||||
#: apps/member/models.py:127 apps/member/models.py:128
|
#: apps/member/models.py:126 apps/member/models.py:127
|
||||||
msgid "user profile"
|
msgid "user profile"
|
||||||
msgstr "profil utilisateur"
|
msgstr "profil utilisateur"
|
||||||
|
|
||||||
#: apps/member/models.py:157 templates/member/club_info.html:57
|
#: apps/member/models.py:156 templates/member/club_info.html:57
|
||||||
#: templates/registration/future_profile_detail.html:22
|
#: templates/registration/future_profile_detail.html:22
|
||||||
#: templates/wei/weiclub_info.html:52 templates/wei/weimembership_form.html:24
|
#: templates/wei/weiclub_info.html:52 templates/wei/weimembership_form.html:24
|
||||||
msgid "email"
|
msgid "email"
|
||||||
msgstr "courriel"
|
msgstr "courriel"
|
||||||
|
|
||||||
#: apps/member/models.py:164
|
#: apps/member/models.py:163
|
||||||
msgid "parent club"
|
msgid "parent club"
|
||||||
msgstr "club parent"
|
msgstr "club parent"
|
||||||
|
|
||||||
#: apps/member/models.py:173
|
#: apps/member/models.py:172
|
||||||
msgid "require memberships"
|
msgid "require memberships"
|
||||||
msgstr "nécessite des adhésions"
|
msgstr "nécessite des adhésions"
|
||||||
|
|
||||||
#: apps/member/models.py:174
|
#: apps/member/models.py:173
|
||||||
msgid "Uncheck if this club don't require memberships."
|
msgid "Uncheck if this club don't require memberships."
|
||||||
msgstr "Décochez si ce club n'utilise pas d'adhésions."
|
msgstr "Décochez si ce club n'utilise pas d'adhésions."
|
||||||
|
|
||||||
#: apps/member/models.py:179 templates/member/club_info.html:41
|
#: apps/member/models.py:178 templates/member/club_info.html:41
|
||||||
msgid "membership fee (paid students)"
|
msgid "membership fee (paid students)"
|
||||||
msgstr "cotisation pour adhérer (normalien élève)"
|
msgstr "cotisation pour adhérer (normalien élève)"
|
||||||
|
|
||||||
#: apps/member/models.py:184 templates/member/club_info.html:44
|
#: apps/member/models.py:183 templates/member/club_info.html:44
|
||||||
msgid "membership fee (unpaid students)"
|
msgid "membership fee (unpaid students)"
|
||||||
msgstr "cotisation pour adhérer (normalien étudiant)"
|
msgstr "cotisation pour adhérer (normalien étudiant)"
|
||||||
|
|
||||||
#: apps/member/models.py:190 templates/member/club_info.html:33
|
#: apps/member/models.py:189 templates/member/club_info.html:33
|
||||||
msgid "membership duration"
|
msgid "membership duration"
|
||||||
msgstr "durée de l'adhésion"
|
msgstr "durée de l'adhésion"
|
||||||
|
|
||||||
#: apps/member/models.py:191
|
#: apps/member/models.py:190
|
||||||
msgid "The longest time (in days) a membership can last (NULL = infinite)."
|
msgid "The longest time (in days) a membership can last (NULL = infinite)."
|
||||||
msgstr "La durée maximale (en jours) d'une adhésion (NULL = infinie)."
|
msgstr "La durée maximale (en jours) d'une adhésion (NULL = infinie)."
|
||||||
|
|
||||||
#: apps/member/models.py:198 templates/member/club_info.html:23
|
#: apps/member/models.py:197 templates/member/club_info.html:23
|
||||||
msgid "membership start"
|
msgid "membership start"
|
||||||
msgstr "début de l'adhésion"
|
msgstr "début de l'adhésion"
|
||||||
|
|
||||||
#: apps/member/models.py:199
|
#: apps/member/models.py:198
|
||||||
msgid "How long after January 1st the members can renew their membership."
|
msgid "How long after January 1st the members can renew their membership."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Combien de temps après le 1er Janvier les adhérents peuvent renouveler leur "
|
"Combien de temps après le 1er Janvier les adhérents peuvent renouveler leur "
|
||||||
"adhésion."
|
"adhésion."
|
||||||
|
|
||||||
#: apps/member/models.py:206 templates/member/club_info.html:28
|
#: apps/member/models.py:205 templates/member/club_info.html:28
|
||||||
msgid "membership end"
|
msgid "membership end"
|
||||||
msgstr "fin de l'adhésion"
|
msgstr "fin de l'adhésion"
|
||||||
|
|
||||||
#: apps/member/models.py:207
|
#: apps/member/models.py:206
|
||||||
msgid ""
|
msgid ""
|
||||||
"How long the membership can last after January 1st of the next year after "
|
"How long the membership can last after January 1st of the next year after "
|
||||||
"members can renew their membership."
|
"members can renew their membership."
|
||||||
|
@ -480,20 +480,20 @@ msgstr ""
|
||||||
"Combien de temps l'adhésion peut durer après le 1er Janvier de l'année "
|
"Combien de temps l'adhésion peut durer après le 1er Janvier de l'année "
|
||||||
"suivante avant que les adhérents peuvent renouveler leur adhésion."
|
"suivante avant que les adhérents peuvent renouveler leur adhésion."
|
||||||
|
|
||||||
#: apps/member/models.py:241 apps/member/models.py:283
|
#: apps/member/models.py:240 apps/member/models.py:283
|
||||||
#: apps/note/models/notes.py:139
|
#: apps/note/models/notes.py:139
|
||||||
msgid "club"
|
msgid "club"
|
||||||
msgstr "club"
|
msgstr "club"
|
||||||
|
|
||||||
#: apps/member/models.py:242
|
#: apps/member/models.py:241
|
||||||
msgid "clubs"
|
msgid "clubs"
|
||||||
msgstr "clubs"
|
msgstr "clubs"
|
||||||
|
|
||||||
#: apps/member/models.py:262 apps/permission/models.py:312
|
#: apps/member/models.py:261 apps/permission/models.py:312
|
||||||
msgid "role"
|
msgid "role"
|
||||||
msgstr "rôle"
|
msgstr "rôle"
|
||||||
|
|
||||||
#: apps/member/models.py:263 apps/member/models.py:288
|
#: apps/member/models.py:262 apps/member/models.py:288
|
||||||
msgid "roles"
|
msgid "roles"
|
||||||
msgstr "rôles"
|
msgstr "rôles"
|
||||||
|
|
||||||
|
@ -509,7 +509,7 @@ msgstr "l'adhésion finit le"
|
||||||
msgid "fee"
|
msgid "fee"
|
||||||
msgstr "cotisation"
|
msgstr "cotisation"
|
||||||
|
|
||||||
#: apps/member/models.py:320 apps/member/views.py:505 apps/wei/views.py:731
|
#: apps/member/models.py:320 apps/member/views.py:505 apps/wei/views.py:738
|
||||||
msgid "User is not a member of the parent club"
|
msgid "User is not a member of the parent club"
|
||||||
msgstr "L'utilisateur n'est pas membre du club parent"
|
msgstr "L'utilisateur n'est pas membre du club parent"
|
||||||
|
|
||||||
|
@ -552,7 +552,7 @@ msgstr "Un alias avec un nom similaire existe déjà."
|
||||||
msgid "Search user"
|
msgid "Search user"
|
||||||
msgstr "Chercher un utilisateur"
|
msgstr "Chercher un utilisateur"
|
||||||
|
|
||||||
#: apps/member/views.py:500 apps/wei/views.py:722
|
#: apps/member/views.py:500 apps/wei/views.py:729
|
||||||
msgid ""
|
msgid ""
|
||||||
"This user don't have enough money to join this club, and can't have a "
|
"This user don't have enough money to join this club, and can't have a "
|
||||||
"negative balance."
|
"negative balance."
|
||||||
|
@ -569,8 +569,8 @@ msgid "The membership must begin before {:%m-%d-%Y}."
|
||||||
msgstr "L'adhésion doit commencer avant le {:%d/%m/%Y}."
|
msgstr "L'adhésion doit commencer avant le {:%d/%m/%Y}."
|
||||||
|
|
||||||
#: apps/member/views.py:540 apps/member/views.py:542 apps/member/views.py:544
|
#: apps/member/views.py:540 apps/member/views.py:542 apps/member/views.py:544
|
||||||
#: apps/registration/views.py:288 apps/registration/views.py:290
|
#: apps/registration/views.py:289 apps/registration/views.py:291
|
||||||
#: apps/registration/views.py:292
|
#: apps/registration/views.py:293
|
||||||
msgid "This field is required."
|
msgid "This field is required."
|
||||||
msgstr "Ce champ est requis."
|
msgstr "Ce champ est requis."
|
||||||
|
|
||||||
|
@ -896,31 +896,31 @@ msgstr "Adhérer au club BDE"
|
||||||
msgid "Join Kfet Club"
|
msgid "Join Kfet Club"
|
||||||
msgstr "Adhérer au club Kfet"
|
msgstr "Adhérer au club Kfet"
|
||||||
|
|
||||||
#: apps/registration/views.py:77
|
#: apps/registration/views.py:78
|
||||||
msgid "Email validation"
|
msgid "Email validation"
|
||||||
msgstr "Validation de l'adresse mail"
|
msgstr "Validation de l'adresse mail"
|
||||||
|
|
||||||
#: apps/registration/views.py:123
|
#: apps/registration/views.py:124
|
||||||
msgid "Email validation unsuccessful"
|
msgid "Email validation unsuccessful"
|
||||||
msgstr " La validation de l'adresse mail a échoué"
|
msgstr " La validation de l'adresse mail a échoué"
|
||||||
|
|
||||||
#: apps/registration/views.py:134
|
#: apps/registration/views.py:135
|
||||||
msgid "Email validation email sent"
|
msgid "Email validation email sent"
|
||||||
msgstr "L'email de vérification de l'adresse email a bien été envoyé."
|
msgstr "L'email de vérification de l'adresse email a bien été envoyé."
|
||||||
|
|
||||||
#: apps/registration/views.py:187
|
#: apps/registration/views.py:188
|
||||||
msgid "Unregistered users"
|
msgid "Unregistered users"
|
||||||
msgstr "Utilisateurs en attente d'inscription"
|
msgstr "Utilisateurs en attente d'inscription"
|
||||||
|
|
||||||
#: apps/registration/views.py:254
|
#: apps/registration/views.py:255
|
||||||
msgid "You must join the BDE."
|
msgid "You must join the BDE."
|
||||||
msgstr "Vous devez adhérer au BDE."
|
msgstr "Vous devez adhérer au BDE."
|
||||||
|
|
||||||
#: apps/registration/views.py:276
|
#: apps/registration/views.py:277
|
||||||
msgid "You must join BDE club before joining Kfet club."
|
msgid "You must join BDE club before joining Kfet club."
|
||||||
msgstr "Vous devez adhérer au club BDE avant d'adhérer au club Kfet."
|
msgstr "Vous devez adhérer au club BDE avant d'adhérer au club Kfet."
|
||||||
|
|
||||||
#: apps/registration/views.py:281
|
#: apps/registration/views.py:282
|
||||||
msgid ""
|
msgid ""
|
||||||
"The entered amount is not enough for the memberships, should be at least {}"
|
"The entered amount is not enough for the memberships, should be at least {}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -1131,7 +1131,7 @@ msgid "WEI"
|
||||||
msgstr "WEI"
|
msgstr "WEI"
|
||||||
|
|
||||||
#: apps/wei/forms/registration.py:47 apps/wei/models.py:109
|
#: apps/wei/forms/registration.py:47 apps/wei/models.py:109
|
||||||
#: apps/wei/models.py:270
|
#: apps/wei/models.py:271
|
||||||
msgid "bus"
|
msgid "bus"
|
||||||
msgstr "Bus"
|
msgstr "Bus"
|
||||||
|
|
||||||
|
@ -1169,10 +1169,6 @@ msgstr "Sélectionnez les rôles qui vous intéressent."
|
||||||
msgid "This team doesn't belong to the given bus."
|
msgid "This team doesn't belong to the given bus."
|
||||||
msgstr "Cette équipe n'appartient pas à ce bus."
|
msgstr "Cette équipe n'appartient pas à ce bus."
|
||||||
|
|
||||||
#: apps/wei/management/commands/wei_algorithm.py:11
|
|
||||||
msgid "Attribute to each first year member a bus for the WEI"
|
|
||||||
msgstr "Attribuer à chaque première année un bus pour le WEI"
|
|
||||||
|
|
||||||
#: apps/wei/models.py:20 templates/wei/weiclub_info.html:23
|
#: apps/wei/models.py:20 templates/wei/weiclub_info.html:23
|
||||||
msgid "year"
|
msgid "year"
|
||||||
msgstr "année"
|
msgstr "année"
|
||||||
|
@ -1315,19 +1311,19 @@ msgstr "Participant au WEI"
|
||||||
msgid "WEI Users"
|
msgid "WEI Users"
|
||||||
msgstr "Participants au WEI"
|
msgstr "Participants au WEI"
|
||||||
|
|
||||||
#: apps/wei/models.py:280
|
#: apps/wei/models.py:281
|
||||||
msgid "team"
|
msgid "team"
|
||||||
msgstr "équipe"
|
msgstr "équipe"
|
||||||
|
|
||||||
#: apps/wei/models.py:290
|
#: apps/wei/models.py:291
|
||||||
msgid "WEI registration"
|
msgid "WEI registration"
|
||||||
msgstr "inscription au WEI"
|
msgstr "inscription au WEI"
|
||||||
|
|
||||||
#: apps/wei/models.py:294
|
#: apps/wei/models.py:295
|
||||||
msgid "WEI membership"
|
msgid "WEI membership"
|
||||||
msgstr "adhésion au WEI"
|
msgstr "adhésion au WEI"
|
||||||
|
|
||||||
#: apps/wei/models.py:295
|
#: apps/wei/models.py:296
|
||||||
msgid "WEI memberships"
|
msgid "WEI memberships"
|
||||||
msgstr "adhésions au WEI"
|
msgstr "adhésions au WEI"
|
||||||
|
|
||||||
|
@ -1336,28 +1332,40 @@ msgstr "adhésions au WEI"
|
||||||
msgid "Validate"
|
msgid "Validate"
|
||||||
msgstr "Valider"
|
msgstr "Valider"
|
||||||
|
|
||||||
#: apps/wei/tables.py:125 templates/wei/bus_tables.html:26
|
#: apps/wei/tables.py:96
|
||||||
|
msgid "Year"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: apps/wei/tables.py:134 templates/wei/bus_tables.html:26
|
||||||
#: templates/wei/busteam_tables.html:43
|
#: templates/wei/busteam_tables.html:43
|
||||||
msgid "Teams"
|
msgid "Teams"
|
||||||
msgstr "Équipes"
|
msgstr "Équipes"
|
||||||
|
|
||||||
#: apps/wei/views.py:170
|
#: apps/wei/tables.py:143 apps/wei/tables.py:185
|
||||||
|
msgid "Members count"
|
||||||
|
msgstr "Nombre de membres"
|
||||||
|
|
||||||
|
#: apps/wei/tables.py:150 apps/wei/tables.py:151 apps/wei/tables.py:182
|
||||||
|
msgid "members"
|
||||||
|
msgstr "adhérents"
|
||||||
|
|
||||||
|
#: apps/wei/views.py:177
|
||||||
msgid "Find WEI Membership"
|
msgid "Find WEI Membership"
|
||||||
msgstr "Trouver une adhésion au WEI"
|
msgstr "Trouver une adhésion au WEI"
|
||||||
|
|
||||||
#: apps/wei/views.py:205
|
#: apps/wei/views.py:212
|
||||||
msgid "Find WEI Registration"
|
msgid "Find WEI Registration"
|
||||||
msgstr "Trouver une inscription au WEI"
|
msgstr "Trouver une inscription au WEI"
|
||||||
|
|
||||||
#: apps/wei/views.py:414 templates/wei/weiclub_info.html:62
|
#: apps/wei/views.py:421 templates/wei/weiclub_info.html:62
|
||||||
msgid "Register 1A"
|
msgid "Register 1A"
|
||||||
msgstr "Inscrire un 1A"
|
msgstr "Inscrire un 1A"
|
||||||
|
|
||||||
#: apps/wei/views.py:435 apps/wei/views.py:503
|
#: apps/wei/views.py:442 apps/wei/views.py:510
|
||||||
msgid "This user is already registered to this WEI."
|
msgid "This user is already registered to this WEI."
|
||||||
msgstr "Cette personne est déjà inscrite au WEI."
|
msgstr "Cette personne est déjà inscrite au WEI."
|
||||||
|
|
||||||
#: apps/wei/views.py:440
|
#: apps/wei/views.py:447
|
||||||
msgid ""
|
msgid ""
|
||||||
"This user can't be in her/his first year since he/she has already participed "
|
"This user can't be in her/his first year since he/she has already participed "
|
||||||
"to a WEI."
|
"to a WEI."
|
||||||
|
@ -1365,19 +1373,19 @@ msgstr ""
|
||||||
"Cet utilisateur ne peut pas être en première année puisqu'iel a déjà "
|
"Cet utilisateur ne peut pas être en première année puisqu'iel a déjà "
|
||||||
"participé à un WEI."
|
"participé à un WEI."
|
||||||
|
|
||||||
#: apps/wei/views.py:468 templates/wei/weiclub_info.html:63
|
#: apps/wei/views.py:475 templates/wei/weiclub_info.html:63
|
||||||
msgid "Register 2A+"
|
msgid "Register 2A+"
|
||||||
msgstr "Inscrire un 2A+"
|
msgstr "Inscrire un 2A+"
|
||||||
|
|
||||||
#: apps/wei/views.py:486 apps/wei/views.py:569
|
#: apps/wei/views.py:493 apps/wei/views.py:576
|
||||||
msgid "You already opened an account in the Société générale."
|
msgid "You already opened an account in the Société générale."
|
||||||
msgstr "Vous avez déjà ouvert un compte auprès de la société générale."
|
msgstr "Vous avez déjà ouvert un compte auprès de la société générale."
|
||||||
|
|
||||||
#: apps/wei/views.py:726
|
#: apps/wei/views.py:733
|
||||||
msgid "This user didn't give her/his caution check."
|
msgid "This user didn't give her/his caution check."
|
||||||
msgstr "Cet utilisateur n'a pas donné son chèque de caution."
|
msgstr "Cet utilisateur n'a pas donné son chèque de caution."
|
||||||
|
|
||||||
#: apps/wei/views.py:795 apps/wei/views.py:815 apps/wei/views.py:825
|
#: apps/wei/views.py:802 apps/wei/views.py:822 apps/wei/views.py:832
|
||||||
#: templates/wei/survey.html:12 templates/wei/survey_closed.html:12
|
#: templates/wei/survey.html:12 templates/wei/survey_closed.html:12
|
||||||
#: templates/wei/survey_end.html:12
|
#: templates/wei/survey_end.html:12
|
||||||
msgid "Survey WEI"
|
msgid "Survey WEI"
|
||||||
|
@ -2069,6 +2077,11 @@ msgstr "Ajouter une équipe"
|
||||||
msgid "Members"
|
msgid "Members"
|
||||||
msgstr "Membres"
|
msgstr "Membres"
|
||||||
|
|
||||||
|
#: templates/wei/bus_tables.html:48 templates/wei/busteam_tables.html:52
|
||||||
|
#: templates/wei/weimembership_list.html:30
|
||||||
|
msgid "View as PDF"
|
||||||
|
msgstr "Télécharger au format PDF"
|
||||||
|
|
||||||
#: templates/wei/survey.html:24
|
#: templates/wei/survey.html:24
|
||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr "Suivant"
|
msgstr "Suivant"
|
||||||
|
@ -2292,3 +2305,6 @@ msgstr "Il n'y a pas de pré-inscription en attente avec cette entrée."
|
||||||
#: templates/wei/weiregistration_list.html:24
|
#: templates/wei/weiregistration_list.html:24
|
||||||
msgid "View validated memberships..."
|
msgid "View validated memberships..."
|
||||||
msgstr "Voir les adhésions validées ..."
|
msgstr "Voir les adhésions validées ..."
|
||||||
|
|
||||||
|
#~ msgid "Attribute to each first year member a bus for the WEI"
|
||||||
|
#~ msgstr "Attribuer à chaque première année un bus pour le WEI"
|
||||||
|
|
|
@ -41,4 +41,10 @@
|
||||||
</div>
|
</div>
|
||||||
{% render_table memberships %}
|
{% render_table memberships %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
<a href="{% url 'wei:wei_memberships_bus_pdf' wei_pk=club.pk bus_pk=object.pk %}" data-turbolinks="false">
|
||||||
|
<button class="btn btn-block btn-danger"><i class="fa fa-file-pdf-o"></i> {% trans "View as PDF" %}</button>
|
||||||
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -45,4 +45,10 @@
|
||||||
</div>
|
</div>
|
||||||
{% render_table memberships %}
|
{% render_table memberships %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
<a href="{% url 'wei:wei_memberships_team_pdf' wei_pk=club.pk bus_pk=object.bus.pk team_pk=object.pk %}" data-turbolinks="false">
|
||||||
|
<button class="btn btn-block btn-danger"><i class="fa fa-file-pdf-o"></i> {% trans "View as PDF" %}</button>
|
||||||
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
\documentclass{article}
|
||||||
|
|
||||||
|
\usepackage[utf8]{inputenc}
|
||||||
|
\usepackage[T1]{fontenc}
|
||||||
|
\usepackage[french]{babel}
|
||||||
|
|
||||||
|
\usepackage[margin=2cm]{geometry}
|
||||||
|
\usepackage{tabularx}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
\begin{center}
|
||||||
|
\huge{Liste des inscrits \og {{ wei.name }} \fg{}}
|
||||||
|
|
||||||
|
{% if bus %}
|
||||||
|
\LARGE{Bus {{ bus.name }}}
|
||||||
|
|
||||||
|
|
||||||
|
{% if team %}
|
||||||
|
\Large{Équipe {{ team.name }}}
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
\end{center}
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\begin{tabularx}{\textwidth}{|c|c|c|c|c|c|c|X|}
|
||||||
|
\hline
|
||||||
|
\textbf{Nom} & \textbf{Prénom} & \textbf{Genre} & \textbf{Département} & \textbf{Année} & \textbf{Bus} & \textbf{Équipe} & \textbf{Rôles} \\
|
||||||
|
\hline
|
||||||
|
{% for membership in memberships %}
|
||||||
|
{{ membership.user.last_name|safe }} & {{ membership.user.first_name|safe }} & {{ membership.registration.get_gender_display|safe }}
|
||||||
|
& {{ membership.user.profile.get_department_display|safe }} & {{ membership.user.profile.ens_year|safe }}A & {{ membership.bus.name|safe }}
|
||||||
|
& {% if membership.team %}{{ membership.team.name|safe }}{% else %}--{% endif %} & {{ membership.roles.all|join:", "|safe }} \\
|
||||||
|
\hline
|
||||||
|
{% endfor %}
|
||||||
|
\end{tabularx}
|
||||||
|
\end{center}
|
||||||
|
\end{document}
|
|
@ -23,6 +23,12 @@
|
||||||
<a href="{% url 'wei:wei_registrations' pk=club.pk %}">
|
<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>
|
</a>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
<a href="{% url 'wei:wei_memberships_pdf' wei_pk=club.pk %}" data-turbolinks="false">
|
||||||
|
<button class="btn btn-block btn-danger"><i class="fa fa-file-pdf-o"></i> {% trans "View as PDF" %}</button>
|
||||||
|
</a>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block extrajavascript %}
|
{% block extrajavascript %}
|
||||||
|
|
Loading…
Reference in New Issue