
    >gi?                        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 Z G d	 d
ej                        Z G d dej                        Z G d dej                        Z G d dej                        Z G d dej                        Z G d dej                        Z G d dej                        Z G d dej                        Z G d dej                        Z G d dej                        Z G d dej                        Z G d d ej                        Z G d! d"ej                        Z G d# d$ej                        Zy%)&    )models)FileExtensionValidator)Decimal)timezone)	timedelta)datetimer   )Zonec                  D    t        j                         t        d      z   S )N   days)r   nowr        3/var/www/skyplay_api_hub/ott_subscription/models.pyget_expiration_dater   
   s    <<>I2...r   c                   z   e Zd Zg dZ ej
                  dd      Z ej
                  dd      Z ej                  ddd      Z	 ej
                  ddd	gd
      Z
 ej                  dd      Z ej                  dd      Z ej                  ddd      Z ej                  ddd      Zd Z G d d      Zy)OTTAggregator))watchoWatcho)play_boxzPlay Box)hotstarHotstar)ottplayOTTplay)tata_play_bingezTata Play Binged   T
max_lengthunique2   r   )defaultnullblankactiveActiveinactiveInactiver&   r   choicesr"   r#   r$   zicons/playstore/)	upload_tor#   r$   zicons/appstore/c                     | j                   S Nnameselfs    r   __str__zOTTAggregator.__str__(       yyr   c                       e Zd ZdZdZy)OTTAggregator.MetazOTT AggregatorzOTT AggregatorsN)__name__
__module____qualname__verbose_nameverbose_name_pluralr   r   r   Metar8   +   s    '/r   r>   N)r9   r:   r;   PLATFORM_CHOICESr   	CharFieldr2   codeIntegerFieldorder_idstatusURLFieldplay_store_urlapp_store_url	FileFieldplay_store_iconapp_store_iconr5   r>   r   r   r   r   r      s     6s48D6r$7D"v""14tDHV%'?@F %V__$d;N#FOOT:M&f&&1C$VZ[O%V%%0ATXYN0 0r   r   c            	       .   e Zd Z ej                  d      Z ej                  dd      Z ej                  d      Z ej                  ddd e
g d      g	      Z ej                  d
      Z ej                  ddej                  dd      Zd Zy)OTT   r   Tr   r"   zott_images/)jpgjpegpnggif)allowed_extensions)r.   r$   r#   
validatorsr   OTTPlan	ott_plans)related_name	on_deleter#   r$   c                     | j                   S r0   r1   r3   s    r   r5   zOTT.__str__>   r6   r   N)r9   r:   r;   r   r@   r2   rA   BooleanField	is_active
ImageFieldr   imagerB   rC   
ForeignKeyCASCADEott_planr5   r   r   r   rL   rL   1   s    6s+D6s48D###D1IF*>[\]	E #v""1-H v  PVP^P^eiquvHr   rL   c                       e Zd Z ej                  d      Z ej                  dddd      Z ej                  d      Z ej                  e
ej                        Z ej                  dd	      Zd
 Zy)OTTPlanGroupr   rN   r!   T)r   r    r#   r$   r   rO   rY   r$   r#   c                 L    | j                   j                   d| j                   S N - platform_idr2   r3   s    r   r5   zOTTPlanGroup.__str__J   $    ""''(DII;77r   N)r9   r:   r;   r   r@   r2   
