o
    q	c                     @   s<  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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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) 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&m0Z0 d dl
mZ d d%l&m1Z1 d d&l2m3Z3m4Z4m5Z5 d d'l6m7Z7 d dl8Z8d dl9Z9d dl:Z:dd(l;m<Z< d dl=Z=d dl>Z>d dl?Z?d dl@Z@d dlAZBd dl8Z8d dlZd dlCZCd dl=Z=d dl>Z>d dlmZ d d)lDmEZE d d*lmFZF d+e?jGd,< ed-gd.d/ ZHed-ge7d0d1d2d3 ZIed-ge7d0d1d4d5 ZJe7d0d1d6d7 ZKed8geeEj%fd9d: ZLed-gd;d< ZMed-ge7d0d1d=d> ZNe7d0d1d?d@ ZOed8geeEj%fdAdB ZPdCdD ZQed-gdEdF ZRed-gdGdH ZSed8geeEj%fdIdJ ZTed8gdKdL ZUed-gdMdN ZVed-geeEjfdOdP ZWed8geeEj%fdQdR ZXed8geeEj%fdSdT ZYed-ge7d0d1dUdV ZZed-ge7d0d1dWdX Z[dYdZ Z\d[d\ Z]e7d0d1d]d^ Z^e7d0d1d_d` Z_e7d0d1dadb Z`dcdd Zae7d0d1dedf Zbe	dgdh Zcdidj Zde7d0d1dkdl Zedmdn Zfdodp Zge7d0d1dqdr Zhdsdt Zied8geeEj%fdudv Zjed8geeEj%fdwdx Zked-gdydz Zle7d0d1d{d| Zmd}d~ Zndd Zodd Zpe7d0d1dd Zqe7d0d1dd Zrdd Zsdd Ztdd Zudd Zvdd Zwe	dd Zxe	dd Zydd Zzdd Z{e7d0d1dd Z|dd Z}e	dd Z~dd Ze	dd ZdS )    )chainN)FileResponse)canvas)csrf_exempt)messages)datetimerender)r	   redirectResponse)IsAuthenticatedToken)api_viewpermission_classes   )RadcheckSerializer)RadgroupreplySerializer)RadacctSerializer)RadusergroupSerializer)PaymentSerializer)BillingPlansSerializer)UserbillinfoSerializer)UserSerializer)BillingHistorySerializer)NasSerializer)InvoiceItemsSerializer)AllowAny)Radusergroup)InvoiceItems)AuthUser)BillingPlans)Radgroupreply)Nas)Radacct)Registration)Payment)Userbillinfo)BillingHistory)authenticateloginlogout)login_required)Radcheck)permissions)JsonResponsetrueDJANGO_ALLOW_ASYNC_UNSAFE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 r=   5C:\Users\DAVID\Desktop\project\apps\customer\views.pyapioverview;   s    r?   
auth-login)	login_urlc                 C   s2   | j }tjj|ddd}t|dd}t|jS )NzFixed-Pppoe)planidplantyperadiusTmany)userr"   objectsfilterusingr   r   data)r<   idZBillingPlans_data
serializerr=   r=   r>   BillingPlans_AllN   s   
rN   c                 C   s&   | j }tj }t|dd}t|jS NTrE   )rG   r    rH   allr   r   rK   )r<   rL   InvoiceItems_datarM   r=   r=   r>   InvoiceItem_AllU   s   

rR   c                 C      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   rG   z'http://127.0.0.1:8000/BillingPlans_All/Authorizationtoken {}headersc                 S   @   d}t | dkr|d7 }| d } t | dksd| g d| f S Nr   i  r   g     @@z%.2f%s) KMGTPabsnum	magnituder=   r=   r>   human_formath      z+BillingPlans_All_list.<locals>.human_formatrK   	count_allrest_framework.authtoken.modelsr   rH   get_or_createrG   formatrequestsgetjsonlenr0   r<   r   rG   tokenmyTokenmyUrlheadresponserK   countrf   ri   contextr=   r=   r>   BillingPlans_All_list]   s    rz   POSTc                 C   &   t | jd}| r|  t|jS NrK   )r   rK   is_validsaver   r<   rM   r=   r=   r>   r;   v      
r;   c                 C   &   t j d}t|dd}t|jS NrD   TrE   )r$   rH   rP   rJ   r   r   rK   )r<   ZNas_datarM   r=   r=   r>   Nas_All~   s   
r   c                 C   s    t j }t|dd}t|jS rO   )r#   rH   rP   r   r   rK   )r<   ZRadgroupreply_datarM   r=   r=   r>   Radgroupreply_All   s   

