U
    `hZ                 	   @   sx
  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 d dl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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 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%m&Z& d dl'm(Z(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/ ddl*m0Z0 ddl*m1Z1 ddl*m2Z2 ddl*m3Z3 d d l4m5Z5 d d!l4m6Z6 d d"l4m7Z7 dd#l*m8Z8 dd$l*m9Z9 dd%l*m:Z: dd&l*m;Z; dd'l*m<Z< d d(l#m=Z= d d)l4m>Z> d d*l4m?Z? d d+l4m@Z@ d d,l4mAZA d d-l4mBZB d d.l4mCZC d d/l4mDZD d d0l4mEZE d d1l4mFZF d d2l4mGZG d d3l4mHZH d dlmZ d d4l4mIZI d d5l4mJZJ d d6lKmLZLmMZMmNZN d d7lOmPZP d dlQZQd dlRZRd dlSZSdd8lTmUZU d dlVZVd dlWZWd dl Z d dlXZXd dlYZZd dlQZQd dlZd dl[Z[d dlVZVd dlWZWd dl%m&Z& d d9l\m]Z] d d:lm^Z^ d;e j_d<< d dlm Z  d d=lm`Z` d dlmZ d dl	m
Z
 d d>lambZb d dlmZ e(d?gd@dA Zce(d?gdBdC Zde(d?gdDdE Zee(d?gdFdG ZfePdHdIdJdK Zge(d?gdLdM Zhe(d?gdNdO Zie(d?gdPdQ Zje(d?gdRdS ZkdTdU ZlePdHdIdVdW ZmePdHdIdXdY ZnePdHdIdZd[ Zoe(d\gd]d^ Zpe(d\gd_d` Zqe(d?gdadb Zre(d?gdcdd ZsePdHdIdedf Zte(d\gdgdh ZuePdHdIdidj Zve(d?gdkdl Zwe(d?gdmdn Zxe(d\gdodp Zye(d\gdqdr Zze(d?gdsdt Z{e(d?gdudv Z|e(d\gdwdx Z}e(d\gdydz Z~e(d?gd{d| Ze(d?gd}d~ ZePdHdIdd Zdd ZePdHdIdd ZePdHdIdd ZePdHdIdd Zdd ZePdHdIdd ZePdHdIedd ZePdHdIdd ZePdHdIdd ZePdHdIdd ZePdHdIdd ZePdHdIdd Zdd Ze(d\gdd Ze(d\gdd Ze(d?gdd ZePdHdIdd ZePdHdIdd ZePdHdIdd ZePdHdIdd ZePdHdIdd ZePdHdIdd ZePdHdIdd ZePdHdIdd ZePdHdIdd ZePdHdIdd ZePdHdIdd ZePdHdIedd ZePdHdIedd ZePdHdIedd ZePdHdIedd ZePdHdIdd ZePdHdIdd ZePdHdIddĄ ZePdHdIddƄ ZePdHdIeddȄ ZePdHdIeddʄ ZePdHdIdd̄ ZePdHdIedd΄ ZePdHdIddЄ ZePdHdIdd҄ Zi fddԄZdddddddddݜZG dd߄ debZG dd debZePdHdIdd ZePdHdIedd ZePdHdIdd ZePdHdIdd ZePdHdIdd ZePdHdIdd ZePdHdIedd ZePdHdIedd ZePdHdIdd Zdd ZePdHdIdd ZePdHdIdd ZePdHdIdd ZePdHdIdd ZePdHdIdd ZePdHdIed d Zedd ZePddIdd ZePdHdIedd Zd	d
 ZdS (      N)
cache_page)vary_on_cookie)settings)HttpResponse)get_template)pisa)finders)chain)redirect)FileResponse)canvas)csrf_exempt)messages)datetimerender)r   r
   Response)IsAuthenticatedToken)api_viewpermission_classes   )RadcheckSerializer)InvoiceTypeSerializer)RadgroupreplySerializer)RadacctSerializer)RadusergroupSerializer)PaymentSerializer)BillingPlansSerializer)UserbillinfoSerializer)OperatorsSerializer)	Operators)InvoiceStatus)InvoiceType)UserSerializer)BillingHistorySerializer)NasSerializer)InvoiceItemsSerializer)BillingMerchantSerializer)AllowAny)Radusergroup)InvoiceItems)AuthUser)BillingPlans)Radgroupreply)Nas)Radacct)Radreply)Registration)Payment)Userbillinfo)BillingHistory)BillingMerchant)authenticateloginlogout)login_required)Radcheck)permissions)JsonResponsetrueDJANGO_ALLOW_ASYNC_UNSAFE)BytesIO)ViewGETc                 C   s*   ddddddddd	d
ddddd}t |S )Nz/user-list/z/user-detail/<int:id>z/user-create/z/Radusergroup-create/z/user-update/<int:id>z/user-delete/<int:id>z/Radgroupreply/z/Radusergroup/z	/payment/z/make-payment/z/userbillinfo/z/create-userbillinfo/z
/register/z/create_BillingPlans/)listZDetailCreater,   updateDeleteZRad_listzlist-allpaymentzmake-paymentuserbillinfozcreate-userbillinforegistercreate_BillingPlansr   )requestZapi_urls rN   ,/var/www/html/project/apps/customer/views.pyapioverviewS   s     rP   c                 C   s.   | j }tjj| j  d}t|dd}t|jS NplanidTmany)userr#   objectsfilterr"   r   data)rM   idZOperators_data
serializerrN   rN   rO   Operators_allf   s    r\   c                 C   s.   | j }tjj| j  d}t|dd}t|jS rQ   )rV   r8   rW   rX   r*   r   rY   )rM   rZ   ZBillingMerchant_datar[   rN   rN   rO   BillingMerchant_Alln   s    r]   c                 C   s.   | j }tjj| j  d}t|dd}t|jS )NupdatebyTrT   )rV   r%   rW   rX   r   r   rY   )rM   rZ   ZInvoiceType_datar[   rN   rN   rO   
draft_listt   s    r`   
auth-login)	login_urlc           
      C   sh   ddl m} |jj| jd}|D ]B}|}d}dd|i}tj||d}| }d|i}	t	|	  S d S )	Nr   r   rV   z.https://helios-radius.com/BillingMerchant_All/Authorizationtoken {}headersrY   
rest_framework.authtoken.modelsr   rW   get_or_createrV   formatrequestsgetjsonr?   
rM   r   rV   tokenmyTokenmyUrlheadresponserY   contextrN   rN   rO   BillingMerchant_listz   s     rv   c                 C   s0   | j }tjj|dd}t|dd}t|jS )NrR   radiusTrT   rV   r/   rW   rX   usingr    r   rY   rM   rZ   ZBillingPlans_datar[   rN   rN   rO   BillingPlans_All   s    r{   c                 C   s2   | j }tjj|ddd}t|dd}t|jS )NZHotspotrS   plantyperw   TrT   rx   rz   rN   rN   rO   BillingPlans_hotspot   s    r~   c                 C   s2   | j }tjj|ddd}t|dd}t|jS )NzFixed-Pppoer|   rw   TrT   rx   rz   rN   rN   rO   BillingPlans_pppoe   s    r   c                 C   s&   | j }tj }t|dd}t|jS NTrT   )rV   r-   rW   allr)   r   rY   )rM   rZ   InvoiceItems_datar[   rN   rN   rO   InvoiceItem_All   s    
r   c           
      C   sh   ddl m} |jj| jd}|D ]B}|}d}dd|i}tj||d}| }d|i}	t	|	  S d S )	Nr   r   rc   z/https://helios-radius.com/BillingPlans_hotspot/rd   re   rf   rY   rh   ro   rN   rN   rO   BillingPlanshotspot   s     r   c           
      C   sh   ddl m} |jj| jd}|D ]B}|}d}dd|i}tj||d}| }d|i}	t	|	  S d S )	Nr   r   rc   z-https://helios-radius.com/BillingPlans_pppoe/rd   re   rf   rY   rh   ro   rN   rN   rO   BillingPlanspppoe   s     r   c                 C   s   ddl m} |jj| jd}|D ]\}|}d}dd|i}tj||d}| }t	|}	dd	 }
|
|	}||d
}t
|  S d S )Nr   r   rc   +https://helios-radius.com/BillingPlans_All/rd   re   rf   c                 S   s>   d}t | dkr"|d7 }| d } qd| dddd	d
dg| f S Nr     r   g     @@z%.2f%s KMGTPabsnum	magnituderN   rN   rO   human_format   s
    
z+BillingPlans_All_list.<locals>.human_formatrY   	count_allri   r   rW   rj   rV   rk   rl   rm   rn   lenr?   rM   r   rV   rp   rq   rr   rs   rt   rY   countr   r   ru   rN   rN   rO   BillingPlans_All_list   s    r   c                 C   s   ddl m} |jj| jd}|D ]`}|}d}dd|i}tj||d}| }t	|}	dd	 }
|
|	}||d
}t
|dd  S d S )Nr   r   rc   r   rd   re   rf   c                 S   s>   d}t | dkr"|d7 }| d } qd| dddd	d
dg| f S r   r   r   rN   rN   rO   r      s
    
