
    W̸f>                     H   d dl Z d dl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Zd dlZd d	lmZ d dlmZ d d
l 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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Zej@                  e_!        d dl"Z"d dl#Z#d dl$Z$d dl%m&Z& d dlZd dl'm(Z( d dl)m*Z* d dl+m,Z, de-de-de-de.fdZ/ e"j`                  d      Z1 e"j`                  d      Z2	 d Z3d Z4ed        Z5ed        Z6ed         Z7d! Z8d" Z9 G d# d$e	      Z:y)%    N)login)reverse)HttpResponseRedirect)View)settings)redirectrender)JsonResponse)
SignupForm)*)csrf_exempt)statuspermissions)Response)APIView)r   )HttpResponser   )PermissionDenied)SimpleNamespace)Web3)loaderbody	signaturesigning_keyreturnc                     t        j                  t        |d      t        | d      t        j                        j                         }||k(  S )Nutf-8)msg	digestmod)hmacnewbyteshashlibsha256	hexdigest)r   r   r   digests       /Users/christophesurbier/Dropbox/Mon Mac (MacBook-Air-de-christophe.local)/Documents/Programmation/SellTix/tixsellbackend/backoffice/views.py"is_valid_signature_for_string_bodyr'   %   sF     XXk7#$ .. ik	      djangostripec                    t         j                  j                  |      }|j                  }| j	                  t        dd|j                  j                  i            }| j	                  t        dd|j                  j                  i            }t        j                  j                  |||d      }t        |j                        S )Nuser__idstripe-refresh-account-urluuidkwargsstripe-return-account-urlaccount_onboardingaccountrefresh_url
return_urltype)Sellerobjectsgetstripe_user_idbuild_absolute_urir   useridr*   AccountLinkcreater   url)requestr?   selleracct_idr6   r7   	acct_links          r&   "StripeShifterAccountURLRefreshViewrG   S   s    
..

b

)  ))'2NX^`f`k`k`n`nWo*qr((1LV\^d^i^i^l^lUm)op&&#!%	 ' 
 	Y]]++r(   c                     t        | di       S )Nz	home.html)r	   )rC   s    r&   homerI   d   s    ';++r(   c                 l
   | j                   dk(  rt        | j                  | j                  xs d      }t        j                  d       t        j                  |       t        j                  d       dd l}|j                  d       t        j                  d       t        j                  |      }d}|d	   }|d
   }t        j                  j                  |      j                         }|dkD  rd}n(t               }||_        ||_        |j!                          |dk(  r|r|d   }	d|	v r|	d   d   }
