
    Eh8.                     &   d dl Z d dlZd dlZd dlZd dlmZmZ d dl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mZ d dlmZmZ d dlmZ d d	lmZ d d
l d dlmZmZ ee ed       d                      Zee ed       d                      Z ee ed       d                      Z!ee ed       d                      Z"ee ed       d                      Z#d Z$d Z%ee ed       d                      Z&ee ed       d                      Z'ee ed       d                      Z(ee ed       d                      Z)ee ed        d!                      Z*ee ed"       d#                      Z+ee ed$       d%                      Z,y)&    N)datetime	timedelta)CountMinQ)renderredirect)	localtime
make_aware)require_GETrequire_POST)login_requireduser_passes_test)HttpResponse)defaultdict)*)RaffleDrawSerializerHourRangeSerializerc                     | j                   S Nis_coordus    +/var/www/html/tombola/views/tombola_view.py<lambda>r      
    AJJ     c                 `    t         j                  j                         }d|i}t        | d|      S )Ntombola_listz,tombola_management/tombola/tombola_list.html)
RaffleDrawobjectsallr   )requestr    contexts      r   get_tombola_listr&      s8     %%))+L 	G 'I7SSr   c                     | j                   S r   r   r   s    r   r   r   '   r   r   c                 Z   t         j                  j                  |      }t        j                  j	                  |      }t
        j                  j	                  |d      j                  d      }t
        j                  j	                  |d      j                  d      }t
        j                  j	                  |d      j                  d	      }t
        j                  j	                  |d
      j                  d      }|t        d|j                        |||||d}t        | d|      S )Npkraffler   )r,   
win_t1__gtwin_t1)r,   
win_t2__gtwin_t2)r,   	win_p__gtwin_p)r,   win_24h__gtwin_24h   )tombolaparticipants_rangepartners
winners_t1
winners_t2winners_partnerswinners_24hz/tombola_management/tombola/tombola_details.html)r%   )
r!   r"   get
Partenairefilter	Passeportorder_byrangeparticipantsr   )	r$   
tombola_idr6   r8   r9   r:   r;   r<   r%   s	            r   get_tombola_detailsrE   %   s      $$
$3G!!(((8H""))Q)GPPQYZJ""))Q)GPPQYZJ ((//w!/LUUV]^##**'q*IRRS\]K #Aw';';<  ,"G 'LV]^^r   c                     | j                   S r   r   r   s    r   r   r   A   r   r   c                 @   t        | j                  j                  d      t        j                         t        | j                  j                  d            t        | j                  j                  d            t        | j                  j                  d            t        | j                  j                  d            t        | j                  j                  d            t        | j                  j                  d            t        j                  | j                  j                  d      d	      t        j                  | j                  j                  d
      d	      | j                  j                  d      dd      }|j                          t        d|j                  dz         D ]]  }t        ||t        j                  t        j                         j                        j!                               }|j                          _ t        |j"                  |j$                  z
  j&                  dz  |j"                  |j$                  z
  j(                  dz  z         D ]f  }|j$                  t+        |dz         z   }|t+        |j,                        z   }t/        |||      }t1        d| d|        |j                          h t        j2                         j4                  }t        t        |j6                              D ]  }t9        j:                  d      }t=        dt?        |dz         z   dz   t?        |      z   d|d      }	|	jA                  |       |	j                          tC        ||	      j                           tE        d|jF                        S )Ntombola_nametombola_participantstombola_nb_winners_t1tombola_nb_winners_t2tombola_nb_winners_ptombola_nb_winners_24htombola_scan_intervaltombola_start_datetimez%Y-%m-%dT%H:%Mtombola_end_datetimetombola_partners_number   T)namecreation_daterC   r9   r:   	winners_pr<   timestamp_rafflestart_datetimeend_datetimepartners_numberstate	is_activer5   )r,   number	unique_idi     )hours)minutes)r,   startendu   Création de HourRange: z ->    partner_)username
is_partnercommentr[   )r,   usertombola:tombola_details)$r!   POSTr=   r   todayintstrptimesaverB   rC   r@   base58	b58encodeuuiduuid4bytesdecoderX   rW   secondsdaysr   rV   	HourRangeprintnowyearrY   secretstoken_urlsafeUserstrset_passwordr>   r	   id)
r$   r6   i	passeport
start_timeend_time
hour_ranger{   raw_passwordri   s
             r   add_new_tombolar   ?   s    \\n-nn&))*@AB(()@ABw||''(?@Agll&&'=>?(()ABCW\\--.EFG(()9)9:R)SUef&&w||'7'78N'OQab(()BCG LLN1g**Q./ &&tzz|'9'9:AAC
	
 	 G((7+A+AAJJdRV]VjVjmt  nD  nD  WD  VJ  VJ  MO  VO  O  P 
++iac.BB
	'2J2J KK


 	(D
CD
 <<>D3w../0 5,,Q/YQU3c9CIERV`l"$,'		'-2245 -wzz::r   c                     | j                   S r   r   r   s    r   r   r   v   r   r   c                    t        | j                         t        j                  j	                  |      D ]  }|j
                  }| j                  j                  |j
                  j                  dz         |_        | j                  j                  |j
                  j                  dz         |_	        |j                           t        d|      S )Nr+   