r   c           
      C   sh   ddl m} |jj| jd}|D ]!}|}d}dd|i}tj||d}| }d|i}	t	|	  S d S )	Nr   r   rT   z$http://127.0.0.1:8000/Radgroupreply/rU   rV   rW   rK   )
rk   r   rH   rl   rG   rm   rn   ro   rp   r0   )
r<   r   rG   rs   rt   ru   rv   rw   rK   ry   r=   r=   r>   Radgroupreply_list   s   r   c                 C   r|   r}   )r   rK   r   r   r   r   r=   r=   r>   create_Radgroupreply   r   r   c                 C   s   | j dkrV| jd }| jd }| jd }| jd }| jd }| jd }|r4tjd| j d	|d
|dd}|rVtjd|||||||dd|dddd}t| tjd| d  t| dS )Nr{   rL   package_namepackage_type
rate_limit	unit_timepricez+http://127.0.0.1:8000/create_Radgroupreply/zMikrotik-Rate-Limit:=)rL   	attribute	groupnameopvaluerp   z*http://127.0.0.1:8000/create_BillingPlans/YesFixed.Ksh)plannamerB   rC   plantimetypeZplantimerefillCostZplantrafficrefillCostplantraffictotalplanrecurringplanrecurringbillingscheduleplancostplancurrency
planactivezPackage z add successfully!z
plans.html)	methodr{   rn   postrG   r   add_messageINFOr	   )r<   rL   r   r   r   r   r   rw   r=   r=   r>   
plans_list   s@   









r   c                 C   s,   | j }tjj| d}t|dd}t|jS )NaddressTrE   rG   r(   rH   rI   r   r   rK   )r<   rL   ZUserbillinfo_datarM   r=   r=   r>   Userbillinfo_all   s   
r   c                 C   s.   | j }tjj| dd}t|dd}t|jS )NhotspotcompanyleadTrE   r   )r<   rL   Zhotspot_datarM   r=   r=   r>   hotspot_all   s   
r   c                 C   r|   r}   )r   rK   r   r   r   r   r=   r=   r>   create_userbillinfo   r   r   c                 C   sx   | j dkr:t| jd}i }| r3| }d|d< |j|d< |j|d< tjj	|dj
}||d< t|S |j}t|S d S )	Nr{   r~   zsuccesfully registeredrw   emailusernamerT   rs   )r   r   rK   r   r   r   r   r   rH   ro   keyerrorsr   )r<   rM   rK   accountrs   r=   r=   r>   Register_user   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r9tjjddd}t|dd}t|jS tjjd| dd}t|dd}t|jS )	NZdavid
Expirationr   rD   TrE   admin)r   rL   )rG   r.   rH   rI   rJ   r   r   rK   )r<   rL   Zradcheck_datarM   r=   r=   r>   ShowAll   s   


r   c                 C   r   r   )r'   rH   rP   rJ   r   r   rK   )r<   Zpayment_datarM   r=   r=   r>   Payment_list   s   
r   c                 C   r|   r}   )r   rK   r   r   r   r   r=   r=   r>   create_user   r   r   c                 C   r|   r}   )r   rK   r   r   r   r   r=   r=   r>   create_Radusergroup  r   r   c                 C   .   t jjd| j dd}t|dd}t|jS )NTZPPP)acctstoptime__isnullcalledstationidframedprotocolrE   r%   rH   rI   rG   get_short_namer   r   rK   r<   ZRadacct_datarM   r=   r=   r>   Radacct_All     
r   c                 C   r   )NTr   r   	nasportidr   rE   r   r   r=   r=   r>   Radacct_Hotspot  r   r   c                 C   st   | j dkr5| 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   rD   )rJ   r@   zauth-register.html)r   r{   r&   r   r
   r	   )r<   r   r   r   r   r   r   r=   r=   r>   Register  s   







