mirror of
https://github.com/ae-utbm/sith.git
synced 2026-10-13 22:26:01 +00:00
Merge branch 'master' into taiste
This commit is contained in:
8 files changed
+256
-172
No files matched your search
@@ -2,7 +2,12 @@
|
|||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<h3>{% trans %}404, Not Found{% endtrans %}</h3>
|
<div id="page">
|
||||||
|
<h3>{% trans %}404, Not Found{% endtrans %}</h3>
|
||||||
|
<p class="alert alert-red">
|
||||||
|
{{ exception }}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
|||||||
@@ -72,7 +72,9 @@ def forbidden(request, exception):
|
|||||||
|
|
||||||
|
|
||||||
def not_found(request, exception):
|
def not_found(request, exception):
|
||||||
return HttpResponseNotFound(render(request, "core/404.jinja"))
|
return HttpResponseNotFound(
|
||||||
|
render(request, "core/404.jinja", context={"exception": exception})
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def internal_servor_error(request):
|
def internal_servor_error(request):
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Generated by Django 3.2.16 on 2023-02-03 10:31
|
# Generated by Django 3.2.16 on 2023-03-02 10:07
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
@@ -51,7 +51,7 @@ class Migration(migrations.Migration):
|
|||||||
on_delete=django.db.models.deletion.CASCADE,
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
related_name="galaxy_user",
|
related_name="galaxy_user",
|
||||||
to=settings.AUTH_USER_MODEL,
|
to=settings.AUTH_USER_MODEL,
|
||||||
verbose_name="galaxy user",
|
verbose_name="star owner",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
@@ -96,7 +96,7 @@ class Migration(migrations.Migration):
|
|||||||
on_delete=django.db.models.deletion.CASCADE,
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
related_name="lanes1",
|
related_name="lanes1",
|
||||||
to="galaxy.galaxystar",
|
to="galaxy.galaxystar",
|
||||||
verbose_name="galaxy lanes 1",
|
verbose_name="galaxy star 1",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
@@ -105,7 +105,7 @@ class Migration(migrations.Migration):
|
|||||||
on_delete=django.db.models.deletion.CASCADE,
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
related_name="lanes2",
|
related_name="lanes2",
|
||||||
to="galaxy.galaxystar",
|
to="galaxy.galaxystar",
|
||||||
verbose_name="galaxy lanes 2",
|
verbose_name="galaxy star 2",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|||||||
+13
-12
@@ -25,6 +25,7 @@
|
|||||||
import math
|
import math
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
from typing import Tuple
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.db.models import Q, Case, F, Value, When, Count
|
from django.db.models import Q, Case, F, Value, When, Count
|
||||||
from django.db.models.functions import Concat
|
from django.db.models.functions import Concat
|
||||||
@@ -47,7 +48,7 @@ class GalaxyStar(models.Model):
|
|||||||
|
|
||||||
owner = models.OneToOneField(
|
owner = models.OneToOneField(
|
||||||
User,
|
User,
|
||||||
verbose_name=_("galaxy user"),
|
verbose_name=_("star owner"),
|
||||||
related_name="galaxy_user",
|
related_name="galaxy_user",
|
||||||
on_delete=models.CASCADE,
|
on_delete=models.CASCADE,
|
||||||
)
|
)
|
||||||
@@ -69,13 +70,13 @@ class GalaxyLane(models.Model):
|
|||||||
|
|
||||||
star1 = models.ForeignKey(
|
star1 = models.ForeignKey(
|
||||||
GalaxyStar,
|
GalaxyStar,
|
||||||
verbose_name=_("galaxy lanes 1"),
|
verbose_name=_("galaxy star 1"),
|
||||||
related_name="lanes1",
|
related_name="lanes1",
|
||||||
on_delete=models.CASCADE,
|
on_delete=models.CASCADE,
|
||||||
)
|
)
|
||||||
star2 = models.ForeignKey(
|
star2 = models.ForeignKey(
|
||||||
GalaxyStar,
|
GalaxyStar,
|
||||||
verbose_name=_("galaxy lanes 2"),
|
verbose_name=_("galaxy star 2"),
|
||||||
related_name="lanes2",
|
related_name="lanes2",
|
||||||
on_delete=models.CASCADE,
|
on_delete=models.CASCADE,
|
||||||
)
|
)
|
||||||
@@ -120,7 +121,7 @@ class Galaxy(models.Model):
|
|||||||
state = models.JSONField("current state")
|
state = models.JSONField("current state")
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def make_state() -> GalaxyDict:
|
def make_state() -> None:
|
||||||
"""
|
"""
|
||||||
Compute JSON structure to send to 3d-force-graph: https://github.com/vasturiano/3d-force-graph/
|
Compute JSON structure to send to 3d-force-graph: https://github.com/vasturiano/3d-force-graph/
|
||||||
"""
|
"""
|
||||||
@@ -177,7 +178,7 @@ class Galaxy(models.Model):
|
|||||||
###################
|
###################
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def compute_user_score(cls, user):
|
def compute_user_score(cls, user) -> int:
|
||||||
"""
|
"""
|
||||||
This compute an individual score for each citizen. It will later be used by the graph algorithm to push
|
This compute an individual score for each citizen. It will later be used by the graph algorithm to push
|
||||||
higher scores towards the center of the galaxy.
|
higher scores towards the center of the galaxy.
|
||||||
@@ -202,7 +203,7 @@ class Galaxy(models.Model):
|
|||||||
return user_score
|
return user_score
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def query_user_score(cls, user):
|
def query_user_score(cls, user) -> int:
|
||||||
score_query = (
|
score_query = (
|
||||||
User.objects.filter(id=user.id)
|
User.objects.filter(id=user.id)
|
||||||
.annotate(
|
.annotate(
|
||||||
@@ -229,7 +230,7 @@ class Galaxy(models.Model):
|
|||||||
####################
|
####################
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def compute_users_score(cls, user1, user2):
|
def compute_users_score(cls, user1, user2) -> Tuple[int, int, int, int]:
|
||||||
family = cls.compute_users_family_score(user1, user2)
|
family = cls.compute_users_family_score(user1, user2)
|
||||||
pictures = cls.compute_users_pictures_score(user1, user2)
|
pictures = cls.compute_users_pictures_score(user1, user2)
|
||||||
clubs = cls.compute_users_clubs_score(user1, user2)
|
clubs = cls.compute_users_clubs_score(user1, user2)
|
||||||
@@ -237,7 +238,7 @@ class Galaxy(models.Model):
|
|||||||
return score, family, pictures, clubs
|
return score, family, pictures, clubs
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def compute_users_family_score(cls, user1, user2):
|
def compute_users_family_score(cls, user1, user2) -> int:
|
||||||
link_count = User.objects.filter(
|
link_count = User.objects.filter(
|
||||||
Q(id=user1.id, godfathers=user2) | Q(id=user2.id, godfathers=user1)
|
Q(id=user1.id, godfathers=user2) | Q(id=user2.id, godfathers=user1)
|
||||||
).count()
|
).count()
|
||||||
@@ -248,7 +249,7 @@ class Galaxy(models.Model):
|
|||||||
return link_count * cls.FAMILY_LINK_POINTS
|
return link_count * cls.FAMILY_LINK_POINTS
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def compute_users_pictures_score(cls, user1, user2):
|
def compute_users_pictures_score(cls, user1, user2) -> int:
|
||||||
picture_count = (
|
picture_count = (
|
||||||
Picture.objects.filter(people__user__in=(user1,))
|
Picture.objects.filter(people__user__in=(user1,))
|
||||||
.filter(people__user__in=(user2,))
|
.filter(people__user__in=(user2,))
|
||||||
@@ -261,7 +262,7 @@ class Galaxy(models.Model):
|
|||||||
return picture_count * cls.PICTURE_POINTS
|
return picture_count * cls.PICTURE_POINTS
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def compute_users_clubs_score(cls, user1, user2):
|
def compute_users_clubs_score(cls, user1, user2) -> int:
|
||||||
common_clubs = Club.objects.filter(members__in=user1.memberships.all()).filter(
|
common_clubs = Club.objects.filter(members__in=user1.memberships.all()).filter(
|
||||||
members__in=user2.memberships.all()
|
members__in=user2.memberships.all()
|
||||||
)
|
)
|
||||||
@@ -311,7 +312,7 @@ class Galaxy(models.Model):
|
|||||||
###################
|
###################
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def rule(cls):
|
def rule(cls) -> None:
|
||||||
GalaxyStar.objects.all().delete()
|
GalaxyStar.objects.all().delete()
|
||||||
# The following is a no-op thanks to cascading, but in case that changes in the future, better keep it anyway.
|
# The following is a no-op thanks to cascading, but in case that changes in the future, better keep it anyway.
|
||||||
GalaxyLane.objects.all().delete()
|
GalaxyLane.objects.all().delete()
|
||||||
@@ -357,7 +358,7 @@ class Galaxy(models.Model):
|
|||||||
).save()
|
).save()
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def scale_distance(cls, value):
|
def scale_distance(cls, value) -> int:
|
||||||
# TODO: this will need adjustements with the real, typical data on Taiste
|
# TODO: this will need adjustements with the real, typical data on Taiste
|
||||||
|
|
||||||
cls.logger.debug(f"\t\t> Score: {value}")
|
cls.logger.debug(f"\t\t> Score: {value}")
|
||||||
|
|||||||
@@ -127,3 +127,23 @@ class GalaxyTest(TestCase):
|
|||||||
|
|
||||||
self.maxDiff = None # Yes, we want to see the diff if any
|
self.maxDiff = None # Yes, we want to see the diff if any
|
||||||
self.assertDictEqual(expected_scores, computed_scores)
|
self.assertDictEqual(expected_scores, computed_scores)
|
||||||
|
|
||||||
|
def test_page_is_citizen(self):
|
||||||
|
Galaxy.rule()
|
||||||
|
self.client.login(username="root", password="plop")
|
||||||
|
response = self.client.get("/galaxy/1/")
|
||||||
|
self.assertContains(
|
||||||
|
response,
|
||||||
|
'<a onclick="focus_node(get_node_from_id(8))">Locate</a>',
|
||||||
|
status_code=200,
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_page_not_citizen(self):
|
||||||
|
Galaxy.rule()
|
||||||
|
self.client.login(username="root", password="plop")
|
||||||
|
response = self.client.get("/galaxy/2/")
|
||||||
|
self.assertContains(
|
||||||
|
response,
|
||||||
|
"Ce citoyen n'a pas encore rejoint la galaxie",
|
||||||
|
status_code=404,
|
||||||
|
)
|
||||||
+8
-1
@@ -23,9 +23,10 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
from django.views.generic import DetailView, View
|
from django.views.generic import DetailView, View
|
||||||
from django.http import JsonResponse
|
from django.http import JsonResponse, Http404
|
||||||
from django.db.models import Q, Case, F, When, Value
|
from django.db.models import Q, Case, F, When, Value
|
||||||
from django.db.models.functions import Concat
|
from django.db.models.functions import Concat
|
||||||
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from core.views import (
|
from core.views import (
|
||||||
CanViewMixin,
|
CanViewMixin,
|
||||||
@@ -42,6 +43,12 @@ class GalaxyUserView(CanViewMixin, UserTabsMixin, DetailView):
|
|||||||
template_name = "galaxy/user.jinja"
|
template_name = "galaxy/user.jinja"
|
||||||
current_tab = "galaxy"
|
current_tab = "galaxy"
|
||||||
|
|
||||||
|
def get_object(self, *args, **kwargs):
|
||||||
|
user: User = super(GalaxyUserView, self).get_object(*args, **kwargs)
|
||||||
|
if not hasattr(user, "galaxy_user"):
|
||||||
|
raise Http404(_("This citizen has not yet joined the galaxy"))
|
||||||
|
return user
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
return super(GalaxyUserView, self).get_queryset().select_related("galaxy_user")
|
return super(GalaxyUserView, self).get_queryset().select_related("galaxy_user")
|
||||||
|
|
||||||
|
|||||||
+201
-153
@@ -6,7 +6,7 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2022-11-28 16:54+0100\n"
|
"POT-Creation-Date: 2023-03-02 11:02+0100\n"
|
||||||
"PO-Revision-Date: 2016-07-18\n"
|
"PO-Revision-Date: 2016-07-18\n"
|
||||||
"Last-Translator: Skia <skia@libskia.so>\n"
|
"Last-Translator: Skia <skia@libskia.so>\n"
|
||||||
"Language-Team: AE info <ae.info@utbm.fr>\n"
|
"Language-Team: AE info <ae.info@utbm.fr>\n"
|
||||||
@@ -18,8 +18,8 @@ msgstr ""
|
|||||||
|
|
||||||
#: accounting/models.py:61 accounting/models.py:110 accounting/models.py:143
|
#: accounting/models.py:61 accounting/models.py:110 accounting/models.py:143
|
||||||
#: accounting/models.py:216 club/models.py:48 com/models.py:279
|
#: accounting/models.py:216 club/models.py:48 com/models.py:279
|
||||||
#: com/models.py:296 counter/models.py:199 counter/models.py:232
|
#: com/models.py:296 counter/models.py:196 counter/models.py:229
|
||||||
#: counter/models.py:316 forum/models.py:58 launderette/models.py:38
|
#: counter/models.py:317 forum/models.py:58 launderette/models.py:38
|
||||||
#: launderette/models.py:93 launderette/models.py:131 stock/models.py:40
|
#: launderette/models.py:93 launderette/models.py:131 stock/models.py:40
|
||||||
#: stock/models.py:63 stock/models.py:105 stock/models.py:133
|
#: stock/models.py:63 stock/models.py:105 stock/models.py:133
|
||||||
msgid "name"
|
msgid "name"
|
||||||
@@ -66,8 +66,8 @@ msgid "account number"
|
|||||||
msgstr "numero de compte"
|
msgstr "numero de compte"
|
||||||
|
|
||||||
#: accounting/models.py:116 accounting/models.py:147 club/models.py:275
|
#: accounting/models.py:116 accounting/models.py:147 club/models.py:275
|
||||||
#: com/models.py:75 com/models.py:266 com/models.py:302 counter/models.py:250
|
#: com/models.py:75 com/models.py:266 com/models.py:302 counter/models.py:247
|
||||||
#: counter/models.py:318 trombi/models.py:217
|
#: counter/models.py:319 trombi/models.py:217
|
||||||
msgid "club"
|
msgid "club"
|
||||||
msgstr "club"
|
msgstr "club"
|
||||||
|
|
||||||
@@ -88,12 +88,12 @@ msgstr "Compte club"
|
|||||||
msgid "%(club_account)s on %(bank_account)s"
|
msgid "%(club_account)s on %(bank_account)s"
|
||||||
msgstr "%(club_account)s sur %(bank_account)s"
|
msgstr "%(club_account)s sur %(bank_account)s"
|
||||||
|
|
||||||
#: accounting/models.py:214 club/models.py:281 counter/models.py:752
|
#: accounting/models.py:214 club/models.py:281 counter/models.py:753
|
||||||
#: election/models.py:18 launderette/models.py:194
|
#: election/models.py:18 launderette/models.py:194
|
||||||
msgid "start date"
|
msgid "start date"
|
||||||
msgstr "date de début"
|
msgstr "date de début"
|
||||||
|
|
||||||
#: accounting/models.py:215 club/models.py:282 counter/models.py:753
|
#: accounting/models.py:215 club/models.py:282 counter/models.py:754
|
||||||
#: election/models.py:19
|
#: election/models.py:19
|
||||||
msgid "end date"
|
msgid "end date"
|
||||||
msgstr "date de fin"
|
msgstr "date de fin"
|
||||||
@@ -107,7 +107,7 @@ msgid "club account"
|
|||||||
msgstr "compte club"
|
msgstr "compte club"
|
||||||
|
|
||||||
#: accounting/models.py:225 accounting/models.py:289 counter/models.py:60
|
#: accounting/models.py:225 accounting/models.py:289 counter/models.py:60
|
||||||
#: counter/models.py:474
|
#: counter/models.py:475
|
||||||
msgid "amount"
|
msgid "amount"
|
||||||
msgstr "montant"
|
msgstr "montant"
|
||||||
|
|
||||||
@@ -129,18 +129,18 @@ msgstr "classeur"
|
|||||||
|
|
||||||
#: accounting/models.py:290 core/models.py:862 core/models.py:1400
|
#: accounting/models.py:290 core/models.py:862 core/models.py:1400
|
||||||
#: core/models.py:1448 core/models.py:1477 core/models.py:1501
|
#: core/models.py:1448 core/models.py:1477 core/models.py:1501
|
||||||
#: counter/models.py:484 counter/models.py:577 counter/models.py:782
|
#: counter/models.py:485 counter/models.py:578 counter/models.py:789
|
||||||
#: eboutic/models.py:66 eboutic/models.py:240 forum/models.py:311
|
#: eboutic/models.py:67 eboutic/models.py:236 forum/models.py:311
|
||||||
#: forum/models.py:408 stock/models.py:104
|
#: forum/models.py:408 stock/models.py:104
|
||||||
msgid "date"
|
msgid "date"
|
||||||
msgstr "date"
|
msgstr "date"
|
||||||
|
|
||||||
#: accounting/models.py:291 counter/models.py:201 counter/models.py:783
|
#: accounting/models.py:291 counter/models.py:198 counter/models.py:790
|
||||||
#: pedagogy/models.py:219 stock/models.py:107
|
#: pedagogy/models.py:219 stock/models.py:107
|
||||||
msgid "comment"
|
msgid "comment"
|
||||||
msgstr "commentaire"
|
msgstr "commentaire"
|
||||||
|
|
||||||
#: accounting/models.py:293 counter/models.py:486 counter/models.py:579
|
#: accounting/models.py:293 counter/models.py:487 counter/models.py:580
|
||||||
#: subscription/models.py:66
|
#: subscription/models.py:66
|
||||||
msgid "payment method"
|
msgid "payment method"
|
||||||
msgstr "méthode de paiement"
|
msgstr "méthode de paiement"
|
||||||
@@ -149,7 +149,7 @@ msgstr "méthode de paiement"
|
|||||||
msgid "cheque number"
|
msgid "cheque number"
|
||||||
msgstr "numéro de chèque"
|
msgstr "numéro de chèque"
|
||||||
|
|
||||||
#: accounting/models.py:303 eboutic/models.py:332
|
#: accounting/models.py:303 eboutic/models.py:328
|
||||||
msgid "invoice"
|
msgid "invoice"
|
||||||
msgstr "facture"
|
msgstr "facture"
|
||||||
|
|
||||||
@@ -167,7 +167,7 @@ msgstr "type comptable"
|
|||||||
|
|
||||||
#: accounting/models.py:328 accounting/models.py:475 accounting/models.py:510
|
#: accounting/models.py:328 accounting/models.py:475 accounting/models.py:510
|
||||||
#: accounting/models.py:545 core/models.py:1476 core/models.py:1502
|
#: accounting/models.py:545 core/models.py:1476 core/models.py:1502
|
||||||
#: counter/models.py:543
|
#: counter/models.py:544
|
||||||
msgid "label"
|
msgid "label"
|
||||||
msgstr "étiquette"
|
msgstr "étiquette"
|
||||||
|
|
||||||
@@ -211,7 +211,7 @@ msgstr "Utilisateur"
|
|||||||
msgid "Club"
|
msgid "Club"
|
||||||
msgstr "Club"
|
msgstr "Club"
|
||||||
|
|
||||||
#: accounting/models.py:339 core/views/user.py:287
|
#: accounting/models.py:339 core/views/user.py:279
|
||||||
msgid "Account"
|
msgid "Account"
|
||||||
msgstr "Compte"
|
msgstr "Compte"
|
||||||
|
|
||||||
@@ -219,7 +219,7 @@ msgstr "Compte"
|
|||||||
msgid "Company"
|
msgid "Company"
|
||||||
msgstr "Entreprise"
|
msgstr "Entreprise"
|
||||||
|
|
||||||
#: accounting/models.py:341 core/models.py:230 sith/settings.py:367
|
#: accounting/models.py:341 core/models.py:230 sith/settings.py:391
|
||||||
#: stock/templates/stock/shopping_list_items.jinja:37
|
#: stock/templates/stock/shopping_list_items.jinja:37
|
||||||
msgid "Other"
|
msgid "Other"
|
||||||
msgstr "Autre"
|
msgstr "Autre"
|
||||||
@@ -266,7 +266,7 @@ msgstr ""
|
|||||||
"Vous devez fournir soit un type comptable simplifié ou un type comptable "
|
"Vous devez fournir soit un type comptable simplifié ou un type comptable "
|
||||||
"standard"
|
"standard"
|
||||||
|
|
||||||
#: accounting/models.py:467 counter/models.py:242 pedagogy/models.py:46
|
#: accounting/models.py:467 counter/models.py:239 pedagogy/models.py:46
|
||||||
msgid "code"
|
msgid "code"
|
||||||
msgstr "code"
|
msgstr "code"
|
||||||
|
|
||||||
@@ -530,7 +530,7 @@ msgid "Effective amount"
|
|||||||
msgstr "Montant effectif"
|
msgstr "Montant effectif"
|
||||||
|
|
||||||
#: accounting/templates/accounting/club_account_details.jinja:36
|
#: accounting/templates/accounting/club_account_details.jinja:36
|
||||||
#: sith/settings.py:413
|
#: sith/settings.py:437
|
||||||
msgid "Closed"
|
msgid "Closed"
|
||||||
msgstr "Fermé"
|
msgstr "Fermé"
|
||||||
|
|
||||||
@@ -670,7 +670,7 @@ msgid "Done"
|
|||||||
msgstr "Effectuées"
|
msgstr "Effectuées"
|
||||||
|
|
||||||
#: accounting/templates/accounting/journal_details.jinja:41
|
#: accounting/templates/accounting/journal_details.jinja:41
|
||||||
#: counter/templates/counter/cash_summary_list.jinja:37 counter/views.py:1064
|
#: counter/templates/counter/cash_summary_list.jinja:37 counter/views.py:1072
|
||||||
#: pedagogy/templates/pedagogy/moderation.jinja:13
|
#: pedagogy/templates/pedagogy/moderation.jinja:13
|
||||||
#: pedagogy/templates/pedagogy/uv_detail.jinja:138
|
#: pedagogy/templates/pedagogy/uv_detail.jinja:138
|
||||||
#: trombi/templates/trombi/comment.jinja:4
|
#: trombi/templates/trombi/comment.jinja:4
|
||||||
@@ -935,15 +935,15 @@ msgstr "Retirer"
|
|||||||
msgid "Action"
|
msgid "Action"
|
||||||
msgstr "Action"
|
msgstr "Action"
|
||||||
|
|
||||||
#: club/forms.py:116 club/tests.py:576
|
#: club/forms.py:116 club/tests.py:578
|
||||||
msgid "This field is required"
|
msgid "This field is required"
|
||||||
msgstr "Ce champ est obligatoire"
|
msgstr "Ce champ est obligatoire"
|
||||||
|
|
||||||
#: club/forms.py:128 club/forms.py:256 club/tests.py:588
|
#: club/forms.py:128 club/forms.py:256 club/tests.py:590
|
||||||
msgid "One of the selected users doesn't exist"
|
msgid "One of the selected users doesn't exist"
|
||||||
msgstr "Un des utilisateurs sélectionné n'existe pas"
|
msgstr "Un des utilisateurs sélectionné n'existe pas"
|
||||||
|
|
||||||
#: club/forms.py:132 club/tests.py:606
|
#: club/forms.py:132 club/tests.py:608
|
||||||
msgid "One of the selected users doesn't have an email address"
|
msgid "One of the selected users doesn't have an email address"
|
||||||
msgstr "Un des utilisateurs sélectionnés n'a pas d'adresse email"
|
msgstr "Un des utilisateurs sélectionnés n'a pas d'adresse email"
|
||||||
|
|
||||||
@@ -951,15 +951,15 @@ msgstr "Un des utilisateurs sélectionnés n'a pas d'adresse email"
|
|||||||
msgid "An action is required"
|
msgid "An action is required"
|
||||||
msgstr "Une action est requise"
|
msgstr "Une action est requise"
|
||||||
|
|
||||||
#: club/forms.py:154 club/tests.py:565
|
#: club/forms.py:154 club/tests.py:567
|
||||||
msgid "You must specify at least an user or an email address"
|
msgid "You must specify at least an user or an email address"
|
||||||
msgstr "vous devez spécifier au moins un utilisateur ou une adresse email"
|
msgstr "vous devez spécifier au moins un utilisateur ou une adresse email"
|
||||||
|
|
||||||
#: club/forms.py:162 counter/forms.py:157
|
#: club/forms.py:162 counter/forms.py:165
|
||||||
msgid "Begin date"
|
msgid "Begin date"
|
||||||
msgstr "Date de début"
|
msgstr "Date de début"
|
||||||
|
|
||||||
#: club/forms.py:163 com/views.py:84 com/views.py:199 counter/forms.py:158
|
#: club/forms.py:163 com/views.py:84 com/views.py:199 counter/forms.py:166
|
||||||
#: election/views.py:172 subscription/views.py:49
|
#: election/views.py:172 subscription/views.py:49
|
||||||
msgid "End date"
|
msgid "End date"
|
||||||
msgstr "Date de fin"
|
msgstr "Date de fin"
|
||||||
@@ -967,15 +967,15 @@ msgstr "Date de fin"
|
|||||||
#: club/forms.py:166 club/templates/club/club_sellings.jinja:21
|
#: club/forms.py:166 club/templates/club/club_sellings.jinja:21
|
||||||
#: core/templates/core/user_account_detail.jinja:18
|
#: core/templates/core/user_account_detail.jinja:18
|
||||||
#: core/templates/core/user_account_detail.jinja:51
|
#: core/templates/core/user_account_detail.jinja:51
|
||||||
#: counter/templates/counter/cash_summary_list.jinja:33 counter/views.py:148
|
#: counter/templates/counter/cash_summary_list.jinja:33 counter/views.py:156
|
||||||
msgid "Counter"
|
msgid "Counter"
|
||||||
msgstr "Comptoir"
|
msgstr "Comptoir"
|
||||||
|
|
||||||
#: club/forms.py:174 counter/views.py:762
|
#: club/forms.py:174 counter/views.py:770
|
||||||
msgid "Products"
|
msgid "Products"
|
||||||
msgstr "Produits"
|
msgstr "Produits"
|
||||||
|
|
||||||
#: club/forms.py:179 counter/views.py:767
|
#: club/forms.py:179 counter/views.py:775
|
||||||
msgid "Archived products"
|
msgid "Archived products"
|
||||||
msgstr "Produits archivés"
|
msgstr "Produits archivés"
|
||||||
|
|
||||||
@@ -1045,8 +1045,8 @@ msgstr "Vous ne pouvez pas faire de boucles dans les clubs"
|
|||||||
msgid "A club with that unix_name already exists"
|
msgid "A club with that unix_name already exists"
|
||||||
msgstr "Un club avec ce nom UNIX existe déjà."
|
msgstr "Un club avec ce nom UNIX existe déjà."
|
||||||
|
|
||||||
#: club/models.py:267 counter/models.py:743 counter/models.py:773
|
#: club/models.py:267 counter/models.py:744 counter/models.py:780
|
||||||
#: eboutic/models.py:62 eboutic/models.py:236 election/models.py:192
|
#: eboutic/models.py:63 eboutic/models.py:232 election/models.py:192
|
||||||
#: launderette/models.py:145 launderette/models.py:213 sas/models.py:244
|
#: launderette/models.py:145 launderette/models.py:213 sas/models.py:244
|
||||||
#: trombi/models.py:213
|
#: trombi/models.py:213
|
||||||
msgid "user"
|
msgid "user"
|
||||||
@@ -1057,8 +1057,8 @@ msgstr "nom d'utilisateur"
|
|||||||
msgid "role"
|
msgid "role"
|
||||||
msgstr "rôle"
|
msgstr "rôle"
|
||||||
|
|
||||||
#: club/models.py:289 core/models.py:81 counter/models.py:200
|
#: club/models.py:289 core/models.py:81 counter/models.py:197
|
||||||
#: counter/models.py:233 election/models.py:15 election/models.py:120
|
#: counter/models.py:230 election/models.py:15 election/models.py:120
|
||||||
#: election/models.py:197 forum/models.py:59 forum/models.py:240
|
#: election/models.py:197 forum/models.py:59 forum/models.py:240
|
||||||
msgid "description"
|
msgid "description"
|
||||||
msgstr "description"
|
msgstr "description"
|
||||||
@@ -1096,7 +1096,7 @@ msgstr "Liste de diffusion"
|
|||||||
msgid "At least user or email is required"
|
msgid "At least user or email is required"
|
||||||
msgstr "Au moins un utilisateur ou un email est nécessaire"
|
msgstr "Au moins un utilisateur ou un email est nécessaire"
|
||||||
|
|
||||||
#: club/models.py:459 club/tests.py:634
|
#: club/models.py:459 club/tests.py:636
|
||||||
msgid "This email is already suscribed in this mailing"
|
msgid "This email is already suscribed in this mailing"
|
||||||
msgstr "Cet email est déjà abonné à cette mailing"
|
msgstr "Cet email est déjà abonné à cette mailing"
|
||||||
|
|
||||||
@@ -1362,7 +1362,7 @@ msgstr "Anciens membres"
|
|||||||
msgid "History"
|
msgid "History"
|
||||||
msgstr "Historique"
|
msgstr "Historique"
|
||||||
|
|
||||||
#: club/views.py:125 core/templates/core/base.jinja:123 core/views/user.py:220
|
#: club/views.py:125 core/templates/core/base.jinja:123 core/views/user.py:222
|
||||||
#: sas/templates/sas/picture.jinja:95 trombi/views.py:63
|
#: sas/templates/sas/picture.jinja:95 trombi/views.py:63
|
||||||
msgid "Tools"
|
msgid "Tools"
|
||||||
msgstr "Outils"
|
msgstr "Outils"
|
||||||
@@ -1856,7 +1856,7 @@ msgstr "Retour"
|
|||||||
|
|
||||||
#: com/templates/com/weekmail_preview.jinja:13
|
#: com/templates/com/weekmail_preview.jinja:13
|
||||||
msgid "The following recipients were refused by the SMTP:"
|
msgid "The following recipients were refused by the SMTP:"
|
||||||
msgstr ""
|
msgstr "Les destinataires suivants ont été refusé par le SMTP :"
|
||||||
|
|
||||||
#: com/templates/com/weekmail_preview.jinja:24
|
#: com/templates/com/weekmail_preview.jinja:24
|
||||||
msgid "Clean subscribers"
|
msgid "Clean subscribers"
|
||||||
@@ -2375,7 +2375,7 @@ msgstr "type d'opération"
|
|||||||
msgid "403, Forbidden"
|
msgid "403, Forbidden"
|
||||||
msgstr "403, Non autorisé"
|
msgstr "403, Non autorisé"
|
||||||
|
|
||||||
#: core/templates/core/404.jinja:5
|
#: core/templates/core/404.jinja:6
|
||||||
msgid "404, Not Found"
|
msgid "404, Not Found"
|
||||||
msgstr "404. Non trouvé"
|
msgstr "404. Non trouvé"
|
||||||
|
|
||||||
@@ -2484,13 +2484,13 @@ msgstr "Forum"
|
|||||||
msgid "Gallery"
|
msgid "Gallery"
|
||||||
msgstr "Photos"
|
msgstr "Photos"
|
||||||
|
|
||||||
#: core/templates/core/base.jinja:187 counter/models.py:326
|
#: core/templates/core/base.jinja:187 counter/models.py:327
|
||||||
#: counter/templates/counter/counter_list.jinja:11
|
#: counter/templates/counter/counter_list.jinja:11
|
||||||
#: eboutic/templates/eboutic/eboutic_main.jinja:4
|
#: eboutic/templates/eboutic/eboutic_main.jinja:4
|
||||||
#: eboutic/templates/eboutic/eboutic_main.jinja:23
|
#: eboutic/templates/eboutic/eboutic_main.jinja:23
|
||||||
#: eboutic/templates/eboutic/eboutic_makecommand.jinja:17
|
#: eboutic/templates/eboutic/eboutic_makecommand.jinja:17
|
||||||
#: eboutic/templates/eboutic/eboutic_payment_result.jinja:4
|
#: eboutic/templates/eboutic/eboutic_payment_result.jinja:4
|
||||||
#: sith/settings.py:366 sith/settings.py:374
|
#: sith/settings.py:390 sith/settings.py:398
|
||||||
msgid "Eboutic"
|
msgid "Eboutic"
|
||||||
msgstr "Eboutic"
|
msgstr "Eboutic"
|
||||||
|
|
||||||
@@ -3012,7 +3012,7 @@ msgstr "Résultat de la recherche"
|
|||||||
msgid "Users"
|
msgid "Users"
|
||||||
msgstr "Utilisateurs"
|
msgstr "Utilisateurs"
|
||||||
|
|
||||||
#: core/templates/core/search.jinja:18 core/views/user.py:248
|
#: core/templates/core/search.jinja:18 core/views/user.py:244
|
||||||
#: counter/templates/counter/stats.jinja:17
|
#: counter/templates/counter/stats.jinja:17
|
||||||
msgid "Clubs"
|
msgid "Clubs"
|
||||||
msgstr "Clubs"
|
msgstr "Clubs"
|
||||||
@@ -3259,7 +3259,7 @@ msgstr "Voir l'arbre des ancêtres"
|
|||||||
msgid "No godfathers / godmothers"
|
msgid "No godfathers / godmothers"
|
||||||
msgstr "Pas de famille"
|
msgstr "Pas de famille"
|
||||||
|
|
||||||
#: core/templates/core/user_godfathers.jinja:25 core/views/user.py:472
|
#: core/templates/core/user_godfathers.jinja:25 core/views/user.py:464
|
||||||
msgid "Godchildren"
|
msgid "Godchildren"
|
||||||
msgstr "Fillots / Fillotes"
|
msgstr "Fillots / Fillotes"
|
||||||
|
|
||||||
@@ -3328,7 +3328,7 @@ msgid "Error downloading your pictures"
|
|||||||
msgstr "Erreur de téléchargement de vos photos"
|
msgstr "Erreur de téléchargement de vos photos"
|
||||||
|
|
||||||
#: core/templates/core/user_preferences.jinja:4
|
#: core/templates/core/user_preferences.jinja:4
|
||||||
#: core/templates/core/user_preferences.jinja:8 core/views/user.py:238
|
#: core/templates/core/user_preferences.jinja:8 core/views/user.py:236
|
||||||
msgid "Preferences"
|
msgid "Preferences"
|
||||||
msgstr "Préférences"
|
msgstr "Préférences"
|
||||||
|
|
||||||
@@ -3398,7 +3398,7 @@ msgstr "Outils utilisateurs"
|
|||||||
msgid "Sith management"
|
msgid "Sith management"
|
||||||
msgstr "Gestion de Sith"
|
msgstr "Gestion de Sith"
|
||||||
|
|
||||||
#: core/templates/core/user_tools.jinja:14 core/views/user.py:258
|
#: core/templates/core/user_tools.jinja:14 core/views/user.py:252
|
||||||
msgid "Groups"
|
msgid "Groups"
|
||||||
msgstr "Groupes"
|
msgstr "Groupes"
|
||||||
|
|
||||||
@@ -3426,8 +3426,8 @@ msgstr "Cotisations"
|
|||||||
msgid "Subscription stats"
|
msgid "Subscription stats"
|
||||||
msgstr "Statistiques de cotisation"
|
msgstr "Statistiques de cotisation"
|
||||||
|
|
||||||
#: core/templates/core/user_tools.jinja:29 counter/forms.py:131
|
#: core/templates/core/user_tools.jinja:29 counter/forms.py:139
|
||||||
#: counter/views.py:757
|
#: counter/views.py:765
|
||||||
msgid "Counters"
|
msgid "Counters"
|
||||||
msgstr "Comptoirs"
|
msgstr "Comptoirs"
|
||||||
|
|
||||||
@@ -3444,16 +3444,16 @@ msgid "Product types management"
|
|||||||
msgstr "Gestion des types de produit"
|
msgstr "Gestion des types de produit"
|
||||||
|
|
||||||
#: core/templates/core/user_tools.jinja:35
|
#: core/templates/core/user_tools.jinja:35
|
||||||
#: counter/templates/counter/cash_summary_list.jinja:23 counter/views.py:777
|
#: counter/templates/counter/cash_summary_list.jinja:23 counter/views.py:785
|
||||||
msgid "Cash register summaries"
|
msgid "Cash register summaries"
|
||||||
msgstr "Relevés de caisse"
|
msgstr "Relevés de caisse"
|
||||||
|
|
||||||
#: core/templates/core/user_tools.jinja:36
|
#: core/templates/core/user_tools.jinja:36
|
||||||
#: counter/templates/counter/invoices_call.jinja:4 counter/views.py:782
|
#: counter/templates/counter/invoices_call.jinja:4 counter/views.py:790
|
||||||
msgid "Invoices call"
|
msgid "Invoices call"
|
||||||
msgstr "Appels à facture"
|
msgstr "Appels à facture"
|
||||||
|
|
||||||
#: core/templates/core/user_tools.jinja:44 core/views/user.py:278
|
#: core/templates/core/user_tools.jinja:44 core/views/user.py:270
|
||||||
#: counter/templates/counter/counter_list.jinja:18
|
#: counter/templates/counter/counter_list.jinja:18
|
||||||
#: counter/templates/counter/counter_list.jinja:34
|
#: counter/templates/counter/counter_list.jinja:34
|
||||||
#: counter/templates/counter/counter_list.jinja:56
|
#: counter/templates/counter/counter_list.jinja:56
|
||||||
@@ -3678,7 +3678,7 @@ msgstr "Parrain / Marraine"
|
|||||||
msgid "Godchild"
|
msgid "Godchild"
|
||||||
msgstr "Fillot / Fillote"
|
msgstr "Fillot / Fillote"
|
||||||
|
|
||||||
#: core/views/forms.py:348 counter/forms.py:47 trombi/views.py:158
|
#: core/views/forms.py:348 counter/forms.py:55 trombi/views.py:158
|
||||||
msgid "Select user"
|
msgid "Select user"
|
||||||
msgstr "Choisir un utilisateur"
|
msgstr "Choisir un utilisateur"
|
||||||
|
|
||||||
@@ -3700,16 +3700,20 @@ msgstr "Utilisateurs à retirer du groupe"
|
|||||||
msgid "Users to add to group"
|
msgid "Users to add to group"
|
||||||
msgstr "Utilisateurs à ajouter au groupe"
|
msgstr "Utilisateurs à ajouter au groupe"
|
||||||
|
|
||||||
#: core/views/user.py:206 core/views/user.py:474 core/views/user.py:476
|
#: core/views/user.py:202 core/views/user.py:466 core/views/user.py:468
|
||||||
msgid "Family"
|
msgid "Family"
|
||||||
msgstr "Famille"
|
msgstr "Famille"
|
||||||
|
|
||||||
#: core/views/user.py:215 trombi/templates/trombi/export.jinja:25
|
#: core/views/user.py:207 trombi/templates/trombi/export.jinja:25
|
||||||
#: trombi/templates/trombi/user_profile.jinja:11
|
#: trombi/templates/trombi/user_profile.jinja:11
|
||||||
msgid "Pictures"
|
msgid "Pictures"
|
||||||
msgstr "Photos"
|
msgstr "Photos"
|
||||||
|
|
||||||
#: core/views/user.py:618
|
#: core/views/user.py:217
|
||||||
|
msgid "Galaxy"
|
||||||
|
msgstr "Galaxie"
|
||||||
|
|
||||||
|
#: core/views/user.py:610
|
||||||
msgid "User already has a profile picture"
|
msgid "User already has a profile picture"
|
||||||
msgstr "L'utilisateur a déjà une photo de profil"
|
msgstr "L'utilisateur a déjà une photo de profil"
|
||||||
|
|
||||||
@@ -4346,23 +4350,23 @@ msgstr "Nombre de chèque"
|
|||||||
msgid "people(s)"
|
msgid "people(s)"
|
||||||
msgstr "personne(s)"
|
msgstr "personne(s)"
|
||||||
|
|
||||||
#: eboutic/forms.py:102
|
#: eboutic/forms.py:107
|
||||||
msgid "You have no basket."
|
msgid "You have no basket."
|
||||||
msgstr "Vous n'avez pas de panier."
|
msgstr "Vous n'avez pas de panier."
|
||||||
|
|
||||||
#: eboutic/forms.py:107
|
#: eboutic/forms.py:120
|
||||||
msgid "The request was badly formatted."
|
msgid "The request was badly formatted."
|
||||||
msgstr "La requête a été mal formatée."
|
msgstr "La requête a été mal formatée."
|
||||||
|
|
||||||
#: eboutic/forms.py:112
|
#: eboutic/forms.py:126
|
||||||
msgid "The basket cookie was badly formatted."
|
msgid "The basket cookie was badly formatted."
|
||||||
msgstr "Le cookie du panier a été mal formaté."
|
msgstr "Le cookie du panier a été mal formaté."
|
||||||
|
|
||||||
#: eboutic/forms.py:115
|
#: eboutic/forms.py:130
|
||||||
msgid "Your basket is empty."
|
msgid "Your basket is empty."
|
||||||
msgstr "Votre panier est vide"
|
msgstr "Votre panier est vide"
|
||||||
|
|
||||||
#: eboutic/forms.py:125
|
#: eboutic/forms.py:141
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%(name)s : this product does not exist."
|
msgid "%(name)s : this product does not exist."
|
||||||
msgstr "%(name)s : ce produit n'existe pas."
|
msgstr "%(name)s : ce produit n'existe pas."
|
||||||
@@ -4589,11 +4593,11 @@ msgstr "votes"
|
|||||||
|
|
||||||
#: election/templates/election/election_detail.jinja:146
|
#: election/templates/election/election_detail.jinja:146
|
||||||
msgid "✏️"
|
msgid "✏️"
|
||||||
msgstr ""
|
msgstr "✏️"
|
||||||
|
|
||||||
#: election/templates/election/election_detail.jinja:147
|
#: election/templates/election/election_detail.jinja:147
|
||||||
msgid "❌"
|
msgid "❌"
|
||||||
msgstr ""
|
msgstr "❌"
|
||||||
|
|
||||||
#: election/templates/election/election_detail.jinja:178
|
#: election/templates/election/election_detail.jinja:178
|
||||||
msgid "Add a new list"
|
msgid "Add a new list"
|
||||||
@@ -4811,6 +4815,50 @@ msgstr "Appliquer les droits et le club propriétaire récursivement"
|
|||||||
msgid "%(author)s said"
|
msgid "%(author)s said"
|
||||||
msgstr "Citation de %(author)s"
|
msgstr "Citation de %(author)s"
|
||||||
|
|
||||||
|
#: galaxy/models.py:52
|
||||||
|
msgid "star owner"
|
||||||
|
msgstr "propriétaire de l'étoile"
|
||||||
|
|
||||||
|
#: galaxy/models.py:57
|
||||||
|
msgid "star mass"
|
||||||
|
msgstr "masse de l'étoile"
|
||||||
|
|
||||||
|
#: galaxy/models.py:74
|
||||||
|
msgid "galaxy star 1"
|
||||||
|
msgstr "étoile 1"
|
||||||
|
|
||||||
|
#: galaxy/models.py:80
|
||||||
|
msgid "galaxy star 2"
|
||||||
|
msgstr "étoile 2"
|
||||||
|
|
||||||
|
#: galaxy/models.py:85
|
||||||
|
msgid "distance"
|
||||||
|
msgstr "distance"
|
||||||
|
|
||||||
|
#: galaxy/models.py:87
|
||||||
|
msgid "Distance separating star1 and star2"
|
||||||
|
msgstr "Distance séparant étoile 1 et étoile 2"
|
||||||
|
|
||||||
|
#: galaxy/models.py:90
|
||||||
|
msgid "family score"
|
||||||
|
msgstr "score de famille"
|
||||||
|
|
||||||
|
#: galaxy/models.py:94
|
||||||
|
msgid "pictures score"
|
||||||
|
msgstr "score de photos"
|
||||||
|
|
||||||
|
#: galaxy/models.py:98
|
||||||
|
msgid "clubs score"
|
||||||
|
msgstr "score de club"
|
||||||
|
|
||||||
|
#: galaxy/templates/galaxy/user.jinja:4
|
||||||
|
msgid "%(user_name)s's Galaxy"
|
||||||
|
msgstr "Galaxie de %(user_name)s"
|
||||||
|
|
||||||
|
#: galaxy/views.py:49
|
||||||
|
msgid "This citizen has not yet joined the galaxy"
|
||||||
|
msgstr "Ce citoyen n'a pas encore rejoint la galaxie"
|
||||||
|
|
||||||
#: launderette/models.py:97 launderette/models.py:135
|
#: launderette/models.py:97 launderette/models.py:135
|
||||||
msgid "launderette"
|
msgid "launderette"
|
||||||
msgstr "laverie"
|
msgstr "laverie"
|
||||||
@@ -4864,12 +4912,12 @@ msgid "Washing and drying"
|
|||||||
msgstr "Lavage et séchage"
|
msgstr "Lavage et séchage"
|
||||||
|
|
||||||
#: launderette/templates/launderette/launderette_book.jinja:27
|
#: launderette/templates/launderette/launderette_book.jinja:27
|
||||||
#: sith/settings.py:596
|
#: sith/settings.py:620
|
||||||
msgid "Washing"
|
msgid "Washing"
|
||||||
msgstr "Lavage"
|
msgstr "Lavage"
|
||||||
|
|
||||||
#: launderette/templates/launderette/launderette_book.jinja:31
|
#: launderette/templates/launderette/launderette_book.jinja:31
|
||||||
#: sith/settings.py:596
|
#: sith/settings.py:620
|
||||||
msgid "Drying"
|
msgid "Drying"
|
||||||
msgstr "Séchage"
|
msgstr "Séchage"
|
||||||
|
|
||||||
@@ -5353,380 +5401,380 @@ msgstr "Erreur de création de l'album %(album)s : %(msg)s"
|
|||||||
msgid "Add user"
|
msgid "Add user"
|
||||||
msgstr "Ajouter une personne"
|
msgstr "Ajouter une personne"
|
||||||
|
|
||||||
#: sith/settings.py:218 sith/settings.py:421
|
#: sith/settings.py:242 sith/settings.py:445
|
||||||
msgid "English"
|
msgid "English"
|
||||||
msgstr "Anglais"
|
msgstr "Anglais"
|
||||||
|
|
||||||
#: sith/settings.py:218 sith/settings.py:420
|
#: sith/settings.py:242 sith/settings.py:444
|
||||||
msgid "French"
|
msgid "French"
|
||||||
msgstr "Français"
|
msgstr "Français"
|
||||||
|
|
||||||
#: sith/settings.py:340
|
#: sith/settings.py:364
|
||||||
msgid "TC"
|
msgid "TC"
|
||||||
msgstr "TC"
|
msgstr "TC"
|
||||||
|
|
||||||
#: sith/settings.py:341
|
#: sith/settings.py:365
|
||||||
msgid "IMSI"
|
msgid "IMSI"
|
||||||
msgstr "IMSI"
|
msgstr "IMSI"
|
||||||
|
|
||||||
#: sith/settings.py:342
|
#: sith/settings.py:366
|
||||||
msgid "IMAP"
|
msgid "IMAP"
|
||||||
msgstr "IMAP"
|
msgstr "IMAP"
|
||||||
|
|
||||||
#: sith/settings.py:343
|
#: sith/settings.py:367
|
||||||
msgid "INFO"
|
msgid "INFO"
|
||||||
msgstr "INFO"
|
msgstr "INFO"
|
||||||
|
|
||||||
#: sith/settings.py:344
|
#: sith/settings.py:368
|
||||||
msgid "GI"
|
msgid "GI"
|
||||||
msgstr "GI"
|
msgstr "GI"
|
||||||
|
|
||||||
#: sith/settings.py:345 sith/settings.py:431
|
#: sith/settings.py:369 sith/settings.py:455
|
||||||
msgid "E"
|
msgid "E"
|
||||||
msgstr "E"
|
msgstr "E"
|
||||||
|
|
||||||
#: sith/settings.py:346
|
#: sith/settings.py:370
|
||||||
msgid "EE"
|
msgid "EE"
|
||||||
msgstr "EE"
|
msgstr "EE"
|
||||||
|
|
||||||
#: sith/settings.py:347
|
#: sith/settings.py:371
|
||||||
msgid "GESC"
|
msgid "GESC"
|
||||||
msgstr "GESC"
|
msgstr "GESC"
|
||||||
|
|
||||||
#: sith/settings.py:348
|
#: sith/settings.py:372
|
||||||
msgid "GMC"
|
msgid "GMC"
|
||||||
msgstr "GMC"
|
msgstr "GMC"
|
||||||
|
|
||||||
#: sith/settings.py:349
|
#: sith/settings.py:373
|
||||||
msgid "MC"
|
msgid "MC"
|
||||||
msgstr "MC"
|
msgstr "MC"
|
||||||
|
|
||||||
#: sith/settings.py:350
|
#: sith/settings.py:374
|
||||||
msgid "EDIM"
|
msgid "EDIM"
|
||||||
msgstr "EDIM"
|
msgstr "EDIM"
|
||||||
|
|
||||||
#: sith/settings.py:351
|
#: sith/settings.py:375
|
||||||
msgid "Humanities"
|
msgid "Humanities"
|
||||||
msgstr "Humanités"
|
msgstr "Humanités"
|
||||||
|
|
||||||
#: sith/settings.py:352
|
#: sith/settings.py:376
|
||||||
msgid "N/A"
|
msgid "N/A"
|
||||||
msgstr "N/A"
|
msgstr "N/A"
|
||||||
|
|
||||||
#: sith/settings.py:356 sith/settings.py:363 sith/settings.py:382
|
#: sith/settings.py:380 sith/settings.py:387 sith/settings.py:406
|
||||||
msgid "Check"
|
msgid "Check"
|
||||||
msgstr "Chèque"
|
msgstr "Chèque"
|
||||||
|
|
||||||
#: sith/settings.py:357 sith/settings.py:365 sith/settings.py:383
|
#: sith/settings.py:381 sith/settings.py:389 sith/settings.py:407
|
||||||
msgid "Cash"
|
msgid "Cash"
|
||||||
msgstr "Espèces"
|
msgstr "Espèces"
|
||||||
|
|
||||||
#: sith/settings.py:358
|
#: sith/settings.py:382
|
||||||
msgid "Transfert"
|
msgid "Transfert"
|
||||||
msgstr "Virement"
|
msgstr "Virement"
|
||||||
|
|
||||||
#: sith/settings.py:371
|
#: sith/settings.py:395
|
||||||
msgid "Belfort"
|
msgid "Belfort"
|
||||||
msgstr "Belfort"
|
msgstr "Belfort"
|
||||||
|
|
||||||
#: sith/settings.py:372
|
#: sith/settings.py:396
|
||||||
msgid "Sevenans"
|
msgid "Sevenans"
|
||||||
msgstr "Sevenans"
|
msgstr "Sevenans"
|
||||||
|
|
||||||
#: sith/settings.py:373
|
#: sith/settings.py:397
|
||||||
msgid "Montbéliard"
|
msgid "Montbéliard"
|
||||||
msgstr "Montbéliard"
|
msgstr "Montbéliard"
|
||||||
|
|
||||||
#: sith/settings.py:401
|
#: sith/settings.py:425
|
||||||
msgid "Free"
|
msgid "Free"
|
||||||
msgstr "Libre"
|
msgstr "Libre"
|
||||||
|
|
||||||
#: sith/settings.py:402
|
#: sith/settings.py:426
|
||||||
msgid "CS"
|
msgid "CS"
|
||||||
msgstr "CS"
|
msgstr "CS"
|
||||||
|
|
||||||
#: sith/settings.py:403
|
#: sith/settings.py:427
|
||||||
msgid "TM"
|
msgid "TM"
|
||||||
msgstr "TM"
|
msgstr "TM"
|
||||||
|
|
||||||
#: sith/settings.py:404
|
#: sith/settings.py:428
|
||||||
msgid "OM"
|
msgid "OM"
|
||||||
msgstr "OM"
|
msgstr "OM"
|
||||||
|
|
||||||
#: sith/settings.py:405
|
#: sith/settings.py:429
|
||||||
msgid "QC"
|
msgid "QC"
|
||||||
msgstr "QC"
|
msgstr "QC"
|
||||||
|
|
||||||
#: sith/settings.py:406
|
#: sith/settings.py:430
|
||||||
msgid "EC"
|
msgid "EC"
|
||||||
msgstr "EC"
|
msgstr "EC"
|
||||||
|
|
||||||
#: sith/settings.py:407
|
#: sith/settings.py:431
|
||||||
msgid "RN"
|
msgid "RN"
|
||||||
msgstr "RN"
|
msgstr "RN"
|
||||||
|
|
||||||
#: sith/settings.py:408
|
#: sith/settings.py:432
|
||||||
msgid "ST"
|
msgid "ST"
|
||||||
msgstr "ST"
|
msgstr "ST"
|
||||||
|
|
||||||
#: sith/settings.py:409
|
#: sith/settings.py:433
|
||||||
msgid "EXT"
|
msgid "EXT"
|
||||||
msgstr "EXT"
|
msgstr "EXT"
|
||||||
|
|
||||||
#: sith/settings.py:414
|
#: sith/settings.py:438
|
||||||
msgid "Autumn"
|
msgid "Autumn"
|
||||||
msgstr "Automne"
|
msgstr "Automne"
|
||||||
|
|
||||||
#: sith/settings.py:415
|
#: sith/settings.py:439
|
||||||
msgid "Spring"
|
msgid "Spring"
|
||||||
msgstr "Printemps"
|
msgstr "Printemps"
|
||||||
|
|
||||||
#: sith/settings.py:416
|
#: sith/settings.py:440
|
||||||
msgid "Autumn and spring"
|
msgid "Autumn and spring"
|
||||||
msgstr "Automne et printemps"
|
msgstr "Automne et printemps"
|
||||||
|
|
||||||
#: sith/settings.py:422
|
#: sith/settings.py:446
|
||||||
msgid "German"
|
msgid "German"
|
||||||
msgstr "Allemant"
|
msgstr "Allemant"
|
||||||
|
|
||||||
#: sith/settings.py:423
|
#: sith/settings.py:447
|
||||||
msgid "Spanich"
|
msgid "Spanich"
|
||||||
msgstr "Espagnol"
|
msgstr "Espagnol"
|
||||||
|
|
||||||
#: sith/settings.py:427
|
#: sith/settings.py:451
|
||||||
msgid "A"
|
msgid "A"
|
||||||
msgstr "A"
|
msgstr "A"
|
||||||
|
|
||||||
#: sith/settings.py:428
|
#: sith/settings.py:452
|
||||||
msgid "B"
|
msgid "B"
|
||||||
msgstr "B"
|
msgstr "B"
|
||||||
|
|
||||||
#: sith/settings.py:429
|
#: sith/settings.py:453
|
||||||
msgid "C"
|
msgid "C"
|
||||||
msgstr "C"
|
msgstr "C"
|
||||||
|
|
||||||
#: sith/settings.py:430
|
#: sith/settings.py:454
|
||||||
msgid "D"
|
msgid "D"
|
||||||
msgstr "D"
|
msgstr "D"
|
||||||
|
|
||||||
#: sith/settings.py:432
|
#: sith/settings.py:456
|
||||||
msgid "FX"
|
msgid "FX"
|
||||||
msgstr "FX"
|
msgstr "FX"
|
||||||
|
|
||||||
#: sith/settings.py:433
|
#: sith/settings.py:457
|
||||||
msgid "F"
|
msgid "F"
|
||||||
msgstr "F"
|
msgstr "F"
|
||||||
|
|
||||||
#: sith/settings.py:434
|
#: sith/settings.py:458
|
||||||
msgid "Abs"
|
msgid "Abs"
|
||||||
msgstr "Abs"
|
msgstr "Abs"
|
||||||
|
|
||||||
#: sith/settings.py:438
|
#: sith/settings.py:462
|
||||||
msgid "Selling deletion"
|
msgid "Selling deletion"
|
||||||
msgstr "Suppression de vente"
|
msgstr "Suppression de vente"
|
||||||
|
|
||||||
#: sith/settings.py:439
|
#: sith/settings.py:463
|
||||||
msgid "Refilling deletion"
|
msgid "Refilling deletion"
|
||||||
msgstr "Suppression de rechargement"
|
msgstr "Suppression de rechargement"
|
||||||
|
|
||||||
#: sith/settings.py:476
|
#: sith/settings.py:500
|
||||||
msgid "One semester"
|
msgid "One semester"
|
||||||
msgstr "Un semestre, 20 €"
|
msgstr "Un semestre, 20 €"
|
||||||
|
|
||||||
#: sith/settings.py:477
|
#: sith/settings.py:501
|
||||||
msgid "Two semesters"
|
msgid "Two semesters"
|
||||||
msgstr "Deux semestres, 35 €"
|
msgstr "Deux semestres, 35 €"
|
||||||
|
|
||||||
#: sith/settings.py:479
|
#: sith/settings.py:503
|
||||||
msgid "Common core cursus"
|
msgid "Common core cursus"
|
||||||
msgstr "Cursus tronc commun, 60 €"
|
msgstr "Cursus tronc commun, 60 €"
|
||||||
|
|
||||||
#: sith/settings.py:483
|
#: sith/settings.py:507
|
||||||
msgid "Branch cursus"
|
msgid "Branch cursus"
|
||||||
msgstr "Cursus branche, 60 €"
|
msgstr "Cursus branche, 60 €"
|
||||||
|
|
||||||
#: sith/settings.py:484
|
#: sith/settings.py:508
|
||||||
msgid "Alternating cursus"
|
msgid "Alternating cursus"
|
||||||
msgstr "Cursus alternant, 30 €"
|
msgstr "Cursus alternant, 30 €"
|
||||||
|
|
||||||
#: sith/settings.py:485
|
#: sith/settings.py:509
|
||||||
msgid "Honorary member"
|
msgid "Honorary member"
|
||||||
msgstr "Membre honoraire, 0 €"
|
msgstr "Membre honoraire, 0 €"
|
||||||
|
|
||||||
#: sith/settings.py:486
|
#: sith/settings.py:510
|
||||||
msgid "Assidu member"
|
msgid "Assidu member"
|
||||||
msgstr "Membre d'Assidu, 0 €"
|
msgstr "Membre d'Assidu, 0 €"
|
||||||
|
|
||||||
#: sith/settings.py:487
|
#: sith/settings.py:511
|
||||||
msgid "Amicale/DOCEO member"
|
msgid "Amicale/DOCEO member"
|
||||||
msgstr "Membre de l'Amicale/DOCEO, 0 €"
|
msgstr "Membre de l'Amicale/DOCEO, 0 €"
|
||||||
|
|
||||||
#: sith/settings.py:488
|
#: sith/settings.py:512
|
||||||
msgid "UT network member"
|
msgid "UT network member"
|
||||||
msgstr "Cotisant du réseau UT, 0 €"
|
msgstr "Cotisant du réseau UT, 0 €"
|
||||||
|
|
||||||
#: sith/settings.py:489
|
#: sith/settings.py:513
|
||||||
msgid "CROUS member"
|
msgid "CROUS member"
|
||||||
msgstr "Membres du CROUS, 0 €"
|
msgstr "Membres du CROUS, 0 €"
|
||||||
|
|
||||||
#: sith/settings.py:490
|
#: sith/settings.py:514
|
||||||
msgid "Sbarro/ESTA member"
|
msgid "Sbarro/ESTA member"
|
||||||
msgstr "Membre de Sbarro ou de l'ESTA, 20 €"
|
msgstr "Membre de Sbarro ou de l'ESTA, 20 €"
|
||||||
|
|
||||||
#: sith/settings.py:492
|
#: sith/settings.py:516
|
||||||
msgid "One semester Welcome Week"
|
msgid "One semester Welcome Week"
|
||||||
msgstr "Un semestre Welcome Week"
|
msgstr "Un semestre Welcome Week"
|
||||||
|
|
||||||
#: sith/settings.py:496
|
#: sith/settings.py:520
|
||||||
msgid "One month for free"
|
msgid "One month for free"
|
||||||
msgstr "Un mois gratuit"
|
msgstr "Un mois gratuit"
|
||||||
|
|
||||||
#: sith/settings.py:497
|
#: sith/settings.py:521
|
||||||
msgid "Two months for free"
|
msgid "Two months for free"
|
||||||
msgstr "Deux mois gratuits"
|
msgstr "Deux mois gratuits"
|
||||||
|
|
||||||
#: sith/settings.py:498
|
#: sith/settings.py:522
|
||||||
msgid "Eurok's volunteer"
|
msgid "Eurok's volunteer"
|
||||||
msgstr "Bénévole Eurockéennes"
|
msgstr "Bénévole Eurockéennes"
|
||||||
|
|
||||||
#: sith/settings.py:500
|
#: sith/settings.py:524
|
||||||
msgid "Six weeks for free"
|
msgid "Six weeks for free"
|
||||||
msgstr "6 semaines gratuites"
|
msgstr "6 semaines gratuites"
|
||||||
|
|
||||||
#: sith/settings.py:504
|
#: sith/settings.py:528
|
||||||
msgid "One day"
|
msgid "One day"
|
||||||
msgstr "Un jour"
|
msgstr "Un jour"
|
||||||
|
|
||||||
#: sith/settings.py:505
|
#: sith/settings.py:529
|
||||||
msgid "GA staff member"
|
msgid "GA staff member"
|
||||||
msgstr "Membre staff GA (2 semaines), 1 €"
|
msgstr "Membre staff GA (2 semaines), 1 €"
|
||||||
|
|
||||||
#: sith/settings.py:508
|
#: sith/settings.py:532
|
||||||
msgid "One semester (-20%)"
|
msgid "One semester (-20%)"
|
||||||
msgstr "Un semestre (-20%), 12 €"
|
msgstr "Un semestre (-20%), 12 €"
|
||||||
|
|
||||||
#: sith/settings.py:513
|
#: sith/settings.py:537
|
||||||
msgid "Two semesters (-20%)"
|
msgid "Two semesters (-20%)"
|
||||||
msgstr "Deux semestres (-20%), 22 €"
|
msgstr "Deux semestres (-20%), 22 €"
|
||||||
|
|
||||||
#: sith/settings.py:518
|
#: sith/settings.py:542
|
||||||
msgid "Common core cursus (-20%)"
|
msgid "Common core cursus (-20%)"
|
||||||
msgstr "Cursus tronc commun (-20%), 36 €"
|
msgstr "Cursus tronc commun (-20%), 36 €"
|
||||||
|
|
||||||
#: sith/settings.py:523
|
#: sith/settings.py:547
|
||||||
msgid "Branch cursus (-20%)"
|
msgid "Branch cursus (-20%)"
|
||||||
msgstr "Cursus branche (-20%), 36 €"
|
msgstr "Cursus branche (-20%), 36 €"
|
||||||
|
|
||||||
#: sith/settings.py:528
|
#: sith/settings.py:552
|
||||||
msgid "Alternating cursus (-20%)"
|
msgid "Alternating cursus (-20%)"
|
||||||
msgstr "Cursus alternant (-20%), 24 €"
|
msgstr "Cursus alternant (-20%), 24 €"
|
||||||
|
|
||||||
#: sith/settings.py:534
|
#: sith/settings.py:558
|
||||||
msgid "One year for free(CA offer)"
|
msgid "One year for free(CA offer)"
|
||||||
msgstr "Une année offerte (Offre CA)"
|
msgstr "Une année offerte (Offre CA)"
|
||||||
|
|
||||||
#: sith/settings.py:556
|
#: sith/settings.py:580
|
||||||
msgid "President"
|
msgid "President"
|
||||||
msgstr "Président⸱e"
|
msgstr "Président⸱e"
|
||||||
|
|
||||||
#: sith/settings.py:557
|
#: sith/settings.py:581
|
||||||
msgid "Vice-President"
|
msgid "Vice-President"
|
||||||
msgstr "Vice-Président⸱e"
|
msgstr "Vice-Président⸱e"
|
||||||
|
|
||||||
#: sith/settings.py:558
|
#: sith/settings.py:582
|
||||||
msgid "Treasurer"
|
msgid "Treasurer"
|
||||||
msgstr "Trésorier⸱e"
|
msgstr "Trésorier⸱e"
|
||||||
|
|
||||||
#: sith/settings.py:559
|
#: sith/settings.py:583
|
||||||
msgid "Communication supervisor"
|
msgid "Communication supervisor"
|
||||||
msgstr "Responsable communication"
|
msgstr "Responsable communication"
|
||||||
|
|
||||||
#: sith/settings.py:560
|
#: sith/settings.py:584
|
||||||
msgid "Secretary"
|
msgid "Secretary"
|
||||||
msgstr "Secrétaire"
|
msgstr "Secrétaire"
|
||||||
|
|
||||||
#: sith/settings.py:561
|
#: sith/settings.py:585
|
||||||
msgid "IT supervisor"
|
msgid "IT supervisor"
|
||||||
msgstr "Responsable info"
|
msgstr "Responsable info"
|
||||||
|
|
||||||
#: sith/settings.py:562
|
#: sith/settings.py:586
|
||||||
msgid "Board member"
|
msgid "Board member"
|
||||||
msgstr "Membre du bureau"
|
msgstr "Membre du bureau"
|
||||||
|
|
||||||
#: sith/settings.py:563
|
#: sith/settings.py:587
|
||||||
msgid "Active member"
|
msgid "Active member"
|
||||||
msgstr "Membre actif⸱ve"
|
msgstr "Membre actif⸱ve"
|
||||||
|
|
||||||
#: sith/settings.py:564
|
#: sith/settings.py:588
|
||||||
msgid "Curious"
|
msgid "Curious"
|
||||||
msgstr "Curieux⸱euse"
|
msgstr "Curieux⸱euse"
|
||||||
|
|
||||||
#: sith/settings.py:600
|
#: sith/settings.py:624
|
||||||
msgid "A new poster needs to be moderated"
|
msgid "A new poster needs to be moderated"
|
||||||
msgstr "Une nouvelle affiche a besoin d'être modérée"
|
msgstr "Une nouvelle affiche a besoin d'être modérée"
|
||||||
|
|
||||||
#: sith/settings.py:601
|
#: sith/settings.py:625
|
||||||
msgid "A new mailing list needs to be moderated"
|
msgid "A new mailing list needs to be moderated"
|
||||||
msgstr "Une nouvelle mailing list a besoin d'être modérée"
|
msgstr "Une nouvelle mailing list a besoin d'être modérée"
|
||||||
|
|
||||||
#: sith/settings.py:604
|
#: sith/settings.py:628
|
||||||
msgid "A new pedagogy comment has been signaled for moderation"
|
msgid "A new pedagogy comment has been signaled for moderation"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Un nouveau commentaire de la pédagogie a été signalé pour la modération"
|
"Un nouveau commentaire de la pédagogie a été signalé pour la modération"
|
||||||
|
|
||||||
#: sith/settings.py:606
|
#: sith/settings.py:630
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "There are %s fresh news to be moderated"
|
msgid "There are %s fresh news to be moderated"
|
||||||
msgstr "Il y a %s nouvelles toutes fraîches à modérer"
|
msgstr "Il y a %s nouvelles toutes fraîches à modérer"
|
||||||
|
|
||||||
#: sith/settings.py:607
|
#: sith/settings.py:631
|
||||||
msgid "New files to be moderated"
|
msgid "New files to be moderated"
|
||||||
msgstr "Nouveaux fichiers à modérer"
|
msgstr "Nouveaux fichiers à modérer"
|
||||||
|
|
||||||
#: sith/settings.py:608
|
#: sith/settings.py:632
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "There are %s pictures to be moderated in the SAS"
|
msgid "There are %s pictures to be moderated in the SAS"
|
||||||
msgstr "Il y a %s photos à modérer dans le SAS"
|
msgstr "Il y a %s photos à modérer dans le SAS"
|
||||||
|
|
||||||
#: sith/settings.py:609
|
#: sith/settings.py:633
|
||||||
msgid "You've been identified on some pictures"
|
msgid "You've been identified on some pictures"
|
||||||
msgstr "Vous avez été identifié sur des photos"
|
msgstr "Vous avez été identifié sur des photos"
|
||||||
|
|
||||||
#: sith/settings.py:610
|
#: sith/settings.py:634
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "You just refilled of %s €"
|
msgid "You just refilled of %s €"
|
||||||
msgstr "Vous avez rechargé votre compte de %s€"
|
msgstr "Vous avez rechargé votre compte de %s€"
|
||||||
|
|
||||||
#: sith/settings.py:611
|
#: sith/settings.py:635
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "You just bought %s"
|
msgid "You just bought %s"
|
||||||
msgstr "Vous avez acheté %s"
|
msgstr "Vous avez acheté %s"
|
||||||
|
|
||||||
#: sith/settings.py:612
|
#: sith/settings.py:636
|
||||||
msgid "You have a notification"
|
msgid "You have a notification"
|
||||||
msgstr "Vous avez une notification"
|
msgstr "Vous avez une notification"
|
||||||
|
|
||||||
#: sith/settings.py:624
|
#: sith/settings.py:648
|
||||||
msgid "Success!"
|
msgid "Success!"
|
||||||
msgstr "Succès !"
|
msgstr "Succès !"
|
||||||
|
|
||||||
#: sith/settings.py:625
|
#: sith/settings.py:649
|
||||||
msgid "Fail!"
|
msgid "Fail!"
|
||||||
msgstr "Échec !"
|
msgstr "Échec !"
|
||||||
|
|
||||||
#: sith/settings.py:626
|
#: sith/settings.py:650
|
||||||
msgid "You successfully posted an article in the Weekmail"
|
msgid "You successfully posted an article in the Weekmail"
|
||||||
msgstr "Article posté avec succès dans le Weekmail"
|
msgstr "Article posté avec succès dans le Weekmail"
|
||||||
|
|
||||||
#: sith/settings.py:627
|
#: sith/settings.py:651
|
||||||
msgid "You successfully edited an article in the Weekmail"
|
msgid "You successfully edited an article in the Weekmail"
|
||||||
msgstr "Article édité avec succès dans le Weekmail"
|
msgstr "Article édité avec succès dans le Weekmail"
|
||||||
|
|
||||||
#: sith/settings.py:628
|
#: sith/settings.py:652
|
||||||
msgid "You successfully sent the Weekmail"
|
msgid "You successfully sent the Weekmail"
|
||||||
msgstr "Weekmail envoyé avec succès"
|
msgstr "Weekmail envoyé avec succès"
|
||||||
|
|
||||||
#: sith/settings.py:636
|
#: sith/settings.py:660
|
||||||
msgid "AE tee-shirt"
|
msgid "AE tee-shirt"
|
||||||
msgstr "Tee-shirt AE"
|
msgstr "Tee-shirt AE"
|
||||||
|
|
||||||
|
|||||||
@@ -713,6 +713,7 @@ SITH_FRONT_DEP_VERSIONS = {
|
|||||||
"https://github.com/viralpatel/jquery.shorten/": "",
|
"https://github.com/viralpatel/jquery.shorten/": "",
|
||||||
"https://github.com/getsentry/sentry-javascript/": "4.0.6",
|
"https://github.com/getsentry/sentry-javascript/": "4.0.6",
|
||||||
"https://github.com/jhuckaby/webcamjs/": "1.0.0",
|
"https://github.com/jhuckaby/webcamjs/": "1.0.0",
|
||||||
|
"https://github.com/vuejs/vue-next": "3.2.18",
|
||||||
"https://github.com/alpinejs/alpine": "3.10.5",
|
"https://github.com/alpinejs/alpine": "3.10.5",
|
||||||
"https://github.com/mrdoob/three.js/": "r148",
|
"https://github.com/mrdoob/three.js/": "r148",
|
||||||
"https://github.com/vasturiano/three-spritetext": "1.6.5",
|
"https://github.com/vasturiano/three-spritetext": "1.6.5",
|
||||||
|
|||||||
Reference in new issue
Block a user