
    Ų4i.                        d dl mZmZmZ d dlmZmZmZmZm	Z	 d dl
mZ d dlmZmZmZ d dlmZ d dlmZmZmZ d dlmZmZ d dlmZmZ d d	lmZ d d
lmZ d dl m!Z! d dl"m#Z# d dl$m%Z% d dl&m'Z' d dl(m)Z)m*Z* d dl+m,Z, d dl-m.Z. d dl/m0Z0m1Z1m2Z2m3Z3  G d dee      Z4 G d dee      Z5e%d        Z6	 e%d        Z7e%d        Z8e%d        Z9y)    )renderredirectget_object_or_404)ViewListViewTemplateView
DetailView
CreateView)LoginRequiredMixin)authenticateloginlogout)messages)JsonResponseHttpResponseHttp404)reversereverse_lazy)CountQ)timezone)ContentFile)csrf_exempt)require_POST)login_required)DBHelper)get_team_metricsget_player_metrics)PermissionChecker)SportsDataService)MatchTeamPlayerDivisionc                       e Zd ZdZdZd Zy)dashBoardViewzdashboard/dashboard.html/c           
      ~   |j                   }|j                  dk(  rgt        |dg       }|rX	 t        j                  j                  d      j                  |      j                         }|rt        d|j                        S 	 t        |j                         }t        |      }|j                  d	      }|j                         }	|j!                  d
      }
d }|j#                  d      r	 t%        || j&                  |
||	||j                   j(                  d      S # t        $ r}t        d|        Y d }~d }~ww xY w)Nplayerteam_idstikistats_internal)teams__id__inzdashboard:division_detail)division_idzError redirigiendo jugador: 
   limit      )testeomatchesteamsdatametricsplayerhas_full_access)user	user_typegetattrr$   objectsusingfilterfirstr   id	Exceptionprintr   r    get_accessible_matchesget_accessible_teamscan_view_teamcan_view_playerr   template_nameis_superuser)selfrequestr8   r*   divisionecheckerservicer4   r5   r3   r6   s               9/var/www/app.tikistats.com/public_html/dashboard/views.pygetzdashBoardView.get   sC   ||>>X%tZ4H
>'//556JKRR&.  S  eg 
  '(CQYQ\Q\]]   $GLL1#G, 00r0: ,,.&&q) !""2&gt11!2&||884
  	+ ! >8<==>s   AD 	D<$D77D<N)__name__
__module____qualname__rF   	login_urlrO        rN   r&   r&      s    .MI+rU   r&   c                   *     e Zd ZdZdZdZ fdZ xZS )DivisionViewu,   Vista para mostrar una división específicazdivision.htmlr'   c                     t        |   di |}| j                  j                  d      }t	        | j
                  j                        }t        |      }|j                  dd      j                         |d<   ||d<   |S )Nslug- division_namedivision_slugrT   )
superget_context_datakwargsrO   r   rI   r8   r    replacetitle)rH   r`   contextr]   rL   rM   	__class__s         rN   r_   zDivisionView.get_context_dataN   sx    '*4V4/ $DLL$5$56#G, $1#8#8c#B#H#H#J #0 rU   )rP   rQ   rR   __doc__rF   rS   r_   __classcell__)rd   s   @rN   rW   rW   I   s    6#MI rU   rW   c                 H   t        | j                        }t        |      }	 t        j                  j                  d      j                  |      }|j                  |      st        d      |j                  d|      }|j                         }|?t        j                  j                  d      j                  |d	      j                         }no|r@t        j                  j                  d      j                  ||d
      j                         }n-t        j                  j                  d      j                         }|||j!                         |j!                         ||dd d|j"                  v d}t%        | d|      S # t        j                  $ r t        d      w xY w)u   
    Vista ÚNICA y GENÉRICA para cualquier división.
    Reemplaza a sub17_view y hace innecesario el dispatcher complejo.
    r+   r?      División no encontradau)   No tienes permiso para ver esta división   )r0   r-   Nactive)1team_division_players__team_division__division_idteam_division_players__state)1team_division_players__team_division__team_id__inrl   rm   r.   Sub-17)rJ   r-   total_playersmatches_playedrecent_matchesplayersis_sub17zdashboard/division_detail.html)r   r8   r    r$   r;   r<   rO   DoesNotExistr   can_view_divisionrB   get_allowed_teamsr#   r=   distinctnonecountnamer   )	rI   r-   rL   rM   rJ   rr   allowed_team_idsrs   rc   s	            rN   division_detail_viewr}   e   s     -G(G1##))*>?CC{CS
 $$[1ABB 33!3UN 002..&&';<CC>I)1 D 
 (* 	 
..&&';<CC>N>I)1 D 
 (*	 	 ..&&';<AAC " (..0(3B<-	G ';WEEW    1/001s   /F F!c                 ,   	 t         j                  j                  d      j                  |      }d|j                  v sd|j                  v rt        |       S t        d|j                   d| d      S # t         j                  $ r t        d      w xY w)	u   
    Recibe un ID y redirige a la vista correcta.
    Si es la división Sub-17, usa su vista especial.
    Si es otra, usa una vista genérica (o podrías crear una).
    r+   rh   ro   Sub17u   Vista para división z (ID: u   ) en construcciónri   )	r$   r;   r<   rO   r{   
sub17_viewr   ru   r   )rI   r-   rJ   s      rN   division_dispatcherr      s    1##))*>?CC{CS x}}$8==(@g&& 3HMM?&Ughii   1/001s   AA4 A4 4Bc                    t        | j                        }t        |      }|j                  |      st	        d      |j                  |      }|st	        d      |j                  |d      }d}|r	 ||||d}t        | d|      S )u9   Vista para mostrar estadísticas detalladas de un partidoz Match not found or access deniedzMatch not foundhistoricdepthN)r-   matchcan_view_historicmatch_statszdashboard/matchs.html)r   r8   r    can_view_matchr   	get_matchr   )	rI   r-   match_idrL   rM   r   r   r   rc   s	            rN   matchs_viewr      s    
  -G(G !!(+899 h'E'((  ..xz.J K #."	G '2G<<rU   c                 x   t        | j                        }t        |      }|j                  |d      st	        d      |j                  |      }|st	        d      |j                  |d      }|j                  |      }d}|j                  |d      r|j                  |      }||||dd	}t        | d
|      S )z'Vista para mostrar detalle de un equipor   r   zTeam not found or access deniedzTeam not foundr.   r/   NT)teamrr   rs   
team_statsr   zdashboard/team_detail.html)
r   r8   r    rD   r   get_teamget_matches_by_teamget_players_by_teamget_team_statsr   )	rI   team_idrL   rM   r   rr   rs   r   rc   s	            rN   team_detailr     s    
  -G(G   
 ;788 G$D&'' 000CN ))'2G JWJ7++G4
 ( !G '7AArU   N):django.shortcutsr   r   r   django.views.genericr   r   r   r	   r
   django.contrib.auth.mixinsr   django.contrib.authr   r   r   django.contribr   django.httpr   r   r   django.urlsr   r   django.db.modelsr   r   django.utilsr   django.core.files.baser   django.views.decorators.csrfr   django.views.decorators.httpr   django.contrib.auth.decoratorsr   dashboard.db_helperr   router_analytics.servicesr   r   clients.permissionsr   router_sports.servicesr    router_sports.modelsr!   r"   r#   r$   r&   rW   r}   r   r   r   rT   rU   rN   <module>r      s    @ @ U U 9 ; ; # ; ; - % ! . 4 5 9 ( J 1 4 > >/& /b%| 8 8F 8Ft6p 1 14 != !=F $B $BrU   