r   c                 C   s   | j dkr=| jd}| jd}z	tjj|d}W n"   t| ||d}|d ur4t| | td Y S t	| tj
d Y 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{   ro   r&   objectr*   r+   r
   r   r   r   r	   )r<   r   r   rG   r=   r=   r>   Login#  s   


r   c                 C   sv  dd l }tj d}tjj|| j d}tjj| j d}tjj| j dd}ddl	m
} tjj| j tj dd	}tjjd
| j dd}tjjd
| j d|dd}	tjjd
| j d|dd}
g d}|fdd}|
d u rd}|t|}n|t|
}|
d u rd}|t|}n|t|	}t|||t|t|t|t|d}t| d|S )Nr   %m)Zlastbill__monthr   rB   r   r   Sum%Y-%m-%d)r   Znextbill__lteTr   )r   r   acctinputoctetsacctinputoctets__sumacctoutputoctetsZ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 nqt | | }t|tr%|\}}|dkr#|}n|}t|| S )Nr   )int
isinstancetuplestr)bytesunitsfactorsuffixamosingularmultipler=   r=   r>   pretty_sizeF  s   
zcustomer.<locals>.pretty_size)	new_users
packets_uppackets_downVouchersinternet_plansr   expiredzdashboard.html)	timedeltar   nowstrftimer(   rH   rI   rG   r"   django.db.modelsr   r%   r   	aggregatero   r   rq   r	   )r<   r   monthr   r   r   r   r   r   uploadZdownloadUNITS_MAPPINGr   Zdownload_traficr   Zupload_traficr   ry   r=   r=   r>   r   2  s:    &&
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 u rld}	|	||
d}|d u rxd}|	||
d}|
d u rd}
|	||
d}n|	||
d}t| d|S )Nr   r   AvgMaxMinr   %dZcreationdate__dayrB   
billamountbillamount__sumr   Zcreationdate__monthrB      daysZcreationdate__gterB   )ri   today
last_7dayszdashboard-ecommerce.html)r   r   r   r   r   r   r   r   r   r)   rH   rI   rG   r   ro   r	   )r<   r   r   r   r   r   dayr  r   sumr  ry   r=   r=   r>   	ecommercej  s<   $$4r  c                 C   rS   )Nr   r   rT   z"http://127.0.0.1:8000/hotspot_all/rU   rV   rW   c                 S   rY   rZ   ra   rc   r=   r=   r>   rf     rg   z list_users.<locals>.human_formatrh   rj   rr   r=   r=   r>   
list_users  s    r  c                 C   s   t |  tdS )Nr@   )r,   r
   r<   r=   r=   r>   
logoutUser  s   r  c                 C   |   ddl m} |jj| jd}|D ]+}|}d}dd|i}tj||d}| }t	|}	d|	}
||
d	}t
|  S d S )
Nr   r   rT   zhttp://127.0.0.1:8000/payment/rU   rV   rW   {:,}rh   rj   r<   r   rG   rs   rt   ru   rv   rw   rK   rx   ri   ry   r=   r=   r>   payments_list     
r  c              	   C   s  | j dkr| jd }| jd }| jd }| jd }| jd }d}d}|dkr=tj }d	}tj|d
}	||	 }
|
d}|dkrWtj }d}tj|d
}	||	 }
|
d}|dkrqt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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rDtj }d}tj|d
}	||	 }
|
d}|d kr_tj }d!}tj|d
}	||	 }
|
d}|d"krzt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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}|d0kr7tj }d1}tj|d
}	||	 }
|
d}|d2krRtj }d3}tj|d
}	||	 }
|
d}|d4krmtj }d5}tj|d
}	||	 }
|
d}|d4krtj }d6}tj|d
}	||	 }
|
d}|d7krtj }d8}tj|d
}	||	 }
|
d}|d9k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}|dAkr*tj }d1}tj|d
}	||	 }
|
d}|dBkrEtj }dC}tj|d
}	||	 }
|
d}|dDkr`tj }dE}tj|d
}	||	 }
|
d}|dFkr{tj }dG}tj|d
}	||	 }
|
d}|rtjdH||dIdJ|dKdL}|rtjdH||dMdJ|dKdL}|rtjdN||ddOdL}|dP}t|||dQ|||dR dS dT	  |rt
| t
jdU| dV  tdWS t| dXS )YNr{   rL   r   r   nextbillpackager[   1   hours%d %B %Y %H:%M:%S20   3H   4`   5x   6   7   8   9   10   11  12   138  14P  15h  16  17  18  19  20  21  22  (  23@  24X  25p  26  27  2829  30  31  "http://127.0.0.1:8000/user-create/Cleartext-Passwordr   rL   r   r   r   r   r   r   #http://127.0.0.1:8000/Radusergroup/r   r   priorityr   r    z(.Days))r   r   r   r   lastbillr  
billstatuszVoucher  added successfully!z
list-userszdata-list-view.html)r   r{   r   r   r   r   rn   r   r(   r   r   r   r   r
   r	   )r<   rL   r   r   r  r  r   r  current_date_and_timehours_addedfuture_date_and_timerw   dater=   r=   r>   hotspot_list  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randomr=   r>   	<genexpr>  s    zvoucher_code.<locals>.<genexpr>   r   )stringre  digitsjoinranger0   )r<   rh  r   ry   r=   rc  r>   voucher_code  s   rl  c                 C   r	  )