z(BillingPlans_chart.<locals>.human_formatr   F)safer   r   rN   rN   rO   BillingPlans_chart   s    r   POSTc                 C   s&   t | jd}| r|  t|jS NrY   )r"   rY   is_validsaver   rM   r[   rN   rN   rO   create_Operators   s    r   c                 C   s&   t | jd}| r|  t|jS r   )r    rY   r   r   r   r   rN   rN   rO   rL      s    rL   c                 C   s&   t j d}t|dd}t|jS Nrw   TrT   )r1   rW   r   ry   r(   r   rY   )rM   ZNas_datar[   rN   rN   rO   Nas_All  s    r   c                 C   s    t j }t|dd}t|jS r   )r0   rW   r   r   r   rY   )rM   ZRadgroupreply_datar[   rN   rN   rO   Radgroupreply_All  s    
r   c           
      C   sh   ddl m} |jj| jd}|D ]B}|}d}dd|i}tj||d}| }d|i}	t	|	  S d S )	Nr   r   rc   z(https://helios-radius.com/Radgroupreply/rd   re   rf   rY   rh   ro   rN   rN   rO   Radgroupreply_list  s     r   c                 C   s&   t | jd}| r|  t|jS r   )r   rY   r   r   r   r   rN   rN   rO   create_Radgroupreply  s    r   c                 C   s<  z| j dkr| jd }| jd }| jd }| jd }| jd }| jd }|rdd	lm} |jj| jd
}|D ]6}	|	}
dd|
i}tj	d|| j d|d|dd}qp|rdd	lm} |jj| jd
}|D ]@}	|	}
dd|
i}tj	d||||||||dd|dddd}qW n t
k
r0   td Y nX t| dS )Nr   rZ   package_namepackage_type
rate_limit	unit_timepricer   r   rc   rd   re   z/https://helios-radius.com/create_Radgroupreply/Mikrotik-Rate-Limit:=)rZ   	attribute	groupnameopvaluerg   rn   z.https://helios-radius.com/create_BillingPlans/YesFixedz.Ksh)plannamerS   r}   plantimetypeZplantimerefillCostZplantrafficrefillCostplantraffictotalplanrecurringplanrecurringbillingscheduleplancostplancurrency
planactivesomething happensz
plans.html)methodr   ri   r   rW   rj   rV   rk   rl   post	Exceptionprintr   )rM   rZ   r   r   r   r   r   r   rV   rp   rq   rs   rt   rN   rN   rO   
plans_list$  sX    





