Ë
    `„Ói‚w  ã                   óà  — d dl mZ ddlmZmZmZmZmZmZm	Z	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mZ d dlZd dlmZ d dlmZ d dlmZ d dl Z d dl!m"Z" d dl#Z#d dl$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l0Z0d dl1Z1d dl2m3Z4 d dl5m6Z7 d dl8m.Z9 ddlm:Z:  G d„ dejv                  «      Z<ejz                  j}                  ee<«        G d„ dejv                  «      Z?ejz                  j}                  ee?«        G d„ dejv                  «      Z@ejz                  j}                  ee@«        G d„ dejv                  «      ZAejz                  j}                  eeA«        G d„ dejv                  «      ZBejz                  j}                  eeB«        G d„ dejv                  «      ZCejz                  j}                  eeC«        ej|                  e«       G d„ d e«      «       ZD ej|                  e«       G d!„ d"ejv                  «      «       ZE ej|                  e	«       G d#„ d$ejv                  «      «       ZF ej|                  e
«       G d%„ d&ejv                  «      «       ZG ej|                  e:«       G d'„ d(ejv                  «      «       ZHd dl mZ d d)lImJZJ d d*lKmLZL d dlZdd+lmMZMmZ d d,lNmOZOmPZPmQZQ  ej|                  eM«       G d-„ d.ejv                  «      «       ZRy)/é    )Úadminé   )	ÚOTTÚOTTPlanÚSkylinkPlanÚOTTActivationLogÚOTTAggregatorÚIptvRequestÚSupportVideoÚ	TVChannelÚOTTPlanGroup)Ú	mark_safe)Úformat_htmlN)ÚJioHotstarCode)ÚImportExportModelAdmin)ÚJioHotstarCodeResource)ÚdatetimeÚtime)ÚTemplateResponse)Údefaultdict)Úpath)ÚCount)Úis_naive)ÚHttpResponse)ÚBytesIO)ÚCashfreePaymentc                   ó0   — e Zd ZdZdZdZd„ ZdZdddiffZy)	ÚOTTAdmin)ÚnameÚcodeÚ	is_activeÚorder_idÚ	image_tag©r!   ©r   c                 ób   — |j                   r#t        d|j                   j                  › d�«      S y)Nz
<img src="z" width="100" />zNo Image)Úimager   Úurl©ÚselfÚobjs     ú2/var/www/skyplay_api_hub/ott_subscription/admin.pyr#   zOTTAdmin.image_tag'   s)   € Ø�9Š9Ü˜z¨#¯)©)¯-©-¨Ð8HÐIÓJÐJØó    )r#   NÚfields)r   r    r!   r"   r'   r#   )	Ú__name__Ú
__module__Ú__qualname__Úlist_displayÚlist_filterÚsearch_fieldsr#   Úreadonly_fieldsÚ	fieldsets© r-   r,   r   r   "   s9   „ ØI€LØ €KØ€Mòð
 %€Oð 
ØÐUð
ð 	ð�Ir-   r   c                   ó   — e Zd ZdZdZdZdZy)ÚOTTAggregatorAdmin)r   r    Ústatus©r:   ©r   r    N)r/   r0   r1   r2   r3   r4   Úlist_editabler7   r-   r,   r9   r9   7   s   „ Ø-€LØ€KØ$€MØ�Mr-   r9   c                   ó   — e Zd ZdZdZdZy)ÚOTTPlanGroupAdmin)r   Ú
group_codeÚplatform_idÚdescription)r   r@   Úplatform_id__name)rA   N)r/   r0   r1   r2   r4   r3   r7   r-   r,   r?   r?   @   s   „ ØG€LØ?€MØ"�Kr-   r?   c                   óx   ‡ — e Zd ZdZdZdZdZd„ Zde_        d„ Z	de	_
        d	e	_        d
„ Zde_        ˆ fd„Zˆ xZS )ÚOTTPlanAdmin)	Úget_platformr   r    Ú
plan_groupÚvalidity_monthsr:   Úget_ottsÚpriceÚflexible_plan_flag)rA   r:   rK   rH   rG   )r   r    rC   rH   )Úottsc                 óŽ   — dj                  |j                  j                  «       D �cg c]  }|j                  ‘Œ c}«      S c c}w )Nú, )ÚjoinrL   Úallr   )r*   r+   Úotts      r,   rI   zOTTPlanAdmin.get_ottsO   s-   € Ø�y‰y¨c¯h©h¯l©l«nÖ= s˜#Ÿ(›(Ò=Ó>Ð>ùÒ=s   ¨AÚOTTsc                 ó.   — |j                   j                  S ©N)rA   r   r)   s     r,   rF   zOTTPlanAdmin.get_platformT   s   € Ø�‰×#Ñ#Ð#r-   rC   ÚPlatformc                 ó   — |j                   S rT   )rJ   r)   s     r,   rJ   zOTTPlanAdmin.priceZ   s   € Ø�y‰yÐr-   ÚPricec                 óŠ   •— |j                   dk(  r#t        j                  j                  d¬«      |d<   t	        ‰| �  ||fi |¤ŽS )NrA   Úactiver;   Úqueryset)r   r	   ÚobjectsÚfilterÚsuperÚformfield_for_foreignkey)r*   Údb_fieldÚrequestÚkwargsÚ	__class__s       €r,   r^   z%OTTPlanAdmin.formfield_for_foreignkey_   sD   ø€ Ø�=‰=˜MÒ)Ü!.×!6Ñ!6×!=Ñ!=ÀXÐ!=Ó!NˆF�:ÑÜ‰wÑ/°¸'ÑLÀVÑLÐLr-   )r/   r0   r1   r2   r3   r4   Úfilter_horizontalrI   Úshort_descriptionrF   Úadmin_order_fieldrJ   r^   Ú__classcell__©rb   s   @r,   rE   rE   H   sV   ø„ ð J€LØd€KØL€MØ!Ðò?à!'€HÔò$à%8€LÔ"Ø%/€LÔ"òà%€EÔ÷Mð Mr-   rE   c                   ó8   ‡ — e Zd ZdZdZdZdZdZˆ fd„Zd„ Z	ˆ xZ
S )ÚSkylinkPlanAdmin)r   r    Úamountr:   Úbandwidth_verified_flagÚ	bandwidthÚjiohotstar_flagÚserver_type)rn   r:   rk   rl   rm   )Ú	ott_plans)r   r    rl   rj   z3ott_subscription/admin/skylinkplan_change_list.htmlc                 óŽ   •— t         ‰| �  «       }t        d| j                  j	                  | j
                  «      d¬«      g}||z   S )Nzgraph-view/zskylinkplan-graphr%   )r]   Úget_urlsr   Ú
admin_siteÚ
admin_viewÚ
graph_view©r*   ÚurlsÚcustom_urlsrb   s      €r,   rq   zSkylinkPlanAdmin.get_urlso   sD   ø€ Ü‰wÑÓ!ˆä� §¡× :Ñ :¸4¿?¹?Ó KÐReÔfð
ˆð ˜TÑ!Ð!r-   c                 óò  ‡‡— t         j                  j                  «       j                  dd«      }t	        d„ «      }|D ]Ä  }|j
                  r/|j                  xs d}|j                  «       j                  «       }nd}t        j                  d|j                  j                  «       «      }|r|j                  d«      nd}||   |   j                  |j                  t        |j                  «      |j                   d	œ«       ŒÆ d
„ Šd„ Št#        t%        |j'                  «       ˆfd„¬«      «      }	|	D ]/  }
t#        t%        |	|
   j'                  «       ˆfd„¬«      «      |	|
<   Œ1 |	ddœ}t)        |d|«      S )Nrl   r   c                  ó    — t        t        «      S rT   )r   Úlistr7   r-   r,   ú<lambda>z-SkylinkPlanAdmin.graph_view.<locals>.<lambda>y   s   € ¤k´$Ó&7€ r-   ÚUnknownúOther Plansú(\d+)r   ÚOthers)r   rj   rm   c                 óœ   — | dk(  rt        d«      S t        j                  d| «      }|rt        |j	                  d«      «      S t        d«      S )Nr}   Úinfr~   r   )ÚfloatÚreÚsearchÚintÚgroup)ÚbwÚms     r,   Úbandwidth_sort_keyz7SkylinkPlanAdmin.graph_view.<locals>.bandwidth_sort_key�   sA   € Ø�]Ò"Ü˜U“|Ð#Ü—	‘	˜( BÓ'ˆAÙ&'”3�q—w‘w˜q“z“?Ð9¬U°5«\Ð9r-   c                 óN   — 	 t        | «      S # t        $ r t        d«      cY S w xY w)Nr�   )r…   Ú
ValueErrorr‚   )Úps    r,   Úprice_sort_keyz3SkylinkPlanAdmin.graph_view.<locals>.price_sort_key•   s)   € ð$Ü˜1“v�øÜò $Ü˜U“|Ò#ð$ús   ‚
 �$£$c                 ó   •—  ‰| d   «      S ©Nr   r7   )Úxr‰   s    €r,   r{   z-SkylinkPlanAdmin.graph_view.<locals>.<lambda>›   s   ø€ ÑDVÐWXÐYZÑW[ÓD\€ r-   )Úkeyc                 ó   •—  ‰| d   «      S r�   r7   )r�   r�   s    €r,   r{   z-SkylinkPlanAdmin.graph_view.<locals>.<lambda>�   s   ø€ ÑWeÐfgÐhiÑfjÓWk€ r-   z2SkylinkPlan Roadmap View (Grouped by Price Prefix))ÚroadmapÚtitlez-ott_subscription/admin/skylinkplan_graph.html)r   r[   rP   Úorder_byr   rk   rl   Ústripr”   rƒ   Úmatchr   r†   Úappendr‚   rj   rm   ÚdictÚsortedÚitemsr   )r*   r`   Ú	all_plansr“   ÚplanÚraw_bwrl   r—   Úprice_prefixÚsorted_roadmapr‡   Úcontextr‰   r�   s               @@r,   rt   zSkylinkPlanAdmin.graph_viewv   sS  ù€ Ü×'Ñ'×+Ñ+Ó-×6Ñ6°{ÀFÓKˆ	äÑ7Ó8ˆàò 	ˆDà×+Ò+ØŸ™Ò4¨9�Ø"ŸL™L›N×0Ñ0Ó2‘	à)�	ô —H‘H˜X t§y¡y§¡Ó'8Ó9ˆEÙ-2˜5Ÿ;™; qœ>¸ˆLð �IÑ˜|Ñ,×3Ñ3ØŸ	™	Ü §¡Ó,Ø#'×#7Ñ#7ñ5õ ð	ò(	:ò	$ô œf W§]¡]£_Ó:\Ô]Ó^ˆØ ò 	nˆBÜ!%¤f¨^¸BÑ-?×-EÑ-EÓ-GÓMkÔ&lÓ!mˆN˜2Òð	nð &ØIñ
ˆô   Ð)XÐZaÓbÐbr-   )r/   r0   r1   r2   r3   rc   r4   Úchange_list_templaterq   rt   rf   rg   s   @r,   ri   ri   h   s,   ø„ ð A€LØe€KØ&ÐØ;€MØPÐô"ö-cr-   ri   c                   óÈ   ‡ — e Zd ZdZdZdZdZdZd„ Zde_	        d„ Z
d	e
_	        d
„ Zde_	        d„ Zde_	        d„ Zde_	        d„ Zde_	        d„ Zde_	        dZdZdˆ fd„	Zˆ xZS )ÚOTTActivationLogAdmin)Ú	client_idÚphone_numberrA   Úplan_idÚactivation_date_istÚbilling_from_date_listÚbilling_end_date_listr:   ÚmessageÚsubscription_tiers_displayÚpayment_gatewayÚamount_display)r:   rA   Úsubscription_tiersr­   )r¥   rC   r§   r¦   )z-activation_dateÚactivation_datec                 ó€   — t        j                  d«      }|j                  j                  |«      j	                  d«      S )NúAsia/Kolkataú%Y-%m-%d %H:%M:%S)ÚpytzÚtimezoner°   Ú
astimezoneÚstrftime)r*   r+   Úists      r,   r¨   z)OTTActivationLogAdmin.activation_date_ist¼   s3   € Ü�m‰m˜NÓ+ˆØ×"Ñ"×-Ñ-¨cÓ2×;Ñ;Ð<OÓPÐPr-   zActivation Date (IST)c                 óâ   — |j                   rct        j                  d«      }t        j                  |j                   t
        j                  «      }|j                  |«      j                  d«      S y©Nr²   ú%Y-%m-%dÚ-©	Úbilling_from_dater´   rµ   r   Úcombiner   Úminr¶   r·   ©r*   r+   r¸   Údts       r,   r©   z,OTTActivationLogAdmin.billing_from_date_listÁ   sR   € Ø× Ò Ü—-‘- Ó/ˆCÜ×!Ñ! #×"7Ñ"7¼¿¹ÓBˆBØ—=‘= Ó%×.Ñ.¨zÓ:Ð:Ør-   úBilling From Date (IST)c                 óâ   — |j                   rct        j                  d«      }t        j                  |j                   t
        j                  «      }|j                  |«      j                  d«      S yrº   ©	Úbilling_to_dater´   rµ   r   r¿   r   rÀ   r¶   r·   rÁ   s       r,   rª   z+OTTActivationLogAdmin.billing_end_date_listÉ   óR   € Ø×ÒÜ—-‘- Ó/ˆCÜ×!Ñ! #×"5Ñ"5´t·x±xÓ@ˆBØ—=‘= Ó%×.Ñ.¨zÓ:Ð:Ør-   úBilling To Date (IST)c                 ó6   — |j                   j                  «       S rT   )r¯   Ú
