
    `iw                        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)    99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    IL 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    GL?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-    yychhlln=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    yy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!=!NF:w/'LV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dKLM!?!'H$%8L"%/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?? KRe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&'3qwwqz?9U5\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)    $1v $U|#$s   
 $$c                      | d         S Nr   r7   )xr   s    r,   r{   z-SkylinkPlanAdmin.graph_view.<locals>.<lambda>   s    DVWXYZW[D\ r-   )keyc                      | d         S r   r7   )r   r   s    r,   r{   z-SkylinkPlanAdmin.graph_view.<locals>.<lambda>   s    WefghifjWk 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++49"LLN002	)	 HHXtyy'89E-25;;q>L I|,33		,#'#7#75 	(	:	$ fW]]_:\]^  	nB!%f^B-?-E-E-GMk&l!mN2	n &I
  )XZabbr-   )r/   r0   r1   r2   r3   rc   r4   change_list_templaterq   rt   rf   rg   s   @r,   ri   ri   h   s,     ALeK&;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    mmN+""--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BB==%..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"5txx@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    	+CII.J

:a0P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    	+**SZZ0K

;q0Q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;    '5gs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QM$H&NQ -D) 0I, /F+33F0 (;N$+ ):O%+ *<&"GmO	 	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|XX&&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BB==%..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"2DHH=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       d01             |jO                  tI        jP                  |g|g| d2d3d01              |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              dEdFG      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fmmo))AA
 #1X  ''QUc(91a@  Aq! s1S5zl"S3ZL3q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   
	 kkoof-8[[__\2
;;??:.::%%))+K8H#??]9K?L	 OY8,,ZDIIK_cL	KS**8Z@EEGY]J NHLH\\&&x7GQ`'ab88&QRB!~~b1A.B8T*+33599Ub:cd8(),,116
Z&&y16
 188C?xxr(|{:;CCVVDTUZZ\hhnuhvMvJ%%'..0E-c%j9MS67I ww7&$1wi#,	H ""bB"3R$B-@DbM2 #  ""$A,T]"K+.;;x5chq~  AF  qG  ,HN<( zz68"45::<DDPQDR^^`HiikG"++- 3K"%''+q"9$'GGM1$=!!!"&&c&'3l+!*q$!7">#  !!"&&c()3n-!'"># ( !!'9Tbitx  BE  OS  VX  \^  bd  hj  Ok
"
&
"
& " ( +.++gafr  BG  rH  +IN;' (|002>>@H ('2HffXXgMfgG!!0d!e!!4!<*-++gafo|  D  oE  +FN;' 2h<;67??@PQVVX``lm`nuuw  D  D  FIwwVy'8'8'<=(5H
 ""D"=+.;;x5chr  BG  rH  ,IN<( H45<<_DU<VG==$_5BBDMMaPVV
 '(@(E(Ej(Q R,44fo5NOTTV^^jk^l iiRZZ"nn++"((//4"**11#6'"c.  )): & /! *  -0KKugl  wD  FK  vL  -My)R\[89&AHHJK5@5F5FKOO-DM3>3D3D+//+$K &)BxLK,G)H%I+'blk9:6BOOQYY[	M Mzz))55f45HQQS $

 2 2 > >UY > Z c c e n no~ OO((10!!%(%!%"7
  )[]deem  
  	 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OKJM#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    5L!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::cnnQ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tMH=O" .:*00Or-   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    !--'{{77 !nn ]] gr2 #

	G %&G"<<ZZ(/ ( L ++;<J&&|4  %%'2==H,0>H]]i/1,?H]]j01,?H #+$,MM $		#;	 H$(JJx/?/?/F/Fw/O$PM .6-A-AS-H	h !((//!.. ( II()--i8'++G4$1$5$56G$H(,,X6*..z:!$!1!1 0  , ( II,00;	 ' ! H%.0F$GMH4  & ( II"1v	 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      + }oS62a	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   7Cv6
 ||38833C3C!CJNCKHHJ>>#**!CJDCKHHJ::cnn!CJ3CKHHJ
L	b0	 %%sxx0
 ~~#**"))S^^SZZ8 +=YQ(y@XqYOY);WAq{h?VaWNW>"a'&
@_%*%
!% +++ "
 !-^,<= /
!% +++ "
 !)(89HHJ7 ZW8  	!CJa&CKHHJJ	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%%    15++ 1 !1: ! & @  9 \ \ #$yu// y %yr-   