r   c                 C   s,   | j }tjj| d}t|dd}t|jS )NaddressTrT   rV   r6   rW   rX   r!   r   rY   )rM   rZ   Userbillinfo_datar[   rN   rN   rO   Userbillinfo_allT  s    r   c                 C   s.   | j }tjj| dd}t|dd}t|jS )NhotspotcompanyleadTrT   r   )rM   rZ   Zhotspot_datar[   rN   rN   rO   hotspot_all[  s    r   c                 C   sH   t | jd}| r>| }|j}| jdkr>tjj|d	  t
|jS )Nr   r   )notes)r!   rY   r   r   phoner   r5   rW   rX   deleter   )rM   r[   accountr   rN   rN   rO   create_userbillinfob  s    
r   c                 C   sr   | j dkrnt| jd}i }| r`| }d|d< |j|d< |j|d< tjj	|dj
}||d< n|j}t|S d S )	Nr   r   zsuccesfully registeredrt   emailusernamerc   rp   )r   r&   rY   r   r   r   r   r   rW   rm   keyerrorsr   )rM   r[   rY   r   rp   rN   rN   rO   Register_userl  s    



r   c                 C   s   | j }| j  dkr<tjjddd}t|dd}t|jS | j  dkrrtjjddd}t|dd}t|jS tjjd| dd}t|dd}t|jS d S )	NZdavid
Expirationr   rw   TrT   admin)r   rZ   )rV   r=   rW   rX   ry   r   r   rY   )rM   rZ   Zradcheck_datar[   rN   rN   rO   ShowAll}  s    

r   c                 C   s&   t j d}t|dd}t|jS r   )r5   rW   r   ry   r   r   rY   )rM   Zpayment_datar[   rN   rN   rO   Payment_list  s    r   c                 C   s&   t | jd}| r|  t|jS r   )r   rY   r   r   r   r   rN   rN   rO   create_user  s    r   c                 C   s&   t | jd}| r|  t|jS r   )r   rY   r   r   r   r   rN   rN   rO   create_Radusergroup  s    r   c                 C   s.   t jjd| j dd}t|dd}t|jS )NTPPP)acctstoptime__isnullcalledstationidframedprotocolrT   r2   rW   rX   rV   get_short_namer   r   rY   rM   Radacct_datar[   rN   rN   rO   Radacct_All  s    r   c                 C   s.   t jjd| j dd}t|dd}t|jS )NTr   r   	nasportidr   rT   r   r   rN   rN   rO   Radacct_Hotspot  s    r   c                 C   st   | j dkrj| jd }| jd }| jd }| jd }| jd }| jd }t||||||djd	d
 tdS t| dS )Nr   
first_name	last_namephone_numberr   passwordconfirm_password)r   r   r   r   r   r   rw   )ry   ra   zauth-register.html)r   r   r4   r   r
   r   )rM   r   r   r   r   r   r   rN   rN   rO   Register  s    






r   c                 C   s   | j dkr~| jd}| jd}ztjj|d}W nH   t| ||d}|d k	rht| | td Y S t	| tj
d Y nX t| dS )	Nr   r   r   r   r   r   customerzpPlease enter the correct username and password for a staff account. Note that both fields may be case-sensitive.zauth-login.html)r   r   rm   r4   objectr9   r:   r
   r   add_messageINFOr   rM   r   r   rV   rN   rN   rO   Login  s    

r   c              	   C   s>  zi }ddl m}m}m}m} ddlm} tj d}t	j
j|d| j d}t	j
j|d| j d}	tj
jd| j d	d
}
t	j
j|d| j d|dd}t	j
j|d| j d|dd}dd l}tj d}tj
j|| j d}tj
jd| j d|dd}tj
jd| j d|dd}ddddddg}|fdd}|d kr|d}|t|}n|t|}|d krd}|t|}n|t|}|	d krd}	d}|	|d}|d krd}d}||d}n&||t|
t|t|	t|||d}W n tk
r0   td Y nX t| d |S )!Nr   AvgMaxMinSum	timedelta%mZPaid)Zpayment_date__monthpayment_statusrS   ZUnpaidTr   r   payment_totalZpayment_total__sum%d)Zlastbill__dayr   )r   r   acctinputoctetsacctinputoctets__sumacctoutputoctetsacctoutputoctets__suml           z PBl        z TBi   @z GBi   z MBi   z KBr   )z bytez bytesc                 S   sV   |D ]\}}| |kr qqt | | }t|trJ|\}}|dkrF|}n|}t|| S Nr   int
isinstancetuplestrbytesunitsfactorsuffixamosingularmultiplerN   rN   rO   pretty_size  s    
zcustomer.<locals>.pretty_size)unpaid_invoiceunpaid_invoice2)paid_invoicepaid_invoice2)
packets_uppackets_downr   	new_usersr  r!  r"  r   r   z
index.html)django.db.modelsr   r   r   r   r   r  nowstrftimer8   rW   rX   rV   r2   r   	aggregaterm   r6   r  r   r   r   r   )rM   ru   r   r   r   r   r  monthr!  r  r   r"  r   dayr%  uploaddownloadUNITS_MAPPINGr  download_traficr#  upload_traficr$  rN   rN   rO   r     sn    &&&&





r   c                 C   s$  ddl m} ddlm}m}m}m} t j  d}t	j
j|| j d|dd}t j  d}t	j
j|| j d	|dd}	t	j
jt j  |d
d | j d|dd}
|	d krd}	|	||
d}|d krd}|	||
d}|
d krd}
|	||
d}n|	||
d}t| d|S )Nr   r   r   r  Zcreationdate__dayrS   
billamountbillamount__sumr  Zcreationdate__monthrS      daysZcreationdate__gterS   )r   today
last_7dayszdashboard-ecommerce.html)r   r  r&  r   r   r   r   r'  r(  r7   rW   rX   rV   r)  rm   r   )rM   r  r   r   r   r   r+  r9  r*  sumr:  ru   rN   rN   rO   	ecommerce  s<    $$4
r<  c                 C   s   ddl m} |jj| jd}|D ]\}|}d}dd|i}tj||d}| }t	|}	dd	 }
|
|	}||d
}t
|  S d S )Nr   r   rc   z&https://helios-radius.com/hotspot_all/rd   re   rf   c                 S   s>   d}t | dkr"|d7 }| d } qd| dddd	d
dg| f S r   r   r   rN   rN   rO   r   G  s
    
z list_users.<locals>.human_formatr   r   r   rN   rN   rO   
list_users<  s    r=  c                 C   s   t |  tdS )Nra   )r;   r
   rM   rN   rN   rO   
logoutUserV  s    r?  c                 C   s|   ddl m} |jj| jd}|D ]V}|}d}dd|i}tj||d}| }t	|}	d|	}
||
d	}t
|  S d S )
Nr   r   rc   z"https://helios-radius.com/payment/rd   re   rf   {:,}r   r   rM   r   rV   rp   rq   rr   rs   rt   rY   r   r   ru   rN   rN   rO   payments_listZ  s    
rB  c                 C   s  zdi }| j dkrd| jd }| jd }| jd }| jd }| jd }| jd }d}|d	krtj }	d
}
tj|
d}|	| }|d}|dkrtj }	d}
tj|
d}|	| }|d}|dkrtj }	d}
tj|
d}|	| }|d}|dkr&tj }	d}
tj|
d}|	| }|d}|dkr\tj }	d}
tj|
d}|	| }|d}|dkrtj }	d}
tj|
d}|	| }|d}|dkrtj }	d}
tj|
d}|	| }|d}|dkrtj }	d}
tj|
d}|	| }|d}|dkr4tj }	d}
tj|
d}|	| }|d}|dkrjtj }	d}
tj|
d}|	| }|d}|dkrtj }	d}
tj|
d}|	| }|d}|r d d!lm} |jj	| j
d"}|D ]8}|}d#d$|i}tjd%|||d&d'| j
 d(d)}q|r\d d!lm} |jj	| j
d"}|D ]4}|}d#d$|i}tjd%|||d*d'|d(d)}q&|rd d!lm} |jj	| j
d"}|D ]0}|}d#d$|i}tjd+|||dd,d)}q|rtjj| j
d-}|D ]B}d.| d/ t d0 }tjd1|j|j|d2||jd3d4d5d6	d7}qtj }	|	d8}t|||d9|||d: d; d<  t|||d=d>|d?d@dA  W n tk
r   tdB Y nX t| dCS )DNr   rZ   r   r   nextbillpackageamountr   1hrr   hours%d %b %Y %H:%M:%S2hr   3hr   4hr6hr   12hr   1   20   7   3H   30  r   r   rc   rd   re   z&https://helios-radius.com/user-create/Cleartext-Passwordr   )rZ   r   r   r   r   r   r   z'https://helios-radius.com/Radusergroup/r   r   priorityr^   zYour voucher code is z valid for  z	 minutes.0https://smsportal.hostpinnacle.co.ke/SMSApi/sendtextr@   rn   quick	useridr   mobileZmsgTypemsgsenderidZduplicatecheckoutputZ
sendMethodr   %Y-%m-%dr    z(.Days))r   r   r   r   lastbillrC  
billstatuszCash PaymentsMpesazhelios-radiusRefill Session Time)rS   r   r2  
billactionpaymentmethodcreationdatebillperformer
billreasonr   zhotspot.html)r   r   r   r'  r  r(  ri   r   rW   rj   rV   rk   rl   r   r$   rX   minutesr   r   
creationbyr6   r   r7   r   r   r   )rM   ru   rZ   r   r   rC  rD  rE  r   current_date_and_timerH  hours_addedfuture_date_and_timer   rV   rp   rq   rs   rt   sender_detailssenderrf  rdaterN   rN   rO   hotspot_listk  s   






































" r}  c                    sD   dd l }dd l|j d fddtdD }d|i}t|S )Nr   r   c                 3   s   | ]}  V  qd S )N)choice).0ilettersrandomrN   rO   	<genexpr>   s     zvoucher_code.<locals>.<genexpr>   r   )stringr  digitsjoinranger?   )rM   r  r   ru   rN   r  rO   voucher_code  s     r  c                 C   s|   ddl m} |jj| jd}|D ]V}|}d}dd|i}tj||d}| }t	|}	d|	}
||
d	}t
|  S d S )
Nr   r   rc   z"https://helios-radius.com/nas_all/rd   re   rf   r@  r   r   rA  rN   rN   rO   nas_list  s    
r  c                 C   s
   t | dS )Nznas.htmlr   r>  rN   rN   rO   nas  s    r  c                 C   sz  | j dkrp| jd }| jd }| jd }| jd }| jd }| jd }| jd }| jd	 }| jd
 }	tj }
d}d}tj|d}|
| }|d}|rt|dd|d  t|dd|d  |rt||dd  |
d}|d}t	||||d | ||	|||d	  |rpt
jj| jd}|D ]B}d| d | d }tjd|j|j|d||jddd d!	d"}q,t| d#S )$Nr   ZidwZ	usernamewZ	passwordwZfirst_namewZ
last_namewZphonewZ	locationwZdisplZpayment_methodw  31drG  rI  r]  r   r   r   r   r   r   rS  r^  ri  rj  )	r   r   r   contactpersonr   rp  hotspotlocationrk  rC  r^   zDear z, Your internet plan of z has been Created successfully.r`  ra  r@   rn   rb  rc  r   	test.html)r   r   r   r'  r  r(  r=   r   r,   r6   r$   rW   rX   rV   rl   r   r   r   ru  r   )rM   rZ   r   r   r   r   r   locationrD  Zpayment_methodrv  rH  hrrw  rx  r   r|  rC  ry  rz  rf  r{  rN   rN   rO   pppoe  sR    












