mirror of
				https://gitlab.com/animath/si/plateforme.git
				synced 2025-11-04 16:42:28 +01:00 
			
		
		
		
	First ETEAM adjustments
Signed-off-by: Emmy D'Anello <emmy.danello@animath.fr>
This commit is contained in:
		@@ -929,7 +929,7 @@ class DrawConsumer(AsyncJsonWebsocketConsumer):
 | 
			
		||||
        td.purposed = None
 | 
			
		||||
        await td.asave()
 | 
			
		||||
 | 
			
		||||
        remaining = len(settings.PROBLEMS) - 5 - len(td.rejected)
 | 
			
		||||
        remaining = len(settings.PROBLEMS) - settings.RECOMMENDED_SOLUTIONS_COUNT - len(td.rejected)
 | 
			
		||||
 | 
			
		||||
        # Update messages
 | 
			
		||||
        trigram = td.participation.team.trigram
 | 
			
		||||
 
 | 
			
		||||
@@ -147,10 +147,10 @@ class Draw(models.Model):
 | 
			
		||||
                else:
 | 
			
		||||
                    # The problem can be rejected
 | 
			
		||||
                    s += "Elle peut décider d'accepter ou de refuser ce problème. "
 | 
			
		||||
                    if len(td.rejected) >= len(settings.PROBLEMS) - 5:
 | 
			
		||||
                    if len(td.rejected) >= len(settings.PROBLEMS) - settings.RECOMMENDED_SOLUTIONS_COUNT:
 | 
			
		||||
                        s += "Refuser ce problème ajoutera une nouvelle pénalité de 25 % sur le coefficient de l'oral de la défense."
 | 
			
		||||
                    else:
 | 
			
		||||
                        s += f"Il reste {len(settings.PROBLEMS) - 5 - len(td.rejected)} refus sans pénalité."
 | 
			
		||||
                        s += f"Il reste {len(settings.PROBLEMS) - settings.RECOMMENDED_SOLUTIONS_COUNT - len(td.rejected)} refus sans pénalité."
 | 
			
		||||
            case 'WAITING_FINAL':
 | 
			
		||||
                # We are between the two rounds of the final tournament
 | 
			
		||||
                s += "Le tirage au sort pour le tour 2 aura lieu à la fin du premier tour. Bon courage !"
 | 
			
		||||
@@ -193,10 +193,10 @@ class Round(models.Model):
 | 
			
		||||
        choices=[
 | 
			
		||||
            (1, _('Round 1')),
 | 
			
		||||
            (2, _('Round 2')),
 | 
			
		||||
        ],
 | 
			
		||||
        ] + ([] if settings.NB_ROUNDS == 2 else [(3, _('Round 3'))]),
 | 
			
		||||
        verbose_name=_('number'),
 | 
			
		||||
        help_text=_("The number of the round, 1 or 2"),
 | 
			
		||||
        validators=[MinValueValidator(1), MaxValueValidator(2)],
 | 
			
		||||
        help_text=_("The number of the round, 1 or 2 (or 3 for ETEAM)"),
 | 
			
		||||
        validators=[MinValueValidator(1), MaxValueValidator(settings.NB_ROUNDS)],
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    current_pool = models.ForeignKey(
 | 
			
		||||
@@ -524,10 +524,10 @@ class TeamDraw(models.Model):
 | 
			
		||||
    @property
 | 
			
		||||
    def penalty_int(self):
 | 
			
		||||
        """
 | 
			
		||||
        The number of penalties, which is the number of rejected problems after the P - 5 free rejects,
 | 
			
		||||
        where P is the number of problems.
 | 
			
		||||
        The number of penalties, which is the number of rejected problems after the P - 5 free rejects
 | 
			
		||||
        (P - 6 for ETEAM), where P is the number of problems.
 | 
			
		||||
        """
 | 
			
		||||
        return max(0, len(self.rejected) - (len(settings.PROBLEMS) - 5))
 | 
			
		||||
        return max(0, len(self.rejected) - (len(settings.PROBLEMS) - settings.RECOMMENDED_SOLUTIONS_COUNT))
 | 
			
		||||
 | 
			
		||||
    @property
 | 
			
		||||
    def penalty(self):
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,9 @@
 | 
			
		||||
    await Notification.requestPermission()
 | 
			
		||||
})()
 | 
			
		||||
 | 
			
		||||
// TODO ETEAM Mieux paramétriser (5 pour le TFJM², 6 pour l'ETEAM)
 | 
			
		||||
const RECOMMENDED_SOLUTIONS_COUNT = 6
 | 
			
		||||
 | 
			
		||||
const problems_count = JSON.parse(document.getElementById('problems_count').textContent)
 | 
			
		||||
 | 
			
		||||
const tournaments = JSON.parse(document.getElementById('tournaments_list').textContent)
 | 
			
		||||
@@ -658,15 +661,16 @@ document.addEventListener('DOMContentLoaded', () => {
 | 
			
		||||
        recapDiv.textContent = `🗑️ ${rejected.join(', ')}`
 | 
			
		||||
 | 
			
		||||
        let penaltyDiv = document.getElementById(`recap-${tid}-round-${round}-team-${team}-penalty`)
 | 
			
		||||
        if (rejected.length > problems_count - 5) {
 | 
			
		||||
        if (rejected.length > problems_count - RECOMMENDED_SOLUTIONS_COUNT) {
 | 
			
		||||
            // If more than P - 5 problems were rejected, add a penalty of 25% of the coefficient of the oral defender
 | 
			
		||||
            // This is P - 6 for the ETEAM
 | 
			
		||||
            if (penaltyDiv === null) {
 | 
			
		||||
                penaltyDiv = document.createElement('div')
 | 
			
		||||
                penaltyDiv.id = `recap-${tid}-round-${round}-team-${team}-penalty`
 | 
			
		||||
                penaltyDiv.classList.add('badge', 'rounded-pill', 'text-bg-info')
 | 
			
		||||
                recapDiv.parentNode.append(penaltyDiv)
 | 
			
		||||
            }
 | 
			
		||||
            penaltyDiv.textContent = `❌ ${25 * (rejected.length - (problems_count - 5))} %`
 | 
			
		||||
            penaltyDiv.textContent = `❌ ${25 * (rejected.length - (problems_count - RECOMMENDED_SOLUTIONS_COUNT))} %`
 | 
			
		||||
        } else {
 | 
			
		||||
            // Eventually remove this div
 | 
			
		||||
            if (penaltyDiv !== null)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user