
    }i7                        S SK JrJrJr  S SKJr  S SKJr  S SKJ	r	  S SK
Jr  S SKJrJr  SSKJrJrJrJrJrJr  S S	KrS S	KrS S
KJr  S SKJr  S rS rS rS rS r S r!S r"S r#S r$S r%S r&S r'S r(S r)S rS r*S r+S r,g	)    )renderredirectget_object_or_404)messages)	send_mail)settings)HttpResponse)make_passwordcheck_password   )
SuperAdminOrganizationParticipantGiftRulesSubscriptionN)get_random_string)timezonec                     [        U S5      $ Nzsanta_app/home.htmlr   requests    (D:\secret santa 77777\santa_app\views.pyhomer          '011    c                    U R                   S:X  a  U R                  R                  S5      nU R                  R                  S5      n [        R                  R                  US9nUR                  U5      (       a=  UR                  U R                  S'   UR                  U R                  S'   [        S5      $ [        R                  " U S5         [        U S
5      $ ! [        R                   a    [        R                  " U S	5         N9f = f)NPOSTemailpasswordr    superadmin_idsuperadmin_namesuperadmin_dashboardInvalid passwordzSuperAdmin not foundzsanta_app/superadmin_login.html)methodr   getr   objectsr   idsessionnamer   r   errorDoesNotExistr   )r   r    r!   sas       r   superadmin_loginr0      s    ~~  )<<##J/		<##''e'4B  **3555057WW 12 677w(:; '<== && 	<NN7$:;	<s   A/C 8C +D
	D
c                    U R                   R                  S5      (       d  [        S5      $ [        R                  R                  U R                   S   S9n[
        R                  R                  US9n[        U SX!S.5      $ )Nr#   r0   r*   )super_adminz#santa_app/superadmin_dashboard.html)orgs
superadmin)r+   r(   r   r   r)   r   filterr   )r   r5   r4   s      r   r%   r%   #   sq    ??//*++##''7???+K'LJ&&:&>D'@4Bjkkr   c                    U R                   S:X  Ga  U R                  R                  S5      R                  5       nU R                  R                  S5      R                  5       nU R                  R                  S5      R                  5       n [        R
                  R                  XS9nUR                  U5      (       a=  UR                  U R                  S'   UR                  U R                  S'   [        S5      $ [        R                  " U S	5         [        U S5      $ ! [        R                   a    [        R                  " U S
5         N9f = f)Nr   org_idr    r!   )r8   r    org_admin_idorg_admin_nameorg_admin_dashboardr&   Organization not foundzsanta_app/orgadmin_login.html)r'   r   r(   stripr   r)   r   r*   r+   org_namer   r   r-   r.   r   )r   r8   r    r!   orgs        r   org_admin_loginr@   ,   s
   ~~!!(+113  )//1<<##J/557		>&&**&*FC!!(++25&&/47LL 01 566w(:; ':;; (( 	>NN7$<=	>s   A/D" >D" "+EEc           	         U R                   R                  S5      (       d  [        S5      $ [        R                  R                  U R                   S   S9n[
        R                  R                  USS9n[        R                  R                  US9n[        R                  R                  US9u  pE[        U SUUUUS	.5      $ )
Nr9   r@   r2   Torganizationinvite_accepted)rC   r?   z!santa_app/orgadmin_dashboard.html)r?   participantsgiftsrules)r+   r(   r   r   r)   r   r6   r   r   get_or_creater   )r   r?   rF   rG   rH   _s         r   r;   r;   ?   s    ??~..)**



"
"goon&E
"
FC&&--3PT-ULLLS1E}}**s*3HE'>$	A  r   c                    U R                   S:X  a  U R                  R                  S5      nU R                  R                  S5      nU R                  R                  S5      n[        R                  R                  U R
                  S   S9n[        R                  R                  XAX#S9  [        R                  " U S5        [        S	5      $ [        U S
5      $ )Nr   r>   r    r!   r#   r2   r3   r>   r    r!   z"Organization created successfully!r%   z"santa_app/create_organization.html)r'   r   r(   r   r)   r+   r   creater   successr   r   )r   r>   r    r!   r5   s        r   create_organizationrO   O   s    ~~<<##J/  )<<##J/''++w/O+P
##
UZ#n"FG.//'?@@r   c                    U R                   R                  S5      (       d  [        S5      $  [        R                  R                  US9n[        S5      Ul        UR                  5         [        R                  " U SUR                   S35        [        S5      $ ! [        R                   a    [        R                  " U S5         N8f = f)	Nr#   r0   r2   newpassword123zPassword reset for z (new: newpassword123)r<   r%   )r+   r(   r   r   r)   r
   r!   saver   rN   r>   r.   r-   )r   r8   r?   s      r   reset_org_passwordrS   \   s    ??//*++:""&&&&1$%56