group_coderB   rC   r_   r   r`   rj   	TextFielddescriptionr5   r   r   r   rc   rc   C   so    6s+D!!!R4tTJ"v""1-H#&##MV^^LK"&""D9K8r   rc   c                   
   e Zd ZddgZ ej
                  eej                        Z ej                  d      Z
 ej                  dd      Z ej                  d	ed
      Z ej                  d	d ed            Z ej                   d      Z ej                   d      Z ej                   d      Z ej(                  ed      Z ej
                  eddej0                        Z ej4                  d      Zd Zd Zy)rV   r%   r(   rd   r   rN   r!   Tr   
   r&   r+      z0.00
max_digitsdecimal_placesr"   FrO   ott_plans_associated)rX   )r#   r$   rY   r   c                 L    | j                   j                   d| j                   S rg   ri   r3   s    r   r5   zOTTPlan.__str__m   rk   r   c                 :    | j                   j                  d      S )NT)r\   )ottsfilterr3   s    r   get_active_ottszOTTPlan.get_active_ottsp   s    yy$//r   N)r9   r:   r;   PLAN_STATUS_CHOICESr   r_   r   r`   rj   r@   r2   rA   rD   DecimalFieldr   pricer[   premium_plan_flaghighlighted_plan_flagflexible_plan_flagManyToManyFieldrL   rx   rc   SET_NULL
plan_groupPositiveIntegerFieldvalidity_monthsr5   rz   r   r   r   rV   rV   N   s     $&##MV^^LK6s+D6r$7DV5HRZ[FFE ,++E:/F//>,,,U;!6!!#4JKD #""<d$RXRaRabJ1f11!<O80r   rV   c                      e Zd ZddgZg dZ ej                  d      Z ej                  dd      Z ej                  e
      Z ej                  d	ed
      Z ej                  d	dd      Z ej                  d      Z ej                  ddd      Z ej                  ded      Z ej                  dej(                  j*                  ddd      Zd Zy)SkylinkPlanr%   r(   )mobileMobilesuperSuper)unavailableUnavailabler   rN   r!   Tr   rp   r&   r+   rq           rr   FrO   r   r$   r#      r   z5Specifies the service type associated with this plan.)r   r,   r#   r$   	help_textc                     | j                   S r0   r1   r3   s    r   r5   zSkylinkPlan.__str__   r6   r   N)r9   r:   r;   r{   JIOHOTSTAR_CHOICESr   r@   r2   rA   r   rV   rW   rD   r|   amountr[   bandwidth_verified_flag	bandwidthjiohotstar_flagr	   ServiceTyper,   server_typer5   r   r   r   r   r   u   s      6s+D6r$7D&&&w/IV5HRZ[F V  Bq$OF1f11%@   BdFI&f&&"O #&""  ((IKr   r   c                       e Zd Z ej                  d      Z ej                  eej                        Z	 ej                  d      Z
 ej                  d      Zd Zy)OTTSubscriptionrM   rN   rd   Tauto_now_addc                 T    d| j                    d| j                   d| j                   S )NzSubscription for  on z - Plan 	client_idrj   plan_idr3   s    r   r5   zOTTSubscription.__str__   s/    "4>>"2$t7G7G6HQUQ]Q]P^__r   N)r9   r:   r;   r   r@   r   r_   r   r`   rj   r   DateTimeFieldsubscription_dater5   r   r   r   r   r      sW       C0I#&##MV^^LKf#.G,,,$?`r   r   c                      e Zd Zg dZg dZ ej                  d      Z ej                  e	ej                        Z ej                  d      Z ej                  d      Z ej                  dd	
      Z ej                   dd      Z ej$                  dd      Z ej(                  dd      Z ej$                  dd      Z ej                  ddd      Z ej                  dd
      Z ej                  dedd      Z ej                  ddd      Z ej                  ddd      Z ej                  ddd      Z ej:                  d      Z ej                  ddd      Z ej                  ddd      Z  ej                  ddd      Z! ej$                  dd      Z" ejF                  dddd      Z$ ej                  ddd      Z% ej                  e&      Z' ej                  ddd      Z( ej(                  dd      Z) ej                  ddd      Z* ejV                  dd      Z, ejV                  dd      Z- ejF                  dddd      Z. ej$                  dd      Z/d Z0y)OTTActivationLog))   Monthly)   	Quarterly)   zHalf-Yearly)   Yearly))razorpayRazorpay)cashfreeCashfree)manualManualrM   rN   rd   Tr   r!   Successr   r"   re   r-   i  )r#   r$   r   free)r   r,   r$   r#   r   FrO   i  rp   rq   rs   rt   r#   r$   r   r   QBilling cycle in months: 1 (Monthly), 3 (Quarterly), 6 (Half-Yearly), 12 (Yearly)r"   r   c                 T    d| j                    d| j                   d| j                   S )NzActivation Log for r   rh   r   r3   s    r   r5   zOTTActivationLog.__str__   s+    $T^^$4D9I9I8J#dll^\\r   N)1r9   r:   r;   BILLING_CYCLE_CHOICESPAYMENT_GATEWAY_CHOICESr   r@   r   r_   r   r`   rj   r   r   activation_daterD   rm   message	JSONFieldinputrB   response_statusoutputendpointsubscription_tierspayment_gatewayrazorpay_payment_idrazorpay_signaturerazorpay_order_idr[   payment_verifiedcashfree_order_idcashfree_payment_idcashfree_payment_session_idcashfree_raw_responser|   payment_amountpayment_currencyr   expiration_datephone_numberbilling_cycle
