mirror of
https://gitlab.com/animath/si/plateforme.git
synced 2025-08-16 08:50:05 +02:00
Remove observer status
Signed-off-by: Emmy D'Anello <emmy.danello@animath.fr>
This commit is contained in:
@@ -1245,8 +1245,7 @@ class PoolUploadNotesView(VolunteerMixin, FormView, DetailView):
|
||||
return self.form_invalid(form)
|
||||
|
||||
for vr, notes in parsed_notes.items():
|
||||
# There is an observer note for 4-teams pools
|
||||
notes_count = 7 if pool.passages.count() == 4 else 6
|
||||
notes_count = 6
|
||||
for i, passage in enumerate(pool.passages.all()):
|
||||
note = Note.objects.get_or_create(jury=vr, passage=passage)[0]
|
||||
passage_notes = notes[notes_count * i:notes_count * (i + 1)]
|
||||
@@ -1282,7 +1281,7 @@ class PoolNotesTemplateView(VolunteerMixin, DetailView):
|
||||
|
||||
def render_to_response(self, context, **response_kwargs): # noqa: C901
|
||||
pool_size = self.object.passages.count()
|
||||
passage_width = 7 if pool_size == 4 else 6
|
||||
passage_width = 6
|
||||
line_length = pool_size * passage_width
|
||||
|
||||
def getcol(number: int) -> str:
|
||||
@@ -1454,10 +1453,6 @@ class PoolNotesTemplateView(VolunteerMixin, DetailView):
|
||||
col_style.addElement(TableColumnProperties(columnwidth="2.6cm", breakbefore="auto"))
|
||||
doc.automaticstyles.addElement(col_style)
|
||||
|
||||
obs_col_style = Style(name="co3", family="table-column")
|
||||
obs_col_style.addElement(TableColumnProperties(columnwidth="5.2cm", breakbefore="auto"))
|
||||
doc.automaticstyles.addElement(obs_col_style)
|
||||
|
||||
table = Table(name=f"Poule {self.object.get_letter_display()}{self.object.round}")
|
||||
doc.spreadsheet.addElement(table)
|
||||
|
||||
@@ -1465,8 +1460,7 @@ class PoolNotesTemplateView(VolunteerMixin, DetailView):
|
||||
table.addElement(TableColumn(stylename=jury_id_style))
|
||||
|
||||
for i in range(line_length):
|
||||
table.addElement(TableColumn(
|
||||
stylename=obs_col_style if pool_size == 4 and i % passage_width == passage_width - 1 else col_style))
|
||||
table.addElement(TableColumn(stylename=col_style))
|
||||
|
||||
# Add line for the problems for different passages
|
||||
header_pb = TableRow()
|
||||
@@ -1479,10 +1473,10 @@ class PoolNotesTemplateView(VolunteerMixin, DetailView):
|
||||
for passage in self.object.passages.all():
|
||||
tc = TableCell(valuetype="string", stylename=title_style_topleftright)
|
||||
tc.addElement(P(text=f"Problème {passage.solution_number}"))
|
||||
tc.setAttribute('numbercolumnsspanned', "7" if pool_size == 4 else "6")
|
||||
tc.setAttribute('numbercolumnsspanned', "6")
|
||||
tc.setAttribute("formula", f"of:=[.B{8 + self.object.juries.count() + passage.position}]")
|
||||
header_pb.addElement(tc)
|
||||
header_pb.addElement(CoveredTableCell(numbercolumnsrepeated=6 if pool_size == 4 else 5))
|
||||
header_pb.addElement(CoveredTableCell(numbercolumnsrepeated=5))
|
||||
|
||||
# Add roles on the second line of the table
|
||||
header_role = TableRow()
|
||||
@@ -1506,17 +1500,12 @@ class PoolNotesTemplateView(VolunteerMixin, DetailView):
|
||||
header_role.addElement(CoveredTableCell())
|
||||
|
||||
reporter_tc = TableCell(valuetype="string",
|
||||
stylename=title_style_right if pool_size != 4 else title_style)
|
||||
stylename=title_style_right)
|
||||
reporter_tc.addElement(P(text="Rapporteur⋅rice"))
|
||||
reporter_tc.setAttribute('numbercolumnsspanned', "2")
|
||||
header_role.addElement(reporter_tc)
|
||||
header_role.addElement(CoveredTableCell())
|
||||
|
||||
if pool_size == 4:
|
||||
observer_tc = TableCell(valuetype="string", stylename=title_style_right)
|
||||
observer_tc.addElement(P(text="Intervention exceptionnelle"))
|
||||
header_role.addElement(observer_tc)
|
||||
|
||||
# Add maximum notes on the third line
|
||||
header_notes = TableRow()
|
||||
table.addElement(header_notes)
|
||||
@@ -1547,17 +1536,10 @@ class PoolNotesTemplateView(VolunteerMixin, DetailView):
|
||||
reporter_w_tc.addElement(P(text="Écrit (/10)"))
|
||||
header_notes.addElement(reporter_w_tc)
|
||||
|
||||
reporter_o_tc = TableCell(valuetype="string",
|
||||
stylename=title_style_botright if pool_size != 4 else title_style_bot)
|
||||
reporter_o_tc = TableCell(valuetype="string", stylename=title_style_botright)
|
||||
reporter_o_tc.addElement(P(text="Oral (/10)"))
|
||||
header_notes.addElement(reporter_o_tc)
|
||||
|
||||
if pool_size == 4:
|
||||
observer_tc = TableCell(valuetype="string",
|
||||
stylename=title_style_botright)
|
||||
observer_tc.addElement(P(text="Oral (± 4)"))
|
||||
header_notes.addElement(observer_tc)
|
||||
|
||||
# Add a notation line for each jury
|
||||
for jury in self.object.juries.all():
|
||||
jury_row = TableRow()
|
||||
@@ -1631,16 +1613,10 @@ class PoolNotesTemplateView(VolunteerMixin, DetailView):
|
||||
reporter_w_tc.addElement(P(text="1"))
|
||||
coeff_row.addElement(reporter_w_tc)
|
||||
|
||||
reporter_o_tc = TableCell(valuetype="float", value=1,
|
||||
stylename=style_right if pool_size != 4 else style)
|
||||
reporter_o_tc = TableCell(valuetype="float", value=1, stylename=style_right)
|
||||
reporter_o_tc.addElement(P(text="1"))
|
||||
coeff_row.addElement(reporter_o_tc)
|
||||
|
||||
if pool_size == 4:
|
||||
observer_tc = TableCell(valuetype="float", value=1, stylename=style_right)
|
||||
observer_tc.addElement(P(text="1"))
|
||||
coeff_row.addElement(observer_tc)
|
||||
|
||||
# Add the subtotal on the next line
|
||||
subtotal_row = TableRow()
|
||||
table.addElement(subtotal_row)
|
||||
@@ -1672,8 +1648,7 @@ class PoolNotesTemplateView(VolunteerMixin, DetailView):
|
||||
|
||||
rep_w_col = getcol(min_column + passage_width * i + 4)
|
||||
rep_o_col = getcol(min_column + passage_width * i + 5)
|
||||
reporter_tc = TableCell(valuetype="float", value=passage.average_reporter,
|
||||
stylename=style_botright if pool_size != 4 else style_bot)
|
||||
reporter_tc = TableCell(valuetype="float", value=passage.average_reporter, stylename=style_botright)
|
||||
reporter_tc.addElement(P(text=str(passage.average_reporter)))
|
||||
reporter_tc.setAttribute('numbercolumnsspanned', "2")
|
||||
reporter_tc.setAttribute("formula", f"of:=[.{rep_w_col}{max_row + 1}] * [.{rep_w_col}{max_row + 2}]"
|
||||
@@ -1681,14 +1656,6 @@ class PoolNotesTemplateView(VolunteerMixin, DetailView):
|
||||
subtotal_row.addElement(reporter_tc)
|
||||
subtotal_row.addElement(CoveredTableCell())
|
||||
|
||||
if pool_size == 4:
|
||||
obs_col = getcol(min_column + passage_width * i + 6)
|
||||
observer_tc = TableCell(valuetype="float", value=passage.average_observer,
|
||||
stylename=style_botright)
|
||||
observer_tc.addElement(P(text=str(passage.average_observer)))
|
||||
observer_tc.setAttribute("formula", f"of:=[.{obs_col}{max_row + 1}] * [.{obs_col}{max_row + 2}]")
|
||||
subtotal_row.addElement(observer_tc)
|
||||
|
||||
table.addElement(TableRow())
|
||||
|
||||
# Compute the total scores in a new table
|
||||
@@ -1710,7 +1677,6 @@ class PoolNotesTemplateView(VolunteerMixin, DetailView):
|
||||
|
||||
# For each line of the matrix P, the ith team is defender on the passage number Pi0,
|
||||
# opponent on the passage number Pi1, reporter on the passage number Pi2
|
||||
# and eventually observer on the passage number Pi3.
|
||||
passage_matrix = []
|
||||
match pool_size:
|
||||
case 3:
|
||||
@@ -1721,10 +1687,10 @@ class PoolNotesTemplateView(VolunteerMixin, DetailView):
|
||||
]
|
||||
case 4:
|
||||
passage_matrix = [
|
||||
[0, 3, 2, 1],
|
||||
[1, 0, 3, 2],
|
||||
[2, 1, 0, 3],
|
||||
[3, 2, 1, 0],
|
||||
[0, 3, 2],
|
||||
[1, 0, 3],
|
||||
[2, 1, 0],
|
||||
[3, 2, 1],
|
||||
]
|
||||
case 5:
|
||||
passage_matrix = [
|
||||
@@ -1759,9 +1725,6 @@ class PoolNotesTemplateView(VolunteerMixin, DetailView):
|
||||
formula += getcol(min_column + passage_line[0] * passage_width) + str(max_row + 3) # Defender
|
||||
formula += " + " + getcol(min_column + passage_line[1] * passage_width + 2) + str(max_row + 3) # Opponent
|
||||
formula += " + " + getcol(min_column + passage_line[2] * passage_width + 4) + str(max_row + 3) # Reporter
|
||||
if pool_size == 4:
|
||||
# Observer
|
||||
formula += " + " + getcol(min_column + passage_line[3] * passage_width + 6) + str(max_row + 3)
|
||||
score_tc.setAttribute("formula", formula)
|
||||
team_row.addElement(score_tc)
|
||||
|
||||
@@ -1986,7 +1949,7 @@ class PassageDetailView(LoginRequiredMixin, DetailView):
|
||||
or reg in passage.pool.juries.all()
|
||||
or reg.pools_presided.filter(tournament=passage.pool.tournament).exists()) \
|
||||
or reg.participates and reg.team \
|
||||
and reg.team.participation in [passage.defender, passage.opponent, passage.reporter, passage.observer]:
|
||||
and reg.team.participation in [passage.defender, passage.opponent, passage.reporter]:
|
||||
return super().dispatch(request, *args, **kwargs)
|
||||
return self.handle_no_permission()
|
||||
|
||||
@@ -2004,9 +1967,6 @@ class PassageDetailView(LoginRequiredMixin, DetailView):
|
||||
notes = [note for note in notes if note.has_any_note() or note.jury == reg]
|
||||
context["notes"] = NoteTable(notes)
|
||||
|
||||
# Only display the observer column for 4-teams pools
|
||||
if passage.pool.participations.count() != 4:
|
||||
context['notes']._sequence.remove('observer_oral')
|
||||
if 'notes' in context and not self.request.user.registration.is_admin:
|
||||
context['notes']._sequence.remove('update')
|
||||
|
||||
@@ -2016,8 +1976,6 @@ class PassageDetailView(LoginRequiredMixin, DetailView):
|
||||
context['notes'].columns['opponent_oral'].column.verbose_name += f" ({passage.opponent.team.trigram})"
|
||||
context['notes'].columns['reporter_writing'].column.verbose_name += f" ({passage.reporter.team.trigram})"
|
||||
context['notes'].columns['reporter_oral'].column.verbose_name += f" ({passage.reporter.team.trigram})"
|
||||
if self.object.observer:
|
||||
context['notes'].columns['observer_oral'].column.verbose_name += f" ({passage.observer.team.trigram})"
|
||||
|
||||
return context
|
||||
|
||||
@@ -2112,11 +2070,6 @@ class NoteUpdateView(VolunteerMixin, UpdateView):
|
||||
form.fields['opponent_oral'].label += f" ({self.object.passage.opponent.team.trigram})"
|
||||
form.fields['reporter_writing'].label += f" ({self.object.passage.reporter.team.trigram})"
|
||||
form.fields['reporter_oral'].label += f" ({self.object.passage.reporter.team.trigram})"
|
||||
if self.object.passage.observer:
|
||||
form.fields['observer_oral'].label += f" ({self.object.passage.observer.team.trigram})"
|
||||
else:
|
||||
# Set the note of the observer only for 4-teams pools
|
||||
del form.fields['observer_oral']
|
||||
return form
|
||||
|
||||
def form_valid(self, form):
|
||||
|
Reference in New Issue
Block a user