mirror of
https://gitlab.com/animath/si/plateforme.git
synced 2025-05-02 06:11:33 +00:00
On n'affiche pas les données de l'équipe observatrice quand on a pas
This commit is contained in:
parent
7ad7659d78
commit
ab459ecc17
@ -1,7 +1,9 @@
|
||||
# Copyright (C) 2020 by Animath
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
from django.conf import settings
|
||||
from django.contrib import admin
|
||||
from django.http import HttpRequest
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from .models import Note, Participation, Passage, Pool, Solution, Team, Tournament, Tweak, WrittenReview
|
||||
@ -51,9 +53,14 @@ class PassageInline(admin.TabularInline):
|
||||
model = Passage
|
||||
extra = 0
|
||||
ordering = ('position',)
|
||||
autocomplete_fields = ('reporter', 'opponent', 'reviewer', 'observer',)
|
||||
show_change_link = True
|
||||
|
||||
def get_autocomplete_fields(self, request: HttpRequest) -> tuple[str]:
|
||||
fields = ('reporter', 'opponent', 'reviewer',)
|
||||
if settings.HAS_OBSERVER:
|
||||
fields += ('observer',)
|
||||
return fields
|
||||
|
||||
|
||||
class NoteInline(admin.TabularInline):
|
||||
model = Note
|
||||
@ -113,12 +120,9 @@ class PoolAdmin(admin.ModelAdmin):
|
||||
|
||||
@admin.register(Passage)
|
||||
class PassageAdmin(admin.ModelAdmin):
|
||||
list_display = ('__str__', 'reporter_trigram', 'solution_number', 'opponent_trigram', 'reviewer_trigram',
|
||||
'observer_trigram', 'pool_abbr', 'position', 'tournament')
|
||||
list_filter = ('pool__tournament', 'pool__round', 'pool__letter', 'solution_number',)
|
||||
search_fields = ('pool__participations__team__name', 'pool__participations__team__trigram',)
|
||||
ordering = ('pool__tournament', 'pool__round', 'pool__letter', 'position',)
|
||||
autocomplete_fields = ('pool', 'reporter', 'opponent', 'reviewer', 'observer',)
|
||||
inlines = (NoteInline,)
|
||||
|
||||
@admin.display(description=_("reporter"), ordering='reporter__team__trigram')
|
||||
@ -135,7 +139,7 @@ class PassageAdmin(admin.ModelAdmin):
|
||||
|
||||
@admin.display(description=_("observer"), ordering='observer__team__trigram')
|
||||
def observer_trigram(self, record: Passage):
|
||||
return record.observer.team.trigram
|
||||
return record.observer.team.trigram if record.observer else None
|
||||
|
||||
@admin.display(description=_("pool"), ordering='pool__letter')
|
||||
def pool_abbr(self, record):
|
||||
@ -145,15 +149,23 @@ class PassageAdmin(admin.ModelAdmin):
|
||||
def tournament(self, record: Passage):
|
||||
return record.pool.tournament
|
||||
|
||||
def get_list_display(self, request: HttpRequest) -> tuple[str]:
|
||||
if settings.HAS_OBSERVER:
|
||||
return ('__str__', 'reporter_trigram', 'solution_number', 'opponent_trigram',
|
||||
'reviewer_trigram', 'observer_trigram', 'pool_abbr', 'position', 'tournament')
|
||||
else:
|
||||
return ('__str__', 'reporter_trigram', 'solution_number', 'opponent_trigram',
|
||||
'reviewer_trigram', 'pool_abbr', 'position', 'tournament')
|
||||
|
||||
def get_autocomplete_fields(self, request: HttpRequest) -> tuple[str]:
|
||||
fields = ('pool', 'reporter', 'opponent', 'reviewer',)
|
||||
if settings.HAS_OBSERVER:
|
||||
fields += ('observer',)
|
||||
return fields
|
||||
|
||||
|
||||
@admin.register(Note)
|
||||
class NoteAdmin(admin.ModelAdmin):
|
||||
list_display = ('passage', 'pool', 'jury', 'reporter_writing', 'reporter_oral',
|
||||
'opponent_writing', 'opponent_oral', 'reviewer_writing', 'reviewer_oral',
|
||||
'observer_writing', 'observer_oral',)
|
||||
list_filter = ('passage__pool__letter', 'passage__solution_number', 'jury',
|
||||
'reporter_writing', 'reporter_oral', 'opponent_writing', 'opponent_oral',
|
||||
'reviewer_writing', 'reviewer_oral', 'observer_writing', 'observer_oral')
|
||||
search_fields = ('jury__user__last_name', 'jury__user__first_name', 'passage__reporter__team__trigram',)
|
||||
autocomplete_fields = ('jury', 'passage',)
|
||||
|
||||
@ -161,6 +173,21 @@ class NoteAdmin(admin.ModelAdmin):
|
||||
def pool(self, record):
|
||||
return record.passage.pool.short_name
|
||||
|
||||
def get_list_display(self, request: HttpRequest) -> tuple[str]:
|
||||
fields = ('passage', 'pool', 'jury', 'reporter_writing', 'reporter_oral',
|
||||
'opponent_writing', 'opponent_oral', 'reviewer_writing', 'reviewer_oral',)
|
||||
if settings.HAS_OBSERVER:
|
||||
fields += ('observer_writing', 'observer_oral',)
|
||||
return fields
|
||||
|
||||
def get_list_filter(self, request: HttpRequest) -> tuple[str]:
|
||||
fields = ('passage__pool__letter', 'passage__solution_number', 'jury',
|
||||
'reporter_writing', 'reporter_oral', 'opponent_writing', 'opponent_oral',
|
||||
'reviewer_writing', 'reviewer_oral',)
|
||||
if settings.HAS_OBSERVER:
|
||||
fields += ('observer_writing', 'observer_oral',)
|
||||
return fields
|
||||
|
||||
|
||||
@admin.register(Solution)
|
||||
class SolutionAdmin(admin.ModelAdmin):
|
||||
|
@ -7,6 +7,7 @@ import re
|
||||
from crispy_forms.helper import FormHelper
|
||||
from crispy_forms.layout import Div, Field, HTML, Layout, Submit
|
||||
from django import forms
|
||||
from django.conf import settings
|
||||
from django.contrib.auth.models import User
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.core.validators import FileExtensionValidator
|
||||
@ -14,7 +15,6 @@ from django.utils.translation import gettext_lazy as _
|
||||
import pandas
|
||||
from pypdf import PdfReader
|
||||
from registration.models import VolunteerRegistration
|
||||
from tfjm import settings
|
||||
|
||||
from .models import Note, Participation, Passage, Pool, Solution, Team, Tournament, WrittenReview
|
||||
|
||||
@ -405,6 +405,12 @@ class WrittenReviewForm(forms.ModelForm):
|
||||
|
||||
|
||||
class NoteForm(forms.ModelForm):
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
if not settings.HAS_OBSERVER:
|
||||
del self.fields['observer_writing']
|
||||
del self.fields['observer_oral']
|
||||
|
||||
class Meta:
|
||||
model = Note
|
||||
fields = ('reporter_writing', 'reporter_oral', 'opponent_writing',
|
||||
|
@ -1,6 +1,7 @@
|
||||
# Copyright (C) 2020 by Animath
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
from django.conf import settings
|
||||
from django.utils import formats
|
||||
from django.utils.safestring import mark_safe
|
||||
from django.utils.text import format_lazy
|
||||
@ -106,7 +107,10 @@ class PoolTable(tables.Table):
|
||||
|
||||
|
||||
class PassageTable(tables.Table):
|
||||
# FIXME Ne pas afficher l'équipe observatrice si non nécessaire
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
if not settings.HAS_OBSERVER:
|
||||
del self.columns['observer']
|
||||
|
||||
reporter = tables.LinkColumn(
|
||||
"participation:passage_detail",
|
||||
@ -135,6 +139,12 @@ class PassageTable(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(
|
||||
attrs={
|
||||
"td": {
|
||||
|
Loading…
x
Reference in New Issue
Block a user