invoice_id	DateFieldbilling_from_datebilling_to_dateinvoice_amountpayment_raw_datar5   r   r   r   r   r      s   
 !  C0I#&##MV^^LKf#.G*f**=OVY?FfT5GF$d3E)f))t4@OV4t4FvT$GH *))RH 'f&&'	O +&**cDQ)))S4P(((Ct$O*v**59 )((Ct$O*&**cDQ"2&"2"2cTX"Y,F,,4dC )V((Bqt[_`N'v''2TM +f**3FGO#6##rDIL (F''eM "!!S4HJ(((d$?&f&&D=O(V((Bqt[_`N (v''d>]r   r   c                       e Zd Z ej                  ddd      Z ej                  ddd      Z ej                  d      Z ej                  e
j                        Zd Zy	)
VerificationCodeT)r    r$   r#   r   r   r   rN   rO   c                 b    | j                   t        d      z   }t        j                         |kD  S )z*Check if the verification code has expiredrp   )minutes)	timestampr   r   r   )r4   expiry_times     r   
is_expiredzVerificationCode.is_expired   s&    nny'<<||~++r   N)r9   r:   r;   r   
EmailFieldemailr@   r   rA   r   r   r   r   r   r   r   r   r   r      s[    FTDAE#6##rDIL6q)D$$$X\\:I,r   r   c                   b    e Zd ZddgZ ej
                  dd      Z ej                  d      Z ej                  dd      Z
 ej
                  ddd	      Z ej
                  d
dd	      Z ej
                  ded      Z ej                  dd      Z ej
                  ddd      Z ej"                  dd      Z ej"                  dd      Z ej(                  dddd      Z ej"                  dd      Z ej                  d      Z ej                  d      Z fdZd Z xZS )JioHotstarCoder   r   r   Tr   FrO   r-   r   r#   r$   r   rp   r   r+   r   r   r   rM   r   rq   r   r   c                     | j                   rD| j                  r8| j                  s,| j                  j                         t	        d      z   | _        t        |   |i | y )NZ   r   )activated_flagactivated_dateexpired_datedater   r   save)r4   argskwargs	__class__s      r   r   zJioHotstarCode.save  sN    4#6#6t?P?P $ 3 3 8 8 :YB=O ODd%f%r   c                     | j                   S r0   )rA   r3   s    r   r5   zJioHotstarCode.__str__$  r6   r   )r9   r:   r;   TYPE_CHOICESr   r@   rA   r[   r   r   r   activated_client_idclient_phone_numbertyperB   r   r   r   r   r   r|   r   r   code_provide_countr   r5   __classcell__)r   s   @r   r   r     sH   L
 6s48D(V((7N)V))t4@N*&**cDQ*&**bt4P6r<RD'F''eM "!!S4HJ(((d$?&f&&D=O(V((Bqt[_`N#6##T:L,,,Q7 -,,Q7&r   r   c                   f   e Zd Z ej                  d      Z ej                  d      Z ej                  d      Z ej                  dd      Z
 ej                  ddd      Z ej                  ddd      Z ej                  dd      Z ej                  ej                   dd	      Zd
 Zy)IptvRequestr   rN      Tr   r-   r   re   )r"   r$   r#   c                 8    | j                    d| j                   S rg   )r   requested_atr3   s    r   r5   zIptvRequest.__str__5  s    ..!T%6%6$788r   N)r9   r:   r;   r   r@   r   r   r   r   r   r   activation_codeactivated_byrm   reason_not_activatedr   r   activated_atr5   r   r   r   r   r   )  s       C0I#6##r2L'6''T:LVD5E 'f&&#TMO#6##s$TJL+6++$TB'6''DtTL9r   r   c                       e Zd Z ej                  d      Z ej                  d      Z ej                  ddd      Z	 ej                  dd      Z ej                  d      Z ej                  d	      Zd
 Zy)SupportVideorM   rN   T)r$   zsupport_videos/)r.   r$   r#   re   rO   r   c                     | j                   S r0   )titler3   s    r   r5   zSupportVideo.__str__A  s    zzr   N)r9   r:   r;   r   r@   r  rm   subtitlerH   