Nr   r   rT   zhttp://127.0.0.1:8000/nas_all/rU   rV   rW   r
  rh   rj   r  r=   r=   r>   nas_list  r  rm  c                 C   
   t | dS )Nznas.htmlr   r  r=   r=   r>   nas     
ro  c                 C   sR  | j dkr| jd }| jd }| jd }| jd }| jd }| jd }| jd }| jd	 }| jd
 }	tj }
d}tj|d}|
| }|d}|rWtjd||dd|dd}|rftjd||dd|dd}|rstjd||ddd}|
d}|d}tjd||||d | ||	|||d	d}|rt	| tj
d| d  tdS t| dS )Nr{   rL   r   r   r   r   phonelocationr  payment_methodrN  r  r  rQ  rR  r   rS  r   r   rT  r  rU  r   z*http://127.0.0.1:8000/create_userbillinfo/rW  )	r   r   r   contactpersonrq  paymentmethodhotspotlocationrX  r  user rZ  
pppoe_listzpppoe_list.html)r   r{   r   r   r   r   rn   r   r   r   r   r
   r	   )r<   rL   r   r   r   r   rq  rr  r  rs  r[  r  r\  r]  r   rw   r^  r  r=   r=   r>   pppoe  sl   



















ry  c                 C   r	  )
Nr   r   rT   z"http://127.0.0.1:8000/userbillinforU   rV   rW   r
  rh   rj   r  r=   r=   r>   userbillinfo_list
  r  rz  c                 C   s  t j  }d}t j|d}|| }|d}|d}|d}| j}tj }	tj }
t	jj
dd}tjj
| d}|	D ]}|j}|
D ]}|j}|D ]	}|j|krX|j|jkrXt|jd |D ]}|j|jkrWt| |j kr|j}| j}|d}|d}tjd	|| t|d
dd
ddd}t|t|j }|dk rd}tjj
|jdj|d qftjj
|jdj|d td|j t	jj
|jdj|d tjj
|jdj||d qft| |j krWt|t|j }|dk r	d}tjj
|jdj|d qf|j}| j}|d}|d}tjd	|| t|d
dd
d|dd}tjj
|jdj|d td|j t	jj
|jdj|d tjj
|jdj||d qfqNqFq>t| dS )NrP  r  r  r   r   r   r   Truez%http://127.0.0.1:8000/BillingHistory/zRefill Session TimezHelios RadiusZMpesa)r   rB   r   
billactionbillperformer
billreasonru  r   r   pk)amountzuser activated succesfullyr   )rX  r  )r   rB   r   r|  r}  r~  ru  creationdatez	test.html)r   r   r   r   rG   r'   rH   rP   r"   r.   rI   r(   r  r   rq  notesprintr   r   r   rn   r   rL   r6   r	   )r<   r[  r  r\  r]  r   r^  r  rL   Zusers_paymentsZuserbillingusersZbillinfoZall_users_listr  Zuserbilling_listZ	plannamesrP   Zradgroupr   rw   balancenew_balancer=   r=   r>   pppoe_payments  s   

