capitalizer)   s     r,   r¬   z0OTTActivationLogAdmin.subscription_tiers_displayÑ   s   € Ø×%Ñ%×0Ñ0Ó2Ð2r-   zSubscription Tierc                 óX   — |j                   dk(  r|j                  › d|j                  › �S y)NÚpaidÚ r¼   )r¯   Úpayment_amountÚpayment_currencyr)   s     r,   r®   z$OTTActivationLogAdmin.amount_displayÕ   s2   € Ø×!Ñ! VÒ+Ø×(Ñ(Ð)¨¨3×+?Ñ+?Ð*@ÐAÐAØr-   zAmount (Currency)c                 ó®   — 	 t        j                  |j                  «      }t        dt        j                  |d¬«      «      S # t
        t        f$ r Y yw xY w©Nz<pre>{}</pre>é   ©ÚindentzInvalid JSON or Empty)ÚjsonÚloadsÚinputr   Údumpsr‹   Ú	TypeError)r*   r+   Ú
input_datas      r,   Úformatted_inputz%OTTActivationLogAdmin.formatted_inputÛ   sH   € ð	+ÜŸ™ C§I¡IÓ.ˆJÜ˜´·
±
¸:ÈaÔ0PÓQÐQøÜœIÐ&ò 	+Ù*ð	+úó   ‚?A ÁAÁAzFormatted Inputc                 ó®   — 	 t        j                  |j                  «      }t        dt        j                  |d¬«      «      S # t
        t        f$ r Y yw xY wrÑ   )rÕ   rÖ   Úoutputr   rØ   r‹   rÙ   )r*   r+   Úoutput_datas      r,   Úformatted_outputz&OTTActivationLogAdmin.formatted_outputã   sH   € ð	+ÜŸ*™* S§Z¡ZÓ0ˆKÜ˜´·