video_filerE   youtube_linkr[   r\   r   rC   r5   r   r   r   r  r  9  sy    F,Evd+H!!!,=TPTUJ"6??D9L###D1I*v**15Hr   r  c                       e Zd Z ej                  d      Z ej                  dd      Z ej                  d      Z ej                  d	      Z
 ej                  d	      Zd
 Zy)	TVChannelrM   rN   r   Tr   z
tv_images/)r.   r   rO   c                     | j                   S r0   r1   r3   s    r   r5   zTVChannel.__str__L  r6   r   N)r9   r:   r;   r   r@   r2   rA   r]   r^   rB   rC   r[   r\   r5   r   r   r   r	  r	  E  sc    6s+D6s48DF5E"v""1-H###D1Ir   r	  c                   t   e Zd Zg dZ ej
                  dd      Z ej                  eej                  dd      Z
 ej
                  dd      Z ej                  dd      Z ej
                  d	dd
      Z ej
                  ddd      Z ej
                  dddd      Z ej
                  dddd      Z ej
                  ded      Z ej&                  ddd      Z ej
                  dd      Z ej,                  d      Z ej,                  ddd      Z ej2                  dde      Zd Zy)CashfreePayment))Pendingr  )Paidr  )Failedr  rM   zUnknown Clientr   TrY   r#   r$   zDefault Planre   r   r   
ORDER_0000)r   r    r"    )r   r$   r#   r"   r!   r  r+   rp   rq   r   rr   INRr   N)r$   r#   r"   c                 V    d| j                    d| j                   d| j                   dS )NzCashfree Payment: rh   z ())r   r   payment_statusr3   s    r   r5   zCashfreePayment.__str__n  s.    #DNN#33t||nBtGZGZF[[\]]r   )r9   r:   r;   STATUS_CHOICESr   r@   r   r_   r   r`   rj   r   r   customer_emailcustomer_phonerC   payment_session_id
payment_idr  r|   r   currencyr   
created_atpaid_atr   dict
extra_datar5   r   r   r   r  r  T  sN   N !  C9IJI#&##MV^^RV^bcKf#~FG 'V&&T=N%V%%4dKN  v3t\RH)))S4Y[\!!!S4QSTJ%V%%^U^_N V  Bq$OFv2u=H%%%48J"f""D$GG!!!4FJ^r   r  c                   <   e Zd Z ej                  eej                  dd      Z ej                  eej                  dd      Z	 ej                  eej                  ddd      Z
 ej                  eej                  ddd      Z ej                  ddd      Z ej                  ddd      Z ej                  ddd      Z ej                  ddd      Z ej                  d	ddd
      Z ej$                  dd      Z ej(                  ddd      Zd Zy)ManualOTTActivationTr  secondary_platform)rY   r#   r$   rX   secondary_planr   r   r   r!   r  )r   r#   r$   r"   r-   )r   r#   r$   c                     | j                   r| j                   nd}| j                  r| j                  j                  nd}| d| S )NzNo PhonezNo Platformrh   )r   platformr2   )r4   phoner&  s      r   r5   zManualOTTActivation.__str__  s?    %)%6%6!!J)-4==%%MH:&&r   N)r9   r:   r;   r   r_   r   r   r&  rV   plan
platform_2plan_2r@   r   
first_name	last_namesky_idrD   rm   r   r   r  r5   r   r   r   r"  r"  t  s`    v  //	H 6//	D #""=FOORV^b  rF  GJVw&//TXgwxF#6##L "!!J !  I VF V	F fG
 &%%J'r   r"  N)	django.dbr   django.core.validatorsr   decimalr   django.utilsr   r   r   pricing_plan.modelsr	   r   Modelr   rL   rc   rV   r   r   r   r   r   r   r  r	  r  r"  r   r   r   <module>r4     s    9  !  ( $/
0FLL 0D&,, $86<< 8#0fll #0N%&,, %R`fll `H]v|| H]X	,v|| 	,$V\\ $P9&,, 9 	6<< 	 ^fll ^@B'&,, B'r   