mirror of
https://gitlab.com/animath/si/plateforme.git
synced 2025-06-29 15:01:04 +02:00
Rename synthesis to written review
Signed-off-by: Emmy D'Anello <emmy.danello@animath.fr>
This commit is contained in:
@ -323,8 +323,8 @@ class Tournament(models.Model):
|
||||
default=date.today,
|
||||
)
|
||||
|
||||
syntheses_first_phase_limit = models.DateTimeField(
|
||||
verbose_name=_("limit date to upload the syntheses for the first phase"),
|
||||
reviews_first_phase_limit = models.DateTimeField(
|
||||
verbose_name=_("limit date to upload the written reviews for the first phase"),
|
||||
default=timezone.now,
|
||||
)
|
||||
|
||||
@ -338,8 +338,8 @@ class Tournament(models.Model):
|
||||
default=False,
|
||||
)
|
||||
|
||||
syntheses_second_phase_limit = models.DateTimeField(
|
||||
verbose_name=_("limit date to upload the syntheses for the second phase"),
|
||||
reviews_second_phase_limit = models.DateTimeField(
|
||||
verbose_name=_("limit date to upload the written reviews for the second phase"),
|
||||
default=timezone.now,
|
||||
)
|
||||
|
||||
@ -353,8 +353,8 @@ class Tournament(models.Model):
|
||||
default=False,
|
||||
)
|
||||
|
||||
syntheses_third_phase_limit = models.DateTimeField(
|
||||
verbose_name=_("limit date to upload the syntheses for the third phase"),
|
||||
reviews_third_phase_limit = models.DateTimeField(
|
||||
verbose_name=_("limit date to upload the written reviews for the third phase"),
|
||||
default=timezone.now,
|
||||
)
|
||||
|
||||
@ -442,10 +442,10 @@ class Tournament(models.Model):
|
||||
return Solution.objects.filter(participation__tournament=self)
|
||||
|
||||
@property
|
||||
def syntheses(self):
|
||||
def written_reviews(self):
|
||||
if self.final:
|
||||
return Synthesis.objects.filter(final_solution=True)
|
||||
return Synthesis.objects.filter(participation__tournament=self)
|
||||
return WrittenReview.objects.filter(final_solution=True)
|
||||
return WrittenReview.objects.filter(participation__tournament=self)
|
||||
|
||||
@property
|
||||
def best_format(self):
|
||||
@ -911,7 +911,7 @@ class Participation(models.Model):
|
||||
'priority': 1,
|
||||
'content': content,
|
||||
})
|
||||
elif timezone.now() <= tournament.syntheses_first_phase_limit + timedelta(hours=2):
|
||||
elif timezone.now() <= tournament.reviews_first_phase_limit + timedelta(hours=2):
|
||||
defender_passage = Passage.objects.get(pool__tournament=self.tournament, pool__round=1, defender=self)
|
||||
opponent_passage = Passage.objects.get(pool__tournament=self.tournament, pool__round=1, opponent=self)
|
||||
reviewer_passage = Passage.objects.get(pool__tournament=self.tournament, pool__round=1, reviewer=self)
|
||||
@ -929,7 +929,7 @@ class Participation(models.Model):
|
||||
|
||||
opponent_text = _("<p>You will oppose the solution of the team {opponent} on the "
|
||||
"<a href='{solution_url}'>problem {problem}</a>. "
|
||||
"You can upload your synthesis sheet on <a href='{passage_url}'>this page</a>.</p>")
|
||||
"You can upload your written review on <a href='{passage_url}'>this page</a>.</p>")
|
||||
solution_url = opponent_passage.defended_solution.file.url
|
||||
passage_url = reverse_lazy("participation:passage_detail", args=(opponent_passage.pk,))
|
||||
opponent_content = format_lazy(opponent_text, opponent=opponent_passage.defender.team.trigram,
|
||||
@ -938,7 +938,7 @@ class Participation(models.Model):
|
||||
|
||||
reviewer_text = _("<p>You will report the solution of the team {reviewer} on the "
|
||||
"<a href='{solution_url}'>problem {problem}</a>. "
|
||||
"You can upload your synthesis sheet on <a href='{passage_url}'>this page</a>.</p>")
|
||||
"You can upload your written review on <a href='{passage_url}'>this page</a>.</p>")
|
||||
solution_url = reviewer_passage.defended_solution.file.url
|
||||
passage_url = reverse_lazy("participation:passage_detail", args=(reviewer_passage.pk,))
|
||||
reviewer_content = format_lazy(reviewer_text, reviewer=reviewer_passage.defender.team.trigram,
|
||||
@ -948,7 +948,7 @@ class Participation(models.Model):
|
||||
if observer_passage:
|
||||
observer_text = _("<p>You will observe the solution of the team {observer} on the "
|
||||
"<a href='{solution_url}'>problem {problem}</a>. "
|
||||
"You can upload your synthesis sheet on <a href='{passage_url}'>this page</a>.</p>")
|
||||
"You can upload your written review on <a href='{passage_url}'>this page</a>.</p>")
|
||||
solution_url = observer_passage.defended_solution.file.url
|
||||
passage_url = reverse_lazy("participation:passage_detail", args=(observer_passage.pk,))
|
||||
observer_content = format_lazy(observer_text,
|
||||
@ -959,24 +959,24 @@ class Participation(models.Model):
|
||||
observer_content = ""
|
||||
|
||||
if settings.TFJM_APP == "TFJM":
|
||||
syntheses_template_begin = f"{settings.STATIC_URL}tfjm/Fiche_synthèse."
|
||||
syntheses_templates = " — ".join(f"<a href='{syntheses_template_begin}{ext}'>{ext.upper()}</a>"
|
||||
for ext in ["pdf", "tex", "odt", "docx"])
|
||||
reviews_template_begin = f"{settings.STATIC_URL}tfjm/Fiche_synthèse."
|
||||
reviews_templates = " — ".join(f"<a href='{reviews_template_begin}{ext}'>{ext.upper()}</a>"
|
||||
for ext in ["pdf", "tex", "odt", "docx"])
|
||||
else:
|
||||
syntheses_template_begin = f"{settings.STATIC_URL}eteam/Written_review."
|
||||
syntheses_templates = " — ".join(f"<a href='{syntheses_template_begin}{ext}'>{ext.upper()}</a>"
|
||||
for ext in ["pdf", "tex"])
|
||||
syntheses_templates_content = f"<p>{_('Templates:')} {syntheses_templates}</p>"
|
||||
reviews_template_begin = f"{settings.STATIC_URL}eteam/Written_review."
|
||||
reviews_templates = " — ".join(f"<a href='{reviews_template_begin}{ext}'>{ext.upper()}</a>"
|
||||
for ext in ["pdf", "tex"])
|
||||
reviews_templates_content = f"<p>{_('Templates:')} {reviews_templates}</p>"
|
||||
|
||||
content = defender_content + opponent_content + reviewer_content + observer_content \
|
||||
+ syntheses_templates_content
|
||||
+ reviews_templates_content
|
||||
informations.append({
|
||||
'title': _("First round"),
|
||||
'type': "info",
|
||||
'priority': 1,
|
||||
'content': content,
|
||||
})
|
||||
elif timezone.now() <= tournament.syntheses_second_phase_limit + timedelta(hours=2):
|
||||
elif timezone.now() <= tournament.reviews_second_phase_limit + timedelta(hours=2):
|
||||
defender_passage = Passage.objects.get(pool__tournament=self.tournament, pool__round=2, defender=self)
|
||||
opponent_passage = Passage.objects.get(pool__tournament=self.tournament, pool__round=2, opponent=self)
|
||||
reviewer_passage = Passage.objects.get(pool__tournament=self.tournament, pool__round=2, reviewer=self)
|
||||
@ -992,7 +992,7 @@ class Participation(models.Model):
|
||||
|
||||
opponent_text = _("<p>You will oppose the solution of the team {opponent} on the "
|
||||
"<a href='{solution_url}'>problem {problem}</a>. "
|
||||
"You can upload your synthesis sheet on <a href='{passage_url}'>this page</a>.</p>")
|
||||
"You can upload your written review on <a href='{passage_url}'>this page</a>.</p>")
|
||||
solution_url = opponent_passage.defended_solution.file.url
|
||||
passage_url = reverse_lazy("participation:passage_detail", args=(opponent_passage.pk,))
|
||||
opponent_content = format_lazy(opponent_text, opponent=opponent_passage.defender.team.trigram,
|
||||
@ -1001,7 +1001,7 @@ class Participation(models.Model):
|
||||
|
||||
reviewer_text = _("<p>You will report the solution of the team {reviewer} on the "
|
||||
"<a href='{solution_url}'>problem {problem}</a>. "
|
||||
"You can upload your synthesis sheet on <a href='{passage_url}'>this page</a>.</p>")
|
||||
"You can upload your written review on <a href='{passage_url}'>this page</a>.</p>")
|
||||
solution_url = reviewer_passage.defended_solution.file.url
|
||||
passage_url = reverse_lazy("participation:passage_detail", args=(reviewer_passage.pk,))
|
||||
reviewer_content = format_lazy(reviewer_text, reviewer=reviewer_passage.defender.team.trigram,
|
||||
@ -1011,7 +1011,7 @@ class Participation(models.Model):
|
||||
if observer_passage:
|
||||
observer_text = _("<p>You will observe the solution of the team {observer} on the "
|
||||
"<a href='{solution_url}'>problem {problem}</a>. "
|
||||
"You can upload your synthesis sheet on <a href='{passage_url}'>this page</a>.</p>")
|
||||
"You can upload your written review on <a href='{passage_url}'>this page</a>.</p>")
|
||||
solution_url = observer_passage.defended_solution.file.url
|
||||
passage_url = reverse_lazy("participation:passage_detail", args=(observer_passage.pk,))
|
||||
observer_content = format_lazy(observer_text,
|
||||
@ -1022,17 +1022,17 @@ class Participation(models.Model):
|
||||
observer_content = ""
|
||||
|
||||
if settings.TFJM_APP == "TFJM":
|
||||
syntheses_template_begin = f"{settings.STATIC_URL}tfjm/Fiche_synthèse."
|
||||
syntheses_templates = " — ".join(f"<a href='{syntheses_template_begin}{ext}'>{ext.upper()}</a>"
|
||||
for ext in ["pdf", "tex", "odt", "docx"])
|
||||
reviews_template_begin = f"{settings.STATIC_URL}tfjm/Fiche_synthèse."
|
||||
reviews_templates = " — ".join(f"<a href='{reviews_template_begin}{ext}'>{ext.upper()}</a>"
|
||||
for ext in ["pdf", "tex", "odt", "docx"])
|
||||
else:
|
||||
syntheses_template_begin = f"{settings.STATIC_URL}eteam/Written_review."
|
||||
syntheses_templates = " — ".join(f"<a href='{syntheses_template_begin}{ext}'>{ext.upper()}</a>"
|
||||
for ext in ["pdf", "tex"])
|
||||
syntheses_templates_content = f"<p>{_('Templates:')} {syntheses_templates}</p>"
|
||||
reviews_template_begin = f"{settings.STATIC_URL}eteam/Written_review."
|
||||
reviews_templates = " — ".join(f"<a href='{reviews_template_begin}{ext}'>{ext.upper()}</a>"
|
||||
for ext in ["pdf", "tex"])
|
||||
reviews_templates_content = f"<p>{_('Templates:')} {reviews_templates}</p>"
|
||||
|
||||
content = defender_content + opponent_content + reviewer_content + observer_content \
|
||||
+ syntheses_templates_content
|
||||
+ reviews_templates_content
|
||||
informations.append({
|
||||
'title': _("Second round"),
|
||||
'type': "info",
|
||||
@ -1040,7 +1040,7 @@ class Participation(models.Model):
|
||||
'content': content,
|
||||
})
|
||||
elif settings.TFJM_APP == "ETEAM" \
|
||||
and timezone.now() <= tournament.syntheses_third_phase_limit + timedelta(hours=2):
|
||||
and timezone.now() <= tournament.reviews_third_phase_limit + timedelta(hours=2):
|
||||
defender_passage = Passage.objects.get(pool__tournament=self.tournament, pool__round=3, defender=self)
|
||||
opponent_passage = Passage.objects.get(pool__tournament=self.tournament, pool__round=3, opponent=self)
|
||||
reviewer_passage = Passage.objects.get(pool__tournament=self.tournament, pool__round=3, reviewer=self)
|
||||
@ -1056,7 +1056,7 @@ class Participation(models.Model):
|
||||
|
||||
opponent_text = _("<p>You will oppose the solution of the team {opponent} on the "
|
||||
"<a href='{solution_url}'>problem {problem}</a>. "
|
||||
"You can upload your synthesis sheet on <a href='{passage_url}'>this page</a>.</p>")
|
||||
"You can upload your written review on <a href='{passage_url}'>this page</a>.</p>")
|
||||
solution_url = opponent_passage.defended_solution.file.url
|
||||
passage_url = reverse_lazy("participation:passage_detail", args=(opponent_passage.pk,))
|
||||
opponent_content = format_lazy(opponent_text, opponent=opponent_passage.defender.team.trigram,
|
||||
@ -1065,7 +1065,7 @@ class Participation(models.Model):
|
||||
|
||||
reviewer_text = _("<p>You will report the solution of the team {reviewer} on the "
|
||||
"<a href='{solution_url}'>problem {problem}</a>. "
|
||||
"You can upload your synthesis sheet on <a href='{passage_url}'>this page</a>.</p>")
|
||||
"You can upload your written review on <a href='{passage_url}'>this page</a>.</p>")
|
||||
solution_url = reviewer_passage.defended_solution.file.url
|
||||
passage_url = reverse_lazy("participation:passage_detail", args=(reviewer_passage.pk,))
|
||||
reviewer_content = format_lazy(reviewer_text, reviewer=reviewer_passage.defender.team.trigram,
|
||||
@ -1075,7 +1075,7 @@ class Participation(models.Model):
|
||||
if observer_passage:
|
||||
observer_text = _("<p>You will observe the solution of the team {observer} on the "
|
||||
"<a href='{solution_url}'>problem {problem}</a>. "
|
||||
"You can upload your synthesis sheet on <a href='{passage_url}'>this page</a>.</p>")
|
||||
"You can upload your written review on <a href='{passage_url}'>this page</a>.</p>")
|
||||
solution_url = observer_passage.defended_solution.file.url
|
||||
passage_url = reverse_lazy("participation:passage_detail", args=(observer_passage.pk,))
|
||||
observer_content = format_lazy(observer_text,
|
||||
@ -1086,17 +1086,17 @@ class Participation(models.Model):
|
||||
observer_content = ""
|
||||
|
||||
if settings.TFJM_APP == "TFJM":
|
||||
syntheses_template_begin = f"{settings.STATIC_URL}tfjm/Fiche_synthèse."
|
||||
syntheses_templates = " — ".join(f"<a href='{syntheses_template_begin}{ext}'>{ext.upper()}</a>"
|
||||
for ext in ["pdf", "tex", "odt", "docx"])
|
||||
reviews_template_begin = f"{settings.STATIC_URL}tfjm/Fiche_synthèse."
|
||||
reviews_templates = " — ".join(f"<a href='{reviews_template_begin}{ext}'>{ext.upper()}</a>"
|
||||
for ext in ["pdf", "tex", "odt", "docx"])
|
||||
else:
|
||||
syntheses_template_begin = f"{settings.STATIC_URL}eteam/Written_review."
|
||||
syntheses_templates = " — ".join(f"<a href='{syntheses_template_begin}{ext}'>{ext.upper()}</a>"
|
||||
for ext in ["pdf", "tex"])
|
||||
syntheses_templates_content = f"<p>{_('Templates:')} {syntheses_templates}</p>"
|
||||
reviews_template_begin = f"{settings.STATIC_URL}eteam/Written_review."
|
||||
reviews_templates = " — ".join(f"<a href='{reviews_template_begin}{ext}'>{ext.upper()}</a>"
|
||||
for ext in ["pdf", "tex"])
|
||||
reviews_templates_content = f"<p>{_('Templates:')} {reviews_templates}</p>"
|
||||
|
||||
content = defender_content + opponent_content + reviewer_content + observer_content \
|
||||
+ syntheses_templates_content
|
||||
+ reviews_templates_content
|
||||
informations.append({
|
||||
'title': _("Second round"),
|
||||
'type': "info",
|
||||
@ -1256,7 +1256,7 @@ class Pool(models.Model):
|
||||
f"{_('Reviewer')} ({passage.reviewer.team.trigram})", ""]
|
||||
+ ([f"{_('Observer')} ({passage.observer.team.trigram})", ""] if has_observer else [])
|
||||
for passage in passages), start=[str(_("Role")), ""]),
|
||||
sum(([f"{_('Writing')} (/{20 if settings.TFJM_APP == "TFJM" else 10})",
|
||||
sum(([f"{_('Writing')} (/{20 if settings.TFJM_APP == 'TFJM' else 10})",
|
||||
f"{_('Oral')} (/{20 if settings.TFJM_APP == 'TFJM' else 10})",
|
||||
f"{_('Writing')} (/10)", f"{_('Oral')} (/10)", f"{_('Writing')} (/10)", f"{_('Oral')} (/10)"]
|
||||
+ ([f"{_('Writing')} (/10)", f"{_('Oral')} (/10)"] if has_observer else [])
|
||||
@ -1905,8 +1905,12 @@ def get_solution_filename(instance, filename):
|
||||
+ ("_final" if instance.final_solution else "")
|
||||
|
||||
|
||||
def get_review_filename(instance, filename):
|
||||
return f"reviews/{instance.participation.team.trigram}_{instance.type}_{instance.passage.pk}"
|
||||
|
||||
|
||||
def get_synthesis_filename(instance, filename):
|
||||
return f"syntheses/{instance.participation.team.trigram}_{instance.type}_{instance.passage.pk}"
|
||||
return get_review_filename(instance, filename)
|
||||
|
||||
|
||||
class Solution(models.Model):
|
||||
@ -1951,7 +1955,7 @@ class Solution(models.Model):
|
||||
ordering = ('participation__team__trigram', 'final_solution', 'problem',)
|
||||
|
||||
|
||||
class Synthesis(models.Model):
|
||||
class WrittenReview(models.Model):
|
||||
participation = models.ForeignKey(
|
||||
Participation,
|
||||
on_delete=models.CASCADE,
|
||||
@ -1961,7 +1965,7 @@ class Synthesis(models.Model):
|
||||
passage = models.ForeignKey(
|
||||
Passage,
|
||||
on_delete=models.CASCADE,
|
||||
related_name="syntheses",
|
||||
related_name="written_reviews",
|
||||
verbose_name=_("passage"),
|
||||
)
|
||||
|
||||
@ -1980,7 +1984,7 @@ class Synthesis(models.Model):
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
return _("Synthesis of {team} as {type} for problem {problem} of {defender}").format(
|
||||
return _("Written review of {team} as {type} for problem {problem} of {defender}").format(
|
||||
team=self.participation.team.trigram,
|
||||
type=self.get_type_display(),
|
||||
problem=self.passage.solution_number,
|
||||
@ -1988,8 +1992,8 @@ class Synthesis(models.Model):
|
||||
)
|
||||
|
||||
class Meta:
|
||||
verbose_name = _("synthesis")
|
||||
verbose_name_plural = _("syntheses")
|
||||
verbose_name = _("written review")
|
||||
verbose_name_plural = _("written reviews")
|
||||
unique_together = (('participation', 'passage', 'type', ), )
|
||||
ordering = ('passage__pool__round', 'type',)
|
||||
|
||||
|
Reference in New Issue
Block a user