±
¸;ÈqÔ0QÓRÐRøÜœIÐ&ò 	+Ù*ð	+úrÜ   zFormatted Output)r×   rÞ   )rÛ   rà   r¬   r®   c                 óT   •— t         ‰| �  ||«      }|r|j                  dk(  r|dz  }|S )NrÌ   )	Úrazorpay_order_idÚrazorpay_payment_idÚrazorpay_signaturerÎ   rÏ   Úcashfree_order_idÚcashfree_payment_idÚcashfree_payment_session_idÚcashfree_raw_response)r]   Úget_readonly_fieldsr¯   )r*   r`   r+   r5   rb   s       €r,   ré   z)OTTActivationLogAdmin.get_readonly_fieldsî   s;   ø€ Ü™'Ñ5°g¸sÓCˆÙ�3×)Ñ)¨VÒ3Øð  ñ ˆOð Ðr-   rT   )r/   r0   r1   r2   r3   r4   ÚorderingÚdate_hierarchyr¨   rd   r©   rª   r¬   r®   rÛ   rà   Úexcluder5   ré   rf   rg   s   @r,   r¤   r¤   §   s¥   ø„ ð€Lð U€KØQ€MØ$€HØ&€NòQð -DÐÔ)òð 0IÐÔ,òð /FÐÔ+ò3à3FÐÔ0òð (;€NÔ$ò+ð ):€OÔ%ò+ð *<ÐÔ&à"€GØm€O÷	ñ 	r-   r¤   c                   ó�   ‡ — e Zd ZeZdZdZdZdZdZ	d„ Z
de
_        d„ Zd	e_        d
„ Zde_        d„ Zde_        dZˆ fd„Zd„ Zˆ xZS )ÚJioHotstarCodeAdmin)Úidr    Úactivated_flagÚactivated_date_istÚbilling_cycleÚexpired_date_listr©   rª   Úactivated_client_idÚclient_phone_numberÚtype)rð   Úactivated_daterö   rò   )r    rô   rõ   )z-activated_dater÷   c                 óò   — |j                   rkt        j                  d«      }|j                   }t        |«      rt        j                  j                  |«      }|j                  |«      j                  d«      S y)Nr²   r³   r¼   )r÷   r´   rµ   r   ÚutcÚlocalizer¶   r·   rÁ   s       r,   rñ   z&JioHotstarCodeAdmin.activated_date_ist  s]   € Ø×ÒÜ—-‘- Ó/ˆCØ×#Ñ#ˆBÜ˜Œ|Ü—X‘X×&Ñ& rÓ*�Ø—=‘= Ó%×.Ñ.Ð/BÓCÐCØr-   zActivated Date (IST)c                 óâ   — |j                   rct        j                  d«      }t        j                  |j                   t
        j                  «      }|j                  |«      j                  d«      S yrº   r½   rÁ   s       r,   r©   z*JioHotstarCodeAdmin.billing_from_date_list  sR   € Ø× Ò Ü—-‘- Ó/ˆCä×!Ñ! #×"7Ñ"7¼¿¹ÓBˆBØ—=‘= Ó%×.Ñ.¨zÓ:Ð:Ør-   rÃ   c                 óâ   — |j                   rct        j                  d«      }t        j                  |j                   t
        j                  «      }|j                  |«      j                  d«      S yrº   rÅ   rÁ   s       r,   rª   z)JioHotstarCodeAdmin.billing_end_date_list  rÇ   r-   rÈ   c                 óâ   — |j                   rct        j                  d«      }t        j                  |j                   t
        j                  «      }|j                  |«      j                  d«      S yrº   )	Úexpired_dater´   rµ   r   r¿   r   rÀ   r¶   r·   rÁ   s       r,   ró   z%JioHotstarCodeAdmin.expired_date_list!  sR   € Ø×ÒÜ—-‘- Ó/ˆCÜ×!Ñ! #×"2Ñ"2´D·H±HÓ=ˆBØ—=‘= Ó%×.Ñ.¨zÓ:Ð:Ør-   zExpired Date (IST)z5ott_subscription/admin/jiohotstarcode_changelist.htmlc                 óŽ   •— t         ‰| �  «       }t        d| j                  j	                  | j
                  «      d¬«      g}||z   S )Nzusage-graph/Ú%ott_subscription_jiohotstarcode_graphr%   )r]   rq   r   rr   rs   Úusage_graph_viewru   s      €r,   rq   zJioHotstarCodeAdmin.get_urls/  sJ   ø€ Ü‰wÑÓ!ˆäØØ—‘×*Ñ*¨4×+@Ñ+@ÓAØ<ôð
ˆð ˜TÑ!Ð!r-   c                 ó¦  — d„ }|j                   j                  d«      }|j                   j                  d«      }|j                   j                  d«      }|j                   j                  d«      }| j                  j                  j	                  «       }|r|j                  |¬«      }|r	 |j                  t        |«      ¬«      }	 |r$t        j                  |d«      j                  «       nd }	 |r$t        j                  |d«      j                  «       nd }	|r|j                  |¬	«      }|	r|j                  |	¬
«      }t        j                  j                  |j                  ddd«      «      }
|
j                  rt        j                  g d¢¬«      }
t        j                   |
d   d¬«      |
d<   |
d   j#                  «       j%                  dddœ«      |
d<   |
d   j&                  j                  |
d<   |
d   j)                  d«      |
d<   |
d   j)                  d«      |
d<   i }|
j                  �s·|
|
d   dk(     j+                  ddg«      j-                  «       j/                  d¬«      }|
d   j1                  «       j3                  «       } |t5        |«      «      }t7        t9        ||«      «      }t;        j<                  |ddddddg|¬«      }|j?                  ddt7        dddd¬«      t7        dt7        d¬ «      ¬!«      t7        t7        d¬ «      ¬"«      ¬#«       |jA                  t7        d$¬ «      t7        d%¬&«      ¬'«       tC        jD                  |d(d)d*d(i¬+«      |d,<   |
j+                  ddg«      j-                  «       jG                  d-¬.«      j/                  «       }tI        jJ                  «       }|jM                  «       D ]š  \  }}|d   }|j                  dd-«      }|j                  dd-«      }|jO                  tI        jP                  |g|g|› d/�|j                  |d «      d0¬1«      «       |jO                  tI        jP                  |g|g|› d2�d3d0¬1«      «       Œœ |j?                  d4d5d6ddt7        dddd¬«      t7        t7        d¬ «      ¬"«      t7        t7        d¬ «      ¬"«      ¬7«       tC        jD                  |d(d(d*d(i¬+«      |d8<   |
d   jS                  «       j/                  «       }ddg|_*        t;        jV                  |ddd9¬:«      }|jA                  d;¬<«       |j?                  dd¬=«       tC        jD                  |d(d(d*d(i¬+«      |d><   |
|
d   dk(     j+                  ddg«      j-                  «       jG                  d-¬.«      jY                  «       j/                  «       }t;        jZ                  |d|jT                  d?d  d@|¬A«      }|j?                  dd¬=«       tC        jD                  |d(d(d*d(i¬+«      |dB<   |
|
d   dk(     j]                  dg¬C«      }|j                  �s$|d   jS                  «       j_                  dD«      j`                  }||d   jc                  |«         }|j+                  ddg«      j-                  «       jG                  d-¬.«      }tI        jJ                  tI        jd                  |jf                  j                  |j`                  ji                  tj        «      |jT                  ji                  tj        «      dEdF¬G«      ¬H«      } | j?                  dIdJdKdd¬L«       tC        jD                  | d(d(d*d(i¬+«      |dM<   |
|
d   dk(     d   j]                  «       }!|!j                  s|!jm                  «       nd }"|!j                  s|!jo                  «       nd }#t5        |
|
d   dk(     «      |"|#|
|
d   dk(     d   jS                  «       jq                  «       dNœ}$ni }$| j                  j                  js                  dd¬O«      ju                  «       }%| j                  j                  js                  dd¬O«      ju                  «       jw                  d«      }&t7        | jx                  j{                  |«      dP||$|||||%|&¬Q«
      }'t}        |dR|'«      S # t        $ r Y �Œåw xY w# t        $ r d }Y �ŒÎw xY w# t        $ r d }	Y �Œ·w xY w)SNc                 óp  — t        j                   «       }dt        j                   «       dz  z   }d}t        | «      D �cg c]"  }t        j                  ||| z  z   dz  ||«      ‘Œ$ c}D ���cg c]6  \  }}}dt	        |dz  «      › dt	        |dz  «      › dt	        |dz  «      › d�‘Œ8 c}}}S c c}w c c}}}w )	Ng      à?rÒ   gffffffî?g      ð?zrgb(éÿ   rN   ú))ÚrandomÚrangeÚcolorsysÚ
hsv_to_rgbr…   )ÚnÚhÚsÚvÚiÚrÚgÚbs           r,   Úget_color_palettez?JioHotstarCodeAdmin.usage_graph_view.<locals>.get_color_palette>  s¹   € Ü—‘“ˆAØ”f—m‘m“o¨Ñ)Ñ)ˆAØˆAô
 # 1›Xö àô ×'Ñ'¨¨Q°©U©°cÑ(9¸1¸aÕ@ò ÷ð á�A�q˜!ð ”s˜1˜S™5“z�l "¤S¨¨3©£Z L°´3°q¸±u³:°,¸aÒ@ôð ùò ùôs   ¾'B,Á,;B1rö   rò   Ú
start_dateÚend_date)rö   )rò   r»   )Úactivated_date__date__gte)Úactivated_date__date__lter÷   )r÷   rö   rò   )ÚcolumnsÚcoerce)ÚerrorsÚ	ActivatedÚUnactivated)TFr:   Údater|   Úcountr%   TzDaily Activations by Type)r�   ÚyÚcolorÚmarkersr”   Ú
hover_dataÚcolor_discrete_mapi�  é(   )Úlr  Útr  é-   é
   )Úsize)Ú	tickangleÚtickfont)r*  )ÚautosizeÚheightÚmarginÚxaxisÚyaxisé   rÒ   )Úwidth)ÚmarkerÚlineFÚcdnÚdisplaylogo)Ú	full_htmlÚinclude_plotlyjsÚconfigÚ
line_chartr   )Ú
fill_valuez - ActivatedzCount: %{y}<extra></extra>)r�   r  r   Úmarker_colorÚhovertemplatez - UnactivatedÚgreyÚstackzTotal Activations by Typer   )Úbarmoder”   Úyaxis_titler+  r,  r-  r.  r/  Ú	bar_chartzActivation Status Share)ÚnamesÚvaluesr”   z2Status: %{label}<br>Count: %{value}<extra></extra>)r<  )r+  r,  Ú	pie_chartr   z%Cumulative Activations (Stacked Area))r�   r  r”   Úcolor_discrete_sequenceÚ
area_chart)Úsubseté   ÚYlGnBuz?Date: %{x}<br>Billing Cycle: %{y}<br>Count: %{z}<extra></extra>)Úzr�   r  Ú
colorscaler<  )ÚdatazHeatmap: Billing Cycle vs DateÚDatezBilling Cycle)r”   Úxaxis_titler@  r+  r,  Úheatmap)Útotal_activationsr  r  Úby_type)ÚflatzJioHotstar Activation Graphs)	r”   ÚgraphsÚsummaryÚselected_typeÚselected_cycleÚselected_startÚselected_endÚtype_optionsÚbilling_cycle_optionsz0ott_subscription/admin/jiohotstarcode_graph.html)?ÚGETÚgetÚmodelr[   rP   r\   r…   r‹   r   Ústrptimer  ÚpdÚ	DataFrameÚfrom_recordsrC  ÚemptyÚto_datetimeÚnotnullÚmaprÂ   ÚfillnaÚgroupbyr(  Úreset_indexÚuniqueÚtolistÚlenr™   ÚzipÚpxr3  Úupdate_layoutÚupdate_tracesÚpioÚto_htmlÚunstackÚgoÚFigureÚiterrowsÚ	add_traceÚBarÚvalue_countsr  ÚpieÚcumsumÚareaÚdropnaÚnlargestÚindexÚisinÚHeatmapÚTÚastypeÚstrrÀ   ÚmaxÚto_dictÚvalues_listÚdistinctr•   rr   Úeach_contextr   )(r*   r`   r  Útype_filterrò   r  r  rZ   Úparsed_startÚ
parsed_endÚdfÚcontext_graphsÚdaily_summaryÚtypesÚcolor_paletteÚ	color_mapÚfig_lineÚbar_dataÚfig_barÚ_Úrowr%  Úactivated_countÚunactivated_countÚpie_dataÚfig_pieÚ	area_dataÚfig_areaÚheat_dfÚ
top_cyclesÚheat_filteredÚheatmap_dataÚfig_heatmapÚvalid_datesÚstart_summaryÚend_summaryÚsummary_statsrY  rZ  r¡   s(                                           r,   r  z$JioHotstarCodeAdmin.usage_graph_view<  s¶  € ò
	ð —k‘k—o‘o fÓ-ˆØŸ™Ÿ™¨Ó8ˆØ—[‘[—_‘_ \Ó2ˆ
Ø—;‘;—?‘? :Ó.ˆà—:‘:×%Ñ%×)Ñ)Ó+ˆáØ—‘¨K�Ó8ˆHáðØ#Ÿ?™?¼¸]Ó9K˜?ÓL�ð	 ÙOYœ8×,Ñ,¨Z¸ÓD×IÑIÔKÐ_cˆLð	ÙKSœ×*Ñ*¨8°ZÓ@×EÑEÔGÐY]ˆJñ Ø—‘À�ÓNˆHÙØ—‘À�ÓLˆHä�\‰\×&Ñ& x§¡Ð7GÈÐQ`Ó'aÓbˆØ�8Š8Ü—‘Ò&QÔRˆBä!Ÿ~™~¨bÐ1AÑ.BÈ8ÔTˆÐÑØÐ*Ñ+×3Ñ3Ó5×9Ñ9ÀÐUbÑ:cÓdˆˆ8‰ØÐ(Ñ)×,Ñ,×1Ñ1ˆˆ6‰
Ø˜‘Z×&Ñ& yÓ1ˆˆ6‰
Ø  Ñ1×8Ñ8¸ÓCˆˆ?Ñàˆà�x‹xØ˜r (™|¨{Ñ:Ñ;×CÑCÀVÈVÐDTÓU×ZÑZÓ\×hÑhÐnuÐhÓvˆMà�v‘J×%Ñ%Ó'×.Ñ.Ó0ˆEÙ-¬c°%«jÓ9ˆMÜœS ¨Ó6Ó7ˆIô —w‘wà ¨7¸&È$Ø1¸w¸iØ#,ô	ˆHð ×"Ñ"ØØÜ˜b B¨"°Ô3Ü R´$¸B´-Ô@Ü¤D¨b¤MÔ2ð #ô ð ×"Ñ"¬$°A¬,¼TÈ¼]Ð"ÔKÜ+.¯;©;°xÈ5ÐchÐq~ð  AFð  qGô  ,HˆN˜<Ñ(ð —z‘z 6¨8Ð"4Ó5×:Ñ:Ó<×DÑDÐPQÐDÓR×^Ñ^Ó`ˆHÜ—i‘i“kˆGØ"×+Ñ+Ó-ò ‘��3Ø˜‘K�Ø"%§'¡'¨+°qÓ"9�Ø$'§G¡G¨M¸1Ó$=Ð!à×!Ñ!¤"§&¡&Ø�cØ&Ð'Ø˜3˜lÐ+Ø!*§¡¨q°$Ó!7Ø">ô#ô ð ×!Ñ!¤"§&¡&Ø�cØ(Ð)Ø˜3˜nÐ-Ø!'Ø">ô#õ ðð( ×!Ñ!¨'Ð9TÐbiÐtxð  BEô  OSð  VXð  \^ð  bdð  hjô  OkÜ
œ "œÔ
&Ü
œ "œÔ
&ð "ô (ô +.¯+©+°gÈÐafÐrð  BGð  rHô  +IˆN˜;Ñ'ð ˜(‘|×0Ñ0Ó2×>Ñ>Ó@ˆHØ (¨'Ð2ˆHÔÜ—f‘f˜X¨X¸gÐMfÔgˆGØ×!Ñ!Ð0dÐ!ÔeØ×!Ñ!¨4¸Ð!Ô<Ü*-¯+©+°gÈÐafÐo|ð  Dð  oEô  +FˆN˜;Ñ'ð ˜2˜h™<¨;Ñ6Ñ7×?Ñ?ÀÈÐ@PÓQ×VÑVÓX×`Ñ`ÐlmÐ`Ón×uÑuÓw÷  Dñ  Dó  FˆIÜ—w‘wØ˜V y×'8Ñ'8¸¸Ð'<Ø=Ø(5ôˆHð
 ×"Ñ"¨D¸Ð"Ô=Ü+.¯;©;°xÈ5ÐchÐrð  BGð  rHô  ,IˆN˜<Ñ(ð ˜˜H™¨Ñ4Ñ5×<Ñ<À_ÐDUÐ<ÓVˆGØ—=“=Ø$ _Ñ5×BÑBÓD×MÑMÈaÓP×VÑV�
Ø '¨°Ñ(@×(EÑ(EÀjÓ(QÑ R�Ø,×4Ñ4°f¸oÐ5NÓO×TÑTÓV×^Ñ^ÐjkÐ^Ól�Ü Ÿi™i¬R¯Z©ZØ"—n‘n×+Ñ+Ø"×(Ñ(×/Ñ/´Ó4Ø"×*Ñ*×1Ñ1´#Ó6Ø'Ø"cô.ô �ð ×)Ñ)Ø:Ø &Ø /Ø!Øð *ô ô -0¯K©K¸ÈuÐglð  wDð  FKð  vLô  -M�˜yÑ)à˜R ™\¨[Ñ8Ñ9¸&ÑA×HÑHÓJˆKØ5@×5FÒ5F˜KŸO™OÔ-ÈDˆMØ3>×3DÒ3D˜+Ÿ/™/Ô+È$ˆKô &)¨¨B¨x©L¸KÑ,GÑ)HÓ%IØ+Ø'Ø˜b ™l¨kÑ9Ñ:¸6ÑB×OÑOÓQ×YÑYÓ[ñ	‰Mð ˆMà—z‘z×)Ñ)×5Ñ5°fÀ4Ð5ÓH×QÑQÓSˆØ $§
¡
× 2Ñ 2× >Ñ >¸ÐUYÐ >Ó Z× cÑ cÓ e× nÑ nÐo~Ó ÐäØ�O‰O×(Ñ(¨Ó1Ø0Ø!Ø!Ø%Ø(Ø%Ø!Ø%Ø"7ô
ˆô   Ð)[Ð]dÓeÐeøôm ò Úðûô
 ò 	 Ø‹Lð	 ûô
 ò 	Ø‹Jð	ús6   Â+b Ã(b/ Ã0(c â	b,â+b,â/b>â=b>ãcãc)r/   r0   r1   r   Úresource_classr2   r3   r4   rê   rë   rñ   rd   r©   rª   ró   r¢   rq   r  rf   rg   s   @r,   rî   rî   û   s|   ø„ à+€Nð Z€LØO€KØJ€MØ#€HØ%€Nòð ,BÐÔ(òð 0IÐÔ,òð /FÐÔ+òð +?ÐÔ'ð SÐô	"örfr-   rî   c                   ó4   — e Zd ZdZdZdZdZdZd„ Zde_	        y)ÚIptvRequestAdmin)r¥   r¦   ÚemailÚrequested_atÚactivation_codeÚactivated_byÚactivated_atÚget_reason_not_activated)r¥   r¦   r©  )rª  )z-requested_atc                 ó   — |j                   S rT   )Úreason_not_activatedr)   s     r,   r®  z)IptvRequestAdmin.get_reason_not_activated  s   € Ø×'Ñ'Ð'r-   zReason for not activatedN)
r/   r0   r1   r2   r5   r4   r3   rê   r®  rd   r7   r-   r,   r¨  r¨  ó  s-   „ ð	€Lð =€OØ:€MØ#€KØ!€Hò(à1KÐÕ.r-   r¨  c                   ó   — e Zd ZdZdZdZdZy)ÚSupportVideoAdmin)r”   r"   r!   ©r"   r$   )r”   ÚsubtitleN)r/   r0   r1   r2   r=   r3   r4   r7   r-   r,   r²  r²    s   „ à5€LØ!€MØ €KØ)�Mr-   r²  c                   ó   — e Zd ZdZdZdZdZy)ÚTVChannelAdmin)r   r    r"   r!   r$   r<   r³  N)r/   r0   r1   r2   r3   r4   rê   r7   r-   r,   r¶  r¶    s   „ à<€LØ €KØ$€MØ�Hr-   r¶  c                   ó>   — e Zd ZdZdZdZdZdZd„ Zde_	        edz  Zy	)
ÚCashfreePaymentAdmin)r¥   Úcustomer_emailÚcustomer_phonerA   r§   r"   rj   ÚcurrencyÚpayment_statusÚpaid_atÚ
created_at)r¼  rA   r»  )r¥   r"   r§   rC   r¹  rº  )z-created_at)r¾  r½  Ú
extra_datac                 ó~   — dd l }	  |j                  |j                  d¬«      S # t        $ r |j                  cY S w xY w)Nr   rÒ   rÓ   )rÕ   rØ   r¿  Ú	Exception)r*   r+   rÕ   s      r,   Úformatted_extra_dataz)CashfreePaymentAdmin.formatted_extra_data3  s:   € Ûð	"Ø�4—:‘:˜cŸn™n°QÔ7Ð7øÜò 	"Ø—>‘>Ò!ð	"ús   †$ ¤<»<z
Extra Data)rÂ  N)
r/   r0   r1   r2   r3   r4   rê   r5   rÂ  rd   r7   r-   r,   r¸  r¸    s;   „ ð€Lð @€KØt€MØ€HØ=€Oò"ð .:ÐÔ*ØÐ0Ñ0�Or-   r¸  )ÚRequestFactory)ÚSessionMiddleware)ÚManualOTTActivationr   )Úfetch_watcho_dataÚfetch_ottplay_dataÚfetch_playbox_datac                   ó.   ‡ — e Zd ZdZdZdZdZˆ fd„Zˆ xZS )ÚManualOTTActivationAdmin)
r¦   Úplatformr�   Ú
platform_2Úplan_2Ú
first_nameÚ	last_nameÚsky_idr:   r¾  )rË  r:   )r¦   rÎ  rÏ  rÐ  )r¾  c                 óˆ  •‡— t         ‰| �  |‰||«       ‰j                  r‰j                  r‰j                  sd‰_        d‰_        ‰j                  «        y ‰j                  r+‰j                  sd‰_        d‰_        ‰j                  «        y ‰j                  r+‰j                  sd‰_        d‰_        ‰j                  «        y g }ˆfd„}	 |j                   |‰j                  ‰j                  «      «       ‰j                  r8‰j                  r,|j                   |‰j                  ‰j                  «      «       |D �cg c]  }|d   dk(  sŒ|‘Œ }}|D �cg c]  }|d   dk(  sŒ|‘Œ }	}t        |	«      dk(  rd‰_        d	‰_        nat        |«      dk(  r*d‰_        d
j                  d„ |	D «       «      }
d|
› �‰_        n)d‰_        d
j                  d„ |	D «       «      }
d|
› �‰_        ‰j                  «        y c c}w c c}w # t        $ r1}d‰_        t        |«      ‰_        ‰j                  «        Y d }~y d }~ww xY w)NÚFailedz2First Platform, Plan and Phone number are requiredz(Second plan selected but Plan is missingzSecond platform missingc                 óè  •— ‰
j                   | j                  |j                  d‰
j                  ‰
j                  t	        ‰
dd«      ‰
j
                  dœ}t        «       }|j                  dt        j                  |«      d¬«      }t        d„ «      }|j                  |«       |j                  j                  «        	 | j                  d	k(  rt        |«      }nQ| j                  d