&
r  c                 C   s|   ddl m} |jj| jd}|D ]V}|}d}dd|i}tj||d}| }t	|}	d|	}
||
d	}t
|  S d S )
Nr   r   rc   z&https://helios-radius.com/userbillinford   re   rf   r@  r   r   rA  rN   rN   rO   userbillinfo_listJ  s    
r  c           5      C   s  t j  }d}d}t j|d}|| }|d}|d}|d}tj  }	}
tjj| j	d}t
jjdd}tjj| j	d	}d
}d
}d
}d
}d
}d
}d
}d
}d
}d
}d
}|	D ]f}|D ]Z}|D ]N}|j}|j}| j	jdkr|j}tt|d d }tt|dd  } | d|  }!|!|kr|j|jkr|D ]\}"|"j|jkr<tt|t|jkr<tt|}|j}|j}|j}|j}|j}|j}q<q||jkr|j|jkr|D ]\}"|"j|jkrtt|t|jkrtt|}|j}|j}|j}|j}|j}|j}qqqqtd| |rZt
jjd|dj|d tjj|dj||d |rdd l}#tjj|d| j	 dd}$|$D ]Z}%tjj| j	 d}&|&D ]<}'|%j}(|'j })|#jd| d |( d |) d gdd qqtd|||| |rt| j	}*|d}|d}ddl m!}+ |+jj"| j	d },|,D ]@}-|-}.d!d"#|.i}/t$j%d#|/||* t|d$|d$d%|d&d'}0q2|rtjj|d&  t'jj| j	d(}1|1D ]R}2d)| d* | d+ }3t$j%d,|2j(|2j|d-|3|2j)d.d/d0d1	d2}4t|4* |4j+ qntd3 t,| d4S )5Nr  r  rG  rI  ri  rR   r   r   r   r   ZAPIV2rK  z ***** zphone emptyr   r   r   pkrk  rC  r   Tr   r   r   r   r   ru  echo user-name=,Acct-Session-Id= | radclient -x -r1  disconnect nairobi12shellzall is a good idear   rc   rd   re   )https://helios-radius.com/BillingHistory/rn  rm  r   rS   r2  ro  rr  rs  rp  rq  r   r^   z%Dear customer, Your internet plan of z. has been renewed successfully and valid till .r`  ra  r@   rn   rb  rc  r   zall this was a stupid idear  )-r   r'  r  r(  r5   rW   r   r/   rX   rV   r=   r6   r   rE  r   r   r  r  r   r   floatr   rZ   r   rG   
subprocessr2   r   r#   acctsessionidphone2runri   r   rj   rk   rl   r   r   r$   r   ru  rn   reasonr   )5rM   rv  rH  r  rw  rx  r   r|  rC  Zusers_paymentspaymentsZ	userplansusersZbillinfor   rE  r   r   rd  Zphone_2Zamount2Z	username2Z	planname2Zuserid2Zuser_plannameZall_paymentsZbillinformationZuserbillingplansr   Zpaid_amountZ	phone_numreZre2Zsum_tZradgroupr  r   activerY   all_ipssession
ip_addressrZ   r   rV   rp   rq   rs   rt   ry  rz  rf  r{  rN   rN   rO   pppoe_payments\  s    







0

r  c                 C   s8   t | jd}| r| }| jdkr.t|  t|jS )Nr   r   )r   rY   r   r   r   r  r   )rM   r[   r   rN   rN   rO   Make_payment  s    
r  c                 C   s&   t | jd}| r|  t|jS r   )r'   rY   r   r   r   r   rN   rN   rO   BillingHistory_create  s    r  c                 C   s(   t jj| j d}t|dd}t|jS rQ   )r7   rW   rX   rV   r'   r   rY   )rM   BillingHistory_datar[   rN   rN   rO   BillingHistory_All  s    r  c                 C   s   ddl m}m}m}m} tjj| j d	|d
d}|rZdt|}dd| i}n"d}dt|}d|d	 d
 i}t|S )Nr   r   rR   r2  r3  r@  r   Ksh. rj  Ksh.r&  r   r   r   r   r7   rW   rX   rV   r)  rm   rk   r  r?   )rM   r   r   r   r   r;  r   ru   rN   rN   rO   sum_list  s    "  
r  c                 C   s   ddl m}m}m}m} dd l}|j|j |j	j
}|j|j |j	j}|j d}tjj||f| j d|dd}	|	rdt|	}
d|
 }d	|i}n"d}	dt|	}
d|
 }d	|i}t|S )
Nr   r   r  )Zcreationdate__rangerS   r2  r3  r@  r  r   )r&  r   r   r   r   r   combiner|  r9  timeminmaxr'  r(  r7   rW   rX   rV   r)  rm   rk   r  r?   )rM   r   r   r   r   r   Z	today_minZ	today_maxr+  r;  r   rY   ru   rN   rN   rO   
today_list  s&    (  r  c           
      C   s   ddl m}m}m}m} tj d}tj	j