:r  c                 C   r|   r}   )r   rK   r   r   r   r   r=   r=   r>   Make_paymentf  r   r  c                 C   r|   r}   )r   rK   r   r   r   r   r=   r=   r>   BillingHistory_createn  r   r  c                 C   s(   t jj| j d}t|dd}t|jS )Nr   TrE   )r)   rH   rI   rG   r   r   rK   )r<   ZBillingHistory_datarM   r=   r=   r>   BillingHistory_Allv  s   
r  c                 C   s   ddl m}m}m}m} tjj| j d	|d
d}|r2dt|}d|d d	 i}t|S d}dt|}d|d d	 i}t|S )
Nr   r   r   r   r   r
  ri   rW  r   r   r   r   r   r   r)   rH   rI   rG   r   ro   rm   r   r0   )r<   r   r   r   r   r  ri   ry   r=   r=   r>   sum_list{  s   "	r  c           
      C   s   ddl m}m}m}m} tj d}tj	j
|| j d|dd}|r=dt|}|d d	 }d
|i}	t|	S d}dt|}|d d	 }d
|i}	t|	S )Nr   r   r   r   r   r   r
  rW  r   ri   r   r   r   r   r   r   r   r   r)   rH   rI   rG   r   ro   rm   r   r0   )
r<   r   r   r   r   r  r  ri   rK   ry   r=   r=   r>   
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 }|rAdt|}|d d	 }	d
|	i}t|S d}dt|}|d d	 }	d
|	i}t|S )Nr   r   r   r   r   r   r
  rW  r   ri   r  )