k(  rt!        |«      }n6| j                  dk(  rt#        |«      }nd| j$                  |j                  ddœS 	 t        j&                  |j(                  j+                  d«      «      }|j.                  dk(  rdnd}t0        j2                  j5                  ‰
j                   | |j                  ||j7                  d«      |j7                  d«      |j7                  d«      |j7                  d«      |j7                  d«      ‰
j                   ¬«
       || j$                  |j                  |j7                  d«      dœS # t,        $ r ddi}Y ŒÞw xY w# t,        $ r.}	d| j$                  |j                  t9        |	«      dœcY d }	~	S d }	~	ww xY w)Nr   r©  Ú )r¥   rA   r§   Úmanual_flagrÎ  rÏ  r©  Úaddress_cityz
/fake-url/zapplication/json)rL  Úcontent_typec                  ó   — y rT   r7   )Úreqs    r,   r{   zGManualOTTActivationAdmin.save_model.<locals>.activate.<locals>.<lambda>”  s   � r-   ÚwatchoÚottplayÚplay_boxrÒ  zPlatform not supported)r:   rË  r�   r«   zutf-8r«   zInvalid API responseéÈ   ÚSuccessr×   Úresponse_statusrÞ   Úendpoint)
r¥   rA   r§   r:   r«   r×   rß  rÞ   rà  r¦   )r¦   rï   rÎ  rÏ  ÚgetattrrÐ  rÃ  ÚpostrÕ   rØ   rÄ  Úprocess_requestÚsessionÚsaver    rÆ  rÇ  rÈ  r   rÖ   ÚcontentÚdecoderÁ  Ústatus_coder   r[   Úcreater\  rƒ  )rË  r�   ÚpayloadÚfactoryÚfake_requestÚ
middlewareÚresponseÚresponse_dataÚresult_statusÚer+   s             €r,   Úactivatez5ManualOTTActivationAdmin.save_model.<locals>.activate~  sB  ø€ ð !×-Ñ-Ø'Ÿ{™{ØŸ7™7Ø Ø!Ÿn™nØ Ÿ]™]Ü   g¨rÓ2Ø #§
¡
ñ	ˆGô %Ó&ˆGà"Ÿ<™<ØÜ—Z‘Z Ó(Ø/ð (ó ˆLô +Ñ+;Ó<ˆJØ×&Ñ& |Ô4Ø× Ñ ×%Ñ%Ô'ð2Ø—=‘= HÒ,Ü0°Ó>‘HØ—]‘] iÒ/Ü1°,Ó?‘HØ—]‘] jÒ0Ü1°,Ó?‘Hð #+Ø$,§M¡MØ $§	¡	Ø#;ñ	ð ðHÜ$(§J¡J¨x×/?Ñ/?×/FÑ/FÀwÓ/OÓ$P�Mð .6×-AÑ-AÀSÒ-H¡	Èh�ô !×(Ñ(×/Ñ/Ø!×.Ñ.Ø (Ø ŸI™IØ(Ø)×-Ñ-¨iÓ8Ø'×+Ñ+¨GÓ4Ø$1×$5Ñ$5Ð6GÓ$HØ(×,Ñ,¨XÓ6Ø*×.Ñ.¨zÓ:Ø!$×!1Ñ!1ð 0ô ð ,Ø (§¡Ø ŸI™IØ,×0Ñ0°Ó;ñ	ð øô' !ò HØ%.Ð0FÐ$G’MðHûô4 ò à&Ø (§¡Ø ŸI™IÜ" 1›vñ	õ ûðúsD   Â=A+H: Ä*.H' ÅCH: È'H7È4H: È6H7È7H: È:	I1É#I,É&I1É,I1r:   rÞ  r   z All plans activated successfullyrN   c              3   óD   K  — | ]  }|d    › d|d   › d|d   › d�–— Œ y­w©rË  z - r�   z (r«   r  Nr7   ©Ú.0r  s     r,   ú	<genexpr>z6ManualOTTActivationAdmin.save_model.<locals>.<genexpr>é  ó7   è ø€ ò +àð ˜‘}�o S¨¨6©¨°2°a¸	±l°^À1ÔEñ+ùó   ‚ zAll failed: zPartial Successc              3   óD   K  — | ]  }|d    › d|d   › d|d   › d�–— Œ y­wrô  r7   rõ  s     r,   r÷  z6ManualOTTActivationAdmin.save_model.<locals>.<genexpr>ó  rø  rù  zFailed: )r]   Ú
save_modelrË  r�   r¦   r:   r«   rå  rÌ  rÍ  r˜   rk  rO   rÁ  rƒ  )r*   r`   r+   ÚformÚchangeÚactivation_resultsrò  r  Úsuccess_resultsÚfailed_resultsÚfailed_detailsrñ  rb   s     `         €r,   rû  z#ManualOTTActivationAdmin.save_model`  s  ù€ ä‰Ñ˜7 C¨¨vÔ6ð
 �|Š| 3§8¢8°3×3CÒ3CØ!ˆCŒJØNˆCŒKØ�H‰HŒJØà�>Š> #§*¢*Ø!ˆCŒJØDˆCŒKØ�H‰HŒJØà�:Š:˜cŸnšnØ!ˆCŒJØ3ˆCŒKØ�H‰HŒJØàÐô