|| j d|dd}|}i }|rxdt|}d| }	d	|	i}n"d}dt|}d| }	d	|	i}t|S )
Nr   r   r  r4  r2  r3  r@  r  r   r&  r   r   r   r   r   r'  r(  r7   rW   rX   rV   r)  rm   rk   r  r?   )
rM   r   r   r   r   r*  r;  r   ru   rY   rN   rN   rO   
month_list  s$    $  r  c                 C   s   ddl m}m}m}m} tj d}tj	j
|| j d|dd}tj d}tj	j
|| j d|dd}|}	i }
|d krd}d	t|}	|	d
 d }||d}
n"d	t|}	|	d
 d }d|i}
t|
S )Nr   r   r  r1  r2  r3  r  r4  r@  rj  r  )yxr   r  )rM   r   r   r   r   r+  r9  r*  r;  r   ru   rY   rN   rN   rO   
sales_list$  s(    $$ r  c           	      C   s   ddl m}m}m}m} tjj| j d	|d
d}i }|d krvd}|d d }dt|}d	|d
 d i}n*|d d }dt|}d	|d
 d i}t|S Nr   r   rR   r2  r3     d   r@  r   rj  r  r  )	rM   r   r   r   r   r;  ru   
commissionr   rN   rN   rO   r  <  s     " 
 
r  c           	      C   s   ddl m} ddlm}m}m}m} tjj	t j 
 |dd | j d|dd}i }|d krd}d	t|}d
d| i}nd	t|}d
d| i}t|S )Nr   r   r   r5  r6  r8  r2  r3  r@  r:  r  )r   r  r&  r   r   r   r   r7   rW   rX   r'  rV   r)  rm   rk   r  r?   )	rM   r  r   r   r   r   r:  ru   r   rN   rN   rO   	last_daysO  s    4  r  c           
      C   s   ddl m}m}m}m} tjj| j d	|d
d}|d krzd}|d d }|| }dt|}d	|d
 d i}	n2|d d }|| }dt|}d	|d
 d i}	t|	S r  r  )
rM   r   r   r   r   r;  r  profitr   ru   rN   rN   rO   r  a  s"    " 
 
r  c                 C   s   z~ddl m} |jj| jd}|D ]X}|}d}dd|i}tj||d}| }t	|}	d|	}
||
d	}t
|  W S W n tk
r   td
 Y nX d S )Nr   r   rc   z!https://helios-radius.com/Radacctrd   re   rf   r@  r   something happened)ri   r   rW   rj   rV   rk   rl   rm   rn   r   r?   r   r   rA  rN   rN   rO   	json_listv  s"    