$7~E["\] *++ $$ :w 89:s   A"B +CCc                 J   U R                   S:X  GaF  U R                  R                  S5      R                  5       nU R                  R                  S5      R                  5       nU R                  R                  S5      R                  5       n [        R
                  R                  US9n[        R
                  R                  XBS9nUR                  U5      (       ab  UR                  U R                  S'   UR                  U R                  S'   [        R                  " U S	UR                   S
35        [        S5      $ [        R                  " U S5         [!        U S5      $ ! [        R                  [        R                  4 a    [        R                  " U S5         NIf = f)Nr   r8   r    r!   r8   )rC   r    participant_idparticipant_namezWelcome !participant_dashboardzInvalid password.zInvalid credentials.z santa_app/participant_login.html)r'   r   r(   r=   r   r)   r   r   r*   r+   r,   r   rN   r   r-   r.   r   )r   r8   r    r!   r?   participants         r   participant_loginr[   j   sQ   ~~!!(+113  )//1<<##J/557	<&&**&*9C%--11s1PK))(334?NN 016A6F6F 23  H[5E5E4Fa*HI 788w(;< '=>> ));+C+CD 	<NN7$:;	<s   B1E$  E$ $;F"!F"c                    U R                   R                  S5      nU(       d"  [        R                  " U S5        [	        S5      $ [
        R                  R                  US9n[        R                  R                  US9n[        U SX#S.5      $ )NrV   zPlease login first.r[   r2   )rZ   z$santa_app/participant_dashboard.html)rZ   rG   )
r+   r(   r   r-   r   r   r)   r   r6   r   )r   rV   rZ   rG   s       r   rY   rY      sy    __(()9:Nw 56+,,%%))^)<KLLK8E'AS^Coppr   c                    U R                   R                  S5      (       d"  [        R                  " U S5        [	        S5      $ [
        R                  R                  U R                   S   S9nU R                  S:X  GaI  U R                  R                  S5      n[        R                  R                  X!S9R                  5       (       a&  [        R                  " U SU S	35        [	        S
5      $ [        [        R                  " 5       5      n[        R                  R!                  UUSU["        R$                  " 5       S9nU R'                  SU S35      nSUR(                   3nSUR(                   SU SUR(                   S3n [+        UU[,        R.                  U/SS9  [        R0                  " U SU 35        [	        S
5      $ [5        U S5      $ ! [2         a$  n[        R                  " U SU 35         S nAN@S nAff = f)Nr9   z Please login as Org Admin first.r@   r2   r   r    )r    rC   zParticipant with email z already exists.r;   T)rC   r    invitedinvite_tokeninvite_created_atz/participant/accept_invite//u"   🎅 Secret Santa Invitation from z'Hi there!

You've been invited to join zj's Secret Santa event!

Click the link below to accept your invitation:
These Link Will expire in 48 hrs:
z

Best,
u
    Team 🎁Ffail_silentlyzInvitation email sent to zError sending invite email: zsanta_app/add_participant.html)r+   r(   r   r-   r   r   r)   r'   r   r   r6   existswarningstruuiduuid4rM   r   nowbuild_absolute_urir>   r   r   EMAIL_HOST_USERrN   	Exceptionr   )	r   r?   r    r_   rZ   invite_linksubjectmessagees	            r   add_participantrq      s   ??~..w BC)**



"
"goon&E
"
FC~~  )%%E%DKKMMW(?wFV&WX1224::<(!))00%&lln 1 
 003N|n\]1^_6s||nE++.<<. 92 m ll^:/ 	
	H((# W(A%&IJ -..';<<  	HNN7&B1#$FGG	Hs   6G 
HG<<Hc                 
   [        [        US9nUR                  n[        R                  R                  US9R                  5       nUR                  (       a  [        U SSU05      $ U R                  S:X  a  U R                  R                  S5      Ul        U R                  R                  S5      Ul        SUl        SUl        UR!                  5         ["        R$                  " U S	5        ['        S
5      $ [        U SX$S.5      $ )N)r_   rE   zsanta_app/invite_expired.htmlrZ   r   r,   hobbiesTz:Thank you! Your invitation has been accepted successfully!participant_successzsanta_app/accept_invite.html)rZ   rH   )r   r   rC   r   r)   r6   firstis_invite_expiredr   r'   r   r(   r,   rs   rD   	is_activerR   r   rN   r   )r   tokenrZ   r?   rH   s        r   accept_invitery      s    #KeDK

"
"CMM  S )//1E $$g>P[@\]]~~"<<++F3%ll..y9&*# $"^_-..'9;;ghhr   c                     [        U S5      $ )Nzparticipant_success.htmlr   r   s    r   rt   rt      s    '566r   c           
         U R                   R                  S5      (       d  [        S5      $ [        R                  R                  U R                   S   S9n[        [        R                  R                  USS95      n[        U5      S:  a"  [        R                  " U S5        [        S5      $ [        R                  " U5        [        U5       H  u  p4X#S	-   [        U5      -     nXT:X  a  X#S-   [        U5      -     nXTl        UR                  5         [!        S
SUR"                   SUR"                   SUR$                   3[&        R(                  UR*                  /S9  M     [        R,                  " U S5        [        S5      $ )Nr9   r@   r2   TrB      z*At least 2 accepted participants required.r;   r   u   🎁 Your Secret Santa Match!zHi z, your Secret Santa match is z. Their hobbies: )rn   ro   
from_emailrecipient_listz0Participants shuffled and assigned successfully!)r+   r(   r   r   r)   listr   r6   lenr   r-   randomshuffle	enumerateassigned_torR   r   r,   rs   r   DEFAULT_FROM_EMAILr    rN   )r   r?   rF   ipassigneds         r   shuffle_assignmentsr      sN   ??~..)**



"
"goon&E
"
FC++22UY2Z[L
<1w LM-..
NN< ,'Q#l*; ;<=#Uc,.?$?@H 	3!&&!>x}}oM^_g_o_o^pq22GG9		
 ( WPQ)**r   c                    U R                   R                  S5      (       d  [        S5      $ [        R                  R                  U R                   S   S9n[
        R                  R                  US9u  p#SnUR                  (       a  UR                  R                  5       S:X  a  XBl        UR                  5         U R                  S:X  a  U R                  R                  SS5      R                  5       nU(       d  [        R                  " U S	5        O8XRl        UR                  5         [        R                  " U S
5        [        S5      $ [        U SUUS.5      $ )Nr9   r@   r2   rE   uM  🎅 Secret Santa Guidelines 🎄

1. Keep your identity secret until the gift exchange.
2. The gift budget should be between ₹500 - ₹1000.
3. Gifts should be thoughtful and fun — avoid anything offensive.
4. Make sure your gift is ready before the event day.
5. Spread joy and kindness — it’s the Christmas spirit! ❤️
 r   rH   zRules cannot be empty!zRules updated successfully!r;   zsanta_app/edit_rules.html)rH   r?   )r+   r(   r   r   r)   r   rI   contentr=   rR   r'   r   r   r-   rN   r   )r   r?   rH   createddefault_rules	new_ruless         r   
edit_rulesr      s   ??~..)**



"
"goon&E
"
FC]]00S09NE	O  ==EMM//1R7%

~~LL$$Wb1779	NN7$<=%MJJLW&CD122'69  r   c                     [        U S5      $ r   r   r   s    r   r   r   !  r   r   c                 P   U R                   S:X  Ga  U R                  R                  S5      nU R                  R                  S5      nU R                  R                  S5      =(       d    Sn[        R                  R                  5       nU(       d"  [        R                  " U S5        [        S5      $ [        R                  R                  US9R                  5       (       a"  [        R                  " U S	5        [        S
5      $ [        R                  R                  UUUUS9n[        SSUR                   SUR                    3["        R$                  UR                   /SS9  [        R&                  " XR                   S35        [        SUR(                  S9$ [+        U S5      $ )Nr   r>   r    r!   zOrg@123z-No SuperAdmin found. Please create one first.r   r"   z0Organization already registered with this email.register_organizationrL   zNew Organization RegisteredOrganization 'z&' has registered successfully.
Email: Trb   z2 registered successfully! Please complete payment.payment_formrU   z$santa_app/register_organization.html)r'   r   r(   r   r)   ru   r   r-   r   r   r6   rd   re   rM   r   r>   r    r   r   rN   r*   r   )r   r>   r    r!   r5   r?   s         r   r   r   &  sd   ~~<<##J/  )<<##J/<9''--/
NN7$STF##&&U&3::<<W&XY344""))"	 * 
 	)S\\N*QRUR[R[Q\]''	
 	\\N2d"efsvv66'ABBr   c                     [         R                  R                  US9nU R                  S:X  a  U R                  R                  S5      nU R                  R                  S5      n[        [        R                  " 5       5      S S R                  5       n[        R                  R                  UUUUSS	9  UR                  R                   n[#        S
SUR$                   SU SU SU 3[&        R(                  U/SS9  [        R*                  " U S5        [        S5      $ [-        U SSU05      $ ! [         R                   a%    [        R
                  " U S5        [        S5      s $ f = f)Nr2   zOrganization not found.r   r   	plan_nameamount   Paid)rC   r   r   transaction_idpayment_statusu&   💰 New Subscription Payment Receivedr   z-' has completed subscription payment.

Plan: u   
Amount: ₹z
Transaction ID: T)rn   ro   r}   r~   rc   z/Payment recorded. SuperAdmin has been notified.zsanta_app/payment_form.htmlr?   )r   r)   r(   r.   r   r-   r   r'   r   rf   rg   rh   upperr   rM   r3   r    r   r>   r   r   rN   r   )r   r8   r?   r   r   r   superadmin_emails          r   r   r   L  s^    ""&&&&1
 ~~LL$$[1	!!(+TZZ\*3B/557 	##)! 	$ 	
 ??00<  /"=8J>JZ\  22,-		
 	"ST'85#,GGG $$  w 9: s   D. .6E'&E'c                     [        U S5      $ )Nzsanta_app/contact.htmlr   r   s    r   contactr   t  s    '344r   )-django.shortcutsr   r   r   django.contribr   django.core.mailr   django.confr   django.httpr	   django.contrib.auth.hashersr
   r   modelsr   r   r   r   r   r   rg   r   django.utils.cryptor   django.utilsr   r   r0   r%   r@   r;   rO   rS   r[   rY   rq   ry   rt   r   r   r   r   r    r   r   <module>r      s    @ @ # &   $ E T T  1 !2
>$l<& 	A
,?*q2=li*7
+>#P2
#CL&HP5r   