L	ðb0	ð ×%Ñ%Ù˜Ÿ™ s§x¡xÓ0ôð
 �~Š~ #§*¢*Ø"×)Ñ)Ù˜SŸ^™^¨S¯Z©ZÓ8ôð +=ÖY QÀÀ(ÁÈyÓ@XšqÐYˆOÐYØ);ÖW A¸qÀ¹{ÈhÓ?VšaÐWˆNÐWä�>Ó" aÒ'Ø&�”
Ø@�•ä�_Ó%¨Ò*Ø%�”
à!%§¡ñ +à+ô+ó "�ð
 !-¨^Ð,<Ð=�•ð /�”
à!%§¡ñ +à+ô+ó "�ð
 !)¨Ð(8Ð9�”à�H‰H�Jùò7 ZùÚWøô8 ò 	Ø!ˆCŒJÜ˜a›&ˆCŒKØ�H‰H�J‰Jûð	úsD   ÃA4H ÅG=ÅG=ÅH ÅHÅ(HÅ,BH Ç=
H È	IÈ'H<È<I)	r/   r0   r1   r2   r3   r4   r5   rû  rf   rg   s   @r,   rÊ  rÊ  E  s+   ø„ ð€Lð )€Kð€Mð &€O÷_ð _r-   rÊ  )SÚdjango.contribr   Úmodelsr   r   r   r   r	   r
   r   r   r   Údjango.utils.htmlr   r   rÕ   r   Úimport_export.adminr   Ú	resourcesr   r   r   Údjango.template.responser   rƒ   Úcollectionsr   Údjango.urlsr   Údjango.db.modelsr   r´   Údjango.utils.timezoner   r  ÚcsvÚdjango.httpr   Úpandasr_  ÚseabornÚsnsÚmatplotlib.pyplotÚpyplotÚpltÚior   Úbase64r  Úplotly.expressÚexpressrm  Úplotly.graph_objectsÚgraph_objectsrs  Ú	plotly.iorp  r   Ú
ModelAdminr   ÚsiteÚregisterr9   r?   rE   ri   r¤   rî   r¨  r²  r¶  r¸  Údjango.testrÃ  Ú"django.contrib.sessions.middlewarerÄ  rÅ  Úott_subscription.viewsrÆ  rÇ  rÈ  rÊ  r7   r-   r,   ú<module>r!     sŽ  ðÝ  ÷ B÷  Bõ  BÝ 'Ý )Û Ý "Ý 6Ý -ß #Ý 5Û 	Ý #Ý Ý "Û Ý *Û ã 
Ý $Û Û Ý Ý Û Û Ý Ý !Ý Ý #ôˆu×Ñô ð$ ‡
�
× Ñ �C˜Ô "ô ˜×)Ñ)ô  ð ‡
�
× Ñ �MÐ#5Ô 6ô#˜×(Ñ(ô #ð
 ‡
�
× Ñ �LÐ"3Ô 4ôM�5×#Ñ#ô Mð8 ‡
�
× Ñ �G˜\Ô *ô;c�u×'Ñ'ô ;cð| ‡
�
× Ñ �KÐ!1Ô 2ôP˜E×,Ñ,ô Pðd ‡
�
× Ñ Ð$Ð&;Ô <à€‡��ÓôrfÐ0ó rfó  ðrfðn €‡��ÓôL�u×'Ñ'ó Ló ðLð0 €‡��Óô*˜×(Ñ(ó *ó ð*ð €‡��	Óô�U×%Ñ%ó ó ðð €‡��Ó ô1˜5×+Ñ+ó 1ó !ð1õ: !Ý &Ý @Û ç 9ß \Ñ \ð €‡�Ð#Ó$ôy˜u×/Ñ/ó yó %ñyr-   