
    Ri)                     .    d dl mZmZmZ d dlmZmZ d Zy)    )QSumF)MatchGroupTeamDivisionc                 "   | j                   }|j                  }|j                  }|j                  }t        j
                  j                  d      j                  | d      j                  d      }g }|D ]i  }|j                  }t        j
                  j                  d      j                  |j                  |d      }	t        j
                  j                  d      j                  |j                  |d      }
|	j                  t        d      	      j                         }|	j                  t        d      
      j                         }|	j                  t        d            j                         }|	j                  t        d            d   xs d}|	j                  t        d            d   xs d}|
j                  t        d            j                         }|
j                  t        d            j                         }|
j                  t        d            j                         }|
j                  t        d            d   xs d}|
j                  t        d            d   xs d}||z   }||z   }||z   }||z   }||z   }||z   |z   }||z  ||z  z   ||z  z   }|j!                  ||j"                  ||||||||z
  ||j$                  d       l |j'                  d d       t)        |d      D ]
  \  }}||d<    |S )u   
    Calcula la tabla de posiciones de un grupo desde los partidos.
    
    Args:
        group (Group): Instancia del grupo
    
    Returns:
        list: Lista de diccionarios con estadísticas de cada equipo
    tikistats_internalT)group	is_activeteam_division__teamF)competitionhome_team_divisionscore_home__isnull)r   away_team_divisionscore_away__isnull
score_away)score_home__gt)
score_home)score_home__ltr   )totalr   r   )score_away__gt)r   )score_away__lt)team_divisionteammatches_playedwinsdrawslosses	goals_forgoals_againstgoal_differencepoints	qualifiedc                     | d   | d   | d   fS )Nr"   r!   r    )xs    =/var/www/app.tikistats.com/public_html/router_sports/utils.py<lambda>z+calculate_group_standings.<locals>.<lambda>V   s    q{A&7$8!K.I     )keyreverse   )startposition)group_stagepoints_per_winpoints_per_drawpoints_per_lossr   objectsusingfilterselect_relatedr   r   r   r   count	aggregater   appendr   r#   sort	enumerate)r
   r/   pts_winpts_drawpts_lossteam_divisions_in_group	standingsgtdtdmatches_homematches_away	wins_home
draws_homelosses_homegoals_for_homegoals_against_home	wins_away
draws_awaylosses_awaygoals_for_awaygoals_against_awayr   r   r   r   r    r   r"   istandings                                 r'   calculate_group_standingsrQ      s=    ##K((G**H**H 077==>RSZZ [  n*+ 
 I& 5 }}**+?@GG#//!$ H 
 }}**+?@GG#//!$ H 
 !''q'GMMO	!((AlO(DJJL
"))<)IOOQ%//c,6G/HQVUV)33#l:K3LWUZYZ !''q'GMMO	!((AlO(DJJL
"))<)IOOQ%//c,6G/HQVUV)33#l:K3LWUZYZ 9$Z'{*"^3	*-??. .UX%56&8:KLGG,"*(=8
 	S5p NNI   !!4 !8 ! r)   N)django.db.modelsr   r   r   router_sports.modelsr   r   rQ   r%   r)   r'   <module>rT      s    & & 9Yr)   