r  c                 C   s|   ddl m} |jj| jd}|D ]V}|}d}dd|i}tj||d}| }t	|}	d|	}
||
d	}t
|  S d S )
Nr   r   rc   z*https://helios-radius.com/Radacct_Hotspot/rd   re   rf   r@  r   r   rA  rN   rN   rO   hotspot_active  s    
r  c                 C   s|   ddl m} |jj| jd}|D ]V}|}d}dd|i}tj||d}| }t	|}	d|	}
||
d	}t
|  S d S )
Nr   r   rc   z,https://helios-radius.com/BillingHistory_Allrd   re   rf   r@  r   r   rA  rN   rN   rO   billing_list  s    
r  c                 C   s
   t | dS )Nzonline_users.htmlr   r>  rN   rN   rO   online_users  s    r  c                 C   sN   | j dd}tjj|d  tjj|d  tjj|d  t| dS NrZ   r   r   r  )	rD   rm   r6   rW   rX   r   r=   r,   r   rM   r   rN   rN   rO   r     s
    r   c                 C   s*   | j dd}tjj|d  t| dS NrZ   r   )rZ   r  )rD   rm   r7   rW   rX   r   r   r  rN   rN   rO   delete_billing  s    r  c                 C   s*   | j dd}tjj|d  t| dS r  )rD   rm   r/   rW   rX   r   r   r  rN   rN   rO   delete_package  s    r  c                 C   s`   | j dd}tjj|d  tjj|d  tjj|d  tjj|d  t	| dS r  )
rD   rm   r6   rW   rX   r   r=   r,   r3   r   r  rN   rN   rO   delete_voucher  s    r  c                 C   s
   t | dS )Nzbilling.htmlr   r>  rN   rN   rO   billing_history  s    r  c                 C   s<   dd l }ddlm} tjjdd|dd}t| dS )Nr   r   T)r   r  r  delete.html)	r   r&  r   r2   rW   rX   r)  rm   r   )rM   r   r   r,  rN   rN   rO   active_records  s    r  c                 C   s|   ddl m} |jj| jd}|D ]V}|}d}dd|i}tj||d}| }t	|}	d|	}
||
d	}t
|  S d S )
Nr   r   rc   z&https://helios-radius.com/InvoiceItem/rd   re   rf   r@  r   r   rA  rN   rN   rO   r     s    
r   c                 C   s
   t | dS )Nzpage-invoices.htmlr   r>  rN   rN   rO   invoice  s    r  c                 C   sJ	  | j dk	r@| jd }| jd }| jd }| jd }| jd }| jd }| jd }| jd	 }d
}	d
}
d
}d
}tjj|d}|D ]}|j}|r|}q~|}q~|dkrtj }d}
tj|
d}|| }|	d}	|dkrtj }d}
tj|
d}|| }|	d}	|dkr8tj }d}
tj|
d}|| }|	d}	|dkrntj }d}
tj|
d}|| }|	d}	|dkrtj }d}
tj|
d}|| }|	d}	|dkrtj }d}
tj|
d}|| }|	d}	|dkrtj }d}
tj|
d}|| }|	d}	|dkrFtj }d}
tj|
d}|| }|	d}	|dkr|tj }d }
tj|
d}|| }|	d}	|d!krtj }d"}
tj|
d}|| }|	d}	|d#krtj }d$}
tj|
d}|| }|	d}	|d%krtj }d&}
tj|
d}|| }|	d}	|d'krTtj }d(}
tj|
d}|| }|	d}	|d)krtj }d*}
tj|
d}|| }|	d}	|d+krtj }d,}
tj|
d}|| }|	d}	|d-krtj }d.}
tj|
d}|| }|	d}	|d/kr,tj }d0}
tj|
d}|| }|	d}	|d1krbtj }d2}
tj|
d}|| }|	d}	|d3krtj }d4}
tj|
d}|| }|	d}	|d5krtj }d6}
tj|
d}|| }|	d}	|d7krtj }d8}
tj|
d}|| }|	d}	|d9kr:tj }d:}
tj|
d}|| }|	d}	|d;krptj }d<}
tj|
d}|| }|	d=}	|d;krtj }d>}
tj|
d}|| }|	d}	|d?krtj }d@}
tj|
d}|| }|	d}	|dAkrtj }dB}
tj|
d}|| }|	d}	|dCkrHtj }dD}
tj|
d}|| }|	d}	|dEkr~tj }dF}
tj|
d}|| }|	d}	|dGkrtj }dH}
tj|
d}|| }|	d}	|dIkrtj }d8}
tj|
d}|| }|	d}	|dJkr tj }dK}
tj|
d}|| }|	d}	|dLkrVtj }dM}
tj|
d}|| }|	d}	|dNkrtj }dO}
tj|
d}|| }|	d}	d
}t
jj|dPdQ}|D ]}|j}qd
}t
jj|dRdQ}|D ]}|j}q|rt
jj|dPdSj||dT |	rt
jj|dRdSj|	dU |r@tjj|d  t||dVdW  |r|dXkrptjj|dYj|||||dZ nHtj }tj|
d}|| }|	d[}tjj|dYj||||||d\ |	r@dd l}tjj|d]| j d^d_}|D ]Z}tjj| j d`}|D ]<}|j}|j }|jda| db | dc | dd gd]de qqt| dfS )gNr   myinput2r   r   contactr   r  myinputrC  r   r   Nowr   secondsrI  	TommorrowrT  rG  rU  rV  rY  rZ  4`   5x   6   rW     8rX  9   10   11  12   138  14P  15h  16  17  18  19  20  21  22  %d %B %Y %H:%M:%S(  23@  24X  25p  26  27  2829  r[  r\  31r  r]  r   r   r   r  r   )r   r   r  rS  r^  Selectr  r   r   r  r   r  ri  r   r   r  r   r  rC  Tr   r  r  r  r  r  r  r  r  )r   r   r6   rW   rX   rZ   r   r'  r  r(  r=   rG   r,   r   r   r  r2   rV   r   r#   r  r  r  r   )rM   r  r   r   r  r   r  rD  rC  r   rH  user_idnew_packageZuser_updateZall_srv  rw  rx  rad_ids
rad_useridall_idsraddsradseridall_isr  r   r  rY   r  r  r  rN   rN   rO   update_pppoe_user  s   












































































































 

 0r&  c                 C   s  | j dkr| jd }| jd }| jd }| jd }| jd }| jd }| jd }| jd	 }d
}	d
}
|dkrtj }d}
tj|
d}|| }|d}	|dkrtj }d}
tj|
d}|| }|d}	|dkrtj }d}
tj|
d}|| }|d}	|dkr8tj }d}
tj|
d}|| }|d}	|dkrntj }d}
tj|
d}|| }|d}	|dkrtj }d}
tj|
d}|| }|d}	|dkrtj }d}
tj|
d}|| }|d}	|dkrtj }d}
tj|
d}|| }|d}	|dkrFtj }d}
tj|
d}|| }|d}	|d kr|tj }d!}
tj|
d}|| }|d}	|d"krtj }d#}
tj|
d}|| }|d}	|d$krtj }d%}
tj|
d}|| }|d}	|d&krtj }d'}
tj|
d}|| }|d}	|d(krTtj }d)}
tj|
d}|| }|d}	|d*krtj }d+}
tj|
d}|| }|d}	|d,krtj }d-}
tj|
d}|| }|d}	|d.krtj }d/}
tj|
d}|| }|d}	|d0kr,tj }d1}
tj|
d}|| }|d}	|d2krbtj }d3}
tj|
d}|| }|d}	|d4krtj }d5}
tj|
d}|| }|d}	|d6krtj }d7}
tj|
d}|| }|d}	|d8krtj }d9}
tj|
d}|| }|d}	|d:kr:tj }d;}
tj|
d}|| }|d<}	|d:krptj }d=}
tj|
d}|| }|d}	|d>krtj }d?}
tj|
d}|| }|d}	|d@krtj }dA}
tj|
d}|| }|d}	|dBkrtj }dC}
tj|
d}|| }|d}	|dDkrHtj }dE}
tj|
d}|| }|d}	|dFkr~tj }dG}
tj|
d}|| }|d}	|dHkrtj }d7}
tj|
d}|| }|d}	|dIkrtj }dJ}
tj|
d}|| }|d}	|dKkr tj }dL}
tj|
d}|| }|d}	|dMkrVtj }dN}
tj|
d}|| }|d}	|rrtjj|dOj	|dO |	rtjj|dPdQj	|	dR |rt
jj|dOj	||dS |r&|dTkrtjj|dUj	|||||dV nHtj }tj|
d}|| }|dW}tjj|dUj	||||||dX |rdd l}tjj|dY| j dZd[}|D ]Z}tjj| j d\}|D ]<}|j}|j }|jd]| d^ | d_ | d` gdYda qlqRt| dbS )cNr   rZ   r   r   r  r   r  r  rC  r   r  r   r  rI  r  rT  rG  rU  rV  rY  rZ  r  r  r  r  r  r  rW  r  r  rX  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r[  r\  r  r  r   r   r  r  )r   r   r  r  r  ri  r  Tr   r  r  r  r  r  r  r  r  )r   r   r   r'  r  r(  r=   rW   rX   rG   r,   r6   r  r2   rV   r   r#   r  r  r  r   )rM   r  r   r   r  r   r  rD  rC  r   rH  rv  rw  rx  r  r   r  rY   r  r  r  rN   rN   rO   update_pppoe  s   









































































































 

 0r'  c                 C   s
   t | dS )Nzwifi_online.htmlr   r>  rN   rN   rO   wifi_online  s    r(  c           
      C   s   | j dkr| jd }| jd }| jd }| jd }| jd }| jd }| jd }| jd }tj }	t| j ||d	|||||	|d
d  t| dS )Nr   statustypeplansrE  r   r   	taxamount0none)rS   r   r   quantitypayment_taxpayment_costr  r   payment_dater  pending_reasonr  )r   r   r   r'  r8   rV   r   r   )
rM   r   r)  r*  r+  rE  r   r   r,  r|  rN   rN   rO   create_invoice  s    









&r4  c                 C   s,   t j  }tddddd|d  t| dS )NZ33Z344Z3344Z
0708562799hh)
invoice_idrE  type_idr   ru  r|  zpayments.html)r   r'  r5   r   r   )rM   r|  rN   rN   rO   payments_pay  s    
r8  c                 C   s
   t | dS Ninvoice-pdf.htmlr   r>  rN   rN   rO   deduct  s    r;  c                 C   sH   t | }||}t }tt|d|}|jsDt| ddS d S )Nz
