mirror of
https://gitlab.com/animath/si/plateforme.git
synced 2025-06-22 10:38:25 +02:00
Compare commits
7 Commits
a84ffcf0a3
...
dev
Author | SHA1 | Date | |
---|---|---|---|
8aec72d712
|
|||
6a521b6121
|
|||
62abfa94d6
|
|||
952315ea4d
|
|||
2e613799c9
|
|||
08805a6360
|
|||
6841659e41
|
@ -4,12 +4,10 @@ ENV PYTHONUNBUFFERED 1
|
|||||||
ENV DJANGO_ALLOW_ASYNC_UNSAFE 1
|
ENV DJANGO_ALLOW_ASYNC_UNSAFE 1
|
||||||
|
|
||||||
RUN apk add --no-cache gettext nginx gcc git libc-dev libffi-dev libpq-dev libxml2-dev libxslt-dev \
|
RUN apk add --no-cache gettext nginx gcc git libc-dev libffi-dev libpq-dev libxml2-dev libxslt-dev \
|
||||||
npm libmagic texlive texmf-dist-fontsrecommended texmf-dist-lang texmf-dist-latexextra
|
libmagic texlive texmf-dist-fontsrecommended texmf-dist-lang texmf-dist-latexextra uglify-js
|
||||||
|
|
||||||
RUN apk add --no-cache bash
|
RUN apk add --no-cache bash
|
||||||
|
|
||||||
RUN npm install -g yuglify
|
|
||||||
|
|
||||||
RUN mkdir /code /code/docs
|
RUN mkdir /code /code/docs
|
||||||
WORKDIR /code
|
WORKDIR /code
|
||||||
COPY requirements.txt /code/requirements.txt
|
COPY requirements.txt /code/requirements.txt
|
||||||
|
@ -1776,7 +1776,7 @@ msgstr "Moyenne"
|
|||||||
|
|
||||||
#: participation/models.py:1320 participation/views.py:1669
|
#: participation/models.py:1320 participation/views.py:1669
|
||||||
msgid "Coefficient"
|
msgid "Coefficient"
|
||||||
msgstr "Coefficien"
|
msgstr "Coefficient"
|
||||||
|
|
||||||
#: participation/models.py:1321 participation/views.py:1712
|
#: participation/models.py:1321 participation/views.py:1712
|
||||||
msgid "Subtotal"
|
msgid "Subtotal"
|
||||||
|
@ -5,11 +5,13 @@ from pathlib import Path
|
|||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.core.management import BaseCommand
|
from django.core.management import BaseCommand
|
||||||
|
from django.utils.translation import activate
|
||||||
from participation.models import Solution, Tournament
|
from participation.models import Solution, Tournament
|
||||||
|
|
||||||
|
|
||||||
class Command(BaseCommand):
|
class Command(BaseCommand):
|
||||||
def handle(self, *args, **kwargs):
|
def handle(self, *args, **kwargs):
|
||||||
|
activate(settings.PREFERRED_LANGUAGE_CODE)
|
||||||
base_dir = Path(__file__).parent.parent.parent.parent
|
base_dir = Path(__file__).parent.parent.parent.parent
|
||||||
base_dir /= "output"
|
base_dir /= "output"
|
||||||
if not base_dir.is_dir():
|
if not base_dir.is_dir():
|
||||||
|
@ -936,10 +936,10 @@ class Participation(models.Model):
|
|||||||
'content': content,
|
'content': content,
|
||||||
})
|
})
|
||||||
elif timezone.now() <= tournament.reviews_first_phase_limit + timedelta(hours=2):
|
elif timezone.now() <= tournament.reviews_first_phase_limit + timedelta(hours=2):
|
||||||
reporter_passage = Passage.objects.get(pool__tournament=self.tournament, pool__round=1, reporter=self)
|
reporter_passage = Passage.objects.get(pool__tournament=tournament, pool__round=1, reporter=self)
|
||||||
opponent_passage = Passage.objects.get(pool__tournament=self.tournament, pool__round=1, opponent=self)
|
opponent_passage = Passage.objects.get(pool__tournament=tournament, pool__round=1, opponent=self)
|
||||||
reviewer_passage = Passage.objects.get(pool__tournament=self.tournament, pool__round=1, reviewer=self)
|
reviewer_passage = Passage.objects.get(pool__tournament=tournament, pool__round=1, reviewer=self)
|
||||||
observer_passage = Passage.objects.filter(pool__tournament=self.tournament, pool__round=1, observer=self)
|
observer_passage = Passage.objects.filter(pool__tournament=tournament, pool__round=1, observer=self)
|
||||||
observer_passage = observer_passage.get() if observer_passage.exists() else None
|
observer_passage = observer_passage.get() if observer_passage.exists() else None
|
||||||
|
|
||||||
reporter_text = _("<p>The solutions draw is ended. You can check the result on "
|
reporter_text = _("<p>The solutions draw is ended. You can check the result on "
|
||||||
@ -1001,10 +1001,10 @@ class Participation(models.Model):
|
|||||||
'content': content,
|
'content': content,
|
||||||
})
|
})
|
||||||
elif timezone.now() <= tournament.reviews_second_phase_limit + timedelta(hours=2):
|
elif timezone.now() <= tournament.reviews_second_phase_limit + timedelta(hours=2):
|
||||||
reporter_passage = Passage.objects.get(pool__tournament=self.tournament, pool__round=2, reporter=self)
|
reporter_passage = Passage.objects.get(pool__tournament=tournament, pool__round=2, reporter=self)
|
||||||
opponent_passage = Passage.objects.get(pool__tournament=self.tournament, pool__round=2, opponent=self)
|
opponent_passage = Passage.objects.get(pool__tournament=tournament, pool__round=2, opponent=self)
|
||||||
reviewer_passage = Passage.objects.get(pool__tournament=self.tournament, pool__round=2, reviewer=self)
|
reviewer_passage = Passage.objects.get(pool__tournament=tournament, pool__round=2, reviewer=self)
|
||||||
observer_passage = Passage.objects.filter(pool__tournament=self.tournament, pool__round=2, observer=self)
|
observer_passage = Passage.objects.filter(pool__tournament=tournament, pool__round=2, observer=self)
|
||||||
observer_passage = observer_passage.get() if observer_passage.exists() else None
|
observer_passage = observer_passage.get() if observer_passage.exists() else None
|
||||||
|
|
||||||
reporter_text = _("<p>For the second round, you will present "
|
reporter_text = _("<p>For the second round, you will present "
|
||||||
@ -1065,10 +1065,10 @@ class Participation(models.Model):
|
|||||||
})
|
})
|
||||||
elif settings.NB_ROUNDS >= 3 \
|
elif settings.NB_ROUNDS >= 3 \
|
||||||
and timezone.now() <= tournament.reviews_third_phase_limit + timedelta(hours=2):
|
and timezone.now() <= tournament.reviews_third_phase_limit + timedelta(hours=2):
|
||||||
reporter_passage = Passage.objects.get(pool__tournament=self.tournament, pool__round=3, reporter=self)
|
reporter_passage = Passage.objects.get(pool__tournament=tournament, pool__round=3, reporter=self)
|
||||||
opponent_passage = Passage.objects.get(pool__tournament=self.tournament, pool__round=3, opponent=self)
|
opponent_passage = Passage.objects.get(pool__tournament=tournament, pool__round=3, opponent=self)
|
||||||
reviewer_passage = Passage.objects.get(pool__tournament=self.tournament, pool__round=3, reviewer=self)
|
reviewer_passage = Passage.objects.get(pool__tournament=tournament, pool__round=3, reviewer=self)
|
||||||
observer_passage = Passage.objects.filter(pool__tournament=self.tournament, pool__round=3, observer=self)
|
observer_passage = Passage.objects.filter(pool__tournament=tournament, pool__round=3, observer=self)
|
||||||
observer_passage = observer_passage.get() if observer_passage.exists() else None
|
observer_passage = observer_passage.get() if observer_passage.exists() else None
|
||||||
|
|
||||||
reporter_text = _("<p>For the third round, you will present "
|
reporter_text = _("<p>For the third round, you will present "
|
||||||
|
@ -107,11 +107,6 @@ class PoolTable(tables.Table):
|
|||||||
|
|
||||||
|
|
||||||
class PassageTable(tables.Table):
|
class PassageTable(tables.Table):
|
||||||
def __init__(self, *args, **kwargs):
|
|
||||||
super().__init__(*args, **kwargs)
|
|
||||||
if not settings.HAS_OBSERVER:
|
|
||||||
del self.columns['observer']
|
|
||||||
|
|
||||||
reporter = tables.LinkColumn(
|
reporter = tables.LinkColumn(
|
||||||
"participation:passage_detail",
|
"participation:passage_detail",
|
||||||
args=[tables.A("id")],
|
args=[tables.A("id")],
|
||||||
@ -135,16 +130,12 @@ class PassageTable(tables.Table):
|
|||||||
'class': 'table table-condensed table-striped text-center',
|
'class': 'table table-condensed table-striped text-center',
|
||||||
}
|
}
|
||||||
model = Passage
|
model = Passage
|
||||||
fields = ('reporter', 'opponent', 'reviewer', 'observer', 'solution_number', )
|
fields = ('reporter', 'opponent', 'reviewer',) \
|
||||||
|
+ (('observer',) if settings.HAS_OBSERVER else ()) \
|
||||||
|
+ ('solution_number', )
|
||||||
|
|
||||||
|
|
||||||
class NoteTable(tables.Table):
|
class NoteTable(tables.Table):
|
||||||
def __init__(self, *args, **kwargs):
|
|
||||||
super().__init__(*args, **kwargs)
|
|
||||||
if not settings.HAS_OBSERVER:
|
|
||||||
del self.columns['observer_writing']
|
|
||||||
del self.columns['observer_oral']
|
|
||||||
|
|
||||||
jury = tables.Column(
|
jury = tables.Column(
|
||||||
attrs={
|
attrs={
|
||||||
"td": {
|
"td": {
|
||||||
@ -170,4 +161,6 @@ class NoteTable(tables.Table):
|
|||||||
}
|
}
|
||||||
model = Note
|
model = Note
|
||||||
fields = ('jury', 'reporter_writing', 'reporter_oral', 'opponent_writing', 'opponent_oral',
|
fields = ('jury', 'reporter_writing', 'reporter_oral', 'opponent_writing', 'opponent_oral',
|
||||||
'reviewer_writing', 'reviewer_oral', 'observer_writing', 'observer_oral', 'update',)
|
'reviewer_writing', 'reviewer_oral',) + \
|
||||||
|
(('observer_writing', 'observer_oral') if settings.HAS_OBSERVER else ()) + \
|
||||||
|
('update',)
|
||||||
|
@ -752,7 +752,7 @@ class TournamentPublishNotesView(VolunteerMixin, SingleObjectMixin, RedirectView
|
|||||||
return super().dispatch(request, *args, **kwargs)
|
return super().dispatch(request, *args, **kwargs)
|
||||||
|
|
||||||
def get(self, request, *args, **kwargs):
|
def get(self, request, *args, **kwargs):
|
||||||
if int(kwargs["round"]) not in range(1, settings.NB_ROUNDS):
|
if int(kwargs["round"]) not in range(1, settings.NB_ROUNDS + 1):
|
||||||
raise Http404
|
raise Http404
|
||||||
|
|
||||||
tournament = Tournament.objects.get(pk=kwargs["pk"])
|
tournament = Tournament.objects.get(pk=kwargs["pk"])
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
{{ object.user.last_name }}
|
|
||||||
{{ object.user.first_name }}
|
|
||||||
{{ object.user.email }}
|
|
@ -213,6 +213,7 @@ STATICFILES_FINDERS = (
|
|||||||
|
|
||||||
PIPELINE = {
|
PIPELINE = {
|
||||||
'DISABLE_WRAPPER': True,
|
'DISABLE_WRAPPER': True,
|
||||||
|
'JS_COMPRESSOR': 'pipeline.compressors.uglifyjs.UglifyJSCompressor',
|
||||||
'JAVASCRIPT': {
|
'JAVASCRIPT': {
|
||||||
'main': {
|
'main': {
|
||||||
'source_filenames': (
|
'source_filenames': (
|
||||||
|
Reference in New Issue
Block a user