r<   r   r   r   r   r   r  ri   ry   rK   r=   r=   r>   
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 u r`d}d	t|}	|	d
 d }||d}
t|
S d	t|}	|	d
 d }d|i}
t|
S )Nr   r   r   r   r   r   r   r   r
  rW  r   )yxri   r  )r<   r   r   r   r   r  r  r   r  ri   ry   rK   r=   r=   r>   
sales_list  s(   $$
r  c           	      C   s   ddl m}m}m}m} tjj| j d	|d
d}i }|d u r>d}|d d }dt|}d	|d
 d i}t|S |d d }dt|}d	|d
 d i}t|S Nr   r   r   r   r      d   r
  ri   rW  r   r  )	r<   r   r   r   r   r  ry   
commissionri   r=   r=   r>   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 u rGd}d	t|}d
|d d i}t|S d	t|}d
|d d i}t|S )Nr   r   r   r   r   r   r   r   r
  r  rW  r   )r   r   r   r   r   r   r   r)   rH   rI   r   rG   r   ro   rm   r   r0   )	r<   r   r   r   r   r   r  ry   ri   r=   r=   r>   	last_days  s   4r  c           
      C   s   ddl m}m}m}m} tjj| j d	|d
d}|d u r@d}|d d }|| }dt|}d	|d
 d i}	t|	S |d d }|| }dt|}d	|d
 d i}	t|	S r  r  )
r<   r   r   r   r   r  r  profitri   ry   r=   r=   r>   r    s    "
r  c                 C   r	  )
Nr   r   rT   zhttp://127.0.0.1:8000/RadacctrU   rV   rW   r
  rh   rj   r  r=   r=   r>   	json_list     
r  c                 C   r	  )
Nr   r   rT   z&http://127.0.0.1:8000/Radacct_Hotspot/rU   rV   rW   r
  rh   rj   r  r=   r=   r>   hotspot_active  r  r  c                 C   r	  )
Nr   r   rT   z(http://127.0.0.1:8000/BillingHistory_AllrU   rV   rW   r
  rh   rj   r  r=   r=   r>   billing_list"  r  r  c                 C   rn  )Nzonline_users.htmlr   r  r=   r=   r>   online_users3  rp  r  c                 C   s   | j dkr7| jd }tjj|d  tjj|d  tjj|d  |r3t	| tj
d| d  tdS td t| dS )	Nr{   rG   r   rw  z has deleted successfully!rx  errordelete.html)r   r{   r(   rH   rI   deleter.   r   r   r   r   r
   r  r	   r<   r   r=   r=   r>   r  5  s   


r  c                 C   sT   | j dkr!| jd }tjj|d  |rt| tjd t	dS t
d t| dS )Nr{   rG   )rL   zPackage deleted successfully!plansr  r  )r   r{   r"   rH   rI   r  r   r   r   r
   r  r	   r  r=   r=   r>   delete_packageC  s   


r  c                 C   rn  )Nzbilling.htmlr   r  r=   r=   r>   billing_historyO  rp  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   r  )	r   r   r   r%   rH   rI   r   ro   r	   )r<   r   r   r   r=   r=   r>   active_recordsR  s   
r  c                 C   r	  )
Nr   r   rT   z"http://127.0.0.1:8000/InvoiceItem/rU   rV   rW   r
  rh   rj   r  r=   r=   r>   rQ   W  r  rQ   c                 C   rn  )Nzpage-invoice.htmlr   r  r=   r=   r>   invoicej  rp  r  c                 C   sL  | j dkr!| jd }| jd }| jd }| jd }| jd }| jd }| jd }| jd	 }d
}	d
}
|dkrLtj }d}
tj|
d}|| }|d}	|dkrft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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r9tj }d!}
tj|
d}|| }|d}	|d"krTtj }d#}
tj|
d}|| }|d}	|d$krot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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r,tj }d3}
tj|
d}|| }|d}	|d4krGtj }d5}
tj|
d}|| }|d}	|d6krbtj }d7}
tj|
d}|| }|d}	|d8kr}tj }d9}
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rtj }d@}
tj|
d}|| }|d}	|dAkrtj }dB}
tj|
d}|| }|d}	|dCkrtj }dD}
tj|
d}|| }|d}	|dEkr:tj }dF}
tj|
d}|| }|d}	|dGkrUtj }d7}
tj|
d}|| }|d}	|dHkrptj }dI}
tj|
d}|| }|d}	|dJkrtj }dK}
tj|
d}|| }|d}	|dLkrtj }dM}
tj|
d}|| }|d}	|rtjj|dNj	|dN |	rtjj|dOdPj	|	dQ |rt
jj|dNj	||dR |r|dSkrtjj|dTj	|||||dU n$tj }tj|
d}|| }|dV}tjj|dTj	||||||dW |rt| tjdX| dY  tdZS t| d[S )\Nr{   rL   r   r   Zcontactrq  rr  r  r  r[   Now
   )secondsr  Z	Tommorrowr  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/  r0  r1  r2  r3  r4  r5  r6  r7  r8  r9  r:  r;  r<  r=  r>  r?  r@  rA  rB  rC  rD  rE  rF  rG  rH  rI  rJ  rK  rL  rM  rN  rO  rP  r   r   )r   r   r  )r   r   Selectr  )r   r   rt  rq  rv  r   )r   r   rt  rq  rv  r  rw  z has edited successfully!rx  zupdate.html)r   r{   r   r   r   r   r.   rH   rI   r6   r   r(   r   r   r   r
   r	   )r<   rL   r   r   rt  rq  rr  r  r  r   r  r[  r\  r]  r=   r=   r>   update_pppoel  s  




































































































 

 
r  c                 C   rn  )Nzwifi_online.htmlr   r  r=   r=   r>   wifi_onlineY  rp  r  c           	   	   C   s   | j dkrA| jd }| jd }| jd }| jd }| jd }| jd }| jd }tj }t|| j | j ||| j |d	  t| d
S )Nr{   statustyper  r  r   r  	taxamount)
tax_amount
invoice_idplan_idr  total
creationbyr  r  )	r   r{   r   r   r    rG   r   r   r	   )	r<   r  r  r  r  r   r  r  r^  r=   r=   r>   create_invoice\  s   








(
r  )	itertoolsr   Z	reportlabiodjango.httpr   Zreportlab.pdfgenr   django.views.decorators.csrfr   django.contribr   r   django.shortcutsr	   r
   rest_framework.responser   Zrest_framework.permissionsr   rk   r   Zrest_framework.decoratorsr   r   rM   r   r   r   r   r   r   r   r   r   r   r   r   Zcustomer.modelsr   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   django.contrib.authr*   r+   r,   django.contrib.auth.decoratorsr-   rp   rn   	threadingmodelsr.   asyncioaiohttposplatformurllib.requesturllibbase64rest_frameworkr/   r0   environr?   rN   rR   rz   r;   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r_  rl  rm  ro  ry  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rQ   r  r  r  r  r=   r=   r=   r>   <module>   sL   






"








7
$


 q	
=
J









 m