ISO-8859-1application/pdfcontent_type)	r   r   rB   r   ZpisaDocumentencodeerrr   getvalue)Ztemplate_srcZcontext_dicttemplatehtmlresultpdfrN   rN   rO   render_to_pdf  s    
rF  zDennnis Ivanov Companyz123 Street nameZ	VancouverZWAZ98663z555-555-2345zyouremail@dennisivy.comzdennisivy.com)r   r   citystateZzipcoder   r   Zwebsitec                   @   s   e Zd Zdd ZdS )ViewPDFc                 O   s   t dt}t|ddS )Nr:  r<  r=  rF  rY   r   )selfrM   argskwargsrE  rN   rN   rO   rm     s    
zViewPDF.getN__name__
__module____qualname__rm   rN   rN   rN   rO   rI    s   rI  c                   @   s   e Zd Zdd ZdS )DownloadPDFc                 O   s2   t dt}t|dd}dd }d| }||d< |S )Nr:  r<  r=  zInvoice_%s.pdfZ12341231zattachment; filename=%szContent-DispositionrJ  )rK  rM   rL  rM  rE  rt   filenamecontentrN   rN   rO   rm   "  s    
zDownloadPDF.getNrN  rN   rN   rN   rO   rR  !  s   rR  c                 C   s   i }t | d|S r9  r   )rM   ru   rN   rN   rO   index+  s    rU  c                 C   s   | j dkr| jd }tjj|dd}|D ]}dd l}d}|j|j|}|j }|	d}|| }	|	j
d d d }
tjj|d	 rtjj|d	j|d
d|
d nt|d
d|
d  td  S t| dS )Nr   rV   r   r  r   r	  rT  <   r   zSession-Timeoutr   r  
pppoe_listr  )r   r   r=   rW   rX   r   strptimer   r'  r(  r7  r3   existsrG   r   r
   r   )rM   r   Z	user_datar  r   date_formatnextr'  currentdeltaansrN   rN   rO   sessiontimeout0  s     



r_  c                 C   sz   t jj| j d}tjdd |D dd |D dd |D ddddd	}|jd
dddd | }d|i}t| d|S )NrR   c                 S   s   g | ]
}|j qS rN   )r2  r  crN   rN   rO   
<listcomp>G  s     zchart.<locals>.<listcomp>c                 S   s   g | ]
}|j qS rN   )rq  r`  rN   rN   rO   rb  G  s     zUser Data AnalyticsAmountDate)r  r  )r  r  colortitlelabelsrT  centerg      ?)	font_sizeZxanchorr  )rf  chartz
table.html)	r7   rW   rX   rV   pxlineZupdate_layoutto_htmlr   )rM   Zco2figrj  ru   rN   rN   rO   rj  D  s    (rj  c                 C   s
   t | dS )Nzpage-profile.htmlr   r>  rN   rN   rO   r  T  s    r  c                 C   s
   t | dS )Nzindex4.htmlr   r>  rN   rN   rO   sales_analyticsW  s    ro  c                 C   sN  z i }ddl m} | jdd}tjj| j|d}tjjd|d}tjjd|d}t	jj|d	| j
 d
|dd}t	jj|d	| j
 d
|dd}t	jj|d	| j
 d
}	tjj|| j d}
ddddddg}|fdd}|d krd}|t|}n|t|}|d kr0d}|t|}n|t|}|	r|	D ]}|D ]|}|D ]p}|D ]d}dd l}|j}t|j|d}|j|j|j|j||||
|j||j|j|j|j|j|j|jd}q^qVqNqFnN|D ]H}|D ]<}|D ]0}|
|j||j|j|j|j|j|j|jd
}qqސqW n tk
r@   td Y nX t | d|S )Nr   r  rV   r   r   r   r   r  r]  T)r   r   r   r  r  r  r	  )r   rS   r
  r  r  r  r  r  c                 S   sV   |D ]\}}| |kr qqt | | }t|trJ|\}}|dkrF|}n|}t|| S r  r  r  rN   rN   rO   r  o  s    
z"customer_info.<locals>.pretty_sizer  )r   framedipaddressnasipaddresscallingstationidr#  r$  uptimer  r  r   rp  r  rZ   r  r   	passwordsdue)
r  r  r   rp  r  rZ   r  r   rv  ru  r   zcustomer_details.html)!r&  r   rD   rm   r6   rW   rX   rV   r=   r2   r   r)  r7   r  r   acctsessiontimer  r  r   rq  rr  rs  r  rp  r  cashr   r   r   rZ   r   r   r   )rM   rY   r   r   r   ZRadcheck_Userr   r,  r-  Zconn_detailsr  r.  r  r/  r#  r0  r$  Z	user_connr   Z
users_inforu  r   secconvertrN   rN   rO   customer_infoZ  s    ((

r{  c                 C   s  zt jj| j d}|r$td n| jdkr| jd }| jd }| jd }| jd }| jd }| jd	 }| jd
 }tj }	|		d}
t |||d||| j |||
|
|
d
  tdW S i }|D ]}| jdkrt| jd }| jd }| jd }| jd }| jd }| jd	 }| jd
 }tj }	|		d}
t jj|jd rtt jj|jdj|||d||| j |||
|
|
d |jd |j }|j}|j}|j}|j}|j}||||||f  W S W n tk
r   td Y nX d S )Nr  rY   r   	firstnamelastname
departmentr   r   r   ipri  r   r|  email1r  r   r}  r~  ru  r   phone1rq  
updatedate	lastloginuser_profiler|  rj  r  )r#   rW   rX   rV   r   r   r   r   r'  r(  r   r
   r|  rY  rG   r}  r  r   r~  r  r  r   )rM   r   r|  r}  r~  r   r  r   r  rv  r|  ru   Operatorr   r   rN   rN   rO   operaters_user  sN    










(









2r  c                 C   s   | j dkr| jd }| jd }| jd }| jd }| jd }| jd }| jd }| jd }| jd	 }tjj|d
}	d}
|	D ]
}|j}
qz|rtjj|
dj|dd|d tjj|dj||||||d t| dS )Nr   r  r   new_plannamer}   r   r   r   r   )r   r   r  r   r   )r   r   r   r   )r   r}   r   r   r   r   r  )	r   r   r0   rW   rX   rZ   rG   r/   r   )rM   r  r   r  r}   r   r   r   r   ZRadgroupradZ	RadgroupsrN   rN   rO   update_plan  s$    









 r  c                 C   s  zi }t jj| j d}|r(td n| jdkr| jd }| jd }| jd }| jd }| jd }| jd	 }| jd
 }	tj }
|
	d}t |||	d||| j |||||d
  |D ]}| jdkr| jd }| jd }| jd }| jd }| jd }| jd	 }| jd
 }	tj }
|
	d}t jj|jd rt jj|jdj|||	d||| j |||||d q|D ]6}|jd |j |j|j|j|j|j|j|jd}qlW n tk
r   td Y nX t| d|S )Nr  rY   r   r|  r}  r~  r   r   r   r  ri  r   r  r  rj  )r|  Z
firstname2r}  r   r   r~  r   r   r   zpage-empty.html)r#   rW   rX   rV   r   r   r   r   r'  r(  r   r|  rY  rG   r}  r  r   r~  r  r  r   r   )rM   ru   r   r|  r}  r~  r   r  r   r  rv  r|  r  rN   rN   rO   	edit_user  sT    










(









4r  c                 C   sJ   | j d}g }|r<tjj| j|d}|D ]}||j q*td|dS )Nr   )r   Zusername__icontains   )r)  rY   )	rD   rm   r6   rW   rX   rV   appendr   r?   )rM   r   resultsr  rV   rN   rN   rO   search_user)  s    r  c           
      C   s   zddl m} ddlm}m}m}m} tjj	t j 
 |dd | j d|dd}d	d
 }i }|d krd}ddt| }	dddt| i}n(ddt| }	dddt| i}t|W S  tk
r   td Y nX d S )Nr   r   r      r6  r8  r2  r3  c                 S   s>   d}t | dkr"|d7 }| d } qd| ddddd	d
g| f S )Nr   r   r   z%.1f%sr   r   r   r   r   r   r   r   rN   rN   rO   r   8  s
    
z last_month.<locals>.human_formatr  r@  	lastmonthr  )r   r  r&  r   r   r   r   r7   rW   rX   r'  rV   r)  rm   rk   r  r?   r   r   )
rM   r  r   r   r   r   r  r   ru   r   rN   rN   rO   
last_month2  s&    4	  
r  c           
      C   sh   ddl m} |jj| jd}|D ]B}|}d}dd|i}tj||d}| }d|i}	t	|	  S d S )	Nr   r   rc   z%https://helios-radius.com/draft_list/rd   re   rf   rY   rh   ro   rN   rN   rO   	draft_allQ  s     r  c                 C   sF   | j dkr<| jd }| jd }| j}|r<t||||d  t| dS )Nr   rf  rf  r   r   ru  r_   r  )r   r   rV   r%   r   r   )rM   rf  messager  rN   rN   rO   draft_  s    


r  c                 C   s  zi }t jj| jd}|r$td nB| jdkrf| jd }| jd }| jd }| j}t ||||d  |D ]t}| jdkr| jd }| jd }| jd }| j}t jj|jd	 rt jj|j
d	j|||d
 |j|j|jd}qjW n tk
r   td Y nX t| d|S )Nr^   r   r   r   r   rg  r  r  r  )r   r   ru  )r   r   rg  r   zapp-email.html)r$   rW   rX   rV   r   r   r   r   r   rY  rZ   rG   r   ru  r   r   )rM   ru   ry  r   r   rg  r  rz  rN   rN   rO   bulksmsh  s4    








r  c                 C   s   | j dkr.| jd }| jd }| jd }| j}tjj| jd}d}|D ]}||jkrtjj| jd}|D ].}	tj	d|	j|	j
|d|j
|	jd	d
dd	d}
qhqFtjj| jd}|D ],}	tj	d|	j|	j
|d||	jd	d
dd	d}
qqFt| dS )Nr   r   r  r  r^   r   r`  ra  r@   rn   rb  rc  r   r  )r   r   rV   r%   rW   rX   r   r$   rl   r   r   ru  r   )rM   r   rf  Zmyselectr  r  ZsmsZdraftsry  rz  r{  rN   rN   rO   send_sms  sL    






r  c                 C   s6  | j dkr,| jd }| jd }d}d}tjj| j |d}|D ]}|j}|j}q@d}tjj|dd}|D ]
}	|	j}qjd}
tjj|dd}|D ]
}|j}
q|rtjj|dd	j	|d
 tjj|