_firstname	_lastnamerj   )ry   rk   r>   r"   r?   ri   r=   rf   
first_name	last_namero   r	   )r$   rD   rd   ri   s       r   save_step_2r   t   s     
',,%%,,J,? ||!,,**7<<+@+@<+OP ))',,*?*?+*MN			 -z::r   c                     | j                   S r   r   r   s    r   r   r      r   r   c                     t         j                  j                  |      }d|_        d|_        |j                          t        d|      S )Nr)      r5   rj   )r!   r"   r=   rZ   step_rafflero   r	   )r$   rD   r6   s      r   unlock_step_3r      sC       $$
$3GGMGLLN-z::r   c                    |dk(  r-| j                   }t        j                  j                  |       }n-| j                  }t        j                  j                  | d      }t        t              }|D ]   }||j                     j                  |       " g }i }t        j                  j                  |       D ]  }|j                  |j                  g       }	t        |	      }
t        d |	D              }|j                  |j                  g|
z         t        |      |
t        |      z
  |j                  |j                        d}|||j                  <    g }d}||k  rb|r`t!        j"                  |      }|j                  ||||   d   ||   d	   ||   d
   d       |dz   }|D cg c]
  }||k7  s	| }}||k  r|r`|S c c}w )Nr5   passeport__raffler   )r   passeport__win_t1r+   c              3   N   K   | ]  }|j                   s|j                     y wr   )hour_range_id).0tks     r   	<genexpr>ztirage_1_2.<locals>.<genexpr>   s     "_bN^N^2#3#3"_s   %%)nb_hournb_partenairepondr   r   r   )numorderr   r   r   )r9   Ticketr"   r?   r:   r   listpasseport_idappendr@   r=   r   lensetextendcountrandomchoice)r6   type_tiragegagnantsticketstickets_by_passeportticketpoolpasseports_countr   user_ticketsticket_countactual_hourrange_idscur_passeportgagnants_listr   gagnantxs                    r   
tirage_1_2r      s   a%%..''''B%%..'''VW'X&t, AV00188@A D&&--W-= 7	+//	bA<(""_l"__Y\\N\12$'(<$=*6=Q9R*R!%ILL!9; *7&7 ME
8
--%WuIYZaIbclIm/?/H/Y&6w&?&GI 	J 	0a1<00 8
  1s   *
G5Gc           
         t         j                  j                  t        dt	        d            t        dt	        d                  j                  d      j                  d	d
      d| j                   }g }d}|D ]0  }|j                  |j                  ||j                  d       |dz   }2 	 t        t         j                  j                  t        dt	        d                  j                  t	        d      t	        d      z              }t        j                  |t        | j                   t#        |                  }g }d}|D ]%  }|j                  |j                  |d       |dz   }' ||fS )z
    d abord recuperer les gagnants des partenaires
    on recupere les X passeports dans l ordre decroissant des partenaires, puis de l'heure la plus tot dans la manifestation
    r   F)ticket__partner__isnull)r?   ticket__badge_time)r   first_ticket_hourr   )ticket_count__gtz-ticket_countr   Nr5   )r   r   r   )ticket__hour_range__isnull)r      r^   )k)r   r   )r@   r"   annotater   r   r   r?   rA   rU   r   r\   r   r   r   sampleminr<   r   )	r6   passeports_partenaires_gagnantsgagnants_list_pr   r   passeports_24h_gagnantsgagnants_24hgagnants_list_24hgs	            r   