|
d   dk(  rq|
d   }|
d   }t#        |
d   d      }|
d   }|
d   }t        j                  dt        |      z   dz   |z   dz   |z          t$        j                  j                  |      }|j'                         r|dk(  r!t        j                  d       t)        d      S |D ]  }|j*                  dk(  rT|j,                  t.        j0                  k(  r7|j2                  d k(  r(t        |      |_        ||_        |j!                          g|j*                  |k(  swd}|j6                  rb|j6                  j8                  j;                         |j;                         k(  rt        j                  d!       d}nt        j                  d"       |sd }t        j                  d#|j;                         z         	 t<        j                  j?                  |j;                         $      }t        j                  d%|z         |}tC               }|j6                  |_        |j,                  |_"        |jF                  |_#        |j!                          ||_        ||_        	 t.        jH                  }t.        jJ                  |z   }	 d'd(|gd)d*}d+d+d,}tM        jN                  |||-      }|jP                  dk(  r^t        j                  |jR                        }|d.   r:|d.   d/   }tT        jW                  |      }tY        jZ                  |d0      }||_#        |j\                  j_                  |       |j!                           n,t        j                  d1       dd2l0m1} d3||fz  } |d4d5|       t)        d      S t)        d6      S # t@        $ r5}t        j                  |       t        j                  d&       Y d }~d }~ww xY w# t@        $ r}t        j                  |       Y d }~d }~ww xY w)7NPOSTr   z===On recoit webhook z===On recoit attend 5 secondesr      z===On se reveille et on checkeTr?   r8   )	webhookIdFNFT_ACTIVITYeventactivitycategoryerc721fromAddress	toAddresserc721TokenIdcontractAddresshashz[WebHook] Doit trouver toekn z pour contrat z
 newOwner )/refTicketType__refEvent__ticketContract__iexact*0x0000000000000000000000000000000000000000z ==== Nouveau mint de NFT on stop   r   	TO_BE_SETz[WebHook] Same owner do nothingz[WebHook] Different ownerzH[WebHook] ====Do assignement chercher un user dont walletAddress vaut %s)walletAddress__iexactz-[WebHook]user trouve on change association %sz[WebHook] ===Pas de user   z2.0eth_getTransactionByHash)r?   jsonrpcparamsmethodzapplication/json)acceptzcontent-type)jsonheadersresultvalueetheru*   ==== Ticket non trouvé sur le backend !!!	sendEmailuP   Billet minté sur blockchain non trouvé dans backend  contrat<b>%s</b> Token %dcsurbier@idevotion.fru3   [SellTix] Ticket miné mais creation backend failed  )2rc   strr   encodingloggerinfotimesleepre   loadsWebHookr:   filtercountrM   payloadsaveintTicketexistsr   ticketId	lastOwnerr   SELLTIX_WALLEThashedTickettransactionHashrefUserwalletAddresslowerUserr;   	ExceptionTicketHistorywallet	pricePaidALCHEMY_ACCESS_KEYALCHEMY_API_ENDPOINTrequestspoststatus_codetextfloatfromhexr   from_weiownersaddbackoffice.helpersrk   ) rC   rx   rr   datacanCheckrM   r8   nbTrouvewebhookrO   rP   rS   rT   rU   rV   txHashtokensticketdoAssignementuserToAssignr>   eticketHistoryapi_keyrB   rf   responsevalueHexrh   
finalPricerk   messages                                    r&   webhookAlchemyr   g   s   ~~gllG$4$4$?@+,G45

145zz'" J	F|??))I)>DDFa<HiG )G"GOLLN HMEU" ,Q/J'1"*="9K ( 5I$'(A!$DM&./@&AO%f-FKK ?M@R RSc cds s  uA  !A  BK  !K  L#^^22cr2sF}}&(TT#[[)KL$0$<<&, F6F%2v7G7GI`I`7`ekexex  {F  fF03M0B9? 6 &#)??M#A26M'-~~+1>>+G+G+M+M+OQZQ`Q`Qb+b,2KK8Y,Z:?M,2KK8S,T'459(.4~  @I  @O  @O  @Q  5Q  )R)T37<<3C3CZcZiZiZk3C3lD,2KK8ghl8l,m;?L 9F@F(=?E?O?O(<BHBRBR(?(5(:(:(<7C;D(8);6>6Q6QG2:2O2OPW2WC-0 78;@;A(:T	7.G ;M@R7.G
 8@}}Sw`g7hH/7/C/CS/H7;zz(--7P37>?CH~g?VH<AMM(<SEAEPUV]A^JGQF4D )/(9(9-(H(.MF6P $PQ@ r  uD  ER  tS  !S!"9:opwx3''#&&q 09 )T,2KKN,2KK8R,S,S)TT 09 );,2KKNN);s2   =AS
!B6T
	T*TT	T3T..T3c                 $   dd l }t        j                  |_        | j                  dk(  rd| j
                  }| j                  d   }d }ddlm} |}	 |j                  j                  |||      }t         j#                  |       t        d      S t        d      S # t        $ r+}t        j                  |       t        d      cY d }~S d }~w|j                  j                  $ r+}t        j                  |       t        d      cY d }~S d }~ww xY w	Nr   rK   HTTP_STRIPE_SIGNATURE)STRIPE_ENDPOINTi  r[   rZ   rm   r*   r   STRIPE_API_KEYr   rc   r   METAtixsell.settingsr   Webhookconstruct_event
ValueErrorrp   errorr   SignatureVerificationErrorlogger_striperq   rC   r*   rx   
sig_headerrO   r   endpoint_secretr   s           r&   webhookStriper      s    ,,FN~~,,\\"9:
4)		,NN227JXE 	5! 3''3''  	,LLOs++||66 	,LLOs++	,0   B 	D" CDD$ D
D
Dc                 $   dd l }t        j                  |_        | j                  dk(  rd| j
                  }| j                  d   }d }ddlm} |}	 |j                  j                  |||      }t         j#                  |       t        d      S t        d      S # t        $ r+}t        j                  |       t        d      cY d }~S d }~w|j                  j                  $ r+}t        j                  |       t        d      cY d }~S d }~ww xY wr   r   r   s           r&   webhookStripeTestr     s    ,,FN~~,,\\"9:
4)		,NN227JXE 	5! 3''3''  	,LLOs++||66 	,LLOs++	,r   c                    | j                   dk(  rt        | j                        }|j                         r}|j	                         }t               }||_        t        j                  j                  ddddiddid      }t        j                  d       t        j                  |       |d	   |_        t        j                  |      |_        |j	                          | j!                  t#        d
d|j$                  i            }| j!                  t#        dd|j$                  i            }t        j                  d|z         t        j                  d|z         t        j&                  j                  |d	   ||d      }t        j                  |       |d   }t)        |      S t               }t+        | dd|i      S )NrK   FRexpress	requestedT)card_payments	transfers)countryr8   capabilitiesz===On recoit de stripe r?   r.   r/   r0   r2   zReturn url %szrefresh_url url %sr3   r4   rB   zsignup.htmlform)rc   r   rK   is_validry   r9   r>   r*   AccountrA   rp   rq   r<   re   dumpsstripe_account_jsonr=   r   r?   r@   r   r	   )	rC   r   r>   seller_profiler5   r6   r7   accountLinkurlToRedirects	            r&   signupr     s   ~~',,'==?99;D#XN"&Nnn++0;T/BR]_cQde , G
 KK12KK ,3DMN)15G1DN.!!44W=Ybhjnjqjqar5tuK 33G<W`fhlhoho_p4rsJKK