dd	j	|d
 |rt
jj|d
  t
||dd  tjj|| j dj	|d
 t| td| d S t| dS )Nr   	user_namerZ   r   rp  r]  r  r   r  r   rS  r^  )r  r   z*https://helios-radius.com/user_info/?user=r  )r   r   r6   rW   rX   rV   r   rZ   r=   rG   r,   r   r   r   r
   r   )rM   r  r   r  rS   ZUserbilluserinfor   r!  r"  r#  r$  r%  rN   rN   rO   changeusername  s6    

r  c                 C   s   | j dkr| jd}| jd}ztjj||d}W nX   t| tjd t| ||d}|d k	rzt	| | t
d Y S t| tjd Y nX t| dS )	Nr   r   r   r   z$username or password does not exist.zclient-portalr   z
login.html)r   r   rm   r.   ZempAuth_objectr   r   r   r9   r:   r
   r   r   rN   rN   rO   login_userportal  s    

r  zuser-portalc                 C   s
   t | dS )Nzuserportal.htmlr   r>  rN   rN   rO   client_portal  s    r  c                 C   st  | j dkrj| jd }| jd }d}d}|dkr\tj }d}tj|d}|| }|d}|d	krtj }d
}tj|d}|| }|d}|dkrtj }d}tj|d}|| }|d}|dkrtj }d
}tj|d}|| }|d}|dkr.tj }d}tj|d}|| }|d}|dkrdtj }d}tj|d}|| }|d}|dkrtj }d}tj|d}|| }|d}|dkrtj }d}tj|d}|| }|d}|dkrtj }d}tj|d}|| }|d}|dkr<tj }d}tj|d}|| }|d}|dkrrtj }d}tj|d}|| }|d}|rjtj }|d}|d}tjj|ddj	|d tjj|d d}	d}
|	D ]}|j
}
q|
rtjj|
d!j	d|d" tjj|d#j	||d$ d%d&lm} |jj| jd'}|D ]>}|}d(d)|i}tjd*||| j td+d,d+d-|d.d/}q*t| d0S )1Nr   Zrefillr   r   rF  r   rG  rI  rJ  rK  rL  rM  rN  rO  rP  rQ  rR  rS  rT  rU  rV  r  rX  rY  rZ  r[  r\  ri  r   r  r  zAccess-Periodr  )r   r   r   r  r   r   rc   rd   re   r  rn  zHelios Radiusrm  r  r   r  )r   r   r   r'  r  r(  r=   rW   rX   rG   rZ   r6   ri   r   rj   rV   rk   rl   r   rE  r   )rM   rC  r   r   rH  rv  rw  rx  r|  testZuseridstestsr   rV   rp   rq   rs   rt   rN   rN   rO   update_voucher  s    


































r  c                 C   s   t jjddd  t| dS )NZ28351281r   r   r  )r6   rW   rX   r   r   r>  rN   rN   rO   
delete_allO	  s    r  )osdjango.views.decorators.cacher   Zdjango.views.decorators.varyr   django.confr   django.httpr   django.template.loaderr   Z	xhtml2pdfr   Zdjango.contrib.staticfilesr   	itertoolsr	   Z	reportlabiodjango.shortcutsr
   Zplotly.expressexpressrk  r   Zreportlab.pdfgenr   django.views.decorators.csrfr   django.contribr   r   r   rest_framework.responser   Zrest_framework.permissionsr   ri   r   Zrest_framework.decoratorsr   r   r[   r   r   r   r   r   r   r    r!   r"   Zcustomer.modelsr#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   django.contrib.authr9   r:   r;   django.contrib.auth.decoratorsr<   rn   rl   	threadingmodelsr=   asyncioaiohttpplatformurllib.requesturllibbase64rest_frameworkr>   r?   environrB   django.viewsrC   rP   r\   r]   r`   rv   r{   r~   r   r   r   r   r   r   r   rL   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r<  r=  r?  rB  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r   r  r&  r'  r(  r4  r8  r;  rF  rY   rI  rR  rU  r_  rj  r  ro  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rN   rN   rN   rO   <module>   s@  



















/


	








M
$

 
	


.
w

















   s








[,
/	




(
h