tirage_24hr      s    '0&7&7&@&@8Ae,LM21UZ;[\ 'A ' f  h 345Gg6G6G'I# OE4 	y'7'7%ZcZpZprs	 #9#4#4#=#=ERZcd  AF  dG  MH#=  $J  $Q  $Q  RS  ac  Rd  ef  tv  ew  Rw  $x  y==!8C@S@SUXYpUq<rsL E   E!BC	 ---r   c                     | j                   S r   r   r   s    r   r   r      r   r   c                 8   t         j                  j                  |      }t        |d      }|D ]@  }	 t        j                  j                  |d         }|d   |_        |j                          B d|_        |j                          t        d|      S #  Y jxY w)Nr)   r5   r   r   r   rR   rj   )	r!   r"   r=   r   r@   r.   ro   r   r	   r$   rD   r6   tirage_listelempasseport_gagnants         r   draw_raffle_1r      s       $$
$3GWq)K 	 ) 1 1 5 5e 5 E'+G}$""$	 GLLN-z::	   =BBc                     | j                   S r   r   r   s    r   r   r      r   r   c                 8   t         j                  j                  |      }t        |d      }|D ]@  }	 t        j                  j                  |d         }|d   |_        |j                          B d|_        |j                          t        d|      S #  Y jxY w)Nr)   rR   r   r   r   r   rj   )	r!   r"   r=   r   r@   r0   ro   r   r	   r   s         r   draw_raffle_2r      s       $$
$3GWq)K 	 ) 1 1 5 5e 5 E'+G}$""$	 GLLN-z::	r   c                     | j                   S r   r   r   s    r   r   r     r   r   c                    t         j                  j                  |      }t        |      \  }}|D ]@  }	 t        j                  j                  |d         }|d   |_        |j                          B |D ]@  }	 t        j                  j                  |d         }|d   |_        |j                          B d|_        |j                          t        d|      S #  Y xY w#  Y qxY w)Nr)   r   r   r      rj   )
r!   r"   r=   r   r@   r2   ro   r4   r   r	   )r$   rD   r6   tirage_partenaire_listtirage_24h_listr   r   s          r   draw_raffle_finalr     s       $$
$3G.8.B+O& 	 ) 1 1 5 5e 5 E&*7m#""$	   	 ) 1 1 5 5e 5 E(,W%""$	 GLLN-z::		s   =C:=C#C #C'c                     | j                   S r   r   r   s    r   r   r   0  r   r   c                 .   t         j                  j                  |      }t        j                  j	                  |      j                          t        j                  j	                  |      j                          t        j                  j	                  |      j                          t        j                  j	                  |      D ].  }|j                  }|j                          |j                          0 |j                          t        d      S )Nr)   r   r+   tombola:tombola_list)r!   r"   r=   r   r?   deleter@   rx   r>   ri   r	   )r$   rD   r6   rd   ri   s        r   delete_raffler   .  s       $$
$3G
NNG4;;=G,335G,335%%,,G,< ||
 NN*++r   c                     | j                   S r   r   r   s    r   r   r   C  r   r   c                 2   t         j                  j                  |      }t        j                  j	                  |      }t        d      }d|d<   t        j                  |d      }|D ])  }|j                  |j                  |j                  g       + |S )	Nr)   r+   ztext/csv)content_typez%attachment; filename="passeports.csv"zContent-Disposition;)	delimiter)r!   r"   r=   r@   r?   r   csvwriterwriterowr\   r]   )r$   rD   r6   
passeportsresponser   r   s          r   export_passeports_csvr   A  s       $$
$3G"")))9J4H&MH"#ZZC0F A	))9+>+>?@A Or   c                     | j                   S r   r   r   s    r   r   r   U  r   r   c                     t         j                  j                  |      }d|_        |j	                          t        d      S )Nr)   Fr   )r!   r"   r=   r[   ro   r	   )r$   rD   r,   s      r   close_tombolar   S  s:     ##z#2FF
KKM*++r   c                     | j                   S r   r   r   s    r   r   r   `  r   r   c                     t         j                  j                  d      }dt        t        j                  j                  |      d      j                  i}t        |       t        | d|      S )NT)r[   hour_rangesr+   )manyzstaff_space/badge.html)	r!   r"   r=   r   rx   r?   datary   r   )r$   r,   r%   s      r   staff_badge_spacer   ^  sg     ##d#3F 	*9+<+<+C+C6+C+RY]^ccG 
'N'3W==r   )-r   r   rr   rp   r   r   r|   django.db.modelsr   r   r   django.shortcutsr   r	   django.utils.timezoner
   r   django.views.decorators.httpr   r   django.contrib.auth.decoratorsr   r   django.httpr   collectionsr   tombola.modelstombola.serializersr   r   r&   rE   r   r   r   r   r   r   r   r   r   r   r   r    r   r   <module>r     s@    
   (  + * - 7 B K $ #  I &'T (  T &'_ (  _. &'/; (  /;d &'; (  ; &'; (  ;(Z".J &'; (  ;( &'; (  ;( &'; (  ;8 &', (  ,  &' (   &', (  , &'> (  >r   