23KK,[89 !,,33'%)	 4 K KK$%e,M'66|'=64.99r(   c                    | j                   dk(  r~t        j                  j                  |      }t        j
                  j                  |j                        }|d   r|d   rd|_        |j                          t        t        d            S y )NGETr,   details_submittedcharges_enabledTrI   )rc   r9   r:   r;   r*   r   retriever<   stripe_charges_enabledry   r   r   )rC   r?   merchantAccountaccts       r&   !StripeShifterAccountReturnURLViewr   E  sx    ~~ ..,,b,9~~&&'E'EF#$.?)@37O2  "#GFO44 r(   c                       e Zd Zd Zy)invoicec                    	 t         j                  j                  |d         }|rt        j                  d      }nt        d      S d|i}t        |j                  ||            }|S # t        $ rX}t        j                  |       ddl
m}	 d	j                  z  }
|
t        |      z  }
 |	d
d|
       t        d      cY d }~S d }~ww xY w)Nr/   )pkzinvoice/invoice.htmlrm   r[   r   r   rj   u0   Création de la facture <b>%s</b>   a échoué !rl   z[SellTix] Facturation failedi  )Invoicer:   r;   r   get_templater   r	   r   rp   rq   r   rk   r?   rn   )selfrC   argsr1   r   templatecontexthtmlr   rk   r   s              r&   r;   zinvoice.getR  s    	,oo))VF^)<G!../EF#3// 7G   ABDK 	,KKN4F

SGSVOG-.LWUs++	,s%   AA* 	 A* *	C3AC CCN)__name__
__module____qualname__r;    r(   r&   r   r   Q  s    ,r(   r   );urllibr   django.contrib.authr   django.urlsr   django.httpr   django.viewsr   django.confr   django.shortcutsr   r	   r
   r*   re   backoffice.forms.signupr   tixsellbackoffice.modelsdjango.views.decorators.csrfr   rest_frameworkr   r   rest_framework.responser   rest_framework.viewsr   r   r   r   loggingr   r"   django.core.exceptionsr   typesr   web3r   django.templater   rn   boolr'   	getLoggerrp   r   rG   rI   r   r   r   r   r   r   r   r(   r&   <module>r      s#     %  ,    - $   .   4 . , (    % : ((    3  !  "	
		,/			 
		8	$!!!(+ B,", }' }'~ ( (6 ( (4$:N
5,d ,r(   