3
T	`                @   s  d dl mZ d dlmZ d dlmZ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T d dlmZmZ d d
lT dd
lT d dlZd dlZd dl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&m'Z' d dl(m)Z) d dl*m+Z+ ddl,m-Z- d dl.m/Z/ d dl0Z0d dl1Z1d dl2m3Z3m4Z4m5Z5m6Z6m7Z7 d dl8Z8d dl9m:Z: d dl;m<Z< d dlm=Z= dd Z>dd Z?G dd deZ@G d d! d!eZAd"d# ZBd$d% ZCG d&d' d'eZDeed(d)G d*d+ d+eZEeed(d)G d,d- d-eZFeed(d)G d.d/ d/eZGeed(d)G d0d1 d1eZHd2d3 ZIeed(d)G d4d5 d5eZJG d6d7 d7eZKG d8d9 d9eZLeed(d)G d:d; d;eZMeed(d)G d<d= d=eZNG d>d? d?e)ZOG d@dA dAeZPG dBdC dCeZQG dDdE dEeZReed(d)G dFdG dGeZSeed(d)G dHdI dIeZTeed(d)G dJdK dKeZUeed(d)G dLdM dMeZVeed(d)G dNdO dOeZWeed(d)G dPdQ dQeZXeed(d)G dRdS dSeZYeed(d)G dTdU dUeZZeed(d)G dVdW dWeZ[eed(d)G dXdY dYeZ\eed(d)G dZd[ d[eZ]eed(d)G d\d] d]eZ^eed(d)G d^d_ d_eZ_eed(d)G d`da daeZ`eed(d)G dbdc dceZaeed(d)G ddde deeZbeed(d)G dfdg dgeZceed(d)G dhdi dieZdeed(d)G djdk dkeZedldm Zfdndo Zgdpdq Zhdrds Zidtdu Zjdvdw Zkdxdy Zldzd{ Zmd|d} Znd~d Zodd Zpdd Zqdd Zrdd Zsdd Ztdd Zudd Zvdd Zwdd Zxeed(d)G dd deZyeed(d)G dd deZzdd Z{eed(d)G dd deZ|dd Z}dd Z~dd Zdd Zdd Zdd Zdd Zeed(d)G dd deZeed(d)G dd deZeed(d)G dd deZeed(d)G dd deZeed(d)G dd deZdd Zeed(d)G dd deZeed(d)G dd deZeed(d)G dd deZeed(d)G dd deZeed(d)G dd deZeed(d)G dd deZeed(d)G dd deZeed(d)G ddÄ deZeed(d)G ddń deZeed(d)G ddǄ deZeed(d)G ddɄ deZeed(d)G dd˄ de)Zeed(d)G dd̈́ de)ZG ddτ de)ZG ddф de)ZG ddӄ de)ZddՄ Zddׄ Zddل Zddۄ Zdd݄ Zdd߄ Zdd Zdd Zeed(d)G dd deZeed(d)G dd deZdd Zdd Zdd Zdd Zdd Zeed(d)G dd deZeed(d)G dd deZeed(d)G dd deZeed(d)G dd deZeed(d)G dd deZdd Zdd Zd d Zdd Zdd Zdd Zdd	 Zd
d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' ZÐd(d) ZĐd*d+ ZŐd,d- ZƐd.d/ Zǐd0d1 ZȐd2d3 Zɐd4d5 Zʐd6d7 Zːd8d9 Z̐d:d; Z͐d<d= Zΐd>d? Zeed(d)G d@dA dAeZeed(d)G dBdC dCeZeed(d)G dDdE dEeZeed(d)G dFdG dGeZeed(d)G dHdI dIeZeed(d)G dJdK dKeZeed(d)G dLdM dMeZeed(d)G dNdO dOeZeed(d)G dPdQ dQeZeed(d)G dRdS dSeZeed(d)G dTdU dUeZG dVdW dWeZdS (X      )render)TemplateView)HttpResponseJsonResponseHttpResponseRedirect)authenticate)User)Token   )checkloginadmin)method_decorator)*)sendfcmnotificationsend_text_messageN)BytesIO)Image)settings)reverse)webpushWebPushException)APIView)	Paginator)sendnewusermail)FileSystemStorage)radianscossinasinsqrt)	send_mail)mail)get_user_modelc             C   s   | d S )NpriorityBaseIDJobs )elemr#   r#   8/var/www/html/Stanley/GoodsDeliveryOLD/AdminApp/views.pytake_second!   s    r&   c             C   s   | d S )NpriorityBaseIDForParcelr#   )r$   r#   r#   r%   take_second2#   s    r(   c                   s    e Zd ZdZ fddZ  ZS )viewProrityBasedJobszviewProrityBasedJobs.htmlc                sT  t t| jf |}td |d }g }tjj|dj }|rrg }g }tjj|ddd}|rrd\}	}
t	jj|dj }|rtd |j
}	|j}
td	 x|D ]}|jj|kr|jjd
kr|j|jj |jjjdkrd}n|jjjdkrd}nd}|j|j|jj|jj|jj|jj|jjj|jj|jj|jj|jj|jj|jj|jj|j||jj|	|
|j d |j|j qW d}|sd}nd}t!|t"d}t#|d}t$| j%j&j'dd}td| y"|j(|}tt)| td W nR t*k
r   |j(|j+}td Y n* t,k
r.   |j(|j+}td Y nX ||d< ||d< d|d< ||d< |S )zKThis class shows the content on show all customer jobs screen to Admin userz.viewProrityBasedJobs-viewProrityBasedJobs get driverid)idF)driver
jobstartedjobcompleted )r,   zdrivercoordinates_obj existsz$drivercoordinates_obj does not existr   r
   zSingle-Drop   z
Multi-Drop)r+   pickupdropnameemailcustomerName
pickupDate
pickupTime	noofitems	senderLat
senderLongrecipientLatrecipientLongr"   	ordertypedateOFPickupdriver_latitudedriver_longitudesameIdForParcelsDetailsyesno)key   pagezpage = truyexcept1except2driversData	countLooprevenuetitlelistisEmpty)r/   r/   )-superr)   get_context_dataprintDriverModelobjectsfilterfirst	DriverJobDriverCoordinateslatitude	longitudecustomerjobrA   appendorderr=   r+   pickupaddressdropoffaddressr,   r3   r4   customerpickuptimeslotDatepickuptimeslotno_of_item_in_parcelsenderlatitudesenderlongituderecipientlatituderecipientlongituder"   sameIdForParcelssortedr&   r   intrequestGETgetrF   lenPageNotAnInteger	num_pages	EmptyPage)selfkwargscontextr*   allDetailsOfDrivers
driver_objrK   uniquedriverJOB_OBJdriverlatitudedriverlongitudedrivercoordinates_objjobr=   rN   outstandingdriverjobs_datanew	paginatorrF   rJ   )	__class__r#   r%   rP   )   s    



z%viewProrityBasedJobs.get_context_data)__name__
__module____qualname__template_namerP   __classcell__r#   r#   )r~   r%   r)   &   s   r)   c                   s    e Zd ZdZ fddZ  ZS )viewProrityofParcelzviewProrityofParcel.htmlc                st  t t| jf |}td |d }g }g }tjj|d}x|D ]}d!\}}	tjj|dj }
|
rt	jj|
j
dj }|rtd |j}|j}	|j|j|jj|j|j|j|j|j|j||	|j|j|jd |j|j q>W d}|sd	}nd
}t|td}t|d}t| jjj dd}td| y"|j!|}tt"| td W nR t#k
rl   |j!|j$}td Y n* t%k
r   |j!|j$}td Y nX ||d< ||d< ||d< d|d< ||d< |S td x|D ]}|j'j(|kr|j'j(dkr|j|j'j( |j'j)j*dkrd}n|j'j)j*dkr*d}nd}t+j|j|j'j,|j'j-|j
j|j
j.|j'jj|j'j|j'j|j'j/|j'j|j'j|j'j|j'j|j0||j'j||	|j1d  |j|j0 qW tt+t2d}t|d}t| jjj dd}td| y"|j!|}tt"| td W nR t#k
r.   |j!|j$}td Y n* t%k
rV   |j!|j$}td Y nX ||d< ||d< d|d< |S )"zKThis class shows the content on show all customer jobs screen to Admin userz,viewProrityofParcel-viewProrityofParcel get sameparcelID)rA   r/   )rZ   )r,   zdrivercoordinates_obj exists)r+   r5   ZrecipientNamer>   r9   r:   r;   r<   r?   r@   r'   Z
pickupSlotZdropSlotrB   rC   )rD   rE   rF   r
   zpage = rG   rH   rI   Z	viewJobIdrJ   rK   rL   rM   rN   F)r,   r-   r.   z$drivercoordinates_obj does not existr   zSingle-Dropr0   z
Multi-Drop)r+   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r"   r=   r>   r?   r@   rA   )r/   r/   )3rO   r   rP   rQ   CustomerJobrS   rT   rV   rU   rW   r,   rX   rY   r[   r+   r_   r3   recipientnamer`   rc   rd   re   rf   r'   ra   dropofftimeslotrh   r(   r   ri   rj   rk   rl   rF   rm   rn   ro   rp   ru   rZ   rA   r\   r=   rt   r]   r^   r4   rb   r"   rg   r&   )rq   rr   rs   r*   ZallParcelDetailsrK   ZcustomerJobcustrx   ry   ZjobDriverObjrz   rN   r|   r}   rF   rJ   rv   rw   r{   r=   )r~   r#   r%   rP   }   s    



           



z$viewProrityofParcel.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r   z   s   r   c             O   s   t d y| jjd}t d t | jjd tj|}t | g }d}x\|D ]T}t d t |d  t |d  |d }|d }tjj|dj }	||	_	|	j
  qNW td	d
iS  tk
r }
 zt |
 td	diS d }
~
X nX d S )NzchangePriority by admindata_idszmy oner   zmy twor{   priority)r+   status_code   )rQ   POSTrl   jsonloadsr   rS   rT   rU   r'   saver   	Exception)rj   argsrr   r   all_data_responsesameIdParcelCopyids
customerID	prorityIDcustomerjob_objer#   r#   r%   changePriority   s,    

r   c             O   s   t d y| jjd}t d t | jjd tj|}t | g }d}xf|D ]^}t d t |d  t |d  |d }|d }tjj|d}	x|	D ]}
||
_|
j	  qW qNW t
d	d
iS  tk
r } zt | t
d	diS d }~X nX d S )NzchangePriorityofJob by adminr   zmy oner   zmy twor{   r   )rg   r   r   )rQ   r   rl   r   r   rV   rS   rT   r"   r   r   r   )rj   r   rr   r   r   r   r   r   r   r   r   r   r#   r#   r%   changePriorityofJob  s.    


r   c                   s    e Zd ZdZ fddZ  ZS )driverPickupsAndDropszdriverPickupsAndDrops.htmlc                sh  t t| jf |}td |d }g }tjj|dj }|rtjj|d}|rxf|D ]^}|j	|j
|jj|jj|jj|jj|jjj|jj|jj|jj|jj|jj|jj|jjd qTW t|d}t| jjjdd}	td	|	 y"|j|	}
tt|
 td
 W nR t k
r*   |j|j!}
td Y n* t"k
rR   |j|j!}
td Y nX |
|d< d|d< |S )zKThis class shows the content on show all customer jobs screen to Admin userz0driverPickupsAndDrops-driverPickupsAndDrops get r*   )r+   )r,   )r+   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   rE   rF   r
   zpage = rG   rH   rI   rJ   rL   rM   )#rO   r   rP   rQ   rR   rS   rT   rU   rV   r[   r+   rZ   r]   r^   r,   r3   r4   r_   r`   ra   rb   rc   rd   re   rf   r   ri   rj   rk   rl   rF   rm   rn   ro   rp   )rq   rr   rs   r*   rt   ru   rw   r{   r}   rF   rJ   )r~   r#   r%   rP   0  sN    



z&driverPickupsAndDrops.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r   -  s   r   dispatch)r3   c                   s    e Zd ZdZ fddZ  ZS )revenueDayszRevenue.htmlc                s  t t| jf |}td tjj jd}d}d}d}d}g }tj	j
 }	xl|D ]b}
d}d}tjj|
ddj }tjj|
ddjd}|r|d }td x|D ]}|jjrDd	}|jj	 |	ko|jj|	jkrdd}|ttd
|jj d d }|ttd
|jj d d }|ttd|jj d d }|t|jj }q|d }|d }|d }|d }qW |dkrtt|d}|j||
j|||
jd qP|d }|d }|d }qPW tt|d}tt|d}tt|d}t| t| t| t| t|d}t| jjjdd}td| y"|j|}tt| td W nR tk
rv   |j|j }td Y n* t!k
r   |j|j }td Y nX g }t"jjd	d}x"|D ]}|j|j|jd qW td| ||d< ||d< ||d< ||d< ||d< d|d< |S )zEThis class shows the content on show all drivers screen to Admin userzrevenueDays-in get z-idg        r   T)r,   r.   r
   
FF   d   r0      )srnor3   totaljobcountr+   rE   rF   zpage = rG   rH   rI   )	isdeleted)r3   r+   allVehicalsrJ   drivercommissionadmincommissiontotalEarningsrL   rM   )#rO   r   rP   rQ   rR   rS   allorder_bydatetimedatetodayrV   rT   countrZ   price
created_atyearfloatroundstrr[   r3   r+   r   ri   rj   rk   rl   rF   rm   rn   ro   rp   VehicleType)rq   rr   rs   ru   r   r   r   r   rJ   r   donDriverEarningstotalCompletedJobdriverjob_objr{   dateFindr}   rF   vehicalList
vehicalObjv)r~   r#   r%   rP   b  s    








zrevenueDays.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r   ^  s   r   c                   s    e Zd ZdZ fddZ  ZS )revenueWeeklyzRevenue.htmlc                s   t t| jf |}td tjj jd}d}d}d}d}g }tj	j
 }	xx|D ]n}
d}d}tjj|
ddj }tjj|
ddjd}|r|d }td x|D ]}|jjrPd	}|jj d |	j d ko|jj|	jkrpd}|ttd
|jj d d }|ttd
|jj d d }|ttd|jj d d }|t|jj }q|d }|d }|d }|d }qW |dkrtt|d}|j||
j|||
jd qP|d }|d }|d }qPW tt|d}tt|d}tt|d}t| t| t| t| t|d}t| jjjdd}td| y"|j|}tt| td W nR t k
r   |j|j!}td Y n* t"k
r   |j|j!}td Y nX g }t#jjd	d}x"|D ]}|j|j|jd qW td| ||d< ||d< ||d< ||d< ||d< d|d< |S )zEThis class shows the content on show all drivers screen to Admin userzrevenueWeekly-in get z-idg        r   T)r,   r.   r
   r   Fr   r   r0   r   )r   r3   r   r   r+   rE   rF   zpage = rG   rH   rI   )r   )r3   r+   r   rJ   r   r   r   rL   rM   )$rO   r   rP   rQ   rR   rS   r   r   r   r   r   rV   rT   r   rZ   r   r   isocalendarr   r   r   r   r[   r3   r+   r   ri   rj   rk   rl   rF   rm   rn   ro   rp   r   )rq   rr   rs   ru   r   r   r   r   rJ   r   r   r   r   r   r{   r   r}   rF   r   r   r   )r~   r#   r%   rP     s    


*





zrevenueWeekly.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r     s   r   c                   s    e Zd ZdZ fddZ  ZS )revenueMonthlyzRevenue.htmlc                s  t t| jf |}td tjj jd}d}d}d}d}g }tj	j
 }	xl|D ]b}
d}d}tjj|
ddj }tjj|
ddjd}|r|d }td x|D ]}|jjrDd	}|jj|	jko|jj|	jkrdd}|ttd
|jj d d }|ttd
|jj d d }|ttd|jj d d }|t|jj }q|d }|d }|d }|d }qW |dkrtt|d}|j||
j|||
jd qP|d }|d }|d }qPW tt|d}tt|d}tt|d}t| t| t| t| t|d}t| jjjdd}td| y"|j|}tt| td W nR t k
rv   |j|j!}td Y n* t"k
r   |j|j!}td Y nX g }t#jjd	d}x"|D ]}|j|j|jd qW td| ||d< ||d< ||d< ||d< ||d< d|d< |S )zEThis class shows the content on show all drivers screen to Admin userzrevenueMonthly-in get z-idg        r   T)r,   r.   r
   r   Fr   r   r0   r   )r   r3   r   r   r+   rE   rF   zpage = rG   rH   rI   )r   )r3   r+   r   rJ   r   r   r   rL   rM   )$rO   r   rP   rQ   rR   rS   r   r   r   r   r   rV   rT   r   rZ   r   r   monthr   r   r   r   r[   r3   r+   r   ri   rj   rk   rl   rF   rm   rn   ro   rp   r   )rq   rr   rs   ru   r   r   r   r   rJ   r   r   r   r   r   r{   r   r}   rF   r   r   r   )r~   r#   r%   rP     s    








zrevenueMonthly.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r     s   r   c                   s    e Zd ZdZ fddZ  ZS )revenueYearzRevenue.htmlc                s  t t| jf |}td tjj jd}d}d}d}d}g }tj	j
 }	x^|D ]T}
d}d}tjj|
ddj }tjj|
ddjd}|r|d }td x|D ]}|jjr6d	}|jj|	jkrVd}|ttd
|jj d d }|ttd
|jj d d }|ttd|jj d d }|t|jj }q|d }|d }|d }|d }qW |dkrtt|d}|j||
j|||
jd qP|d }|d }|d }qPW tt|d}tt|d}tt|d}t| t| t| t| t|d}t| jjjdd}td| y"|j|}tt| td W nR tk
rh   |j|j }td Y n* t!k
r   |j|j }td Y nX g }t"jjd	d}x"|D ]}|j|j|jd qW td| ||d< ||d< ||d< ||d< ||d< d|d< |S )zEThis class shows the content on show all drivers screen to Admin userzrevenueYear-in get z-idg        r   T)r,   r.   r
   r   Fr   r   r0   r   )r   r3   r   r   r+   rE   rF   zpage = rG   rH   rI   )r   )r3   r+   r   rJ   r   r   r   rL   rM   )#rO   r   rP   rQ   rR   rS   r   r   r   r   r   rV   rT   r   rZ   r   r   r   r   r   r   r[   r3   r+   r   ri   rj   rk   rl   rF   rm   rn   ro   rp   r   )rq   rr   rs   ru   r   r   r   r   rJ   r   r   r   r   r   r{   r   r}   rF   r   r   r   )r~   r#   r%   rP   j  s    








zrevenueYear.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r   f  s   r   c       	      O   s   t d yt | j | jjd}| jjd}d}tjj|dj }|r|dkr`d|_d}t d	 |d
krrd|_d}|j  t	d|dS t	dddS W n2 t
k
r } zt | t	dddS d}~X nX dS )zDThis function is being used to edit the parcel type details by Adminz6Admin - in change_DriverRadiusRequests_status functionradius_request_id
new_statusT)r+   approve1zRequest approvedzapprove request
disapprove2zRequest disapprovedr   )r   status_messagei  zNo request foundzInternal Server ErrorN)rQ   r   rl   RadiusPermissionrS   rT   rU   statusr   r   r   )	rj   r   rr   r   r   extraZRadiusPermission_objmsgr   r#   r#   r%   "change_DriverRadiusRequests_status  s*    
r   c                   s    e Zd ZdZ fddZ  ZS )showAllDriverRadiusRequestszshowDriverRadiusRequest.htmlc       	         s   t t| jf |}td g }tjj jd}|rxd}x@|D ]8}|d7 }|j||j	j
j|j|j|jjd|jd q<W t|d}t| jjjdd}td	| y"|j|}tt| td
 W nP tk
r   |j|j}td Y n* tk
r   |j|j}td Y nX ||d< |S )zGThis class shows the content on show all companies screen to Admin userz#showAllDriverRadiusRequests-in get z-idr   r
   z%d/%m/%Y %I:%M:%S %p)serialnoZdriverEmaildistancer   r   r+   rE   rF   zpage = rG   rH   rI   all_credit_requests)rO   r   rP   rQ   r   rS   r   r   r[   	driverjobr,   r4   r   r   r   strftimer+   r   ri   rj   rk   rl   rF   rm   rn   ro   rp   )	rq   rr   rs   all_credit_requests_dataZradiusPermissionObjectr   reqr}   rF   )r~   r#   r%   rP     s<    




z,showAllDriverRadiusRequests.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r     s   r   c                   s    e Zd ZdZ fddZ  ZS )revenueByIDzRevenue.htmlc                sJ  t t| jf |}td |d }tjj|dj }d}d}d}d}g }	d}
d}tjj|ddj	 }tjj|ddj
d}|r6td	 x|D ]}|jjr|d
 }|ttd|jj d d }|ttd|jj d d }|t|jj }|	j||jjjtt|jjdttd|jj d d|jjd qW tt|d}tt|d}tt|d}t| t| t| t|	 t|	d}t| jjjdd
}td| y"|j|}	tt|	 td W nR tk
r   |j|j}	td Y n* tk
r   |j|j}	td Y nX |	|d< ||d< ||d< ||d< d|d< |S )zKThis class shows the content on show all customer jobs screen to Admin userzrevenueByID-revenueByID get r*   )r+   g        r   T)r,   r.   z-idr   r
   r   r   r0   r   )r   r3   r   ZdriverComissionDaterE   rF   zpage = rG   rH   rI   rJ   r   r   r   r   rM   )rO   r   rP   rQ   rR   rS   rT   rU   rV   r   r   rZ   r   r   r   r[   r_   r3   r   creation_dater   ri   rj   rk   rl   rF   rm   rn   ro   rp   )rq   rr   rs   r*   ru   r   r   r   r   rJ   r   r   r   r{   r}   rF   )r~   r#   r%   rP     sj    



zrevenueByID.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r     s   r   c                   s    e Zd ZdZ fddZ  ZS )rL   zRevenue.htmlc                s  t t| jf |}td tjj jd}d}d}d}d}g }x<|D ]2}	d}
d}tjj	|	ddj
 }tjj	|	ddjd}|rb|d }td x|D ]}|jjr|ttd	|jj d
 d }|
ttd	|jj d
 d }
|ttd|jj d
 d }|t|jj }q|
d }
|d }|d }|d }qW tt|
d}
|j||	j|
||	jd qF|d }|d }|d }qFW tt|d}tt|d}tt|d}t| t| t| t| t|d}t| jjjdd}td| y"|j|}tt| td W nR tk
r<   |j|j}td Y n* tk
rd   |j|j}td Y nX g }tjj	dd}x"|D ]}|j|j|jd q~W td| ||d< ||d< ||d< ||d< ||d< d|d< |S )zKThis class shows the content on show all customer jobs screen to Admin userzrevenue-revenue get z-idg        r   T)r,   r.   r
   r   r   r   r0   r   )r   r3   r   r   r+   rE   rF   zpage = rG   rH   rI   F)r   )r3   r+   r   rJ   r   r   r   rL   rM   )rO   rL   rP   rQ   rR   rS   r   r   rV   rT   r   rZ   r   r   r   r   r[   r3   r+   r   ri   rj   rk   rl   rF   rm   rn   ro   rp   r   )rq   rr   rs   ru   r   r   r   r   rJ   r   r   r   r   r{   r}   rF   r   r   r   )r~   r#   r%   rP   B  s    






zrevenue.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   rL   ?  s   rL   c                   s    e Zd ZdZ fddZ  ZS )
emailToAllzEmailToAll.htmlc                s6   t t| jf |}td d|d< d|d< d|d< |S )zKThis class shows the content on show all customer jobs screen to Admin userzemailToAll-emailToAll get drivers_dataall_driverszOutstanding Jobsheader_titleAllrM   )rO   r   rP   rQ   )rq   rr   rs   )r~   r#   r%   rP     s    zemailToAll.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r     s   r   c                   s    e Zd ZdZ fddZ  ZS )emailByCategoryzEmailByCategory.htmlc                s.   t t| jf |}td d|d< d|d< |S )zKThis class shows the content on show all customer jobs screen to Admin userz$emailByCategory-emailByCategory get r   r   zOutstanding Jobsr   )rO   r   rP   rQ   )rq   rr   rs   )r~   r#   r%   rP     s
    z emailByCategory.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r     s   r   c               @   s   e Zd Zdd ZdS )sendALLMailsc             O   sB  t d|j y|jjd}|jjd}|jjd}tj }|j  |sLd}|sTd}|dkrtjjdd	j	d
}t
jjdd	j	d
}	n\|dkrtjjdd	j	d
}
n>|dkrt
jjdddj	d
}
n|dkrt
jjdddj	d
}
g }|dkrt d x*|D ]"}|j rt d |j|j  qW t d x*|	D ]"}|jr2t d |j|j q2W tjt|t|d||d}|j  |j  t d nRt d x*|
D ]"}|jrt d |j|j qW tt|t|dt|dd t d t | t d tdddS  tk
r< } zt | td t|dS d }~X nX d S )!Nzdata is  : subjectmessagerM   zThis is message From AdminzMessage From Adminr   T)emailverifiedz-idDrivers	Customersr_   )roler   Companycompanyonezchecking...twoz
again.....ztmpython4esf@gmail.com)
connectionzdone...zanother phasezcheckingg one.....)fail_silentlyzsecond lastlastr   z	Mail send)coder   r   )rQ   r   rl   r    get_connectionopenrR   rS   rT   r   Customerr4   r[   EmailMessager   sendcloser   listr   r   )rq   rj   r   rr   r   r   rM   r   ZDriverModelobjectsZCustomerModelobjectsZuserOBJ
email_listr,   customZemail1r   r   r#   r#   r%   post  sf    




zsendALLMails.postN)r   r   r   r   r#   r#   r#   r%   r     s   r   c                   s(   e Zd ZdZ fddZdd Z  ZS )sendMailsDriverszEmailToAll.htmlc                s6   t t| jf |}td d|d< d|d< d|d< |S )zKThis class shows the content on show all customer jobs screen to Admin userz&sendMailsDrivers-sendMailsDrivers get r   r   zOutstanding Jobsr   r   rM   )rO   r   rP   rQ   )rq   rr   rs   )r~   r#   r%   rP     s    z!sendMailsDrivers.get_context_datac             O   s   t d|j yVtjj }g }x"|D ]}|jjr"|j|jj q"W tdddt	|dd t
ddd	S  tk
r } zt
d
t|d	S d }~X nX d S )Nzdata is  : zProfile update message:zMessage from adminztmpython4esf@gmail.comT)r   r   z	Mail send)r   r   r   )rQ   r   rR   rS   r   userr4   r[   r   r   r   r   r   )rq   rj   r   rr   ru   r   r   r   r#   r#   r%   r     s    

zsendMailsDrivers.post)r   r   r   r   rP   r   r   r#   r#   )r~   r%   r     s   	r   c                   s(   e Zd ZdZ fddZdd Z  ZS )sendMailsCustomerszEmailToAll.htmlc                s6   t t| jf |}td d|d< d|d< d|d< |S )zKThis class shows the content on show all customer jobs screen to Admin userz*sendMailsCustomers-sendMailsCustomers get r   r   zOutstanding Jobsr   r   rM   )rO   r   rP   rQ   )rq   rr   rs   )r~   r#   r%   rP     s    z#sendMailsCustomers.get_context_datac       	      O   s   t d|j ytd}tjj }g }x4|D ],}|jdkr&|jjr&|d }|j|jj q&W t | t	dddt
|dd	 td
ddS  tk
r } ztdt|dS d }~X nX d S )Nzdata is  : r   r_   r
   zProfile update message:zMessage from adminztmpython4esf@gmail.comT)r   r   z	Mail send)r   r   )rQ   r   r   rS   r   r   r   r4   r[   r   r   r   r   r   )	rq   rj   r   rr   rC   ru   r   r   r   r#   r#   r%   r     s    


zsendMailsCustomers.post)r   r   r   r   rP   r   r   r#   r#   )r~   r%   r     s   	r   c                   s(   e Zd ZdZ fddZdd Z  ZS )sendMailsCompanyzEmailToAll.htmlc                s6   t t| jf |}td d|d< d|d< d|d< |S )zKThis class shows the content on show all customer jobs screen to Admin userz&sendMailsCompany-sendMailsCompany get r   r   zOutstanding Jobsr   r   rM   )rO   r   rP   rQ   )rq   rr   rs   )r~   r#   r%   rP   %  s    z!sendMailsCompany.get_context_datac       	      O   s   t d|j ytd}tjj }g }x4|D ],}|jdkr&|jjr&|d }|j|jj q&W t | t	dddt
|dd	 td
ddS  tk
r } ztdt|dS d }~X nX d S )Nzdata is  : r   r   r
   zProfile update message:zMessage from adminztmpython4esf@gmail.comT)r   r   z	Mail send)r   r   )rQ   r   r   rS   r   r   r   r4   r[   r   r   r   r   r   )	rq   rj   r   rr   rC   ru   r   r   r   r#   r#   r%   r   .  s    


zsendMailsCompany.post)r   r   r   r   rP   r   r   r#   r#   )r~   r%   r   "  s   	r   c                   s    e Zd ZdZ fddZ  ZS )(AdminShowAllCustomerJobsCompletedVehicalzadmin_showallcustomerjobs.htmlc                s  t t| jf |}td |d }tjj|dj }tjjd|dj	d}g }|rd}g }x8|D ].}	|	j
|krd|	j
dkr|j|	j
 d}
|	j
dkrtjj|	j
d}d}|rd	}d	}
x|D ]}|jdkrd}
qW |	j
dkrtjj|	d
j }d}|rd	}|jrd	}
d	}|	j
dkr d}|
rd|	jdkr6d}n"|	jdkrHd}n|	jdkrXd}|d7 }|j||	j|	j|	j|	j|	j|	j||	jt|	j
d
 qdW t|d}t| jjjdd}td| y"|j|}tt| td W nR tk
r   |j|j}td Y n* t k
r4   |j|j}td Y nX g }tjjdd}x"|D ]}|j|j!|jd qNW ||d< d|d< ||d< d|d< |S )zKThis class shows the content on show all customer jobs screen to Admin userzVAdminShowAllCustomerJobsCompletedVehical-AdminShowAllCustomerJobsCompletedVehical get 	vehicalid)r+   F)r   vehicletypez-idr   )rg   T)rZ   zSame Day Deliveryr
   zTwo Day Deliveryr0   )
r   
sendernamesenderemailsenderphonesenderpickupaddressr   recipientdropoffaddressshowIdextraIdr+   rE   rF   zpage = rG   rH   rI   )r   )r3   r+   r   	completedfilterTitleall_customerjobszCompleted Jobsr   )"rO   r   rP   rQ   r   rS   rT   rU   r   r   rA   r[   rV   r.   deliverydurationr  r  r  r]   r   r^   r+   r   r   ri   rj   rk   rl   rF   rm   rn   ro   rp   r3   )rq   rr   rs   	vehicalID
vehicalobjr  all_customerjobs_datar   unique_parcel_idsrZ   r
  r   driverexistr   Showr  r}   rF   r   r   r   )r~   r#   r%   rP   ^  s    








z9AdminShowAllCustomerJobsCompletedVehical.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r   Z  s   r   c                   s    e Zd ZdZ fddZ  ZS )%AdminShowAllCustomerJobsCompletedWeekzadmin_showallcustomerjobs.htmlc                s  t t| jf |}td tjjddjd}g }tj	j
 }|rd}g }x`|D ]V}|jj d |j d ko~|jj|jkrR|j|krR|jdkr|j|j d}	|jdkrtjj|jd}
d}|
rd}d}	x|
D ]}|jdkrd}	qW |jdkr"tjj|d	j }
d}|
r"d}|
jr"d}	d}|jdkr6d}|	rR|jdkrLd
}n"|jdkr^d}n|jdkrnd
}|d7 }|j||j|j|j|j|j|j||jt|jd
 qRW t|d}t| jjj dd}td| y"|j!|}tt"| td W nR t#k
r"   |j!|j$}td Y n* t%k
rJ   |j!|j$}td Y nX g }t&jjdd}x"|D ]}|j|j'|jd qdW ||d< d|d< ||d< d|d< |S )zKThis class shows the content on show all customer jobs screen to Admin userz*AdminShowAllCustomerJobsCompletedWeek get F)r   z-idr   r
   )rg   T)rZ   zSame Day DeliveryzTwo Day Deliveryr0   )
r   r  r  r  r  r   r  r  r	  r+   rE   rF   zpage = rG   rH   rI   )r3   r+   r   r
  r  r  zCompleted Jobsr   )(rO   r  rP   rQ   r   rS   rT   r   r   r   r   r   r   r   rA   r[   rV   r.   rU   r  r  r  r  r]   r   r^   r+   r   r   ri   rj   rk   rl   rF   rm   rn   ro   rp   r   r3   )rq   rr   rs   r  r  r   r   r  rZ   r
  r   r  r   r  r  r}   rF   r   r   r   )r~   r#   r%   rP     s    
(








z6AdminShowAllCustomerJobsCompletedWeek.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r    s   r  c                   s    e Zd ZdZ fddZ  ZS )$AdminShowAllCustomerJobsCompletedDayzadmin_showallcustomerjobs.htmlc                s  t t| jf |}td tjjddjd}g }tj	j
 }|rd}g }xT|D ]J}|jj	 |kor|jj|jkrR|j|krR|jdkr|j|j d}	|jdkrtjj|jd}
d}|
rd}d}	x|
D ]}|jdkrd}	qW |jdkrtjj|dj }
d}|
rd}|
jrd}	d}|jdkr*d}|	rR|jdkr@d	}n"|jd
krRd}n|jdkrbd	}|d
7 }|j||j|j|j|j|j|j||jt|jd
 qRW t|d}t| jjjdd
}td| y"|j |}tt!| td W nR t"k
r   |j |j#}td Y n* t$k
r>   |j |j#}td Y nX g }t%jjdd}x"|D ]}|j|j&|jd qXW ||d< d|d< ||d< d|d< |S )zKThis class shows the content on show all customer jobs screen to Admin userz)AdminShowAllCustomerJobsCompletedDay get F)r   z-idr   )rg   T)rZ   zSame Day Deliveryr
   zTwo Day Deliveryr0   )
r   r  r  r  r  r   r  r  r	  r+   rE   rF   zpage = rG   rH   rI   )r3   r+   r   r
  r  r  zCompleted Jobsr   )'rO   r  rP   rQ   r   rS   rT   r   r   r   r   r   r   rA   r[   rV   r.   rU   r  r  r  r  r]   r   r^   r+   r   r   ri   rj   rk   rl   rF   rm   rn   ro   rp   r   r3   )rq   rr   rs   r  r  r   r   r  rZ   r
  r   r  r   r  r  r}   rF   r   r   r   )r~   r#   r%   rP   #  s    









z5AdminShowAllCustomerJobsCompletedDay.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r    s   r  c                   s    e Zd ZdZ fddZ  ZS )&AdminShowAllCustomerJobsCompletedMonthzadmin_showallcustomerjobs.htmlc                s  t t| jf |}td tjjddjd}g }tj	j
 }|rd}g }xT|D ]J}|jj|jkor|jj|jkrR|j|krR|jdkr|j|j d}	|jdkrtjj|jd}
d}|
rd}d}	x|
D ]}|jdkrd}	qW |jdkrtjj|dj }
d}|
rd}|
jrd}	d}|jdkr*d}|	rR|jdkr@d	}n"|jd
krRd}n|jdkrbd	}|d
7 }|j||j|j|j|j|j|j||jt|jd
 qRW t|d}t| jjj dd
}td| y"|j!|}tt"| td W nR t#k
r   |j!|j$}td Y n* t%k
r>   |j!|j$}td Y nX g }t&jjdd}x"|D ]}|j|j'|jd qXW ||d< d|d< ||d< d|d< |S )zKThis class shows the content on show all customer jobs screen to Admin userz+AdminShowAllCustomerJobsCompletedMonth get F)r   z-idr   )rg   T)rZ   zSame Day Deliveryr
   zTwo Day Deliveryr0   )
r   r  r  r  r  r   r  r  r	  r+   rE   rF   zpage = rG   rH   rI   )r3   r+   r   r
  r  r  zCompleted Jobsr   )(rO   r  rP   rQ   r   rS   rT   r   r   r   r   r   r   r   rA   r[   rV   r.   rU   r  r  r  r  r]   r   r^   r+   r   r   ri   rj   rk   rl   rF   rm   rn   ro   rp   r   r3   )rq   rr   rs   r  r  r   r   r  rZ   r
  r   r  r   r  r  r}   rF   r   r   r   )r~   r#   r%   rP     s    









z7AdminShowAllCustomerJobsCompletedMonth.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r    s   r  c                   s    e Zd ZdZ fddZ  ZS )%AdminShowAllCustomerJobsCompletedYearzadmin_showallcustomerjobs.htmlc                s  t t| jf |}td tjjddjd}g }tj	j
 }|rd}g }xF|D ]<}|jj|jkrR|j|krR|jdkr|j|j d}	|jdkrtjj|jd}
d}|
rd}d}	x|
D ]}|jdkrd}	qW |jdkrtjj|dj }
d}|
rd}|
jrd}	d}|jdkrd}|	rR|jdkr2d	}n"|jd
krDd}n|jdkrTd	}|d
7 }|j||j|j|j|j|j|j||jt|jd
 qRW t|d}t| jjjdd
}td| y"|j |}tt!| td W nR t"k
r   |j |j#}td Y n* t$k
r0   |j |j#}td Y nX g }t%jjdd}x"|D ]}|j|j&|jd qJW ||d< d|d< ||d< d|d< |S )zKThis class shows the content on show all customer jobs screen to Admin userz*AdminShowAllCustomerJobsCompletedYear get F)r   z-idr   )rg   T)rZ   zSame Day Deliveryr
   zTwo Day Deliveryr0   )
r   r  r  r  r  r   r  r  r	  r+   rE   rF   zpage = rG   rH   rI   )r3   r+   r   r
  r  r  zCompleted Jobsr   )'rO   r  rP   rQ   r   rS   rT   r   r   r   r   r   r   rA   r[   rV   r.   rU   r  r  r  r  r]   r   r^   r+   r   r   ri   rj   rk   rl   rF   rm   rn   ro   rp   r   r3   )rq   rr   rs   r  r  r   r   r  rZ   r
  r   r  r   r  r  r}   rF   r   r   r   )r~   r#   r%   rP     s    









z6AdminShowAllCustomerJobsCompletedYear.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r    s   r  c                   s    e Zd ZdZ fddZ  ZS )AdminShowAllCustomerJobsVehicalzadmin_showallcustomerjobs.htmlc                sJ  t t| jf |}td |d }tjj|dj }tjjd|dj	d}g }|rd}g }xZ|D ]P}	|	j
|krd|	j
dkr|j|	j
 d}
|	j
dkrtjj|	j
d}d}d}|rd	}d	}
x |D ]}|jdkrd}
|j}qW |	j
dkrtjj|	d
j }d}d}|rd	}|jrd	}
d	}|	j
dkr.d}|
sd|	jdkrDd}n"|	jdkrVd}n|	jdkrfd}|d7 }|j||	j|	j|	j|	j|	j|	j|	j|	j|	j|	j||||	jt|	j
d qdW t|d}t| jjj dd}td| y|j!|}td W nR t"k
r"   |j!|j#}td Y n* t$k
rJ   |j!|j#}td Y nX ||d< t%jjd	dddj	d}g }|rx|D ]x}d#\}}t&jj|dj }|r|j'}|j(}tjj|ddj) }|j|j*|j+|j,d |j- |j.j*||||jd q|W g }tjjdd}x"|D ]}|j|j*|jd qW ||d< ||d < d!|d"< |S )$zKThis class shows the content on show all customer jobs screen to Admin userzDAdminShowAllCustomerJobsVehical-AdminShowAllCustomerJobsVehical get r  )r+   F)r   r  z-idr   )rg   T)rZ   zSame Day Deliveryr
   zTwo Day Deliveryr0   )r   r  r  r  r  r   r  rc   rd   re   rf   r  driverIDr  r	  r+   rE   rF   zpage = rG   rH   rI   r  )r   
isdisabledr   r/   )r,   )r,   r.   -)r3   r4   phoneimagerX   rY   noofparcelsr+   )r   )r3   r+   r   r   zOutstanding Jobsr   )r/   r/   )/rO   r  rP   rQ   r   rS   rT   rU   r   r   rA   r[   rV   r.   rg   r  r  r  r  r]   r   r^   rc   rd   re   rf   r+   r   r   ri   rj   rk   rl   rF   rn   ro   rp   rR   rW   rX   rY   r   r3   r4   countrycoder  r  )rq   rr   rs   r  r  r  r  r   r  rZ   r
  r   r  r  r   r  r  r}   rF   ru   r   r,   rX   rY   rz   pendingjobsr   r   r   )r~   r#   r%   rP   G  s    










z0AdminShowAllCustomerJobsVehical.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r  C  s   r  c                   s    e Zd ZdZ fddZ  ZS )AdminShowAllDriversVehicalTypezadmin_showalldrivers.htmlc                sx  t t| jf |}td |d }tjj|dj }td tjjd|dj	dj
d}g }td	 |rd
}x|D ]}|d7 }d}	|jd
krd}	nN|jdkrd}	n>|jdkrd}	n.|jdkrd}	n|jdkrd}	n|jdkrd}	|jrd}
nd}
|jrd}nd}|jrd}nd}tjj|dj }|r@|j}|j}nd}d}|j||j|jd |j |jj|	|j|j|jj|
|||||jd qvW g }tjjdd}x"|D ]}|j|j|jd qW ||d< t|d}t| jjj d d}td!| y"|j!|}tt"| td" W nR t#k
rB   |j!|j$}td# Y n* t%k
rj   |j!|j$}td$ Y nX ||d%< |S )&zEThis class shows the content on show all drivers screen to Admin userz&AdminShowAllDriversVehicalType-in get r  )r+   rU   F)r   r  z-idr   secondr   r
   r/   BikeCarr0   z	Small Van   z
Medium Van   z	Large Van   zNot SpecifiedYesNo)r,   r  )r   r3   r  r4   r  vehiclenumberpreferredarear   r   accountapprovedr  rX   rY   r+   )r   )r3   r+   r   rE   rF   zpage = rG   rH   rI   r   )&rO   r!  rP   rQ   r   rS   rT   rU   rR   r   prefetch_relatedr  r   r,  r  rW   rX   rY   r[   r3   r  r  r   r4   r*  r+  date_joinedr+   r   ri   rj   rk   rl   rF   rm   rn   ro   rp   )rq   rr   rs   r  r  r   datar   r,   r  r   r,  r  rz   rX   rY   r   r   r   r}   rF   )r~   r#   r%   rP     s    









z/AdminShowAllDriversVehicalType.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r!    s   r!  c                   s    e Zd ZdZ fddZ  ZS )AdminShowAllDriversDayszadmin_showalldrivers.htmlc                sv  t t| jf |}td tjjddjdjd}g }t	j
j }|rd}x>|D ]4}|jjj
 |kox|jjj|jkrT|d7 }d}|jdkrd	}nN|jdkrd
}n>|jdkrd}n.|jdkrd}n|jdkrd}n|jdkrd}|jrd}	nd}	|jrd}
nd}
|jrd}nd}tjj|dj }|r>|j}|j}nd}d}|j||j|jd |j |jj||j|j|jj|	|
||||jd qTW g }tjjdd}x"|D ]}|j|j|jd qW ||d< t |d}t!| j"j#j$dd}td| y"|j%|}tt&| td W nR t'k
r@   |j%|j(}td Y n* t)k
rh   |j%|j(}td Y nX ||d < |S )!zEThis class shows the content on show all drivers screen to Admin userzAdminShowAllDriversDays-in get F)r   z-idr   r   r
   r/   r#  r$  r0   z	Small Vanr%  z
Medium Vanr&  z	Large Vanr'  zNot Specifiedr(  r)  )r,   r  )r   r3   r  r4   r  r*  r+  r   r   r,  r  rX   rY   r+   )r3   r+   r   rE   rF   zpage = rG   rH   rI   r   )*rO   r0  rP   rQ   rR   rS   rT   r   r-  r   r   r   r   r.  r   r  r   r,  r  rW   rU   rX   rY   r[   r3   r  r  r4   r*  r+  r+   r   r   ri   rj   rk   rl   rF   rm   rn   ro   rp   )rq   rr   rs   r   r/  r   r   r,   r  r   r,  r  rz   rX   rY   r   r   r   r}   rF   )r~   r#   r%   rP   &  s    
 









z(AdminShowAllDriversDays.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r0  "  s   r0  c                   s    e Zd ZdZ fddZ  ZS )AdminShowAllDriversWeeklyzadmin_showalldrivers.htmlc                s  t t| jf |}td tjjddjdjd}g }t	j
j }|rd}xJ|D ]@}|jjj d |j d ko|jjj|jkrT|d7 }d}|jdkrd	}nN|jdkrd
}n>|jdkrd}n.|jdkrd}n|jdkrd}n|jdkrd}|jrd}	nd}	|jrd}
nd}
|jr d}nd}tjj|dj }|rJ|j}|j}nd}d}|j||j|jd |j |jj||j|j|jj|	|
||||jd qTW g }t jjdd}x"|D ]}|j|j|jd qW ||d< t!|d}t"| j#j$j%dd}td| y"|j&|}tt'| td W nR t(k
rL   |j&|j)}td Y n* t*k
rt   |j&|j)}td Y nX ||d < |S )!zEThis class shows the content on show all drivers screen to Admin userz!AdminShowAllDriversWeekly-in get F)r   z-idr   r   r
   r/   r#  r$  r0   z	Small Vanr%  z
Medium Vanr&  z	Large Vanr'  zNot Specifiedr(  r)  )r,   r  )r   r3   r  r4   r  r*  r+  r   r   r,  r  rX   rY   r+   )r3   r+   r   rE   rF   zpage = rG   rH   rI   r   )+rO   r1  rP   rQ   rR   rS   rT   r   r-  r   r   r   r   r.  r   r   r  r   r,  r  rW   rU   rX   rY   r[   r3   r  r  r4   r*  r+  r+   r   r   ri   rj   rk   rl   rF   rm   rn   ro   rp   )rq   rr   rs   r   r/  r   r   r,   r  r   r,  r  rz   rX   rY   r   r   r   r}   rF   )r~   r#   r%   rP     s    
,









z*AdminShowAllDriversWeekly.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r1    s   r1  c                   s    e Zd ZdZ fddZ  ZS )AdminShowAllDriversMonthszadmin_showalldrivers.htmlc                sv  t t| jf |}td tjjddjdjd}g }t	j
j }|rd}x>|D ]4}|jjj|jkox|jjj|jkrT|d7 }d}|jdkrd	}nN|jdkrd
}n>|jdkrd}n.|jdkrd}n|jdkrd}n|jdkrd}|jrd}	nd}	|jrd}
nd}
|jrd}nd}tjj|dj }|r>|j}|j}nd}d}|j||j|jd |j |jj||j|j|jj|	|
||||jd qTW g }t jjdd}x"|D ]}|j|j|jd qW ||d< t!|d}t"| j#j$j%dd}td| y"|j&|}tt'| td W nR t(k
r@   |j&|j)}td Y n* t*k
rh   |j&|j)}td Y nX ||d < |S )!zEThis class shows the content on show all drivers screen to Admin userz!AdminShowAllDriversMonths-in get F)r   z-idr   r   r
   r/   r#  r$  r0   z	Small Vanr%  z
Medium Vanr&  z	Large Vanr'  zNot Specifiedr(  r)  )r,   r  )r   r3   r  r4   r  r*  r+  r   r   r,  r  rX   rY   r+   )r3   r+   r   rE   rF   zpage = rG   rH   rI   r   )+rO   r2  rP   rQ   rR   rS   rT   r   r-  r   r   r   r   r.  r   r   r  r   r,  r  rW   rU   rX   rY   r[   r3   r  r  r4   r*  r+  r+   r   r   ri   rj   rk   rl   rF   rm   rn   ro   rp   )rq   rr   rs   r   r/  r   r   r,   r  r   r,  r  rz   rX   rY   r   r   r   r}   rF   )r~   r#   r%   rP     s    
 









z*AdminShowAllDriversMonths.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r2    s   r2  c                   s    e Zd ZdZ fddZ  ZS )AdminShowAllDriversYearszadmin_showalldrivers.htmlc                sd  t t| jf |}td tjjddjdjd}g }t	j
j }|r|d}x,|D ]"}|jjj|jkrT|d7 }d}|jdkrd	}nN|jdkrd
}n>|jdkrd}n.|jdkrd}n|jdkrd}n|jdkrd}|jrd}	nd}	|jrd}
nd}
|jrd}nd}tjj|dj }|r,|j}|j}nd}d}|j||j|jd |j |jj||j|j|jj|	|
||||jd qTW g }tjjdd}x"|D ]}|j|j|jd qW ||d< t |d}t!| j"j#j$dd}td| y"|j%|}tt&| td W nR t'k
r.   |j%|j(}td Y n* t)k
rV   |j%|j(}td Y nX ||d < |S )!zEThis class shows the content on show all drivers screen to Admin userz AdminShowAllDriversYears-in get F)r   z-idr   r   r
   r/   r#  r$  r0   z	Small Vanr%  z
Medium Vanr&  z	Large Vanr'  zNot Specifiedr(  r)  )r,   r  )r   r3   r  r4   r  r*  r+  r   r   r,  r  rX   rY   r+   )r3   r+   r   rE   rF   zpage = rG   rH   rI   r   )*rO   r3  rP   rQ   rR   rS   rT   r   r-  r   r   r   r   r.  r   r  r   r,  r  rW   rU   rX   rY   r[   r3   r  r  r4   r*  r+  r+   r   r   ri   rj   rk   rl   rF   rm   rn   ro   rp   )rq   rr   rs   r   r/  r   r   r,   r  r   r,  r  rz   rX   rY   r   r   r   r}   rF   )r~   r#   r%   rP   <  s    










z)AdminShowAllDriversYears.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r3  8  s   r3  c                   s    e Zd ZdZ fddZ  ZS )AdminShowAllCustomersDayszadmin_showallcustomers.htmlc                s
  t t| jf |}td tjj }tjj	dddj
djd}g }|rd}x|D ]}td|jj td|jjj  |jjj |krT|d	7 }|jrd
}nd}|jrd
}	nd}	|jrd
}
nd}
|jr|j}nd}|js|j}n|jd |j }|j||||j|jj|	||
|jd	 qTW g }tjj	dd}x"|D ]}|j|j|jd q2W ||d< t|d}t| jjjdd	}td| y"|j|}tt| td W nR tk
r   |j|j }td Y n* t!k
r   |j|j }td Y nX ||d< d|d< |S )zGThis class shows the content on show all customers screen to Admin userz!AdminShowAllCustomersDays-in get r_   F)r   r   z-idr   r   r   r
   r(  r)  r/   r  )	r   r3   r  r4   r   r,  r   r  r+   )r   )r3   r+   r   rE   rF   zpage = rG   rH   rI   all_customersrB   in_allcustomers_section)"rO   r4  rP   rQ   r   r   r   r   rS   rT   r   r-  r   r.  r   r,  r  r3   r  r  r[   r4   r+   r   r   ri   rj   rk   rl   rF   rm   rn   ro   rp   )rq   rr   rs   r   r5  r/  r   r_   r   r,  r  r3   r  r   r   r   r}   rF   )r~   r#   r%   rP     sx    





z*AdminShowAllCustomersDays.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r4    s   r4  c                   s    e Zd ZdZ fddZ  ZS )AdminShowAllCustomersWeeklyzadmin_showallcustomers.htmlc                s$  t t| jf |}td tjj }tjj	dddj
djd}g }|r4d}x|D ]}td|jj td|jjj |jjj d	 |j d	 ko|jjj|jkrT|d	7 }|jrd
}nd}|jrd
}	nd}	|jrd
}
nd}
|jr|j}nd}|js|j}n|jd |j }|j||||j|jj|	||
|jd	 qTW g }tjj	dd}x"|D ]}|j|j|jd qLW ||d< t|d}t| jjjdd	}td| y"|j |}tt!| td W nR t"k
r   |j |j#}td Y n* t$k
r   |j |j#}td Y nX ||d< d|d< |S )zGThis class shows the content on show all customers screen to Admin userz#AdminShowAllCustomersWeekly-in get r_   F)r   r   z-idr   r   r   r
   r(  r)  r/   r  )	r   r3   r  r4   r   r,  r   r  r+   )r   )r3   r+   r   rE   rF   zpage = rG   rH   rI   r5  rB   r6  )%rO   r7  rP   rQ   r   r   r   r   rS   rT   r   r-  r   r.  r   r   r   r   r,  r  r3   r  r  r[   r4   r+   r   r   ri   rj   rk   rl   rF   rm   rn   ro   rp   )rq   rr   rs   r   r5  r/  r   r_   r   r,  r  r3   r  r   r   r   r}   rF   )r~   r#   r%   rP     sx    

,



z,AdminShowAllCustomersWeekly.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r7    s   r7  c                   s    e Zd ZdZ fddZ  ZS )AdminShowAllCustomersMonthszadmin_showallcustomers.htmlc                s  t t| jf |}td tjj }tjj	dddj
djd}g }|r(d}x|D ]}td|jj td|jjj |jjj|jko|jjj|jkrT|d	7 }|jrd
}nd}|jrd
}	nd}	|jrd
}
nd}
|jr|j}nd}|js|j}n|jd |j }|j||||j|jj|	||
|jd	 qTW g }tjj	dd}x"|D ]}|j|j|jd q@W ||d< t|d}t| jjjdd	}td| y"|j|}tt | td W nR t!k
r   |j|j"}td Y n* t#k
r   |j|j"}td Y nX ||d< d|d< |S )zGThis class shows the content on show all customers screen to Admin userz#AdminShowAllCustomersMonths-in get r_   F)r   r   z-idr   r   r   r
   r(  r)  r/   r  )	r   r3   r  r4   r   r,  r   r  r+   )r   )r3   r+   r   rE   rF   zpage = rG   rH   rI   r5  rB   r6  )$rO   r8  rP   rQ   r   r   r   r   rS   rT   r   r-  r   r.  r   r   r   r,  r  r3   r  r  r[   r4   r+   r   r   ri   rj   rk   rl   rF   rm   rn   ro   rp   )rq   rr   rs   r   r5  r/  r   r_   r   r,  r  r3   r  r   r   r   r}   rF   )r~   r#   r%   rP   9	  sx    

 



z,AdminShowAllCustomersMonths.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r8  5	  s   r8  c                   s    e Zd ZdZ fddZ  ZS )AdminShowAllCustomersYearszadmin_showallcustomers.htmlc                s  t t| jf |}td tjj }tjj	dddj
djd}g }|r
d}x|D ]}td|jjj |jjj|jkrT|d	7 }|jrd
}nd}|jrd
}	nd}	|jrd
}
nd}
|jr|j}nd}|js|j}n|jd |j }|j||||j|jj|	||
|jd	 qTW g }tjj	dd}x"|D ]}|j|j|jd q"W ||d< t|d}t| jjjdd	}td| y"|j|}tt| td W nR t k
r   |j|j!}td Y n* t"k
r   |j|j!}td Y nX ||d< d|d< |S )zGThis class shows the content on show all customers screen to Admin userz"AdminShowAllCustomersYears-in get r_   F)r   r   z-idr   r   r   r
   r(  r)  r/   r  )	r   r3   r  r4   r   r,  r   r  r+   )r   )r3   r+   r   rE   rF   zpage = rG   rH   rI   r5  rB   r6  )#rO   r9  rP   rQ   r   r   r   r   rS   rT   r   r-  r   r.  r   r   r,  r  r3   r  r  r[   r4   r+   r   r   ri   rj   rk   rl   rF   rm   rn   ro   rp   )rq   rr   rs   r   r5  r/  r   r_   r   r,  r  r3   r  r   r   r   r}   rF   )r~   r#   r%   rP   	  sv    





z+AdminShowAllCustomersYears.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r9  	  s   r9  c                   s    e Zd ZdZ fddZ  ZS )AdminShowAllCustomerJobMonthszadmin_showallcustomerjobs.htmlc                s  t t| jf |}td tjj }t|j tj	j
ddjd}g }|rd}g }x|D ]}td|j td|jj |jj|jkr\td|j td|jj |j|kr\|jdkr|j|j d}	|jdkr tj	j
|jd}
d}d}|
r d	}d	}	x$|
D ]}|jdkr d}	|j}q W |jdkr\tj	j
|d
j }
d}d}|
r\d	}|
jr\d	}	d	}|jdkrpd}|	s\|jdkrd}n"|jdkrd}n|jdkrd}|d7 }|j||j|j|j|j|j|j|j|j|j|j||||jt |jd q\W t!|d}t"| j#j$j%dd}td| y|j&|}td W nR t'k
rd   |j&|j(}td Y n* t)k
r   |j&|j(}td Y nX ||d< t*j	j
d	dddjd}g }|r:x|D ]x}d$\}}t+j	j
|dj }|r|j,}|j-}tj	j
|ddj. }|j|j/|j0|j1d |j2 |j3j/||||jd qW g }t4j	j
dd}x"|D ]}|j|j/|jd qRW ||d< d|d < ||d!< d"|d#< |S )%zKThis class shows the content on show all customer jobs screen to Admin userz;AdminShowAllCustomerJobMonths-AdminShowAllCustomerJobs get F)r   z-idr   ztoday month--------zjob month--------)rg   T)rZ   zSame Day Deliveryr
   zTwo Day Deliveryr0   )r   r  r  r  r  r   r  rc   rd   re   rf   r  r  r  r	  r+   rE   rF   zpage = rG   rH   rI   r  )r   r  r   r/   )r,   )r,   r.   r  )r3   r4   r  r  rX   rY   r  r+   )r3   r+   r   outstandingr  r   zOutstanding Jobsr   )r/   r/   )5rO   r:  rP   rQ   r   r   r   r   r   rS   rT   r   r   r   rA   r[   rV   r.   rg   rU   r  r  r  r  r]   r   r^   rc   rd   re   rf   r+   r   r   ri   rj   rk   rl   rF   rn   ro   rp   rR   rW   rX   rY   r   r3   r4   r  r  r  r   )rq   rr   rs   r   r  r  r   r  rZ   r
  r   r  r  r   r  r  r}   rF   ru   r   r,   rX   rY   rz   r   r   r   r   )r~   r#   r%   rP   	  s    









z.AdminShowAllCustomerJobMonths.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r:  	  s   r:  c                   s    e Zd ZdZ fddZ  ZS )AdminShowAllCustomerJobWeeklyzadmin_showallcustomerjobs.htmlc                s  t t| jf |}td tjj }t|j tj	j
ddjd}g }|r.d}g }x|D ]}td|j d  td|jj d  |jj d |j d ko|jj|jkr\td	|j d  td	|jj d  |j|kr\|jdkr|j|j d}	|jdkrRtj	j
|jd
}
d}d}|
rRd}d}	x$|
D ]}|jdkr2d}	|j}q2W |jdkrtj	j
|dj }
d}d}|
rd}|
jrd}	d}|jdkrd}|	s\|jdkrd}n"|jdkrd}n|jdkrd}|d7 }|j||j|j|j|j|j|j|j|j|j|j||||j t!|jd q\W t"|d}t#| j$j%j&dd}td| y|j'|}td W nR t(k
r   |j'|j)}td Y n* t*k
r   |j'|j)}td Y nX ||d< t+j	j
ddddjd}g }|rlx|D ]x}d%\}}t,j	j
|dj }|r |j-}|j.}tj	j
|ddj/ }|j|j0|j1|j2d |j3 |j4j0||||j d qW g }t5j	j
dd}x"|D ]}|j|j0|j d qW ||d< d |d!< ||d"< d#|d$< |S )&zKThis class shows the content on show all customer jobs screen to Admin userz3AdminShowAllCustomers-AdminShowAllCustomerJobs get F)r   z-idr   ztoday week--------r
   zjob week--------zjob month--------)rg   T)rZ   zSame Day DeliveryzTwo Day Deliveryr0   )r   r  r  r  r  r   r  rc   rd   re   rf   r  r  r  r	  r+   rE   rF   zpage = rG   rH   rI   r  )r   r  r   r/   )r,   )r,   r.   r  )r3   r4   r  r  rX   rY   r  r+   )r3   r+   r   r;  r  r   zOutstanding Jobsr   )r/   r/   )6rO   r<  rP   rQ   r   r   r   r   r   rS   rT   r   r   r   r   rA   r[   rV   r.   rg   rU   r  r  r  r  r]   r   r^   rc   rd   re   rf   r+   r   r   ri   rj   rk   rl   rF   rn   ro   rp   rR   rW   rX   rY   r   r3   r4   r  r  r  r   )rq   rr   rs   r   r  r  r   r  rZ   r
  r   r  r  r   r  r  r}   rF   ru   r   r,   rX   rY   rz   r   r   r   r   )r~   r#   r%   rP   c
  s    

(







z.AdminShowAllCustomerJobWeekly.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r<  _
  s   r<  c                   s    e Zd ZdZ fddZ  ZS )AdminShowAllCustomerJobYearzadmin_showallcustomerjobs.htmlc                s  t t| jf |}td tjj }t|j tj	j
ddjd}g }|rd}g }x|D ]}td|j td|jj |jj|jkr\td|j d	  td|jj d	  |j|kr\|jdkr|j|j d}	|jdkr,tj	j
|jd
}
d}d}|
r,d}d}	x$|
D ]}|jdkrd}	|j}qW |jdkrhtj	j
|dj }
d}d}|
rhd}|
jrhd}	d}|jdkr|d}|	s\|jdkrd}n"|jd	krd}n|jdkrd}|d	7 }|j||j|j|j|j|j|j|j|j|j|j||||j t!|jd q\W t"|d}t#| j$j%j&dd	}td| y|j'|}td W nR t(k
rp   |j'|j)}td Y n* t*k
r   |j'|j)}td Y nX ||d< t+j	j
ddddjd}g }|rFx|D ]x}d%\}}t,j	j
|dj }|r|j-}|j.}tj	j
|ddj/ }|j|j0|j1|j2d |j3 |j4j0||||j d qW g }t5j	j
dd}x"|D ]}|j|j0|j d q^W ||d< d |d!< ||d"< d#|d$< |S )&zKThis class shows the content on show all customer jobs screen to Admin userz3AdminShowAllCustomers-AdminShowAllCustomerJobs get F)r   z-idr   ztoday year--------zjob year--------zjob month--------r
   )rg   T)rZ   zSame Day DeliveryzTwo Day Deliveryr0   )r   r  r  r  r  r   r  rc   rd   re   rf   r  r  r  r	  r+   rE   rF   zpage = rG   rH   rI   r  )r   r  r   r/   )r,   )r,   r.   r  )r3   r4   r  r  rX   rY   r  r+   )r3   r+   r   r;  r  r   zOutstanding Jobsr   )r/   r/   )6rO   r=  rP   rQ   r   r   r   r   r   rS   rT   r   r   r   r   rA   r[   rV   r.   rg   rU   r  r  r  r  r]   r   r^   rc   rd   re   rf   r+   r   r   ri   rj   rk   rl   rF   rn   ro   rp   rR   rW   rX   rY   r   r3   r4   r  r  r  r   )rq   rr   rs   r   r  r  r   r  rZ   r
  r   r  r  r   r  r  r}   rF   ru   r   r,   rX   rY   rz   r   r   r   r   )r~   r#   r%   rP   
  s    









z,AdminShowAllCustomerJobYear.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r=  
  s   r=  c                   s    e Zd ZdZ fddZ  ZS )AdminShowAllCustomerJobDayzadmin_showallcustomerjobs.htmlc                sn  t t| jf |}td tjj }t|j tj	j
ddjd}g }|rd}g }x|D ]|}td| td|jj  |jj |kr\|j|kr\|jdkr|j|j d}	|jdkrtj	j
|jd}
d}d}|
rd	}d	}	x |
D ]}|jdkrd}	|j}qW |jdkr>tj	j
|d
j }
d}d}|
r>d	}|
jr>d	}	d	}|jdkrRd}|	s\|jdkrhd}n"|jdkrzd}n|jdkrd}|d7 }|j||j|j|j|j|j|j|j|j|j|j||||jt|jd q\W t |d}t!| j"j#j$dd}td| y|j%|}td W nR t&k
rF   |j%|j'}td Y n* t(k
rn   |j%|j'}td Y nX ||d< t)j	j
d	dddjd}g }|rx|D ]x}d"\}}t*j	j
|dj }|r|j+}|j,}tj	j
|ddj- }|j|j.|j/|j0d |j1 |j2j.||||jd qW g }t3j	j
dd}x"|D ]}|j|j.|jd q4W ||d< ||d< d |d!< |S )#zKThis class shows the content on show all customer jobs screen to Admin userz3AdminShowAllCustomers-AdminShowAllCustomerJobs get F)r   z-idr   ztoday day--------zjob day--------)rg   T)rZ   zSame Day Deliveryr
   zTwo Day Deliveryr0   )r   r  r  r  r  r   r  rc   rd   re   rf   r  r  r  r	  r+   rE   rF   zpage = rG   rH   rI   r  )r   r  r   r/   )r,   )r,   r.   r  )r3   r4   r  r  rX   rY   r  r+   )r3   r+   r   r   zOutstanding Jobsr   )r/   r/   )4rO   r>  rP   rQ   r   r   r   r   r   rS   rT   r   r   rA   r[   rV   r.   rg   rU   r  r  r  r  r]   r   r^   rc   rd   re   rf   r+   r   r   ri   rj   rk   rl   rF   rn   ro   rp   rR   rW   rX   rY   r   r3   r4   r  r  r  r   )rq   rr   rs   r   r  r  r   r  rZ   r
  r   r  r  r   r  r  r}   rF   ru   r   r,   rX   rY   rz   r   r   r   r   )r~   r#   r%   rP   r  s    












z+AdminShowAllCustomerJobDay.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r>  n  s   r>  c       	      O   s  t d yt | j | jjd}| jjd}|dkrtjj|dj }|rd|_|j  tjj	 }x^|D ] }|j
|j
krzqhd|_|j  qhW n4|dkrtjj|d}d|_|j  ntd	d
dS tdddS  tk
r } zt | td	d
dS d}~X nX dS )zDThis function is being used to edit the parcel type details by Adminz&Admin - in changeRadiusStatus functionradiusIdr   ZEnable)r+   TFZDisablei  zInternal Server Error)r   r   r   successN)rQ   r   rl   RadiusControlrS   rT   rU   enabler   r   r+   r   r   )	rj   r   rr   r?  r   Z	oneradiusrdAllrdr   r#   r#   r%   changeRadiusStatus  s2    



rE  c             O   s   t d y|| jjd}t|}tjj|dd}|rttjj }x(|D ] }|j|jkrTqBd|_	|j
  qBW tdddS td	d
dS W n6 tk
r } zt | td	t|dS d}~X nX dS )zDThis function is being used to add the vehicle type details by Adminz Admin - in addNewRadius functionradiusT)r   rB  Fr   zRecord added successfully.)r   r   r   ErrorN)rQ   r   rl   r   rA  rS   creater   r+   rB  r   r   r   r   )rj   r   rr   rF  ZradiusAddedrC  rD  r   r#   r#   r%   addNewRadius  s"    

rI  c             C   s  t jj| d}d}d}d}d}xr|D ]h}tjj|dj }|jj}|jdkrTd}t|j	 t|j
 |j
}|jdd }	|jdd }
|	d d }	|
dd  }
t|	}	t|
}
|	d	 |
 }t|	 t|
 t| t|d d
 }||k r|}td| t|j |j}|jdd }	|jdd }
|	d d }	|
dd  }
t|	}	t|
}
|	d	 |
 }t|	 t|
 t| t|d d
 }||kr&|}q&W |dkrt||d | d S )N)rA   T   r   )rZ   Fr  r
    r0   PickupslotidrM  )r   rS   rT   rV   rU   r,   r+   r.   rQ   r`   ra   split	convert24ri   r   makeslotAvailable)r   customerjob_obj_allpackageCompleted	startSlotlastSlotr  r_   dJobstringFirstr   r   pickupSlotIDstringSeconddeliverySlotIDr#   r#   r%   slotStatusonJobComplete(  sX    





rZ  c             O   s
  t d yt | j | jjd}| jjd}tjj|d}tjj|dj }t | t | d}d}|ol|rx|D ]}	|	jdkrt	d	d
dS t |	j
j t |	j
j |	j
j}
|
jdd }|
jdd }|d d }|dd  }t|}t|}|d | }
t | t | t |
 t|
d d }t||j}||k rH|}t | |dkrdt d nt d t	d	d
dS t d| t |	j
j |	j
j}|jdd }|jdd }|d d }|dd  }t|}t|}|d | }t | t | t | t|d d }t||j}t | ||kr2|}t d| |dkrPt d qxt d t	d	d
dS qxW t||d |j t||d |d jj x|D ]}	||	_|	j  qW t	dddS t	dd
dS W n4 tk
r } zt | t	dddS d }~X nX d S )Nz/Admin - in shiftDriver_ExtraTestbefore functionr   selectedDriverID)rg   )r+   rJ  r
   Ti  zBad request.)r   r   r  r   rK  r0   passzavailable Delivery 1zunavailable Delivery 1rL  rY  zavailable Delivery2zunavailable Delivery2zunavailable Deliveryr   z Driver is assigned for this job.i  i  zInternal Server Error.rM  rM  )rQ   r   rl   rV   rS   rT   rR   rU   r-   r   rZ   r`   ra   rN  rO  ri   compareSlotTimesr+   r   makeslotUnavailablerP  r,   r   r   )rj   r   rr   r   r[  r   ru   rS  rT  r,   rV  r   r   rW  
responseOfrX  rY  r   r#   r#   r%   shiftDriver_ExtraTestbeforeW  s    











r`  c             O   s  t d yt | j | jjd}| jjd}tjj|d}tjj|dj }t | t | d}d}|ol|rxf|D ]\}	t |	jj	 t |	jj
 |	jj
}
|
jdd	 }|
jdd }|d d' }|dd  }t|}t|}|d
 | }
t | t | t |
 t|
d d }tjj|d}d	}d}t d |	jj	}x$|D ]}|j|krBd}|j}qBW |dkrtjj||d}t |j |rt d t|j t d t||j}t d |j}t d nt d n
t||}t | ||k r|}t | |dkrt d nt d tdddS t d| t |	jj |	jj}|jdd	 }|jdd }|d d( }|dd  }t|}t|}|d
 | }t | t | t | t|d d }tjj|d}d	}d}t d |	jj	}x$|D ]}|j|krd}|j}qW |dkrztjj||d}t |j |rpt d t|j t d t||j}t d |j}t d nt d n
t||}t | t | ||kr|}t d| |dkrt d qxt d tdddS qxW tjj|d	 jd}d	}x |D ]}|j|kr|j}qW t||d | t||d | xz|D ]r}	|	jdkrtjj|	jd!j }|rrd|_|j  d|	_d|	_d|	_d|	_d|	_ d|	_!d|	_"||	_|	j  q:W td"d#dS td$ddS W n4 t#k
r } zt | td%d&dS d }~X nX d S ))Nz.Admin - in newDrivertoDropOffDelveriy functionr   r[  )rg   )r+   rJ  r
   r  r   rK  r0   )r,   Fz
here one 2T)r,   dateOfSlotsz
here one 3zhere one 3.1zhere one 3.2zhere one 3.3zWe are in else not workingr\  zavailable Delivery 1zunavailable Delivery 1i  zBad request.)r   r   rL  rY  zavailable Delivery2zunavailable Delivery2zunavailable Delivery)r{   r   z Driver is assigned for this job.i  i  zInternal Server Error.rM  rM  )$rQ   r   rl   rV   rS   rT   rR   rU   rZ   r`   ra   rN  rO  ri   DriverAllSlotsra  r+   rH  makeallsloteenablebydefaultcompareSlotTimesnewr   r   r,   makeslotUnavailablenewmakeslotAvailablenewdeliveryfailedCustomerJobDeliveryFailedr   r   r-   arrived_at_pickupparcel_picked_by_driverstart_DropOffarrived_atDropOffLocationr.   r   )rj   r   rr   r   r[  r   ru   rS  rT  r,   rV  r   r   rW  driverslotsobjidofslottables	slotsFindparcelpickupdater   newdateSlotsr_  rX  rY  slotofOlddriversidofslottables2slotZcustomalreadyFailedr   r#   r#   r%   newDrivertoDropOffDelveriy  s   


























ru  c             O   s  t d yvt | j | jjd}| jjd}tjj|d}tjj|dj }t | t | d}d}|ol|rpxv|D ]l}	|	jdkrt	d	d
dS t |	j
j t |	j
j |	j
j}
|
jdd }|
jdd }|d d& }|dd  }t|}t|}|d | }
t | t | t |
 t|
d d }tjj|d}d}d}t d |	j
j}x$|D ]}|j|krZd}|j}qZW |dkrtjj||d}t |j |rt d t|j t d t||j}t d |j}t d nt d n
t||}t | ||k r|}t | |dkr(t d nt d t	d	d
dS t d| t |	j
j |	j
j}|jdd }|jdd }|d d' }|dd  }t|}t|}|d | }t | t | t | t|d d }tjj|d}d}d}t d |	j
j}x$|D ]}|j|kr d}|j}q W |dkrtjj||d}t |j |rt d t|j t d t||j}t d |j}t d nt d n
t||}t | ||kr|}t d| |dkrt d qxt d t	d	d
dS qxW tjj|d jd}d}x |D ]}|j|kr|j}qW t||d | t||d | x|D ]}	||	_|	j  qJW t	d!d"dS t	d#d
dS W n4 tk
r } zt | t	d$d%dS d }~X nX d S )(Nz)Admin - in shiftDriver_ExtraTest functionr   r[  )rg   )r+   rJ  r
   Ti  zBad request.)r   r   r  r   rK  r0   )r,   Fz
here one 2)r,   ra  z
here one 3zhere one 3.1zhere one 3.2zhere one 3.3zWe are in else not workingr\  zavailable Delivery 1zunavailable Delivery 1rL  rY  zavailable Delivery2zunavailable Delivery2zunavailable Deliveryr   z Driver is assigned for this job.i  i  zInternal Server Error.rM  rM  )rQ   r   rl   rV   rS   rT   rR   rU   r-   r   rZ   r`   ra   rN  rO  ri   rb  ra  r+   rH  rc  rd  r   r,   re  rf  r   r   )rj   r   rr   r   r[  r   ru   rS  rT  r,   rV  r   r   rW  rm  rn  ro  rp  r   rq  r_  rX  rY  rr  rs  rt  r   r#   r#   r%   shiftDriver_ExtraTestP  s    


























rv  c             O   s\  t d yt | j | jjd}tjj|dj }i }d}|ryBd\}}tjj|dj }	|	rn|	j}|	j	}t
jj|ddj }
W n6 tk
r } zt | d\}}d	}
W Y d d }~X nX |jjrttj|jj }|j|j|j|jd
 |j ||||
|jd td|dS tdddS W n4 tk
rV } zt | tdddS d }~X nX d S )NzAdmin - getOneDriverDetailsr*   )r+   z,http://13.126.26.12/static/images/camera.pngr/   )r,   F)r,   r.   r   r  )r3   r4   r  r  rX   rY   r  r+   r   )r   current_driveri  zInternal Server Error.)r   r   )r/   r/   )r/   r/   )rQ   r   rl   rR   rS   rT   rU   rW   rX   rY   rV   r   r   r  r3   r   r   WEB_BASE_URLupdater4   r  r  r+   r   )rj   r   rr   	driver_idru   assignedDriverr  rX   rY   rz   r   r   r#   r#   r%   getOneDriverDetails  sF    
r|  c          #   O   s@  t d yt | j | jjd}tjj|dj }|j}|j}i }d}|r,yBd\}	}
t	jj|dj
 }|rz|j}	|j}
tjj|ddj }W n6 tk
r } zt | d\}	}
d	}W Y d d }~X nX |jjrttj|jj }|j|j|j|jd
 |j ||	|
||j|jj|jj|jj|jj|jd tjjddddjd}g }d}|rx|D ]}||jkrXd\}	}
t	jj|dj
 }|r|j}	|j}
tjj|ddj }|jjrttj|jj }|j |j|j|jd
 |j ||	|
||jd qXW t!d||dS  tk
r: } zt | t!dddS d }~X nX d S )Nz Admin - in assigndriver functionr*   )rg   z,http://13.126.26.12/static/images/camera.pngr/   )r,   F)r,   r.   r   r  )r3   r4   r  r  rX   rY   r  r+   rc   rd   re   rf   rg   T)r   r  r   z-id)r3   r4   r  r  rX   rY   r  r+   r   )r   r   rw  i  zInternal Server Error.)r   r   )r/   r/   )r/   r/   )r/   r/   )"rQ   r   rl   rV   rS   rT   r   r,   r+   rW   rU   rX   rY   r   r   r  r3   r   r   rx  ry  r4   r  r  rZ   rc   rd   re   rf   rg   rR   r   r[   r   )rj   r   rr   rz  r   ru   ZalreadySelectedr{  r  rX   rY   rz   r   r   Zdriver_obj2r   r,   r#   r#   r%   shiftDriverDetails
  s    


r}  c             C   s  y| d } t jj|dj }tjj|dj }|r| dkrL|dkrLd|_| dkrb|dkrbd|_| dkrx|dkrxd|_| dkr|dkrd|_| dkr|dkrd|_	| d	kr|d	krd|_
| d
kr|d
krd|_| dkr|dkrd|_| dkr|dkrd|_| dkr|dkrd|_| dkr0|dkr0d|_| dkrJ|dkrJd|_| dkrd|dkrdd|_| dkr~|dkr~d|_| dkr|dkrd|_| dkr|dkrd|_| dkr|dkrd|_| dkr|dkrd|_| dkr |dkr d|_| dkr|dkrd|_| dkr4|dkr4d|_| dkrN|dkrNd|_| dkrh|dkrhd|_| dkr|dkrd|_|j  dS  tk
r } zt| dS d }~X nX d S )Nr
   )r+   )r,   Fr0   r%  r&  r'           	   
               rE                           rJ  r\  fail) rR   rS   rT   rU   rb  activeSlot1activeSlot2activeSlot3activeSlot4activeSlot5activeSlot6activeSlot7activeSlot8activeSlot9activeSlot10activeSlot11activeSlot12activeSlot13activeSlot14activeSlot15activeSlot16activeSlot17activeSlot18activeSlot19activeSlot120activeSlot21activeSlot22activeSlot23activeSlot24r   r   rQ   )slotIdslotId2DriverIDru   rm  r   r#   r#   r%   r^  Y  st    r^  c             C   s  y| d } t jj|dj }td| t|  t| |rtd | dkr\|dkr\d|_| dkrr|dkrrd|_| dkr|dkrd|_| dkr|dkrd|_| d	kr|d	krd|_	| d
kr|d
krd|_
| dkr|dkrd|_| dkr|dkrd|_| dkr|dkrd|_| dkr*|dkr*d|_| dkrD|dkrDd|_| dkr^|dkr^d|_| dkrx|dkrxd|_| dkr|dkrd|_| dkr|dkrd|_| dkr|dkrd|_| dkr|dkrd|_| dkr|dkrd|_| dkr|dkrd|_| dkr.|dkr.d|_| dkrH|dkrHd|_| dkrb|dkrbd|_| dkr||dkr|d|_| dkr|dkrd|_|j  dS  tk
r } zt| dS d }~X nX d S )Nr
   )r+   zslot objectz	we are inFr0   r%  r&  r'  r~  r  r  r  r  r  r  r  r  rE   r  r  r  r  r  r  r  r  rJ  r\  r  )rb  rS   rT   rU   rQ   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  driveridforslotsrm  r   r#   r#   r%   re    sz    
re  c             C   s  y| d } t jj|dj }tjj|dj }|r| dkrL|dkrLd|_| dkrb|dkrbd|_| dkrx|dkrxd|_| dkr|dkrd|_| dkr|dkrd|_	| d	kr|d	krd|_
| d
kr|d
krd|_| dkr|dkrd|_| dkr|dkrd|_| dkr|dkrd|_| dkr0|dkr0d|_| dkrJ|dkrJd|_| dkrd|dkrdd|_| dkr~|dkr~d|_| dkr|dkrd|_| dkr|dkrd|_| dkr|dkrd|_| dkr|dkrd|_| dkr |dkr d|_| dkr|dkrd|_| dkr4|dkr4d|_| dkrN|dkrNd|_| dkrh|dkrhd|_| dkr|dkrd|_|j  dS  tk
r } zt| dS d }~X nX d S )Nr
   )r+   )r,   Tr0   r%  r&  r'  r~  r  r  r  r  r  r  r  r  rE   r  r  r  r  r  r  r  r  rJ  r\  r  ) rR   rS   rT   rU   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   rQ   )r  r  r  ru   rm  r   r#   r#   r%   rP    st    rP  c             C   s  yv| d } t jj|dj }|rv| dkr:|dkr:d|_| dkrP|dkrPd|_| dkrf|dkrfd|_| dkr||dkr|d|_| dkr|dkrd|_| dkr|dkrd|_	| d	kr|d	krd|_
| d
kr|d
krd|_| dkr|dkrd|_| dko|dkrd|_| dkr|dkrd|_| dkr6|dkr6d|_| dkrP|dkrPd|_| dkrj|dkrjd|_| dkr|dkrd|_| dkr|dkrd|_| dkr|dkrd|_| dkr|dkrd|_| dkr|dkrd|_| dkr|dkrd|_| dkr |dkr d|_| dkr:|dkr:d|_| dkrT|dkrTd|_| dkrn|dkrnd|_|j  dS  tk
r } zt| dS d }~X nX d S )Nr
   )r+   Tr0   r%  r&  r'  r~  r  r  r  r  r  r  r  r  rE   r  r  r  r  r  r  r  r  rJ  r\  r  )rb  rS   rT   rU   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   rQ   )r  r  r  rm  r   r#   r#   r%   rf    sr    rf  c             C   s  y| d } t jj|dj }tjj|dj }|r| dkrP|jdkrLdS n| dkrj|jdkrfdS nr| dkr|jdkrdS nX| dkr|jdkrdS n>| d	kr|j	dkrdS n$| d
kr|j
dkrdS n
| dkr|jdkrdS n| dkr
|jdkrdS n| dkr(|jdkrdS n| dkrF|jdkrdS n| dkrd|jdkrdS nx| dkr|jdkrdS nZ| dkr|jdkrdS n<| dkr|jdkrdS n| dkr|jdkrdS n | dkr|jdkrdS n| dkr|jdkrdS n| dkr0|jdkrdS n| dkrL|jdkrdS n| dkrh|jdkrdS nt| dkr|jdkrdS nX| dkr|jdkrdS n<| dkr|jdkrdS n | dkr|jdkrdS ndS dS  tk
r } zt| dS d }~X nX d S )Nr
   )r+   )r,   Tr\  r0   r%  r&  r'  r~  r  r  r  r  r  r  r  r  rE   r  r  r  r  r  r  r  r  rJ  r  )rR   rS   rT   rU   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   rQ   )r  r  ru   rm  r   r#   r#   r%   r]  V  s    























r]  c             C   s  y| d } t jj|dj }|r| dkr>|jdkr:dS n| dkrX|jdkrTdS nn| dkrr|jdkrndS nT| dkr|jdkrdS n:| dkr|jdkrdS n | d	kr|j	dkrdS n| d
kr|j
dkrdS n| dkr|jdkrdS n| dkr|jdkrdS n| dkr0|jdkrdS n| dkrN|jdkrdS nx| dkrl|jdkrdS nZ| dkr|jdkrdS n<| dkr|jdkrdS n| dkr|jdkrdS n | dkr|jdkrdS n| dkr|jdkrdS n| dkr|jdkrdS n| dkr6|jdkrdS n| dkrR|jdkrdS nt| dkrn|jdkrdS nX| dkr|jdkrdS n<| dkr|jdkrdS n | dkr|jdkrdS ndS dS  tk
r } zt| dS d }~X nX d S )Nr
   )r+   Tr\  r0   r%  r&  r'  r~  r  r  r  r  r  r  r  r  rE   r  r  r  r  r  r  r  r  rJ  r  )rb  rS   rT   rU   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   rQ   )r  ZDriverIDforslotsrm  r   r#   r#   r%   rd    s    























rd  c             C   s   | dd  dkrH| d d dkrHd| dd  }|j dd}|d }|S | dd  dkr|| d d }|j dd}|d }|S | dd  dkr| d d dkr| d d }|j dd}|d }|S tt| d d d	 | dd
  }|d }|j dd}|S d S )Nr0   AM1200rK  r/   z:00PMr  r~  r  r  r  r  r  )replacer   ri   )str1resr#   r#   r%   rO    s&      $rO  c             C   s  t jj| dj }tjj|d}|rd|_d|_d|_d|_	d|_
d|_d|_d|_d|_d|_d|_d|_d|_d	|_d|_d	|_d
|_d|_d
|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_!d|_"d|_#d|_$d|_%d|_&d|_'d|_(d|_)d|_*d|_+d|_,d|_-d|_.d|_/d|_0d|_1d|_2d|_3d|_4d|_5d|_6d|_7d|_8d|_9d|_:d|_;d|_<d|_=d|_>d|_?d|_@d|_Ad|_Bd|_Cd|_Dd|_Ed|_Fd|_Gd|_Hd|_Id|_Jd|_Kd|_Ld|_M|jN  dS dS )N)r+   )r,   z00:00:00z01:00:00Tz02:00:00z03:00:00z04:00:00z05:00:00z06:00:00z07:00:00z08:00:00z09:00:00z10:00:00z11:00:00z12:00:00z13:00:00z14:00:00z15:00:00z16:00:00z17:00:00z18:00:00z19:00:00z20:00:00z21:00:00z22:00:00z23:00:00r   0)OrR   rS   rT   rU   rb  rH  openinghourSlot1closinghourSlot1r  openinghourSlot2closinghourSlot2r  openinghourSlot3closinghourSlot3r  openinghourSlot4closinghourSlot4r  openinghourSlot5closinghourSlot5r  openinghourSlot6closinghourSlot6r  openinghourSlot7closinghourSlot7r  openinghourSlot8closinghourSlot8r  openinghourSlot9closinghourSlot9r  openinghourSlot10closinghourSlot10r  openinghourSlot11closinghourSlot11r  openinghourSlot12closinghourSlot12r  openinghourSlot13closinghourSlot13r  openinghourSlot14closinghourSlot14r  openinghourSlot15closinghourSlot15r  openinghourSlot16closinghourSlot16r  openinghourSlot17closinghourSlot17r  openinghourSlot18closinghourSlot18r  openinghourSlot19closinghourSlot19r  openinghourSlot20closinghourSlot20r  openinghourSlot21closinghourSlot21r  openinghourSlot22closinghourSlot22r  openinghourSlot23closinghourSlot23r  openinghourSlot24closinghourSlot24r  r   )r  ru   rm  r#   r#   r%   createDriverSlots  s    r  c             C   s  t jj| dj }|rd|_d|_d|_d|_d|_d|_	d|_
d|_d|_d|_d|_d|_d|_d|_d|_d|_d	|_d|_d	|_d
|_d|_d
|_d|_d|_d|_d|_d|_d|_d|_ d|_!d|_"d|_#d|_$d|_%d|_&d|_'d|_(d|_)d|_*d|_+d|_,d|_-d|_.d|_/d|_0d|_1d|_2d|_3d|_4d|_5d|_6d|_7d|_8d|_9d|_:d|_;d|_<d|_=d|_>d|_?d|_@d|_Ad|_Bd|_Cd|_Dd|_Ed|_Fd|_Gd|_Hd|_Id|_Jd|_K|jL  dS dS )N)r+   z00:00:00z01:00:00Tz02:00:00z03:00:00z04:00:00z05:00:00z06:00:00z07:00:00z08:00:00z09:00:00z10:00:00z11:00:00z12:00:00z13:00:00z14:00:00z15:00:00z16:00:00z17:00:00z18:00:00z19:00:00z20:00:00z21:00:00z22:00:00z23:00:00r   r  )Mrb  rS   rT   rU   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  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   )alreadycreatedSlotIDrm  r#   r#   r%   rc  n  s    rc  c       
      O   s  t d yt | j | jjd}| jjd}| jjd}t d tjj|dj }|rt|}|dkrd}t|||}|d	krt	d
ddS t	dddS n<|dkrd}t|||}|d	krt	d
ddS t	dddS W n4 t
k
r }	 zt |	 t	dddS d}	~	X nX dS )zDThis function is being used to edit the parcel type details by Adminz)Admin - in changetimeslotstatus2 functionslot_idr   r*   zDriverTimeSlots-in get )r+   rB  Tr   r   r@  )r   r   r   errordisableFi  zInternal Server ErrorN)rQ   r   rl   rb  rS   rT   rU   ri   changeSlotStatusr   r   )
rj   r   rr   r  r   r*   alltimeslotsr   respor   r#   r#   r%   changetimeslotstatus2  s2    
r  c             C   s  |dkr|| _ | j  dS |dkr4|| _| j  dS |dkrN|| _| j  dS |dkrh|| _| j  dS |dkr|| _| j  dS |dkr|| _| j  dS |dkr|| _| j  dS |d	kr|| _| j  dS |d
k r|| _	| j  dS |dkr|| _
| j  dS |dkr$|| _| j  dS |dkr@|| _| j  dS |dkr\|| _| j  dS |dkrx|| _| j  dS |dkr|| _| j  dS |dkr|| _| j  dS |dkr|| _| j  dS |dkr|| _| j  dS |dkr|| _| j  dS |dkr || _| j  dS |dkr<|| _| j  dS |dkrX|| _| j  dS |dkrt|| _| j  dS |dkr|| _| j  dS dS dS )Nr
   r   r0   r%  r&  r'  r~  r  r  r  r  r  r  r  r  rE   r  r  r  r  r  r  r  r  rJ  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  )rt  idTSr   r#   r#   r%   r    s    















r  c                   s    e Zd ZdZ fddZ  ZS )DriverTimeSlotsz!admin_showalltimeslotsDriver.htmlc                s   g }t t| jf |}|d }tjj|dj }|r<t|}t|d}t	| j
jjdd}td| y|j|}td W nN tk
r   |j|j}td Y n( tk
r   |j|j}td	 Y nX ||d
< ||d< |S )zGThis class shows the content on show all customers screen to Admin userslotid)r+   rE   rF   r
   zpage = tryrH   rI   r  r*   )rO   r  rP   rb  rS   rT   rU   addSlotsr   ri   rj   rk   rl   rQ   rF   rn   ro   rp   )rq   rr   timeslots_datars   r  r  r}   rF   )r~   r#   r%   rP   M  s*    


z DriverTimeSlots.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r  I  s   r  c                   s    e Zd ZdZ fddZ  ZS )allDatesOfSlotszshowDatesOfSlots.htmlc                s  g }g }t t| jf |}|d }tjj|dj }td tjj|d}x$|D ]}|j	|j
|j|jd qPW t|d}	t| jjjdd}
td	|
 y|	j|
}td
 W nN tk
r   |	j|	j}td Y n( tk
r   |	j|	j}td Y nX ||d< ||d< |S )zGThis class shows the content on show all customers screen to Admin userr*   )r+   zallDatesOfSlots-in get )r,   )
drivernamer   r  rE   rF   r
   zpage = r  rH   rI   r  )rO   r  rP   rR   rS   rT   rU   rQ   rb  r[   r3   ra  r+   r   ri   rj   rk   rl   rF   rn   ro   rp   )rq   rr   r  ZallslotsDatars   r*   ru   r  Zalltr}   rF   )r~   r#   r%   rP   w  s4    



z allDatesOfSlots.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r  s  s   r  c             C   s  g }|j d| j| j| jdd |j d| j| j| jdd |j d| j| j| j	dd |j d| j
| j| jdd |j d| j| j| jdd |j d| j| j| jdd |j d| j| j| jdd |j d	| j| j| jd	d |j d
| j| j| jd
d |j d| j| j| jdd |j d| j| j | j!dd |j d| j"| j#| j$dd |j d| j%| j&| j'dd |j d| j(| j)| j*dd |j d| j+| j,| j-dd |j d| j.| j/| j0dd |j d| j1| j2| j3dd |j d| j4| j5| j6dd |j d| j7| j8| j9dd |j d| j:| j;| j<dd |j d| j=| j>| j?dd |j d| j@| jA| jBdd |j d| jC| jD| jEdd |j d| jF| jG| jHdd tI| |S )Nr
   )r   openinghourclosinghourr   r+   r0   r%  r&  r'  r~  r  r  r  r  r  r  r  r  rE   r  r  r  r  r  r  r  r  rJ  )Jr[   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  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rQ   )rt  r  r#   r#   r%   r    s&   























r  c                   s    e Zd ZdZ fddZ  ZS )AdminShowAllDriversTimeSlotszadmin_showalldriversTS.htmlc                s
  t t| jf |}td tjjddjdjd}g }|r`d}x|D ]}|d7 }d}|j	dkrld	}nN|j	dkr|d
}n>|j	dkrd}n.|j	dkrd}n|j	dkrd}n|j	dkrd}|j
rd}nd}|jrd}	nd}	|jrd}
nd}
tjj|dj }|r|j}|j}nd}d}|j||j|jd |j |jj||j|j|jj||	|
|||jd qJW t|d}t| jjjdd}td| y"|j |}tt!| td W nR t"k
r   |j |j#}td Y n* t$k
r   |j |j#}td Y nX ||d< |S )zEThis class shows the content on show all drivers screen to Admin userz$AdminShowAllDriversTimeSlots-in get F)r   z-idr   r   r
   r/   r#  r$  r0   z	Small Vanr%  z
Medium Vanr&  z	Large Vanr'  zNot Specifiedr(  r)  )r,   r  )r   r3   r  r4   r  r*  r+  r   r   r,  r  rX   rY   r+   rE   rF   zpage = rG   rH   rI   r   )%rO   r  rP   rQ   rR   rS   rT   r   r-  r  r   r,  r  rW   rU   rX   rY   r[   r3   r  r  r   r4   r*  r+  r.  r+   r   ri   rj   rk   rl   rF   rm   rn   ro   rp   )rq   rr   rs   r   r/  r   r,   r  r   r,  r  rz   rX   rY   r}   rF   )r~   r#   r%   rP   L  s    








z-AdminShowAllDriversTimeSlots.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r  H  s   r  c             O   s~  t d y<| jjd}t d t | jjd tj|}t | g }d}x|D ]}t d t |d  t |d  |d }|d }|d }	d	}
t d
 y.t d tjj||dj }|j	dkrd}
W n@ t
k
r
 } z"t d |j||ddd W Y d d }~X nX |
d	krrt d ytjj|dj }t d |j}t d |jjdkr4t d |jjr|jr2|j}|j}|| }ttjt_tjj|jjdj }|r2tjjtt|d d|j|jdtdt|j   d d}t!jj|t||j t|j"d d}|r2t d nt d t#d diS nt d! W n2 t
k
rp } zt | t#d diS d }~X nX yxt d" tjj||dj }|r|
d	krJd|_$|	|_%d|_&|j'  y^t(j(j) }t*jj|d#j }|r||_+|j'  n(tjj|dj }|rt*jj||d$ W n, t
k
rF } zt | W Y d d }~X nX nd|_$|j'  |
d	kryt,|j-j.d%d&d'd( W n, t
k
r } zt | W Y d d }~X nX nFyt,|j-j.d%d&d'd) W n, t
k
r } zt | W Y d d }~X nX |
d	krRy(t/jj|j-j0|j1j |j dd*d(d+d, W n, t
k
rN } zt | W Y d d }~X nX nVy(t/jj|j-j0|j1j |j dd*d)d+d, W n, t
k
r } zt | W Y d d }~X nX |
d	kryt,|j1jj.dd&d'd- W n, t
k
r } zt | W Y d d }~X nX nHyt,|j1jj.dd&d'd. W n, t
k
rB } zt | W Y d d }~X nX |
d	kry&t/jj|j1jj0|j1j dd*d-d+d/ W n, t
k
r } zt | W Y d d }~X nX nTy&t/jj|j1jj0|j1j dd*d.d+d/ W n, t
k
r } zt | W Y d d }~X nX |
d	krypt|j1j2j3d0|j1j4 }t|j1j5j3d0|j1j6 }t | t | t7|d1d2}t | t7|d3d2}t | W n, t
k
r } zt | W Y d d }~X nX |
d	kr|j||d4d5d n|j||d6d5d n|j||ddd W qR t
k
r$ } z|j||d7dd W Y d d }~X qRX qRW |dkr<t8| t#d d8iS  t
k
rx } zt | t#d diS d }~X nX d S )9NzJob completed by adminr   zmy oner   zmy twocustomerjobiddriverjobidcommentFzmy Therezmy one4)r+   customerjob_idTzmy one5zDriver Job not Foundtrue)
customeridr*   r   r  zmy one6)r+   z	my one6.1r_   zcustomer userr   gbpzPayment for parcel (AWB-i'  ))amountcurrencyr_   carddescription)r{   stripe_charge_responsestripe_charge_idstripe_amountzpayment received successfullyz/Customer didn't select card while placing orderr   zcompany userzmy one7)job_id)r{   itemsdelivered_datetimer,   statuschangeKwickDeliveryz&You have delivered parcel successfullyzThis Parcel is DisabledzParcel Deliveredunread)r   r  r  	fordrivernotificationtypenotificationtextr   z%Your parcel is delivered successfullyz4This Parcel is Disabled,Driver not found this parcel)r   r  forcustomerr  r  r   +z&Your parcel is successfully delivered.OTPz&You have successfully received parcel.zParcel DeliverdfalsezThis Parcel is disabledzInternal Server Errorr   )9rQ   r   rl   r   r   rV   rS   rT   rU   parcel_disabledr   r[   r   rA   r_   r   r\   charge_from_cardr   specialbooking_charger   r   
STRIPE_KEYstripeapi_key
StoredCardChargerH  ri   r   stripe_customer_idstripe_card_idr+   CustomerJobPaymentr  r   r.   adminSumitionResaonsubmitByAdminr   r   nowCustomerJobDateTimer	  r   r,   fcmtokenNotificationsr   rZ   sendercountrycodestripr  recipientcountrycoderecipientphoner   slotStatusonJobCompletenew)rj   r   rr   r   r   r   r   customerjobid_valdriverjobid_valr  comment_for_parcelr   r   r   parcel_charger  total_amountstoredcard_objchargecustomerjobpayment_objcurrent_datecustomerjobdatetime_objsender_phonerecipient_phoneres1res2r#   r#   r%   JobCompletedByDriver  s@   



$





((

&&

 
r8  c       
      O   s   t d yt | j | jjd}| jjd}tjj|dj }|r|dkr|j}tjj|dj }|r| j	|j	7  _	|j
  d|_d}t d	 |d
krd|_d}|j
  td|dS W n2 tk
r }	 zt |	 tdddS d}	~	X nX dS )zDThis function is being used to edit the parcel type details by Adminz0Admin - in change_credit_request_status functioncredit_request_idr   )r+   r   )customer__emailapprovedzRequest approvedzapprove requestr   disapprovedzRequest disapprovedr   )r   r   i  zInternal Server ErrorN)rQ   r   rl   CreditsRequestedrS   rT   rU   company_emailCompanyDetailcreditsr   r   r   r   )
rj   r   rr   r9  r   creditsrequested_objr>  companydetail_objr   r   r#   r#   r%   change_credit_request_statusc  s0    
rC  c             C   s  t d tjjddjd}g }|rd}x|D ]}tjj|dj }d}|r\|jr\d}|r2|d7 }t tjj|j	d	j }|r|j
jd
}nd}tjj|dj }	d>\}
}}|	r@t t|	j |	jdkr|	jr|	jjd
}|	jdko|	jr |	jjd
}
|	jdkr |	jr |	jjd
}|	jdkr@|	jr@|	jjd
}tjj|dj }i }|r|j|jj|jj|jj|jj|jd |j|dtd|j  |j|jd |j |j|j|jd |j  |j!|j"|j#|j$|j%||
||||jd q2W ddl&}dtt'j'j(  d }t)d| ddd}|j*|}|j+ddddddddd d!d"d#d$d%d&d'd(g x|D ]z}|j+|d) |d* |d+ |d, |d- |d. |d/ |d0 |d1 |d2 |d3 |d4 |d5 |d6 d7 |d8 |d9 |d: g q^W W dQ R X t,d;tt-j.d< | d=S )?zEThis class shows the content on show all drivers screen to Admin userz(generate_outstandingjobs_csv - function F)r   z-idr   )rZ   Tr
   )r\   z%d/%m/%Y %I:%M %pr/   )r{   )r  drivercountrycodedriverphoner*   r  zAWB-i'  r  )r   	awbnumberr  r  r  r   r(  r  lengthwidthheightweightpayment_datetimepickup_datetimer	  deliveryfailed_datetimedriverjob_datar+   Ncompletedjobs_z.csvz5/var/www/html/GoodsDelivery/media/CSV/Completed Jobs/w)newlinez
Serial No.z
AWB NumberzSender NamezSender Phone NumberzSender Pickup AddresszRecipient NamezRecipient Phone NumberzRecipient Dropoff AddressLengthWidthHeightWeightzPayment TimezDriver NamezPickup TimezDelivered TimezFailed Delivery Timer   rF  r  r  r  r   r(  r  rG  rH  rI  rJ  rK  rN  r  rL  r	  rM  r   z/media/CSV/Completed Jobs/)r   link)r/   r/   r/   )/rQ   r   rS   rT   r   rV   rU   r.   OrderPaymentr\   r   r   r"  typerK  rL  r	  rM  ry  r,   r3   r  r  r+   r[   r   r  r%  r  r]   r   r'  r(  r^   rG  rH  rI  rJ  csvr   r!  r   writerwriterowr   r   rx  )rj   r  r  r   rZ   r   r
  orderpayment_objrK  r3  rL  r	  rM  rN  rY  filenamefilerZ  r   r#   r#   r%   generate_outstandingjobs_csv  s    

,
r_  c             C   s  t d tjjddjd}g }|rd}x|D ]}tjj|dj }d}|r\|jr\d}|r2|d7 }t tjj|j	d	j }|r|j
jd
}nd}tjj|dj }	d>\}
}}|	r@t t|	j |	jdkr|	jr|	jjd
}|	jdko|	jr |	jjd
}
|	jdkr |	jr |	jjd
}|	jdkr@|	jr@|	jjd
}tjj|dj }i }|r|j|jj|jj|jj|jj|jd |j|dtd|j  |j|jd |j |j|j|jd |j  |j!|j"|j#|j$|j%||
||||jd q2W ddl&}dtt'j'j(  d }t)d| ddd}|j*|}|j+ddddddddd d!d"d#d$d%d&d'd(g x|D ]z}|j+|d) |d* |d+ |d, |d- |d. |d/ |d0 |d1 |d2 |d3 |d4 |d5 |d6 d7 |d8 |d9 |d: g q^W W dQ R X t,d;tt-j.d< | d=S )?zEThis class shows the content on show all drivers screen to Admin userz&generate_completedjobs_csv - function F)r   z-idr   )rZ   Tr
   )r\   z%d/%m/%Y %I:%M %pr/   )r{   )r  rD  rE  r*   r  zAWB-i'  r  )r   rF  r  r  r  r   r(  r  rG  rH  rI  rJ  rK  rL  r	  rM  rN  r+   NrO  z.csvz5/var/www/html/GoodsDelivery/media/CSV/Completed Jobs/rP  )rQ  z
Serial No.z
AWB NumberzSender NamezSender Phone NumberzSender Pickup AddresszRecipient NamezRecipient Phone NumberzRecipient Dropoff AddressrR  rS  rT  rU  zPayment TimezDriver NamezPickup TimezDelivered TimezFailed Delivery Timer   rF  r  r  r  r   r(  r  rG  rH  rI  rJ  rK  rN  r  rL  r	  rM  r   z/media/CSV/Completed Jobs/)r   rV  )r/   r/   r/   )/rQ   r   rS   rT   r   rV   rU   r.   rW  r\   r   r   r"  rX  rK  rL  r	  rM  ry  r,   r3   r  r  r+   r[   r   r  r%  r  r]   r   r'  r(  r^   rG  rH  rI  rJ  rY  r   r!  r   rZ  r[  r   r   rx  )rj   r  r  r   rZ   r   r
  r\  rK  r3  rL  r	  rM  rN  rY  r]  r^  rZ  r   r#   r#   r%   generate_completedjobs_csv  s    

,
r`  c       	      O   s  t d yt | j | jjd}| jjd}| jjd}| jjd}|sVtdddS |shtdd	dS |sztdd
dS |stdddS |dkrd}n|dkrd}tjjt||||d}|rtdddS tdddS  tk
r } zt | tdddS d}~X nX dS )zDThis function is being used to add the vehicle type details by Adminz&Admin - in add_driver_payment functionrz  r  r  r  i  zdriver_id is required.)r   r   zdescription is required.zamount is required.zcurrency is required.Z	givebonusZbonusZdeductmoneyZ	deduction)rz  r  r  r  r   r@  i  zInternal Server ErrorN)	rQ   r   rl   r   DriverExtraMoneyrS   rH  ri   r   )	rj   r   rr   rz  r  r  r  Zdriverextramoney_objr   r#   r#   r%   add_driver_payment'  s4    
rb  c       
      O   s(  t d y| jjd}| jjd}| jjd}| jjd}| jjd}|sXtddd	S |sjtdd
d	S |s|tddd	S |stddd	S |stddd	S tjj|dj }|rtddd	S tjj|||||d}|rtddd	S W n4 t	k
r" }	 zt |	 tddd	S d}	~	X nX dS )zDThis function is being used to add the vehicle type details by Adminz'Admin - in add_operationalarea functionr3   workingradiusdistanceunitrX   rY   r   zname is required.)r   r   zworkingradius is required.zdistanceunit is required.zlatitude is required.zlongitude is required.)r3   z)There is already a record for this place.)r3   rX   rY   distance_from_centre_pointrd  r   zRecord added successfully.i  zInternal Server ErrorN)
rQ   r   rl   r   OperationalArearS   rT   rU   rH  r   )
rj   r   rr   r3   rc  rd  rX   rY   operationalarea_objr   r#   r#   r%   add_operationalareaH  s4    rh  c             C   s:  t d tjjddddjdjd}g }|rd}ddlm} dd	lm	} |j
 j |d
d }tjjddj|d}t | |||j d d d }||d
d }	t | t |	 t d g }
x|D ]}tjj|d||	d}t | t d d}x.|D ]&}d}td|jj d d}||7 }qW |dkr|d7 }|j||j|jd |j |jj|j|||	|dd d qW t | ddl}dttjj
  d }td| dddl}|j|}|jdd d!d"d#d$d%g xB|D ]:}|j|d& |d' |d( |d) |d* |d+ |d, g qW W dQ R X td-ttj d. | d/S )0zEThis class shows the content on show all drivers screen to Admin userzgenerate_csv - function TF)r   r  r   z-idr   r   )	timedelta)timezoner  )daysr
   )r+   )
updated_atr0   r   )r,   r.   updated_at__gteupdated_at__ltez

g        r   r   r  )r   r3   r  r4   r+   paymentfromdatetodateNZdriverpayments_z.csvz&/var/www/html/GoodsDelivery/media/CSV/rP  r/   )rQ  z
Serial No.NamezEmail AddresszPhone Numberz	From DatezTo DateZPaymentr   r3   r4   r  rp  rq  ro  r   z/media/CSV/)r   rV  )!rQ   rR   rS   rT   r   r-  r   ri  django.utilsrj  r!  r   rV   ry  r   r   rZ   r   r[   r3   r  r  r   r4   r+   rY  r   r   rZ  r[  r   r   rx  )rj   r   r/  r   ri  rj  some_day_last_weekamonday_of_last_weekmonday_of_this_weekdriverpayments_datar,   r   ro  r{   r   rY  r]  r^  rZ  r   r#   r#   r%   generate_csvk  sZ    



Dry  c                   s    e Zd ZdZ fddZ  ZS )AdminDriverPaymentsz admin_showalldriverpayments.htmlc                s  t t| jf |}td tjjddddjdjd}g }|rd}ddl	m
} dd	lm} |j j |d
d }tjjddj|d}	t|	 |||j d d d }
|
|d
d }t|
 t| td g }x|D ]}tjj|d|
|d}t| td d}x0|D ](}d}td|jj d d}||7 }qW |dkr|d7 }|j||j|jd |j |jj|j||
||dd d qW t| ||d< |S )zEThis class shows the content on show all drivers screen to Admin userzAdminDriverPayments-in get TF)r   r  r   z-idr   r   )ri  )rj  r  )rk  r
   )r+   )rl  r0   r   )r,   r.   rm  rn  z

g        r   r   r  )r   r3   r  r4   r+   ro  rp  rq  r   )rO   rz  rP   rQ   rR   rS   rT   r   r-  r   ri  rs  rj  r!  r   rV   ry  r   r   rZ   r   r[   r3   r  r  r   r4   r+   )rq   rr   rs   r   r/  r   ri  rj  rt  ru  rv  rw  rx  r,   r   ro  r{   r   )r~   r#   r%   rP     sP    

z$AdminDriverPayments.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   rz    s   rz  c                   s    e Zd ZdZ fddZ  ZS )AdminDriversPaymentHistoryz admin_driverspaymenthistory.htmlc       #         s  t t| jf |}td yP| jjjd}t| tjj|dj	 }t| t
jjdddd}g }|rJd}x|D ]}i }tjj||ddj }	td	|	 tjj||dd}
tjj|tjj j }tjj|tjjj }|
r>td
 tjtj}|j|}|j|}xf|
D ]^}tjj|jdj }|rt|j |jrV||jkrV|j}|jr||jk r|j}qW td| td| |rF|rF|| }|j}|d }t| |jj}|jj }td| td| |	| |d |  }t| |d7 }|j!||j"|j#|j$|j%|	|||||d t&|dd |j'| qvtd qvW td t| td ||d< W n, t(k
r } zt| W Y dd}~X nX t
jjddddj)dj*d}g }|rd}ddlm+} ddl,m} |j j	 |dd }tjjddj!|d}|||j- d d d }||dd }g }x|D ]}tjj|d||d }
d!} x0|
D ](}!d!}"t&d"|!jj. d# d}"| |"7 } q^W | d!kr<|d7 }|j'||j#|j/d$ |j$ |j0j%|j"| |||dd d% q<W ||d&< |S )'zEThis class shows the content on show all drivers screen to Admin userz"AdminDriversPaymentHistory-in get dtz%d/%m/%YTF)r   r  r   r   )r,   created_at__containsr.   zno_of_drops = zin if)r{   zmin_time = zmax_time = <   zpriceperdrop = zpriceperhour = r
   r0   )r   r*   r3   r  r4   no_of_dropspriceperdroppriceperhourmin_timemax_timetotal_hourstotal_priceelsez
*15driver_payment_history_dataNz-idr   )ri  )rj  r  )rk  )r+   )rl  )r,   r.   rm  rn  g        r   r   r  )r   r3   r  r4   r+   ro  rp  rq  r   )1rO   r{  rP   rQ   rj   rk   rl   r   strptimer   rR   rS   rT   rV   r   combiner!  timeminpytzrj  r   	TIME_ZONElocalizer"  rZ   rU   driver_pickuparrived_datetimer	  secondsr  r  r  ry  r+   r3   r  r4   r   r[   r   r   r-  ri  rs  r   r   r  r   )#rq   rr   rs   r   r   r  r   ru   paymenthistory_datar  r   r  r  utcr   r3  tdeltar  total_minutesr  r  r  r   r/  ri  rj  rt  ru  rv  rw  rx  r,   ro  r{   r   )r~   r#   r%   rP     s    











z+AdminDriversPaymentHistory.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r{    s   r{  c                   s    e Zd ZdZ fddZ  ZS )AdminOperationalAreazadmin_operationalarea.htmlc       	         s  t t| jf |}td g }tjj }|rhd}x6|D ].}|d7 }|j||j|j	|j
d t| q6W t|d}t| jjjdd}td| y|j|}td W nN tk
r   |j|j}td	 Y n( tk
r   |j|j}td
 Y nX ||d< |S )zGThis class shows the content on show all customers screen to Admin userzAdminOperationalArea-in get r   r
   )r   r3   re  rd  rE   rF   zpage = r  rH   rI   operationalareas_data)rO   r  rP   rQ   rf  rS   r   r[   r3   re  rd  r   ri   rj   rk   rl   rF   rn   ro   rp   )	rq   rr   rs   r  rg  r   objr}   rF   )r~   r#   r%   rP   [  s8    




z%AdminOperationalArea.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r  W  s   r  c                   s(   e Zd ZdZ fddZdd Z  ZS )AdminBackendControlzadmin_backendcontrol.htmlc                s2  t t| jf |}td g }g }tjj }|rd}x^|D ]V}|d7 }|jrRd}nd}|jdkrfd}	nd}	|j	||j
|	|j||jd	 t| q:W t|d
}
t| jjjdd}td| y|
j|}td W nP tk
r   |
j|
j}td Y n* tk
r"   |
j|
j}td Y nX tjj }d}xF|D ]>}|d7 }|jrRd}nd}|j}|j	||d||jd q8W g }tjjddd}d}x0|D ](}|d7 }|j	||j
|j|jd qW g }tjjddd}d}x0|D ](}|d7 }|j	||j
|j|jd qW ||d< ||d< ||d< ||d< |S )zGThis class shows the content on show all customers screen to Admin userzAdminBackendControl-in get r   r
   EnabledZDisabledg        rB   rC   )r   r3   
pricefieldr   r   r+   rE   rF   zpage = r  rH   rI   ZMeters)r   r   
parametersr   r+   F)r   r  )r   r3   r4   r+   allDriversDataallCustomerDatabackendcontrol_dataradiusControlData)rO   r  rP   rQ   BackendControlrS   r   rB  r   r[   r3   r+   r   ri   rj   rk   rl   rF   rn   ro   rp   rA  r   rR   rT   r4   r   )rq   rr   rs   r  r  backendcontrol_objr   r  r   r  r}   rF   radiusObjectZrDr   r  ZdriverModalobjr   r  ZcustomerModalobj)r~   r#   r%   rP     s    









z$AdminBackendControl.get_context_datac       
      O   s  t d t |j y|jjd}|dkrp|jjd}tjj }|r|dkrRd|_nd|_|j  tdd	d
S nR|dkr|jjd}|jjd}tjj	|dj }|r||_
|j  tddd
S tddd
S  tk
r }	 zt |	 tddd
S d }	~	X nX d S )NzAdminBackendControl - in posttaskzAuto-Assignr   rB  TFr   zTask created successfully.)r   r   zSpecial Booking Chargesr+   r   )r3   zPrice changed successfully.i  zBad Requesti  zInternal Server Error.)rQ   r   rl   r  rS   rU   rB  r   r   rT   r   r   )
rq   rj   r   rr   r  r   r  id_val	price_valr   r#   r#   r%   r     s2    

zAdminBackendControl.post)r   r   r   r   rP   r   r   r#   r#   )r~   r%   r    s   Rr  c                   s    e Zd ZdZ fddZ  ZS )AdminShowAllTimeSlotszadmin_showalltimeslots.htmlc       	         s  t t| jf |}td g }tjj }|rld}x:|D ]2}|d7 }|j||j|j	|j
|jd t| q6W t|d}t| jjjdd}td| y|j|}td W nN tk
r   |j|j}td	 Y n( tk
r   |j|j}td
 Y nX ||d< |S )zGThis class shows the content on show all customers screen to Admin userzAdminShowAllTimeSlots-in get r   r
   )r   r  r  r   r+   rE   rF   zpage = r  rH   rI   r  )rO   r  rP   rQ   	TimeSlotsrS   r   r[   r  r  activer+   r   ri   rj   rk   rl   rF   rn   ro   rp   )	rq   rr   rs   r  r  r   rt  r}   rF   )r~   r#   r%   rP     s:    




z&AdminShowAllTimeSlots.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r  	  s   r  c             O   s   t d yt | j | jjd}| jjd}|s>tdddS |sPtdddS |r|rtjj||d}|rztd	d
dS tdddS ntdddS W n2 tk
r } zt | tdddS d }~X nX d S )NzAdmin - in assign_task functionadmin_idr  i  zAdmin id is required.)r   r   zTask description is required.)r  r  r   zTask created successfully.zBad request.i  zInternal Server Error.)rQ   r   rl   r   	AdminTaskrS   rH  r   )rj   r   rr   r  r  admintask_objr   r#   r#   r%   assign_task1  s$    
r  c                   s    e Zd ZdZ fddZ  ZS )AdminShowAllAssignedTaskszadmin_showallassignedtasks.htmlc                sf  t t| jf |}td | jjjdrD| jjd }t| jjd  g }tjj	|dj
 }|rtjj	|djdj
 }|rtjj	|d}|rd}x6|D ].}	|d7 }|j||	j|	j|	jd	 t| qW t|d
}
t| jjjdd}td| y|
j|}td W nR tk
r0   |
j|
j}td Y n* tk
rX   |
j|
j}td Y nX ||d< |S )zGThis class shows the content on show all customers screen to Admin userz!AdminShowAllAssignedTasks-in get r4   )r4   )r   r   )adminr   r
   )r   r  r   r+   rE   rF   zpage = r  rH   rI   allassignedtaks)rO   r  rP   rQ   rj   sessionhas_keyr   rS   rT   rU   Adminr-  r  r[   r  r   r   ri   rk   rl   rF   rn   ro   rp   )rq   rr   rs   	email_valr/  user_obj	admin_objr  r   r  r}   rF   r  )r~   r#   r%   rP   M  sF    



z*AdminShowAllAssignedTasks.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r  I  s   r  c                   s(   e Zd ZdZ fddZdd Z  ZS )AdminProfilezadmin_profile.htmlc                s   t t| jf |}td | jjjdrD| jjd }t| jjd  tjj	|dj
 }td |rtd t| tjj	|djdj
 }|rtd g }|j|j|j|j|jj|jd	 t| ||d< d
|d< |S )z1This function shows the content on profile screenzAdminProfile - in get r4   )r4   r  r   )r   r   r   )r3   r4   r  r  r+   rB   profile_section)rO   r  rP   rQ   rj   r  r  r   rS   rT   rU   r  r-  r[   r3   r4   r  r  r+   )rq   rr   rs   r  r  r  
admin_data)r~   r#   r%   rP   |  s0    zAdminProfile.get_context_datac             C   s  t d yZddd}t |j | jjjdr:| jjd }| jjjdrT| jjd }| jjjd}| jjjd}| jjjd}| jjjd	}| jjjd
}|stdddS |stdddS |stdddS |stdddS |dks|dkrbtjj	|dj
 }	|	rT||	_||	_||	_|	j  |rF|}
||
|	jd}t | tdddS tdddS W n4 tk
r } zt | tdddS d}~X nX dS )z1This function shows the content on profile screenzAdminProfile - in post c:\c                s  yt d | jd}|d }|jd}t|d }|d }tj|}t|}tj|}	tj	j
|d}
djdd	 td
D }tj	j }ttjd t|
j d t|
jj  tjj r fdd	tj D }x"|D ]}tj| qW n
tj  xj|D ]b}tj|}	|	jt|jt|jgtj}|	j d t|j d t|j d | d | }qW tj|}	|	j d | d |  dt|
j d t|
jj d | d | }||
_ |
j  dS  t!k
r } zt | dS d }~X nX d S )NHEREz;base64,r   /r
   )r+   r/   c             S   s   g | ]}t jtjtj qS r#   )randomchoicestringascii_lettersdigits).0nr#   r#   r%   
<listcomp>  s    z@AdminProfile.post.<locals>.getI420FromBase64.<locals>.<listcomp>r~  z/media/Users/Admins/_c                s   g | ]}t jj |qS r#   )ospathjoin)r  f)filepathr#   r%   r    s    r   r  .z
/original-)"rQ   rN  r   base64	b64decoder   r   r   r  rS   rl   r  rangeThumbnailSizer   r   BASE_DIRr+   r   r4   r  r  existslistdirremovemakedirs	thumbnailri   rI  rH  	ANTIALIASr   r  r   )codecr  
image_pathbase64_dataextensext	extension	byte_data
image_dataimgr  stthumbnailsize_objsfilesToRemover  r  imr]  r   r#   )r  r%   getI420FromBase64  s@    




(



:
.z,AdminProfile.post.<locals>.getI420FromBase64r4   userroleadminidr3   r  r  i  zAdmin Id is required)r   r   zName is requiredzEmail Address is requiredzPhone is requiredr  
superadmin)r+   )r  r   zProfile updated successfullyz%You are not allowed to change detailsi  zInternal server error.N)r  )rQ   r   rj   r  r  rl   r   r  rS   rT   rU   r3   r4   r  r   r+   r   )rq   rj   r  r  userrole_valZadminid_valname_val	phone_val	image_valr  r  r  r   r#   r#   r%   r     sJ    
#
zAdminProfile.post)r   r   r   r   rP   r   r   r#   r#   )r~   r%   r  x  s   r  c                   s    e Zd ZdZ fddZ  ZS )AdminShowCustomerJobExtraTestzadmin_showcustomerjob.htmlc       ,   +      s  t t| jf |}td i }i }g }|d }tjj|dj }tjj|d}|r|js`d}	n|j}	|j	srd}
n|j	}
|j
sd}nttj|j
j }|jsttjttj }nttj|jj }|jrttj|jj }nd}|j|j }tjj|dj }d\}}}}|r*|j}|j}|j}|j}d\}}}}d\}}}}tjj|dj }|r|jdkr|j}|j}ttj|jj }n0|jdkr|j}|j}|j	d |j }n|j}|j dkr|j }|j!}ttj|j"j }n6|j dkr|j }|j#}|jd |j$ }n|j }|j!}d	}i }t%jj|d
j }|rd|j&|j'j|j'j(|j'j)|j'j*|j*d d}|j&|j*|j#|j+j,j-|j$|j.|j/|j0|j|j|j1|j2|j3|j4|j5|j6|j7|j8|j9|j|j:j|j||j;||||j*dtd|j*  |||||||||||||d) d} d}!x|D ]}"| |"j } d	}#d	}$i }%i }&t%jj|"d
j }'|'r||%j&|'j'j|'j'j(|'j'j)|'j'j*|'j*|'j<d d}#|'r|'j=rd}$t>jj|"|'dj }(|(j?j})|(j@}*|&j&ttj|) |*d |j
sd}nttj|"j
j }|jsttjttj }nttj|"jj }|jr6ttj|"jj }nd}|"j|"j }+|j|+ }!|jA|"j5|"j6|"j7|"j8|"j9|"j|"j:j|"j|"j||"j;||||"j*dtd|"j*  |"j|"j|"j1|"j2|"j3|"j4|#|%|"j*|$|&d qW |j&| |!d ||d< ||d< t| |S )zEThis class shows the content on show all drivers screen to Admin userzAdminShowCustomerJob-in get r  )rA   r/   )r{   	signatureotpr  F)rZ   )r  rD  rE  r*   r  TzAWB-i'  ))r+   r  r  r  
sendercityr  ra   r   r(  r  r   pickupspecialnotedropoffspecialnoterG  rJ  rI  rH  
parceltyper  r  r  totalamountspecialbookingparcelimageparcelpdf_linkqrcoder  rF  r  driverdetailsdelivery_proof_methoddelivery_toperson_namedelivery_toperson_phonedelivery_toperson_signaturepickup_proof_methodpickup_fromperson_namepickup_fromperson_phonepickup_fromperson_signaturerL  r	  rK  r   )Zdrivername1Zdrivercountrycode1Zdriverphone1Z	driverid1Zdriverjobid1completeStatus)rZ   
driver_job)r  r  )rG  rJ  rI  rH  r  r  r  r   r  r  r  r  r  r  r  rF  r   r(  r  r   r  r  driverexist1Zdriverdetails1Zcustomerjobid1safeplaceDeliverdsafepalaceData)r   ZpriceWithSpecialBookingrZ   
parceldata)r/   r/   r/   r/   )r/   r/   r/   r/   )r/   r/   r/   r/   )BrO   r  rP   rQ   r   rS   rT   rU   r%  r'  r  r   r   MEDIA_BASE_URLr3   r  PARCEL_DEFAULT_IMAGE_PATH	parcelpdfrx  r   r  r"  rK  rL  r	  rM  CustomerJobDeliveryExtraDetailsr  r  r  r   r(  r  r  r  r  r  rV   ry  r,   r  r  r+   r_   r   r4   r  r]   ra   r^   r   r  r  rG  rJ  rI  rH  r  r  r  r.   r  DriverDropSafePalace	safeplacer   r[   ),rq   rr   rs   r/  parcel_dictparcel_listr  r   customerjob_obj2forParcelsr%  r'  r  r  r  r  r3  rK  rL  r	  rM  r  r  r  r  r  r  r  r  #customerjobdeliveryextradetails_objr  rN  r   Z
totalPriceZtotalamountWithSpecialBookingparcelr  r  Zdriverjob_data1r  Zdriverjob_obj1ZdriveSafePalaceZsafepalaceImageZsafepalaceTimeZ%totalamountWithSpecialBookinginParcel)r~   r#   r%   rP     sf   




z.AdminShowCustomerJobExtraTest.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r    s   r  c                   s    e Zd ZdZ fddZ  ZS )AdminShowCustomerJobExtraTest2zadmin_showcustomerjob.htmlc       +   O      s  t t| jf |}td i }i }g }|d }tjj|dj }tjj|d}d}	g }
|rd\}}}}x|D ]}i }|jsd}n|j}|j	sd}n|j	}|j
sd}nttj|j
j }|jsttjttj }nttj|jj }|jrttj|jj }nd}|j|j }tjj|dj }d\}}}}|rR|j}|j}|j}|j}d\}}}}tjj|dj }|rH|jdkr|j}|j}ttj|jj }n0|jdkr|j}|j}|j	d	 |j }n|j}|dkrH|dkrH|j dkr|j }|j!}ttj|j"j }n6|j dkr<|j }|j#}|jd	 |j$ }n|j }|j!}d
}i } yJt%jj|d
dj }!|!rd}ttj|!j&j }"| j'|"|!j|!j(d W n, t)k
r }# zt|# W Y dd}#~#X nX d
}$i }%y^t*jj|dj }&|&r,t+jj||&dj }'|'r,d}$ttj|'j,j }(|%j'|(|'j-d W n, t)k
rZ }# zt|# W Y dd}#~#X nX d
})i }*t*jj|dj }&|&r|&j.dkrd}	|*j'|&j/j|&j/j0|&j/j1|&j/j2|&j2|&j.d d})|j'|j2|j#|j3j4j5|j$|j6|j7|j8|j|j|j9|j:|j;|j<|j=|j>|j?|j@|jA|j|jBj|j|j||jC||||j2dtd|j2  |)|*||||||||||||jD|| |$|%|jEd0 |
jF|jD |jF| qpW ||d< tG||d< |	|d< |
|d< t| |S )zEThis class shows the content on show all drivers screen to Admin userz&AdminShowCustomerJobExtraTest2-in get r  )rA   rB   r/   )r{   r  r  r  F)r{   r   T)r  dateandTimereasonN)rZ   )rZ   r  )r  r  rC   )r  rD  rE  r*   r  r   zAWB-i'  )0r+   r  r  r  r  r  ra   r   r(  r  r   r  r  rG  rJ  rI  rH  r  r  r  r   r  r  r  r  r  r  r  rF  r  r  r  r  r  r  r  r  r  r  rL  r	  rK  Z
priorityIddeliveryIsFailedOrNot
failedDatadeliveryonSafePalaceorNotsafePalaceDeliverDatar`   r  ZtotalNorM   rK   )r/   r/   r/   r/   )r/   r/   r/   r/   )r/   r/   r/   r/   )HrO   r  rP   rQ   r   rS   rT   rU   r%  r'  r  r   r   r  r3   r  r  r  rx  r   r  r"  rK  rL  r	  rM  r	  r  r  r  r   r(  r  r  r  r  r  rh  deliveryfailed_imagery  deliveryfailurereasonr   rV   r
  r  r   r.   r,   r  r  r+   r_   r   r4   r  r]   ra   r^   r   r  r  rG  rJ  rI  rH  r  r  r  r'   r`   r[   rm   )+rq   rr   rs   r/  r  r  r  r   r  showrK   r  r  r  r  r%  r'  r  r  r  r  r3  rK  rL  r	  rM  r  r  r  r  r  r  r  ZdeliveryFailedZfailedimager   r  r  r   ZSafePalaceObjectZ	safeImager  rN  )r~   r#   r%   rP     s8   z/AdminShowCustomerJobExtraTest2.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r    s   r  c                   s    e Zd ZdZ fddZ  ZS )AdminShowCustomerJobzadmin_showcustomerjob.htmlc          ,      s
  t t| jf |}td i }|d }tjj|dj }|r|jsJd}n|j}|j	s\d}n|j	}|j
snd}nttj|j
j }|jsttjttj }	nttj|jj }	|jrttj|jj }
nd}
|j|j }tjj|dj }d\}}}}|r|j}|j}|j}|j}d\}}}}d\}}}}tjj|dj }|r|jdkrp|j}|j}ttj|jj }n0|jdkr|j}|j}|j	d |j }n|j}|j dkr|j }|j!}ttj|j"j }n6|j dkr|j }|j#}|jd |j$ }n|j }|j!}d	}i }t%jj|d
j }|rN|j&|j'j|j'j(|j'j)|j'j*|j*d d}|j&|j*|j#|j+j,j-|j$|j.|j/|j0|j|j|j1|j2|j3|j4|j5|j6|j7|j8|j9|j|j:j|j|j||j;|	|
||j*dtd|j*  |||||||||||||d* ||d< t|d  |S )zEThis class shows the content on show all drivers screen to Admin userzAdminShowCustomerJob-in get r  )r+   r/   )r{   r  r  r  F)rZ   )r  rD  rE  r*   r  TzAWB-i'  )*r+   r  r  r  r  r  ra   r   r(  r  r   r  r  rG  rJ  rI  rH  r  r  r  r   r  r  r  r  r  r  r  rF  r  r  r  r  r  r  r  r  r  r  rL  r	  rK  rZ   )r/   r/   r/   r/   )r/   r/   r/   r/   )r/   r/   r/   r/   )<rO   r  rP   rQ   r   rS   rT   rU   r%  r'  r  r   r   r  r3   r  r  r  rx  r   r  r"  rK  rL  r	  rM  r	  r  r  r  r   r(  r  r  r  r  r  rV   ry  r,   r  r  r+   r_   r   r4   r  r]   ra   r^   r   r  r  rG  rJ  rI  rH  r  r  r  )rq   rr   rs   r/  r  r   r%  r'  r  r  r  r  r3  rK  rL  r	  rM  r  r  r  r  r  r  r  r  r  r  rN  r   )r~   r#   r%   rP     s    
z%AdminShowCustomerJob.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r    s   r  c                   s    e Zd ZdZ fddZ  ZS )&AdminDriverOutstandingCustomerJobsTestz/admin_driver_outstandingcustomerjobs_test2.htmlc                sF  t t| jf |}td g }g }|d }tjj|dj }|rBd%\}}tjj|dj }	|	rvtd |	j	}|	j
}ntd tjj|dd	}
x|
D ]}|js|jr|jrd
}q|jrd}nd}|dks|dkr|j|jj|jj|jj|jj|jj|jj|jj|jj|jj|jj|jj||jd |jd|jj|jj|jjd|jj d |jd|jj|jj|jjd|jj d qW |jdd||dd ||d< ||d< ||d< tt| dd }x,|D ]$}||||d |d }||d< qW t|dd dd }td! x*|D ]"}t|d" d# t|d   qW td! ||d$< |S )&zEThis class shows the content on show all drivers screen to Admin userz.AdminDriverOutstandingCustomerJobsTest-in get r*   )r+   r/   )r,   zdrivercoordinates_obj existsz$drivercoordinates_obj does not existF)r,   r.   	Completedz	Picked UpAssigned)r  r  r  r  rc   rd   r   r  re   rf   r  r   r+   r1   z<b>Pickup:</b> )rX  addressrX   rY   typeplusaddressdropoffz<b>Dropoff:</b> driverlocationStartz<b>Start</b>all_driverjobsrx   ry   c       	      S   s   t | ||| tt| |||g\} }}}tt| |||g\} }}}|| }||  }t|d d t| t| t|d d   }dtt| }d}|| S )Nr0   i  )rQ   mapr   r   r   r   r   r   )	lat1lon1lat2lon2dlondlatru  crr#   r#   r%   	haversinel  s    0zJAdminDriverOutstandingCustomerJobsTest.get_context_data.<locals>.haversinerX   rY   distance_fromdriverlocationc             S   s   | d S )Nr/  r#   )ir#   r#   r%   <lambda>{  s    zIAdminDriverOutstandingCustomerJobsTest.get_context_data.<locals>.<lambda>)rD   r   z

r  z  --  tracking_data)r/   r/   )rO   r  rP   rQ   rR   rS   rT   rU   rW   rX   rY   rV   r-   r.   r[   rZ   r  r  r  r]   rc   rd   r   r^   re   rf   r+   rm   rh   r   )rq   rr   rs   r/  r2  r*   ru   rx   ry   rz   driverjobs_objr   r   r.  locationr/  )r~   r#   r%   rP      s    



"z7AdminDriverOutstandingCustomerJobsTest.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r    s   r  c                   s    e Zd ZdZ fddZ  ZS )"AdminDriverOutstandingCustomerJobsz)admin_driver_outstandingcustomerjobs.htmlc                s  t t| jf |}td g }g }|d }tjj|dj }|rd\}}tjj|dj }	|	rvtd |	j	}|	j
}ntd tjj|dd	}
x|
D ]}|js|jr|jrd
}q|jrd}nd}|d
kr^|j|jj|jj|jj|jj|jj|jj|jj|jj|jj|jj|jj||jd |jd|jj|jj|jjd |jd|jj|jj|jjd t| qW ||d< ||d< ||d< tt| dd }x,|D ]$}||||d |d }||d< qW t|dd dd}td x*|D ]"}t|d d t|d   qW td |S ) zEThis class shows the content on show all drivers screen to Admin userz*AdminDriverOutstandingCustomerJobs-in get r*   )r+   r/   )r,   zdrivercoordinates_obj existsz$drivercoordinates_obj does not existF)r,   r.   r  z	Picked Upr  )r  r  r  r  rc   rd   r   r  re   rf   r  r   r+   r1   )rX  r  rX   rY   r!  r$  rx   ry   c       	      S   s   t |  t | t | t | tt| |||g\} }}}tt| |||g\} }}}|| }||  }t|d d t| t| t|d d   }dtt| }d}|| S )Nr0   i  )rQ   r%  r   r   r   r   r   r   )	r&  r'  r(  r)  r*  r+  ru  r,  r-  r#   r#   r%   r.    s    0zFAdminDriverOutstandingCustomerJobs.get_context_data.<locals>.haversinerX   rY   r/  c             S   s   | d S )Nr/  r#   )r0  r#   r#   r%   r1    s    zEAdminDriverOutstandingCustomerJobs.get_context_data.<locals>.<lambda>)rD   r   z

r  z  --  )r/   r/   )rO   r5  rP   rQ   rR   rS   rT   rU   rW   rX   rY   rV   r-   r.   r[   rZ   r  r  r  r]   rc   rd   r   r^   re   rf   r+   rm   rh   r   )rq   rr   rs   r/  r2  r*   ru   rx   ry   rz   r3  r   r   r.  r4  r/  )r~   r#   r%   rP     s|    



"z3AdminDriverOutstandingCustomerJobs.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r5    s   r5  c                   s    e Zd ZdZ fddZ  ZS )AdminDriverAllCustomerJobsz!admin_driver_allcustomerjobs.htmlc       	         s   t t| jf |}td g }|d }tjj|dj }|rtjj|dd}x|D ]x}|j	sb|j
rz|j
rnd}q~|j	r~d}nd}|dks|dkrR|j|jj|jj|jj|jj|jj|jj|jj||jd		 qRW ||d
< |S )zEThis class shows the content on show all drivers screen to Admin userz"AdminDriverAllCustomerJobs-in get r*   )r+   F)r,   r.   r  z	Picked Upr  )	r  r  r  r  r   r  r  r   r+   r$  )rO   r6  rP   rQ   rR   rS   rT   rU   rV   r-   r.   r[   rZ   r  r  r  r]   r   r^   r+   )	rq   rr   rs   r/  r*   ru   r3  r   r   )r~   r#   r%   rP     s6    
z+AdminDriverAllCustomerJobs.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r6    s   r6  c                   s    e Zd ZdZ fddZ  ZS )AdminNotificationszadmin_notifications.htmlc                s  t t| jf |}td | jjjdrf| jjd }tjj	|dj
 }|rfg }tjj	ddjd}|rfd}xN|D ]F}|d7 }d	}	|jd
krd}	|j||j|j|	|j|j|j|jd qvW t|d}
t| jjjdd}td| y"|
j|}tt| td W nR tk
r4   |
j|
j}td Y n* tk
r\   |
j|
j}td Y nX ||d< tjj	ddjdd |S )z<This function shows the content on customer dashboard screenzAdminNotifications - in get r4   )r4   T)foradminz-idr   r
   r/   zParcel Job Createdr   )r   r+   r  	relatedtor  r   r   deletedrE   rF   zpage = r  rH   rI   all_notificationsread)r   )rO   r7  rP   rQ   rj   r  r  r   rS   rT   rU   r$  r   r  r[   r+   r  r   r   r:  r   ri   rk   rl   rF   rm   rn   ro   rp   ry  )rq   rr   rs   r  r  notifications_datar;  r   notificationr9  r}   rF   )r~   r#   r%   rP     sP    




z#AdminNotifications.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r7    s   r7  c                   s    e Zd ZdZ fddZ  ZS )AdminChatTestzadmin_chat_test.htmlc                s   t t| jf |}tjj }g }xh|D ]`}|jrHtttj	|jj
 }nd}tjj|dj }|rj|j}nd}|j|j|j
||d q&W ||d< | jjjdr| jjd }	tjj|	dj }
td |
rtd	 tjj|
d
j }|r|j|d< |S )z<This function shows the content on customer dashboard screenr/   )r,   zNo message yet)r+   r3   r  recentmessageru   r4   )r4   r  r   )r   r  )rO   r?  rP   rR   rS   r   r  r   r   rx  r3   ChatrT   r   r   r[   r+   rj   r  r  r   rU   rQ   r  )rq   rr   rs   ru   driver_datar,   r  chat_objr@  r  r  r  )r~   r#   r%   rP   G  s6    


zAdminChatTest.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r?  C  s   r?  c                   s    e Zd ZdZ fddZ  ZS )	AdminChatzadmin_chat.htmlc                s   t t| jf |}tjj }||d< | jjjdr| jjd }t	jj
|dj }td |rtd tjj
|dj }|r|j|d< |S )z<This function shows the content on customer dashboard screenru   r4   )r4   r  r   )r   r  )rO   rD  rP   rR   rS   r   rj   r  r  r   rT   rU   rQ   r  r+   )rq   rr   rs   ru   r  r  r  )r~   r#   r%   rP   p  s    

zAdminChat.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   rD  l  s   rD  c               @   s   e Zd Zdd ZdS )AdminDriverChatc             O   s  t d t d y|jjd}|jjd}|jjd}|jjd}|jjd}|jjd}	|d	krp|jjd}|	d	kr|jd
 }
|
rt d nt d |o|o|rH|d	krtjj||||d}|rt d |	d	krHdjdd tdD }t | t	 }|j
|
j|
}|j|}d| }t | tjj||||d}|rHt d |	d	krbttj| }
nd}
|dkrtd}tdd|||	|
|jjddS  tk
r } zt | tdt|dS d }~X nX d S )Nz



zChat  - in post senderrz  r  r   messageexistattachmentexistrB   r^  zattachment existszno attachment)rz  r  r   rF  zmessage saved in databaser/   c             S   s   g | ]}t jtjtj qS r#   )r  r  r  r  r  )r  r  r#   r#   r%   r    s    z(AdminDriverChat.post.<locals>.<listcomp>r  z/media/)rz  r  filesrF  zattachment saved in databaserC   r   znotification readz%d/%m/%Y %I:%M %p)r   r   rG  r   rH  
attachmentr  r   )r   r   )rQ   r   rl   FILESrA  rS   rH  r  r  r   r   r3   urlr   r   rx  r   r   r   r   )rq   rj   r   rr   rF  rz  r  r   rG  rH  rJ  rC  r  fsr]  r   r#   r#   r%   r     sR    

	



  zAdminDriverChat.postN)r   r   r   r   r#   r#   r#   r%   rE    s   rE  c               @   s   e Zd Zdd ZdS )ChatRetrievec             O   s  t d t d t d|j yt|jjd}t|jjd}tjj||d}g }xp|D ]h}i }	|jrztt	j
|jj }
nd}
|j}|j}|jjd}||	d	< ||	d
< |
|	d< ||	d< |j|	 qXW td|dS  tk
r } zt | tdt|dS d }~X nX d S )Nz



z& Retrieve            eChat  - in post zdata is  : rz  r  )rz  r  r/   z%d/%m/%Y %I:%M %prF  r   rJ  r  r   )r   lstr   )r   r   )rQ   r   ri   rl   rA  rS   rT   rI  r   r   rx  r3   rF  r   r   r   r[   r   r   )rq   rj   r   rr   rz  r  	all_chats
final_listr0  dicrJ  rF  r   r  r   r#   r#   r%   r     s2    
zChatRetrieve.postN)r   r   r   r   r#   r#   r#   r%   rN    s   rN  c               @   s   e Zd Zdd ZdS )ReadNotificationc             O   s   t d t d t d|j yJ|jjd}|s<tdddS t|}tjj|djd	d
}tdddS  t	k
r } ztdt
|dS d }~X nX d S )Nz



zReadNotification API - in post zdata is  : notificationidr   znotificationid is required)r   r   )r+   r<  )r   r   znotification read)rQ   r   rl   r   ri   r$  rS   rT   ry  r   r   )rq   rj   r   rr   notificationid_valZnotification_objr   r#   r#   r%   r   	  s    zReadNotification.postN)r   r   r   r   r#   r#   r#   r%   rS    s   rS  c               @   s   e Zd Zdd ZdS )DeleteNotificationc             O   s   t d t d t d|j |jjd}t d| |sDtdddS y$tjj|d	jd
d tdddS  tk
r } ztdt	|dS d }~X nX d S )Nz

z DeleteNotification API - in postzdata is  : rT  znotificationid_val = r   znotification id is required)r   r   )r+   T)r:  r   znotification deleted)
rQ   r   rl   r   r$  rS   rT   ry  r   r   )rq   rj   r   rr   rU  r   r#   r#   r%   r     s    
zDeleteNotification.postN)r   r   r   r   r#   r#   r#   r%   rV    s   rV  c               @   s   e Zd Zdd Zdd ZdS )SavePusherDetailc       
      O   s   t d yTt d |j}t d d}t d d}d}tjj|d}|rHntjj|||d	 W n2 tk
r }	 zt d t |	 W Y d d }	~	X nX tdS )
NzSavePusherDetail-in post r   r   ZO8yKafdGPtujC6a5K0L_Mw3zWBHJXGA2u6Sx5uHJAk1LPjmsiQdZQJR6-Ru7s8HuNHpECwKHw9mwKItYRerCUhvY9uojJ26KUghe5SiXEYLe19VQzhttps://fcm.googleapis.com/fcm/send/cUqSQVM5MvU:APA91bGbvMALH4BO6OJoNqUui-G7vsmIunRkGUvaj0pkE_kM19v0oooDIRzQAqw8vCiSGdx1sdfjjV_D3i8NHHBHPhBZh3hyXLvIhAMHfctfN21SbtfiAjLTSOwb1vK9OZ8zH8dwmzyq)auth_key)endpointrY  
p256dh_key)rQ   r/  PushersrS   rT   rH  r   r   )
rq   rj   r   rr   Z	json_dataauthp256dhrZ  
pusher_objr   r#   r#   r%   r   -  s"    zSavePusherDetail.postc             C   s   | j jjdr| j jd }d}tjj|d}|rtjj|d d}dddd	d
g}t| t|d  |ry<t|d j	|d j
|d jddtj|dddid W n* tk
r } zt| W Y d d }~X nX tdS )Nr4   zvaris_raheja@esferasoft.com)r4   r   )r   zThis Is Just For Testing 1zThis Is Just For Testing2zThis Is Just For Testing 3zThis Is Just For Testing 4zThis Is Just For Testing 5)r^  r]  )rZ  keysZ+f5YsZV4K49BiMvOMVh1obJpk4oNXIw2oVXCbfbjsnm0subzmailto:varisraheja@gmail.com)Zsubscription_infor/  Zvapid_private_keyZvapid_claimsZgettt)rj   r  r  MainUserrS   rT   r\  rQ   r   rZ  r[  rY  r  r  r   r   )rq   rj   emailidmain_user_objr_  	data_listexr#   r#   r%   rl   D  s*    zSavePusherDetail.getN)r   r   r   r   rl   r#   r#   r#   r%   rW  +  s   rW  c             O   sD   yt | d}W n* tk
r8 } zt| W Y d d }~X nX d|_|S )Nz404.htmli  )r   r   rQ   r   )rj   r   argvresponser-  r#   r#   r%   
handler404d  s    ri  c             C   sD   yt | d}W n* tk
r8 } zt| W Y d d }~X nX d|_|S )Nz500.htmli  )r   r   rQ   r   )rj   rh  r-  r#   r#   r%   
handler500l  s    rj  c             O   s   t d ypt | j | jjd}| jjd}tjj|dj }|rv|dkrRd|_n|dkr`d|_|j  t	d	d
dS W n2 t
k
r } zt | t	dddS d}~X nX dS )zDThis function is being used to edit the parcel type details by Adminz(Admin - in changetimeslotstatus functionr  r   )r+   rB  Tr  Fr   r@  )r   r   i  zInternal Server ErrorN)rQ   r   rl   r  rS   rT   rU   r  r   r   r   )rj   r   rr   r  r   Ztimeslots_objr   r#   r#   r%   changetimeslotstatusu  s     
rk  c       	      O   s   t d yt | j | jjd}| jjd}| jjd}|dkrtjj|dj }|r|dkrfd|_n|d	krtd
|_|j  t	dS n>|dkrt
jj|dj }|r||_|j  t	dS nt	dS W n, tk
r } zt | t	dS d}~X nX dS )zDThis function is being used to edit the parcel type details by Adminz'Admin - in changedisablestatus functionr  r+   r  r_   )r+   r  Tr  Fr   r,   rX  r   N)rQ   r   rl   r   rS   rT   rU   r  r   r   rR   Z	isdisabler   )	rj   r   rr   r  r  r  customer_objru   r   r#   r#   r%   changedisablestatus  s2    


rm  c             O   s   t d yX| jjd}tjj|dj }|rVg }|j|j|j	d t
tj|ddS tdS W n, tk
r } zt | tdS d	}~X nX d	S )
zDThis function is being used to edit the parcel type details by Adminz#Admin - in edit_parceltype functionparceltype_id)r+   )r  r+   F)saferX  r   N)rQ   r   rl   
ParcelTyperS   rT   rU   r[   r  r+   r   r   dumpsr   r   )rj   r   rr   rn  parceltype_objZparceltype_datar   r#   r#   r%   edit_parceltype  s    rs  c             O   s   t d yb| jjd}|s(tdddS tjj|dj }|rLtdddS tjj|d}tdd	dS W n6 t	k
r } zt | tdt
|dS d
}~X nX d
S )zCThis function is being used to add the parcel type details by Adminz"Admin - in add_parceltype functionr  r   zParcelType is required.)r   r   )r  zThis record already exists.r   zRecord added successfully.N)rQ   r   rl   r   rp  rS   rT   rU   rH  r   r   )rj   r   rr   r  rr  r   r#   r#   r%   add_parceltype  s    rt  c             O   s   t d y| jjd}|s(tdddS | jjd}|sFtdddS tjj|dj }|rx||_|j	  td	d
dS tdddS W n6 t
k
r } zt | tdt|dS d}~X nX dS )zFThis function is being used to update the parcel type details by Adminz%Admin - in update_parceltype functionrn  r   zparcelType Id is required.)r   r   r  zParcelType is required.)r+   r   zRecord updated successfully.zParcelType record not found.N)rQ   r   rl   r   rp  rS   rT   rU   r  r   r   r   )rj   r   rr   rn  r  rr  r   r#   r#   r%   update_parceltype  s"    ru  c             O   s   t d y>| jjd}|s(tdddS tjj|dj }tdddS  tk
r| } zt | tdt	|dS d	}~X nX d	S )
zFThis function is being used to delete the parcel type details by Adminz%Admin - in delete_parceltype functionrn  r   zParceltype Id is required.)r   r   )r+   r   zRecord deleted successfully.N)
rQ   r   rl   r   rp  rS   rT   deleter   r   )rj   r   rr   rn  rr  r   r#   r#   r%   delete_parceltype  s    rw  c                   s    e Zd ZdZ fddZ  ZS )AllParcelTypeszadmin_showallparceltypes.htmlc       	         s   t t| jf |}td tjjdd}g }|rdd}x.|D ]&}|d7 }|j||j|j	|j
d q:W t|d}t| jjjdd}td	| y|j|}td
 W nN tk
r   |j|j}td Y n( tk
r   |j|j}td Y nX ||d< |S )zJThis class shows the content on show all parcel types screen to Admin userzAllparcelTypes-in get F)r   r   r
   )r   r  r+   r   rE   rF   zpage = rG   rH   rI   all_parceltypes)rO   rx  rP   rQ   rp  rS   rT   r[   r  r+   r   r   ri   rj   rk   rl   rF   rn   ro   rp   )	rq   rr   rs   ry  r/  r   r  r}   rF   )r~   r#   r%   rP     s6    



zAllParcelTypes.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   rx    s   rx  c                   s    e Zd ZdZ fddZ  ZS )Supportzadmin_support.htmlc                s^   t t| jf |}td tjjdd}g }|rRx |D ]}|j|j|j	d q6W ||d< |S )zJThis class shows the content on show all parcel types screen to Admin userzSupport-in get F)r   )r  r+   Zsupportdetails)
rO   rz  rP   rQ   SupportDetailrS   rT   r[   r  r+   )rq   rr   rs   supportdetail_objr/  detail)r~   r#   r%   rP      s    
zSupport.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   rz    s   rz  c             C   s*   t jj| d}|r"| d } t| S | S d S )N)r"   r
   )rV   rS   rT   prorityandChecking)proritycheckinr#   r#   r%   r~  /  s
    r~  c          A   O   s  t d yt | j | jjd}| jjd}tjj|dj }|jdkr|jdkr|j	dkr|j
dkr|jdkrtjj|dj }|r|jr|jr|jr|jrqtddd	S ntddd	S tjj|d
}tjj }|jd }	t|	}	d}
d}t d |r|rx|D ]}t |j t |j |j}|jdd }|jdd }|d d1 }|dd  }t|}t|}|d | }t | t | t | t d t|d d }||
k r|}
t||}|dkrntddd	S t d t d| t |j |j}|jdd }|jdd }|d d2 }|dd  }t|}t|}|d | }t | t | t | t d t|d d }||kr|}t||}tjj|d}d}d}t d t d| |dkrntddd	S qW t|
|d | t d x||D ]r}|j }tjj!||||	d}|rfy"t"jj!|j#j$|j%dddd d! W n, t&k
rv } zt | W Y d d }~X nX yt'|j#j(d"d#d$d% W n, t&k
r } zt | W Y d d }~X nX y&t"jj!|j$j%|j%|j%dd&d'd d( W n, t&k
r } zt | W Y d d }~X nX yt'|j(d)d*d$d+ W n, t&k
rT } zt | W Y d d }~X nX d|_)|j*  ntd,dd	S qW td-d.d	S W n4 t&k
r } zt | td/d0d	S d }~X nX d S )3Nz Admin - in assigndriver functionr*   r  )r+   r0   )r,   i	  zBad request.)r   r   )rA   r
   rJ  z
here one 1r  r   rK  zhere one 1.0r\  i  zunavailable Deliveryz
here one 4rL  z
here one 5Fz
here one 8rY  z
here one 9)r,   rZ   rg   r"   TzDriver Assignedz1Driver has been assigned for your parcel request.r  )r   r  r  r  r  r   r_   driverassignedr  z0Driver has been assigned for your parcel requestzParcel Pickup RequestzYou have one pickup request.)user_idr  r  r  r  r  r   r,   r
  zYou have one pickup requesti  r   z Driver is assigned for this job.i  zInternal Server Error.rM  rM  )+rQ   r   rl   rR   rS   rT   rU   license_front_documentStatuslicense_back_documentStatusid_front_documentStatusid_back_documentStatuscrb_dbs_documentStatusDriverVehiclemotor_insurance_statusgoods_in_transit_cover_status!public_liability_insurance_statusvehicle_approve_statusr   r   rV   r   r"   r~  r`   ra   rN  rO  ri   r]  r   rb  re  rA   rH  r$  r_   r   r+   r   r   r#  r   r   )rj   r   rr   rz  r  ru   	drVehicalrQ  lastDriverJoblastProrityIdofJobrS  rT  r   rV  r   r   rW  r_  rX  rY  rm  rn  ro  r   idForStoreOarcelr   r   r#   r#   r%   assign_driver_ExtraTestBefore7  s    
2






 






"&
r  c          A   O   s  t d yt | j | jjd}| jjd}tjj|dj }|jdkr|jdkr|j	dkr|j
dkr|jdkrtjj|dj }|r|jr|jr|jrqtddd	S ntddd	S tjj|d
}tjj }|jd }	t|	}	d}
d}d}t d |o|rx|D ]}t |j t |j |j}|jdd }|jdd }|d d: }|dd  }t|}t|}|d | }t | t | t | t d t|d d }||
k r|}
tjj|d}d}t d |j}x$|D ]}|j|krd}|j}qW |dkrptjj||d}t |j |rft d t|j t d t ||j}t d |j}t d nt d n
t ||}|dkrntddd	S t d t d| t |j! |j!}|jdd }|jdd }|d d; }|dd  }t|}t|}|d | }t | t | t | t d  t|d d }||krD|}tjj|d}d}d}|j}t d! x$|D ]}|j|krnd}|j}qnW |dkrtjj||d}t |j |rt|j t ||j}|j}n
t ||}t d" t d#| |dkrntddd	S q
W t d$ t"|
|d | t d% x||D ]r}|j#}tjj||||	d&}|ry"t$jj|j%j&|jdd'd(d)d* W n, t'k
r } zt | W Y d d }~X nX yt(|j%j)d+d,d-d. W n, t'k
r } zt | W Y d d }~X nX y&t$jj|j&j|j|jdd/d0d)d1 W n, t'k
rH } zt | W Y d d }~X nX yt(|j)d2d3d-d4 W n, t'k
r } zt | W Y d d }~X nX d|_*|j+  ntd5dd	S q:W td6d7d	S W n4 t'k
r } zt | td8d9d	S d }~X nX d S )<Nz Admin - in assigndriver functionr*   r  )r+   r0   )r,   i	  zBad request.)r   r   )rA   r
   rJ  r   z
here one 1r  rK  zhere one 1.0Fz
here one 2T)r,   ra  z
here one 3zhere one 3.1zhere one 3.2zhere one 3.3zWe are in else not workingr\  i  zunavailable Deliveryz
here one 4rL  z
here one 5z
here one 6z
here one 8rY  zmaking slot un aviablez
here one 9)r,   rZ   rg   r"   zDriver Assignedz1Driver has been assigned for your parcel request.r  )r   r  r  r  r  r   r_   r  r  z0Driver has been assigned for your parcel requestzParcel Pickup RequestzYou have one pickup request.)r  r  r  r  r  r  r   r,   r
  zYou have one pickup requesti  r   z Driver is assigned for this job.i  zInternal Server Error.rM  rM  ),rQ   r   rl   rR   rS   rT   rU   r  r  r  r  r  r  r  r  r  r   r   rV   r   r"   r~  r`   ra   rN  rO  ri   rb  ra  r+   rH  rc  rd  r   re  rA   r$  r_   r   r   r   r#  r   r   )rj   r   rr   rz  r  ru   r  rQ  r  r  rS  rT  rn  r   rV  r   r   rW  rm  ro  rp  r   rq  r_  rX  rY  r   r  r   r   r#   r#   r%   assign_driver_ExtraTest  s   
2













 










"&
r  c             O   s   t d yft | j | jjd}tjj|d}|r^t| x|D ]}|j  q@W tdddS tdddS W n2 t	k
r } zt | tdd	dS d }~X nX d S )
Nz"Admin - in unassigndriver functionidofsameparcel)rg   r   z"Driver is unassigned for this job.)r   r   i  z
some errorzInternal Server Error.)
rQ   r   rl   rV   rS   rT   r)  rv  r   r   )rj   r   rr   r  r  Zdrr   r#   r#   r%   unassigndriver  s    

r  c       	   B   O   s  t d yt | j | jjd}| jjd}tjj|dj }tjj|dj }|oX|rtjj	||d}|ry"t
jj	|jj|jdddd	d
 W n* tk
r } zt | W Y d d }~X nX yt|jjdddd W n, tk
r } zt | W Y d d }~X nX y&t
jj	|jj|j|jdddd	d W n, tk
rX } zt | W Y d d }~X nX yt|jdddd W n, tk
r } zt | W Y d d }~X nX d|_|j  tdddS tdddS W n4 tk
r } zt | tdddS d }~X nX d S )Nz Admin - in assigndriver functionr*   r  )r+   )r,   rZ   TzDriver Assignedz1Driver has been assigned for your parcel request.r  )r   r  r  r  r  r   r_   r  r  z0Driver has been assigned for your parcel requestzParcel Pickup RequestzYou have one pickup request.)r  r  r  r  r  r  r   r,   r
  zYou have one pickup requestr
   r   z Driver is assigned for this job.)r   r   i  zBad request.i  zInternal Server Error.)rQ   r   rl   rR   rS   rT   rU   r   rV   rH  r$  r_   r   r+   r   r   r#  r   r   r   )	rj   r   rr   rz  r  ru   r   r   r   r#   r#   r%   assign_driver  sB    

"&r  c                   s    e Zd ZdZ fddZ  ZS )*AdminShowAllCustomerJobsCompletedExtraTestzadmin_showallcustomerjobs.htmlc                s  t t| jf |}td tjjddjd}g }|rd}g }x|D ]}|j|krH|jdkrn|j	|j d}|jdkrt
jj|jd}	d}
|	rd}
d}x|	D ]}|jdkrd}qW |jdkrt
jj|dj }	d}
|	rd}
|	jrd}d}|jdkrd}|rH|jdkrd	}n"|jd
kr$d}n|jdkr4d	}|d
7 }y0|jjd
krRd}n|jjdkrfd}nd}W n, tk
r } zt| W Y dd}~X nX |j	||j|j|j|j|j|j|||jt|j|jd qHW t|d}t| jjjdd
}td| y"|j|}tt | td W nR t!k
rL   |j|j"}td Y n* t#k
rt   |j|j"}td Y nX g }t$jjdd}x"|D ]}|j	|j%|jd qW ||d< d|d< ||d< d|d< |S )zKThis class shows the content on show all customer jobs screen to Admin userz&AdminShowAllCustomerJobsCompleted get F)r   z-idr   )rg   T)rZ   zSame Day Deliveryr
   zTwo Day Deliveryr0   zSingle-Dropz
Multi-Dropr/   N)r   r  r  r  r  r   r  r=   r  r	  r+   createdDaterE   rF   zpage = rG   rH   rI   )r3   r+   r   r
  r  r  zCompleted Jobsr   )&rO   r  rP   rQ   r   rS   rT   r   rA   r[   rV   r.   rU   r  r\   r=   r   r  r  r  r]   r   r^   r+   r   r   r   ri   rj   rk   rl   rF   rm   rn   ro   rp   r   r3   )rq   rr   rs   r  r  r   r  rZ   r
  r   r  r   r  r  r=   r   r}   rF   r   r   r   )r~   r#   r%   rP     s    










z;AdminShowAllCustomerJobsCompletedExtraTest.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r    s   r  c                   s    e Zd ZdZ fddZ  ZS )AdminShowAllCustomerJobsFailedzadmin_showallcustomerjobs.htmlc                sn  t t| jf |}td tjjddjd}g }|rd}g }x|D ]|}|j|krH|jdkrn|j	|j d}d}	|jdkrt
jj|jd}
d}|
rd}x |
D ]}|jdkrd}|j}	qW |jdkrt
jj|dj }
d}|
rd}|
jrd}d}d}|jdkrd}|dkrH|jdkr"d	}n"|jd
kr4d}n|jdkrDd	}|jjd
krXd}n|jjdkrld}nd}|d
7 }|j	||j|j|j|j|j|j|j|j|j|j||	|||jt|j|jd qHW t|d}t | j!j"j#dd
}td| y"|j$|}tt%| td W nR t&k
r>   |j$|j'}td Y n* t(k
rf   |j$|j'}td Y nX g }t)jjdd}x"|D ]}|j	|j*|jd qW ||d< t+jjddddjd}g }|rJx|D ]x}d#\}}t,jj|dj }|r|j-}|j.}t
jj|ddj/ }|j	|j*|j0|j1d |j2 |j3j*||||jd qW ||d< d|d < ||d!< d|d"< |S )$zKThis class shows the content on show all customer jobs screen to Admin userz#AdminShowAllCustomerJobsFailed get F)r   z-idr   )rg   T)rZ   zSame Day Deliveryr
   zTwo Day Deliveryr0   zSingle-Dropz
Multi-Dropr/   )r   r  r  r  r  r   r  rc   rd   re   rf   r  r  r=   r  r	  r+   r  rE   rF   zpage = rG   rH   rI   )r3   r+   r   )r   r  r   )r,   )r,   r.   r  )r3   r4   r  r  rX   rY   r  r+   r   zFailed Jobsr  r  r   )r/   r/   )4rO   r  rP   rQ   r   rS   rT   r   rA   r[   rV   rg  rg   rU   r.   r  r\   r=   r  r  r  r]   r   r^   rc   rd   re   rf   r+   r   r   r   ri   rj   rk   rl   rF   rm   rn   ro   rp   r   r3   rR   rW   rX   rY   r   r4   r  r  r  )rq   rr   rs   r  r  r   r  rZ   failedr  r   r  r   r
  r  forFunr  r=   r}   rF   r   r   r   ru   r   r,   rX   rY   rz   r   )r~   r#   r%   rP   3  s    











z/AdminShowAllCustomerJobsFailed.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r  /  s   r  c                   s    e Zd ZdZ fddZ  ZS )!AdminShowAllCustomerJobsCompletedzadmin_showallcustomerjobs.htmlc                s  t t| jf |}td tjjddjd}g }|rd}x|D ]}tjj|dj	 }d}|rh|j
rhd}d}	|jdkrzd}	|r@|jdkrd}
n|jd	krd
}
n|jdkrd}
|d	7 }|j||j|j|j|j|j|j|	|jt|jd
 q@W t|d}t| jjjdd	}td| y"|j|}tt| td W nR tk
r`   |j|j}td Y n* tk
r   |j|j}td Y nX ||d< d|d< |S )zKThis class shows the content on show all customer jobs screen to Admin userz&AdminShowAllCustomerJobsCompleted get F)r   z-idr   )rZ   TzSame Day Deliveryr
   zTwo Day Deliveryr0   )
r   r  r  r  r  r   r  r  r	  r+   rE   rF   zpage = rG   rH   rI   r  zCompleted Jobsr   ) rO   r  rP   rQ   r   rS   rT   r   rV   rU   r.   rA   r  r[   r  r  r  r]   r   r^   r+   r   r   ri   rj   rk   rl   rF   rm   rn   ro   rp   )rq   rr   rs   r  r  r   rZ   r   r
  r  r  r}   rF   )r~   r#   r%   rP     sd    







z2AdminShowAllCustomerJobsCompleted.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r    s   r  c                   s    e Zd ZdZ fddZ  ZS )!AdminShowAllCustomerJobsExtraTestzadmin_showallcustomerjobs.htmlc          #      s  t t| jf |}td tjjddjd}g }|rd}g }x|D ]}|j|krH|jdkrn|j	|j d}|jdkrt
jj|jd}	d}
d}|	rd}
d}x |	D ]}|jdkrd}|j}qW |jdkrt
jj|dj }	d}
d}|	rd}
|	jrd}d}|jdkrd}|sH|jdkr"d	}n"|jd
kr4d}n|jdkrDd	}|d
7 }y0|jjd
krbd}n|jjdkrvd}nd}W n, tk
r } zt| W Y dd}~X nX |j	||j|j|j|j|j|j|j|j|j|j|
||||jt|j|jd qHW g }tjjdd}x"|D ]}|j	|j |jd qW ||d< t!|d}t"| j#j$j%dd
}td| y|j&|}td W nR t'k
r   |j&|j(}td Y n* t)k
r   |j&|j(}td Y nX ||d< t*jjddddjd}g }|rxx|D ]x}d#\}}t+jj|dj }|r,|j,}|j-}t
jj|ddj. }|j	|j |j/|j0d |j1 |j2j ||||jd qW ||d < d!|d"< |S )$zKThis class shows the content on show all customer jobs screen to Admin userz3AdminShowAllCustomers-AdminShowAllCustomerJobs get F)r   z-idr   )rg   T)rZ   zSame Day Deliveryr
   zTwo Day Deliveryr0   zSingle-Dropz
Multi-Dropr/   N)r   r  r  r  r  r   r  rc   rd   re   rf   r  r  r=   r  r	  r+   r  )r3   r+   r   rE   rF   zpage = rG   rH   rI   r  )r   r  r   )r,   )r,   r.   r  )r3   r4   r  r  rX   rY   r  r+   r   zOutstanding Jobsr   )r/   r/   )3rO   r  rP   rQ   r   rS   rT   r   rA   r[   rV   r.   rg   rU   r  r\   r=   r   r  r  r  r]   r   r^   rc   rd   re   rf   r+   r   r   r   r3   r   ri   rj   rk   rl   rF   rn   ro   rp   rR   rW   rX   rY   r   r4   r  r  r  )rq   rr   rs   r  r  r   r  rZ   r
  r   r  r  r   r  r  r=   r   r   r   r   r}   rF   ru   r   r,   rX   rY   rz   r   )r~   r#   r%   rP     s    











z2AdminShowAllCustomerJobsExtraTest.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r    s   r  c                   s    e Zd ZdZ fddZ  ZS )AdminShowAllCustomerJobszadmin_showallcustomerjobs.htmlc                s<  t t| jf |}td tjjddjd}g }|rd}x|D ]}tjj|dj	 }d}d}	|rpd}	|j
rpd}|s@|jdkrd}
n|jd	krd
}
n|jdkrd}
|d	7 }|j||j|j|j|j|j|j|j|j|j|j|	|jd q@W t|d}t| jjjdd	}td| y|j|}td W nR tk
rR   |j|j}td Y n* t k
rz   |j|j}td Y nX ||d< t!jjddddjd}g }|r(x|D ]x}d\}}t"jj|dj	 }|r|j#}|j$}tjj|ddj% }|j|j&|j'|j(d |j) |j*j&||||jd qW ||d< d|d< |S )zKThis class shows the content on show all customer jobs screen to Admin userz3AdminShowAllCustomers-AdminShowAllCustomerJobs get F)r   z-idr   )rZ   TzSame Day Deliveryr
   zTwo Day Deliveryr0   )r   r  r  r  r  r   r  rc   rd   re   rf   r  r+   rE   rF   zpage = rG   rH   rI   r  )r   r  r   r/   )r,   )r,   r.   r  )r3   r4   r  r  rX   rY   r  r+   r   zOutstanding Jobsr   )r/   r/   )+rO   r  rP   rQ   r   rS   rT   r   rV   rU   r.   r  r[   r  r  r  r]   r   r^   rc   rd   re   rf   r+   r   ri   rj   rk   rl   rF   rn   ro   rp   rR   rW   rX   rY   r   r3   r4   r  r  r  )rq   rr   rs   r  r  r   rZ   r   r
  r  r  r}   rF   ru   r   r,   rX   rY   rz   r   )r~   r#   r%   rP     s    







z)AdminShowAllCustomerJobs.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r    s   r  c             O   s  t d yddlm} i }| jjdr6| jd |d< | jjdrv| jd }tjj|dj }|rv|j	d |j
 |d< tjjd	d	d
j }tjjd	d	d
j }tjjd	d	d
j }	||d< ||d< |	|d< tjj jdd d d d d( }
|
|d< t d | jjdrt d | jd }|dkr:t d ttdS |dkrXt d ttdS |dkrvt d ttdS |dkrt d  ttd!S |d"krt d# ttd$S t d% ttd&S nttd&S W n2 tk
r } zt | ttd&S d }~X nX d S ))NzAdmin - in dashboard functionr   )r   r  r4   )usernamerK  r  T)r,  r   totalcustomerstotalcompaniestotaldriversz-idr'  r
   recent_companiesz


r  r  r   zsuperadmin-dashboardzsuperadmin_dashboard.htmlr  r   zadmin-dashboardzadmin_dashboard.htmlr_   rX  zcustomer-dashboardr   4zcompany-dashboardr,   5zdriver-dashboard6zcustomer-loginzadmin_login.htmlrM  )rQ   django.shortcutsr   r  r  r   rS   rT   rU   
first_name	last_namer   r   r   rR   r   r   r   r   r   )rj   r   rr   r   rs   r  r  r  r  r  r  r  r   r#   r#   r%   	dashboard  s`    
"

 
 


r  c             O   s   t d y| jjd}tjj|dj }|rg }|j|j|j	|j
|j|j|j|j|j|j|j|j|j|jd ttj|ddS tdS W n, tk
r } zt | tdS d	}~X nX d	S )
zEThis function is being used to edit the vehicle type details by Adminz$Admin - in edit_vehicletype functionvehicletype_id)r+   )r3   carryinglimitinkgfixeddistancerd  baserateaddittionalrateperunitr  r  r  r+   rI  rH  rG  F)ro  rX  r   N)rQ   r   rl   r   rS   rT   rU   r[   r3   r  r  rd  r  r  r  r  r  r+   heightOfVehicalwidthOfVehicallengthOfVehicalr   r   rq  r   r   )rj   r   rr   r  vehicletype_objZvehicletype_datar   r#   r#   r%   edit_vehicletype   s2    r  c             O   s  t d y| jjd}| jjd}| jjd}| jjd}| jjd}| jjd}| jjd}	| jjd	}
| jjd
}| jjd}| jjd}| jjd}|stdddS |stdddS |stdddS |stdddS | stdddS |stdddS |	s tdddS |
s4tdddS |sHtdddS |s\tdddS |sptdddS |stdddS tjj|ddj }|rtdddS tjj|||||||	|
||||d}td d!dS W n8 t	k
r } zt | tdt
|dS d"}~X nX d"S )#zDThis function is being used to add the vehicle type details by Adminz#Admin - in add_vehicletype functionr3   r  r  rd  r  r  r  r  r  rI  rH  rG  r   zVehicleType Name is required.)r   r   zcarryinglimitinkg is required.zfixeddistance is required.zdistanceunit is required.zbaserate is required.z#addittionalrateperunit is required.zpriceperdrop is required.zpriceperhour is required.zcurrency is required.zheight is required.zwidth is required.zlength is required.F)r3   r   zVehicleType exists.)r3   r  r  rd  r  r  r  r  r  r  r  r  r   zRecord added successfully.N)rQ   r   rl   r   r   rS   rT   rU   rH  r   r   )rj   r   rr   r3   r  r  rd  r  r  r  r  r  rI  rH  rG  r  r   r#   r#   r%   add_vehicletype9   s\    $r  c             O   s   t d yb| jjd}|s(tdddS tjj|dj }|rZd|_|j	  tdd	dS tdd
dS W n6 t
k
r } zt | tdt|dS d}~X nX dS )zGThis function is being used to delete the vehicle type details by Adminz&Admin - in delete_vehicletype functionr  r   zvehicletype Id is required.)r   r   )r+   Tr   zRecord deleted successfully.zVehicleType record not found.N)rQ   r   rl   r   r   rS   rT   rU   r   r   r   r   )rj   r   rr   r  r  r   r#   r#   r%   delete_vehicletypen   s    r  c             O   sh  t d y | jjd}|s*tdddS | jjd}| jjd}| jjd}| jjd	}| jjd
}| jjd}	| jjd}
| jjd}| jjd}| jjd}| jjd}| jjd}|stdddS |stdddS |stdddS |stdddS |stdddS |	s,tdddS |
s@tdddS |sTtdddS |shtdddS |s|tdddS |stdddS |stdddS tjj|dj }|r||_||_	||_
||_||_|	|_|
|_||_||_||_||_||_|j  tdd dS tdd!dS W n8 tk
rb } zt | tdt|dS d"}~X nX d"S )#zGThis function is being used to update the vehicle type details by Adminz&Admin - in update_vehicletype functionr  r   zVehicleType Id is required.)r   r   r3   r  r  rd  r  r  r  r  rI  rH  rG  r  zVehicleType Name is required.zcarryinglimitinkg is required.zfixeddistance is required.zdistanceunit is required.zbaserate is required.z#addittionalrateperunit is required.zpriceperdrop is required.zpriceperhour is required.zcurrency is required.zheight is required.zwidth is required.zlength is required.)r+   r   zRecord updated successfully.zVehicleType record not found.N)rQ   r   rl   r   r   rS   rT   rU   r3   r  r  rd  r  r  r  r  r  r  r  r  r   r   r   )rj   r   rr   r  r3   r  r  rd  r  r  r  r  rI  rH  rG  r  r  r   r#   r#   r%   update_vehicletype   sz    r  c             O   s  t d y| jjd}| jjd}| jjd}| jjd}| jjd}| jjd}| jjd}	| jjd	}
| jjd
}t | t | t | t | t |	 t |
 t | t | ytjj|dj }W n* tk
r } zt | W Y dd}~X nX |r|dkrd|_|dkr d|_	|dkr0d|_
|dkr@d|_|dkrPd|_|j  ytjj|ddj }W n   Y nX |	dkrd|_|
dkrd|_|dkrd|_|j  tdddS tdS W n. tk
r } zt | tdS d}~X nX dS )z6This function is being used to edit the driver detailszAdmin - in edit_driver functionrz  license_frontlicense_backpassport_frontpassport_backcrd_dbsvehical__GTC
vehical_mivehical_PLI)r+   NTruer%  T)r,   r  r   F)r   ro  rX  r   )rQ   r   rl   rR   rS   rT   rU   r   r  r  r  r  r  r   r  r  r  r  r   r   )rj   r   rr   rz  r  r  r  r  r  r  r  r  ru   r   driver_vehicalr#   r#   r%   rejectDocuments   sf    







r  c             O   s0  t d y| jjd}| jjd}| jjd}| jjd}| jjd}| jjd}| jjd}	| jjd	}
| jjd
}t | t | t | t | t |	 t |
 t | t | ytjj|dj }W n* tk
r } zt | W Y dd}~X nX t d |r|dkrd|_|dkr(d|_	t d |dkr@d|_
|dkrPd|_t d |dkrhd|_|j  ytjj|ddj }W n   Y nX t d |r|	dkrd|_|
dkrd|_|dkrd|_|j  t d tdddS tdS W n. tk
r* } zt | tdS d}~X nX dS )z6This function is being used to edit the driver detailszAdmin - in edit_driver functionrz  r  r  r  r  r  r  r  r  )r+   Nzacceot 1r  r0   zacceot 2zacceot 3T)r,   r  zacceot 4zacceot 5r   F)r   ro  rX  r   )rQ   r   rl   rR   rS   rT   rU   r   r  r  r  r  r  r   r  r  r  r  r   r   )rj   r   rr   rz  r  r  r  r  r  r  r  r  ru   r   r  r#   r#   r%   acceptDocuments!  sr    







r  c       !   2   O   sd  t d y&| jjd}tjj|dj }ytjj|ddj }W n   Y nX d}d}d}d}	d}
d}d}d}d}d}d}d}d}|r&g }|jr|jj	}nd}|j
rd|j
j	krd}ttj|j
j	 }qd}ttj|j
j	 }nd}|jr.d|jj	krd}ttj|jj	 }nd}ttj|jj	 }nd}|jrxd|jj	kr`d}ttj|jj	 }nd}ttj|jj	 }nd}|jrd|jj	krd}	ttj|jj	 }nd}	ttj|jj	 }nd}|jrd|jj	krd}
ttj|jj	 }nd}
ttj|jj	 }nd}|r|jr&|j}nd}|jr:|j}nd}|jrd|jj	krld}ttj|jj	 }nd}ttj|jj	 }nd}|jrd|jj	krd}ttj|jj	 }nd}ttj|jj	 }nd}|jrd|jj	kr d}ttj|jj	 }nd}ttj|jj	 }nd}|jrbd|jj	krJd}ttj|jj	 }nd}ttj|jj	 }nd}|j}|j}|j}|j}nd}d}d}d}d}d}|j|j	|j|j|jj ||||j!|||j"||j#|||j$|	||j%|
|j&|||||||||||||||d	$ t | t d
| t't(j)|ddS t*dS W n. t+k
r^ }  zt |  t*dS d} ~ X nX dS )z6This function is being used to edit the driver detailszAdmin - in edit_driver functionrz  )r+   T)r,   r  Fr/   pdf)$r3   r  r  r4   r  r  is_license_front_pdfr  is_license_back_pdfr  r  id_frontr  is_id_front_pdfid_backr  is_id_back_pdfcrb_dbsr  is_crb_dbs_pdfr+   vehical_numbervehical_typevehical_imageis_vehicleimage_pdfvehicleimage_statusr  vehical_motor_inr  is_motor_insurance_pdfPublicLIGoodsTC
PLI_status
GTC_status
is_PLI_pdf
is_GTC_pdfz.===========Friver Data -====================00)ro  rX  r   N),rQ   r   rl   rR   rS   rT   rU   r  r  r3   r  r   r   r  r  r  r  r  r*  r  vehicleimagemotor_insurancegoods_in_transit_coverpublic_liability_insurancer  r  r  r  r[   r  r  r   r4   r  r  r  r  r  r+   r   r   rq  r   r   )!rj   r   rr   rz  ru   r  r  r  r  r  r  r  r  r  r  r  r  r  r  rB  r  r  r  r  r  r  r  r  r  vehical_motor_insurancer  r  r   r#   r#   r%   edit_driverExtraTestk!  s,   


r  c             O   s  t d y| jjd}tjj|dj }ytjj|ddj }W n   Y nX |rg }|jrj|jj	}nd}|j
rttj|j
j	 }nd}|jrttj|jj	 }	nd}	|jrttj|jj	 }
nd}
|jrttj|jj	 }nd}|jrttj|jj	 }nd}|rv|jr|j}nd}|jr0|j}nd}|jrPttj|jj	 }nd}|jrpttj|jj	 }nd}nd}d}d}d}|j|j	|j|j|jj|||	|
|||j||||d t d| ttj|d	d
S tdS W n. t k
r } zt | tdS d}~X nX dS )z6This function is being used to edit the driver detailszAdmin - in edit_driver functionrz  )r+   T)r,   r  r/   )r3   r  r  r4   r  r  r  r  r  r  r+   r  r  r  r  z.===========Friver Data -====================00F)ro  rX  r   N)!rQ   r   rl   rR   rS   rT   rU   r  r  r3   r  r   r   r  r  r  r  r  r*  r  r  r  r[   r  r  r   r4   r+   r   r   rq  r   r   )rj   r   rr   rz  ru   r  rB  r  r  r  r  r  r  r  r  r  r  r   r#   r#   r%   edit_driver="  s    


r  c             O   sF  t d yd'dd}| jjd}|s4tdddS | jjd	}|sRtdd
dS | jjd}|sptdddS | jjd}|stdddS | jjd}|stdddS | jjd}	tjj|dj }
|
r6tjj|
d}|rtdddS t	jj|
d}|rtdddS t
jj|
d}|rHtdddS ntjj|||d}
tjj|
||||ddd}|rt|j}|dkrt d nt d |	r|	}|||jd tttj|jd|j|j|ttjd d }|rt d! nt d" td#d$dS tdd%dS W n8 tk
r@ } zt | tdt|dS d&}~X nX d&S )(z>This function is being used to add the driver details by AdminzAdmin - in add_driver functionc:\c                s  | j d}|d }|j d}t|d }|d }tj|}t|}tj|}	tjj	|d}
dj
dd td	D }tjj }ttjd
 t|
j d t|
jj  tjj r fddtj D }x"|D ]}tj| qW n
tj  xj|D ]b}tj|}	|	jt|jt|jgtj}|	j d t|j d t|j d | d | }qW tj|}	|	j d | d |  d
t|
j d t|
jj d | d | }||
_|
j  dS )Nz;base64,r   r  r
   )r+   r/   c             S   s   g | ]}t jtjtj qS r#   )r  r  r  r  r  )r  r  r#   r#   r%   r  "  s    z9add_driver.<locals>.getI420FromBase64.<locals>.<listcomp>r~  z/media/Users/Drivers/r  c                s   g | ]}t jj |qS r#   )r  r  r  )r  r  )r  r#   r%   r  "  s    r   r  r  z
/original-r   ) rN  r   r  r  r   r   r   rR   rS   rl   r  r  r  r   r   r  r+   r   r4   r  r  r  r  r  r  r  ri   rI  rH  r  r   r  )r  r  r  r  r  r  r  r  r  r  ru   r  r  r  r  r  r  r]  r#   )r  r%   r  "  s6    




(



:
.z%add_driver.<locals>.getI420FromBase64r3   r   zName is required.)r   r   r4   zEmail Address is required.passwordzPassword is required.r  zCountry Code is required.r  zPhone Number is required.r  )r  )r   zUser exists.z(An Admin exists with this email address.z*A Customer exists with this email address.)r  r4   r  T)r   r3   r4   r  r  r,  r   r   zK========================Driver Slots Added Successfully====================zN=======================Driver Slots errors====================================)r  z
New Signupz/login/)r  recipientemailr   r  	useremailuserpasswordloginurlzNew user mail sentzerror in new user mail sentr   zRecord added successfully.zRecord not created.N)r  )rQ   r   rl   r   r   rS   rT   rU   rR   r  r   create_userrH  r  r+   r   r   r   EMAIL_HOST_USERr4   r3   rx  r   )rj   r   rr   r  r3   r4   r  r  r  imgsrcr  ru   r  rl  resposr  	sentemailr   r#   r#   r%   
add_driver"  sb    



,
r  c             O   s   t d yb| jjd}|s(tdddS tjj|dj }|rZd|_|j	  tdd	dS tdd
dS W n6 t
k
r } zt | tdt|dS d}~X nX dS )zAThis function is being used to delete the driver details by Adminz"Admin - in disable_driver functionrz  r   zdriver Id is required.)r   r   )r+   Tr   zRecord disabled successfully.zdriver record not found.N)rQ   r   rl   r   rR   rS   rT   rU   r  r   r   r   )rj   r   rr   rz  ru   r   r#   r#   r%   disable_driver"  s    r  c             O   s   t d yb| jjd}|s(tdddS tjj|dj }|rZd|_|j	  tdd	dS tdd
dS W n6 t
k
r } zt | tdt|dS d}~X nX dS )zAThis function is being used to delete the driver details by Adminz!Admin - in enable_driver functionrz  r   zdriver Id is required.)r   r   )r+   Fr   zRecord enabled successfully.zdriver record not found.N)rQ   r   rl   r   rR   rS   rT   rU   r  r   r   r   )rj   r   rr   rz  ru   r   r#   r#   r%   enable_driver#  s    r  c             O   s   t d yb| jjd}|s(tdddS tjj|dj }|rZd|_|j	  tdd	dS tdd
dS W n6 t
k
r } zt | tdt|dS d}~X nX dS )zBThis function is being used to approve the driver details by Adminz"Admin - in approve_driver functionrz  r   zdriver Id is required.)r   r   )r+   Tr   zAccount approved successfully.zdriver record not found.N)rQ   r   rl   r   rR   rS   rT   rU   r,  r   r   r   )rj   r   rr   rz  ru   r   r#   r#   r%   approve_driver#  s    r  c             O   sD  t d  yddd}| jjd}|s4tdddS | jjd	}|sRtdd
dS | jjd}|sptdddS | jjd}|stdddS | jjd}tjj|djdj }	|	 r||	_	||	_
||	_|	j  |r|}
||
|	jd tdddS tdddS W n8 tk
r> } zt | tdt|dS d}~X nX dS )zAThis function is being used to update the driver details by Adminz!Admin - in update_driver functionc:\c                s  | j d}|d }|j d}t|d }|d }tj|}t|}tj|}	tjj	|d}
dj
dd td	D }tjj }ttjd
 t|
j d t|
jj  tjj r fddtj D }x"|D ]}tj| qW n
tj  xj|D ]b}tj|}	|	jt|jt|jgtj}|	j d t|j d t|j d | d | }qW tj|}	|	j d | d |  d
t|
j d t|
jj d | d | }||
_|
j  dS )Nz;base64,r   r  r
   )r+   r/   c             S   s   g | ]}t jtjtj qS r#   )r  r  r  r  r  )r  r  r#   r#   r%   r  :#  s    z<update_driver.<locals>.getI420FromBase64.<locals>.<listcomp>r~  z/media/Users/Drivers/r  c                s   g | ]}t jj |qS r#   )r  r  r  )r  r  )r  r#   r%   r  >#  s    r   r  r  z
/original-r   ) rN  r   r  r  r   r   r   rR   rS   rl   r  r  r  r   r   r  r+   r   r4   r  r  r  r  r  mkdirr  ri   rI  rH  r  r   r  )r  r  r  r  r  r  r  r  r  r  ru   r  r  r  r  r  r  r]  r#   )r  r%   r  /#  s6    




(



:
.z(update_driver.<locals>.getI420FromBase64rz  r   zdriver Id is required.)r   r   r3   zName is required.r  zCountry Code is required.r  zPhone Number is required.r  )r+   r   )r  r   zRecord updated successfully.zdriver record not found.N)r  )rQ   r   rl   r   rR   rS   rT   r-  rU   r3   r  r  r   r+   r   r   )rj   r   rr   r  rz  r3   r  r  r  ru   r  r   r#   r#   r%   update_driver+#  s<    
r  c             O   s   t d y| jd }tjj|dj }|rg }|jr>|jj}nd}|j|j	j
|j	j|j|j|j|j	j|j||jd	 ttj|ddS tdS W n, tk
r } zt | td	S d
}~X nX d
S )z@This function is being used to edit the company details by Adminz Admin - in edit_company function
company_id)r+   r/   )		firstnamelastnamer3   r  r  r4   r  r  r+   F)ro  rX  r   N)rQ   r   r   rS   rT   rU   r  r  r[   r   r  r  r3   r  r  r4   r  r+   r   r   rq  r   r   )rj   r   rr   r  company_objZcompany_datar  r   r#   r#   r%   edit_companyo#  s0    

r  c             O   s  t d y8ddd}| jjd}|s4tdddS | jjd	}|sRtdd
dS | jjd}|sptdddS | jjd}|stdddS | jjd}|stdddS | jjd}	tjj|dj }
|
rtdddS tjj|||d}
t	jj
|
||||dd}|r2|	r$|	}|||jd tdddS tdddS W n8 tk
rz } zt | tdt|dS d}~X nX dS )z?This function is being used to add the company details by AdminzAdmin - in add_company functionc:\c                s  | j d}|d }|j d}t|d }|d }tj|}t|}tj|}	tjj	|d}
dj
dd td	D }tjj }ttjd
 t|
j d t|
jj  tjj r fddtj D }x"|D ]}tj| qW n
tj  xj|D ]b}tj|}	|	jt|jt|jgtj}|	j d t|j d t|j d | d | }qW tj|}	|	j d | d |  ttjd
 t|
j d t|
jj d | d | }||
_ |
j  dS )Nz;base64,r   r  r
   )r+   r/   c             S   s   g | ]}t jtjtj qS r#   )r  r  r  r  r  )r  r  r#   r#   r%   r  #  s    z:add_company.<locals>.getI420FromBase64.<locals>.<listcomp>r~  z/media/Users/Companies/r  c                s   g | ]}t jj |qS r#   )r  r  r  )r  r  )r  r#   r%   r  #  s    r   r  r  z
/original-r   )!rN  r   r  r  r   r   r   r   rS   rl   r  r  r  r   r   r  r+   r   r4   r  r  r  r  r  r  r  ri   rI  rH  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  #  s6    




(



:
8z&add_company.<locals>.getI420FromBase64r3   r   zCompany Name is required.)r   r   r4   zEmail Address is required.r  zPassword is required.r  zPhone Number is required.r  zAddress is required.r  )r  zUser exists.)r  r4   r  T)r   r3   r4   r  r  r,  )r  r   zRecord added successfully.zRecord not created.N)r  )rQ   r   rl   r   r   rS   rT   rU   r  r   rH  r+   r   r   )rj   r   rr   r  r3   r4   r  r  r  r  r  r  r  r   r#   r#   r%   add_company#  sB    
 r  c             O   s   t d y`| jd }|s&tdddS tjj|dj }|rXd|_|j  tdd	dS tdd
dS W n6 t	k
r } zt | tdt
|dS d}~X nX dS )zBThis function is being used to delete the company details by Adminz"Admin - in delete_company functionr  r   zcompany Id is required.)r   r   )r+   Tr   zRecord deleted successfully.zcompany record not found.N)rQ   r   r   r   rS   rT   rU   r   r   r   r   )rj   r   rr   r  r  r   r#   r#   r%   delete_company#  s    
r  c             O   s   t d y`| jd }|s&tdddS tjj|dj }|rXd|_|j  tdd	dS tdd
dS W n6 t	k
r } zt | tdt
|dS d}~X nX dS )zCThis function is being used to approve the company details by Adminz#Admin - in approve_company functionr  r   zCompany Id is required.)r   r   )r+   Tr   zAccount approved successfully.zCompany record not found.N)rQ   r   r   r   rS   rT   rU   r,  r   r   r   )rj   r   rr   r  r  r   r#   r#   r%   approve_company#  s    
r  c             O   s  t d yrddd}| jjd}|s4tdddS | jjd	}|sRtdd
dS | jjd}|sptdddS | jjd}|stdddS | jjd}|stdddS | jjd}	|	stdddS | jjd}
|
stdddS | jjd}tjj|dj }|rl||j_	||j_
|jj  ||_||_|	|_|
|_|j  |r^|}|||jd tdddS tdddS W n8 tk
r } zt | tdt|dS d}~X nX dS )zBThis function is being used to update the company details by Adminz"Admin - in update_company functionc:\c                s  | j d}|d }|j d}t|d }|d }tj|}t|}tj|}	tjj	|d}
dj
dd td	D }tjj }ttjd
 t|
j d t|
jj  tjj r fddtj D }x"|D ]}tj| qW n
tj  xj|D ]b}tj|}	|	jt|jt|jgtj}|	j d t|j d t|j d | d | }qW tj|}	|	j d | d |  ttjd
 t|
j d t|
jj d | d | }||
_ |
j  dS )Nz;base64,r   r  r
   )r+   r/   c             S   s   g | ]}t jtjtj qS r#   )r  r  r  r  r  )r  r  r#   r#   r%   r  $  s    z=update_company.<locals>.getI420FromBase64.<locals>.<listcomp>r~  z/media/Users/Companies/r  c                s   g | ]}t jj |qS r#   )r  r  r  )r  r  )r  r#   r%   r  $  s    r   r  r  z
/original-r   )!rN  r   r  r  r   r   r   r   rS   rl   r  r  r  r   r   r  r+   r   r4   r  r  r  r  r  r  r  ri   rI  rH  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  $  s6    




(



:
8z)update_company.<locals>.getI420FromBase64r  r   zCompany Id is required.)r   r   r  zFirst Name is required.r  zLast Name is required.r3   zCompany Name is required.r  zCountry Code is required.r  zPhone Number is required.r  zAddress is required.r  )r+   )r  r   zRecord updated successfully.zcompany record not found.N)r  )rQ   r   rl   r   r   rS   rT   rU   r   r  r  r   r3   r  r  r  r+   r   r   )rj   r   rr   r  r  r  r  r3   r  r  r  r  r  r  r   r#   r#   r%   update_company $  sV    

r  c             O   s   t d y~| jjd}tjj|dj }|r|g }|jr@|jj}nd}|j	|j|j
|j||jd t | ttj|ddS tdS W n, tk
r } zt | td	S d
}~X nX d
S )z>This function is being used to edit the admin details by AdminzAdmin - in edit_admin functionr  )r+   r/   )r3   r4   r  r  r+   F)ro  rX  r   N)rQ   r   rl   r  rS   rT   rU   r  r3   r[   r4   r  r+   r   r   rq  r   r   )rj   r   rr   r  r  r  r  r   r#   r#   r%   
edit_adminS$  s*    
r  c             O   s  t d yd dd}| jjd}|s4tdddS | jjd	}|sRtdd
dS | jjd}|sptdddS | jjd}|stdddS | jjd}tjj|dj }	|	rtdddS tjj|||ddd}	t	jj
|	|||dd}
yW n, tk
r } zt | W Y dd}~X nX |
r|r:|}|||
jd tttj|
jd|
j|
j|ttjd d}|rvt d nt d tdddS tdddS W n8 tk
r } zt | tdt|dS d}~X nX dS )!z=This function is being used to add the admin details by AdminzAdmin - in add_admin functionc:\c                s  | j d}|d }|j d}t|d }|d }tj|}t|}tj|}	tjj	|d}
dj
dd td	D }tjj }ttjd
 t|
j d t|
jj  tjj r fddtj D }x"|D ]}tj| qW n
tj  xj|D ]b}tj|}	|	jt|jt|jgtj}|	j d t|j d t|j d | d | }qW tj|}	|	j d | d |  ttjd
 t|
j d t|
jj d | d | }||
_ |
j  dS )Nz;base64,r   r  r
   )r+   r/   c             S   s   g | ]}t jtjtj qS r#   )r  r  r  r  r  )r  r  r#   r#   r%   r  ~$  s    z8add_admin.<locals>.getI420FromBase64.<locals>.<listcomp>r~  z/media/Users/Admins/r  c                s   g | ]}t jj |qS r#   )r  r  r  )r  r  )r  r#   r%   r  $  s    r   r  r  z
/original-r   )!rN  r   r  r  r   r   r   r  rS   rl   r  r  r  r   r   r  r+   r   r4   r  r  r  r  r  r  r  ri   rI  rH  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  t$  s6    




(



:
8z$add_admin.<locals>.getI420FromBase64r3   r   zName is required.)r   r   r4   zEmail Address is required.r  zPassword is required.r  zPhone Number is required.r  )r  zUser exists.TF)r  r4   r  is_staffis_superuser)r   r3   r4   r  r,  N)r  z
New Signupz/admin/login/)r  r  r   r  r  r  r  zNew user mail sentzerror in new user mail sentr   zRecord added successfully.zRecord not created.)r  )rQ   r   rl   r   r   rS   rT   rU   r  r  rH  r   r+   r   r   r   r  r4   r3   rx  )rj   r   rr   r  r3   r4   r  r  r  r  r  r   r  r  r#   r#   r%   	add_adminp$  sL    
,
r  c             O   s   t d y| jjd}|s(tdddS tjj|dj }tjj|dj }|r|jj	}t
jj|dj  t d tdd	dS tdd
dS W n6 tk
r } zt | tdt|dS d}~X nX dS )z@This function is being used to delete the admin details by Adminz Admin - in delete_admin functionr  r   zadmin Id is required.)r   r   )r+   r  r   zRecord deleted successfully.zadmin record not found.N)rQ   r   rl   r   r  rS   rT   rU   r   r+   r   rv  r   r   )rj   r   rr   r  r  useridr   r#   r#   r%   delete_admin$  s     r  c             O   s   t d yb| jjd}|s(tdddS tjj|dj }|rZd|_|j	  tdd	dS tdd
dS W n6 t
k
r } zt | tdt|dS d}~X nX dS )zAThis function is being used to approve the admin details by Adminz!Admin - in approve_admin functionr  r   zadmin Id is required.)r   r   )r+   Tr   zAccount approved successfully.zadmin record not found.N)rQ   r   rl   r   r  rS   rT   rU   r,  r   r   r   )rj   r   rr   r  r  r   r#   r#   r%   approve_admin$  s    r  c             O   s&  t d yddd}| jjd}|s2tdddS | jjd	}|sPtdd
dS | jjd}t d |svtdddS | jjd}t d tjj|djdj }t d |r||_	||_
|j  |r|}	tdddS tdddS W n8 tk
r  }
 zt |
 tdt|
dS d}
~
X nX dS )z@This function is being used to update the admin details by Adminz Admin - in update_admin functionc:\c                s  t d | jd}|d }|jd}t|d }|d }tj|}t|}tj|}	tj	j
|d}
djdd	 td
D }tj	j }ttjd t|
j d t|
jj  tjj r fdd	tj D }x"|D ]}tj| qW n
tj  xj|D ]b}tj|}	|	jt|jt|jgtj}|	j d t|j d t|j d | d | }qW tj|}	|	j d | d |  ttj d t|
j d t|
jj d | d | }||
_!|
j  dS )Nr  z;base64,r   r  r
   )r+   r/   c             S   s   g | ]}t jtjtj qS r#   )r  r  r  r  r  )r  r  r#   r#   r%   r  %  s    z;update_admin.<locals>.getI420FromBase64.<locals>.<listcomp>r~  z/media/Users/admins/r  c                s   g | ]}t jj |qS r#   )r  r  r  )r  r  )r  r#   r%   r  %  s    r   r  r  z
/original-r   )"rQ   rN  r   r  r  r   r   r   r  rS   rl   r  r  r  r   r   r  r+   r   r4   r  r  r  r  r  r  r  ri   rI  rH  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  $  s8    




(



:
8z'update_admin.<locals>.getI420FromBase64r  r   zadmin Id is required.)r   r   r3   zName is required.r  z 1256zPhone Number is required.r  Z1262)r+   r   Z1300r   zRecord updated successfully.zadmin record not found.N)r  )rQ   r   rl   r   r  rS   rT   r-  rU   r3   r  r   r   r   )rj   r   rr   r  r  r3   r  r  r  r  r   r#   r#   r%   update_admin$  s8    
r  c       	      O   s   t d y| jjd}tjj|dj }|rg }tjj|dj }|j	rR|j	j
}nd}|j|j
|j|j||j||jd t | ttj|ddS td	S W n, tk
r } zt | td
S d}~X nX dS )zAThis function is being used to edit the customer details by Adminz!Admin - in edit_customer functioncustomer_id)r+   )r_   r/   )r3   r4   r  r  r   Z	jobscountr+   F)ro  rX  r   N)rQ   r   rl   r   rS   rT   rU   r   r   r  r3   r[   r4   r  r   r+   r   r   rq  r   r   )	rj   r   rr   r  rl  Zcustomer_dataZcustomerjobs_countr  r   r#   r#   r%   edit_customer@%  s0    
r  c             O   s"  t d yd%dd}| jjd}|s4tdddS | jjd	}|sRtdd
dS | jjd}|sptdddS | jjd}|stdddS | jjd}| jjd}	tjj|dj }
|
r$tjj|
d}|rtdddS t	jj|
d}|r tdddS t
jj|
d}|r6tdddS ntjj|||d}
|	dkrFd}	nd}	tjj|
|	|||ddd}|r|r|}|||jd tttj|jd|j|j|ttjd d}|rt d nt d  td!d"dS tdd#dS W n8 tk
r } zt | tdt|dS d$}~X nX d$S )&z@This function is being used to add the customer details by Adminz Admin - in add_customer functionc:\c                s  | j d}|d }|j d}t|d }|d }tj|}t|}tj|}	tjj	|d}
dj
dd td	D }tjj }ttjd
 t|
j d t|
jj  tjj r fddtj D }x"|D ]}tj| qW n
tj  xj|D ]b}tj|}	|	jt|jt|jgtj}|	j d t|j d t|j d | d | }qW tj|}	|	j d | d |  ttjd
 t|
j d t|
jj d | d | }||
_ |
j  dS )Nz;base64,r   r  r
   )r+   r/   c             S   s   g | ]}t jtjtj qS r#   )r  r  r  r  r  )r  r  r#   r#   r%   r  m%  s    z;add_customer.<locals>.getI420FromBase64.<locals>.<listcomp>r~  z/media/Users/Customers/r  c                s   g | ]}t jj |qS r#   )r  r  r  )r  r  )r  r#   r%   r  q%  s    r   r  r  z
/original-r   )!rN  r   r  r  r   r   r   r   rS   rl   r  r  r  r   r   r  r+   r   r4   r  r  r  r  r  r  r  ri   rI  rH  r  r   rx  r  )r  r  r  r  r  r  r  r  r  r  rl  r  r  r  r  r  r  r]  r#   )r  r%   r  c%  s6    




(



:
8z'add_customer.<locals>.getI420FromBase64r3   r   zName is required.)r   r   r4   zEmail Address is required.r  zPassword is required.r  zPhone Number is required.r  r   )r  )r   zUser exists.z(An Admin exists with this email address.z(A Driver exists with this email address.)r  r4   r  r   r_   T)r   r   r3   r4   r  r,  r   )r  z
New Signupz/login/)r  r  r   r  r  r  r  zNew user mail sentzerror in new user mail sentr   zRecord added successfully.zRecord not created.N)r	  )rQ   r   rl   r   r   rS   rT   rU   r   r  rR   r  rH  r+   r   r   r   r  r4   r3   rx  r   )rj   r   rr   r  r3   r4   r  r  r  r   r  rl  r  ru   r  r  r   r#   r#   r%   add_customer_%  s\    

,
r
  c             C   s  t jj| d}d}d}d}d}d}xl|D ]b}tjj|dj }|r*d}|jj}t|j t|j	 |j	}	|	j
dd }
|	j
dd }|
d d }
|dd  }t|
}
t|}|
d	 | }	t|
 t| t|	 t|	d d
 }||k r|}td| t|j |j}|j
dd }
|j
dd }|
d d }
|dd  }t|
}
t|}|
d	 | }t|
 t| t| t|d d
 }||kr*|}q*W |rt||d | d S )N)rA   TrJ  r   F)rZ   r  r
   rK  r0   rL  rM  rM  )r   rS   rT   rV   rU   r,   r+   rQ   r`   ra   rN  rO  ri   r   rP  )r   rQ  rR  rS  rT  r  driverExistr_   rU  rV  r   r   rW  rX  rY  r#   r#   r%   slotStatusonJobComplete2%  sZ    



r  c             C   s  t jj| d}d}d}d}d}d}xt|D ]j}tjj|dj }|r*td d}|jj}t|j t|j	 |j	}	|	j
dd }
|	j
dd	 }|
d d }
|d	d  }t|
}
t|}|
d
 | }	t|
 t| t|	 t|	d d }||k r|}td| t|j |j}|j
dd }
|j
dd	 }|
d d }
|d	d  }t|
}
t|}|
d
 | }t|
 t| t| t|d d }||kr*|}q*W d}d}td t jj| dj }t| td |j}td tjj|dj }t| |rntd |j}td| tjj|d}td| xB|D ]:}td |j|kr0td|j d}|j}td| q0W |dkrtd |rtd t||d	 | d S )N)rA   TrJ  r   F)rZ   zwe are in driver jobr  r
   rK  r0   rL  zone 1zone 2zone 3zone 4zone 5)r,   zone 6zone 7zone 8zone 9zone 10rM  rM  )r   rS   rT   rV   rU   rQ   r,   r+   r`   ra   rN  rO  ri   r   rb  ra  rf  )r   rQ  rR  rS  rT  r  r  r_   rU  rV  r   r   rW  rX  rY  ro  rn  pickupdateCuystomerrp  r,   rm  r   r#   r#   r%   r)  %  s    







r)  c       
      O   sF  t d  y| jjd}|s*tdddS tjj|d}d}|rx,|D ]$}tjj|dj }|j	dkrFd	}qFW |dkrx>|D ]6}d|_
tjj|dj }|rd|_
|j  |j  q|W t| x*|D ]"}tjj|dj }|r|j  qW td
ddS tdddS W n8 tk
r@ }	 zt |	 tdt|	dS d}	~	X nX dS )zCThis function is being used to delete the customer details by Adminz%Admin - in deletecustomerjob functionr  r   zCustomerJob Id is required.)r   r   )rA   T)rZ   Fr   zRecord deleted successfully.zCustomer record not found.N)rQ   r   rl   r   r   rS   rT   rV   rU   r-   r   r   r)  rv  r   r   )
rj   r   rr   r   r   cancelParcelr,  rU  r   r   r#   r#   r%   deletecustomerjob/&  s<    



r  c             O   s   t d yj| jjd}|s(tdddS tjj|dj }|rbd|_|j	  t d td	d
dS tdddS W n6 t
k
r } zt | tdt|dS d}~X nX dS )zCThis function is being used to delete the customer details by Adminz$Admin - in disable_customer functionr  r   zCustomer Id is required.)r   r   )r+   Tr  r   zRecord disabled successfully.zCustomer record not found.N)rQ   r   rl   r   r   rS   rT   rU   r  r   r   r   )rj   r   rr   r  rl  r   r#   r#   r%   disable_customerd&  s    r  c             O   s   t d yb| jjd}|s(tdddS tjj|dj }|rZd|_|j	  tdd	dS tdd
dS W n6 t
k
r } zt | tdt|dS d}~X nX dS )zCThis function is being used to delete the customer details by Adminz#Admin - in enable_customer functionr  r   zCustomer Id is required.)r   r   )r+   Fr   zRecord enabled successfully.zCustomer record not found.N)rQ   r   rl   r   r   rS   rT   rU   r  r   r   r   )rj   r   rr   r  rl  r   r#   r#   r%   enable_customer&  s    r  c             O   s   t d yb| jjd}|s(tdddS tjj|dj }|rZd|_|j	  tdd	dS tdd
dS W n6 t
k
r } zt | tdt|dS d}~X nX dS )zDThis function is being used to approve the customer details by Adminz$Admin - in approve_customer functionr  r   zCustomer Id is required.)r   r   )r+   Tr   zAccount approved successfully.zCustomer record not found.N)rQ   r   rl   r   r   rS   rT   rU   r,  r   r   r   )rj   r   rr   r  rl  r   r#   r#   r%   approve_customer&  s    r  c             O   s  t d yddd}| jjd}|s2tdddS | jjd	}|sPtdd
dS | jjd}|sntdddS | jjd}tjj|djdj }|r||_	||_
|j  |r|}	||	|jd tdddS tdddS W n8 tk
r }
 zt |
 tdt|
dS d}
~
X nX dS )zCThis function is being used to update the customer details by Adminz#Admin - in update_customer functionc:\c                s  | j d}|d }|j d}t|d }|d }tj|}t|}tj|}	tjj	|d}
dj
dd td	D }tjj }ttjd
 t|
j d t|
jj  tjj r fddtj D }x"|D ]}tj| qW n
tj  xj|D ]b}tj|}	|	jt|jt|jgtj}|	j d t|j d t|j d | d | }qW tj|}	|	j d | d |  ttjd
 t|
j d t|
jj d | d | }||
_ |
j  dS )Nz;base64,r   r  r
   )r+   r/   c             S   s   g | ]}t jtjtj qS r#   )r  r  r  r  r  )r  r  r#   r#   r%   r  &  s    z>update_customer.<locals>.getI420FromBase64.<locals>.<listcomp>r~  z/media/Users/Customers/r  c                s   g | ]}t jj |qS r#   )r  r  r  )r  r  )r  r#   r%   r  &  s    r   r  r  z
/original-r   )!rN  r   r  r  r   r   r   r   rS   rl   r  r  r  r   r   r  r+   r   r4   r  r  r  r  r  r  r  ri   rI  rH  r  r   rx  r  )r  r  r  r  r  r  r  r  r  r  rl  r  r  r  r  r  r  r]  r#   )r  r%   r  &  s6    




(



:
8z*update_customer.<locals>.getI420FromBase64r  r   zCustomer Id is required.)r   r   r3   zName is required.r  zPhone Number is required.r  )r+   r   )r  r   zRecord updated successfully.zCustomer record not found.N)r  )rQ   r   rl   r   r   rS   rT   r-  rU   r3   r  r   r+   r   r   )rj   r   rr   r  r  r3   r  r  rl  r  r   r#   r#   r%   update_customer&  s4    
r  c             O   s   t d yt| jd }| jd }tjj|dj }|rrtjj||dj }|rTtdS tjj||d}|rztdS ntdS W n, t	k
r } zt | td	S d
}~X nX d
S )z<This function is being used to add the city details by AdminzAdmin - in add_city functioncountrycity)r3   )r  r3   r  r   rX  r   N)
rQ   r   CountryrS   rT   rU   Cityr   rH  r   )rj   r   rr   r  r  Zcountry_objZcity_objr   r#   r#   r%   add_city&  s     


r  c                   s    e Zd ZdZ fddZ  ZS )SuperAdminDashboardzsuperadmin_dashboard.htmlc       
         s  t t| jf |}td | jjjdr8| jjd |d< | jjjdr|| jjd }tjj	|dj
 }|r||jd |j |d< tjj jddd	 }||d
< tjj	dddj }tjj }tjj	dddj }||d< ||d< ||d< tjj jddd ddd }	|	|d< |S )z;This class shows the content on Superadmin dashboard screenzSuperAdminDashboard-in get r  r4   )r  rK  r  z-idNr  recent_customerjobsFT)r   r   r  totalcustomerjobsr  r'  r
   r  rM  )rO   r  rP   rQ   rj   r  r  r   rS   rT   rU   r  r  r   r   r   r   r   rR   r   )
rq   rr   rs   r  r  r  r  r  r  r  )r~   r#   r%   rP   '  s(    
"z$SuperAdminDashboard.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r  &  s   r  c                   s    e Zd ZdZ fddZ  ZS )AdminDashboardzadmin_dashboard.htmlc       
         s  t t| jf |}td | jjjdr8| jjd |d< | jjjdr|| jjd }tjj	|dj
 }|r||jd |j |d< tjj jddd	 }||d
< tjj	ddj }tjj }tjj	ddj }||d< ||d< ||d< tjj jddd ddd }	|	|d< |S )z6This class shows the content on Admin dashboard screenzAdminDashboard-in get r  r4   )r  rK  r  z-idNr  r  T)r   r  r  r  r'  r
   r  rM  )rO   r  rP   rQ   rj   r  r  r   rS   rT   rU   r  r  r   r   r   r   r   rR   r   )
rq   rr   rs   r  r  r  r  r  r  r  )r~   r#   r%   rP   '  s(    
"zAdminDashboard.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r  '  s   r  c                   s    e Zd ZdZ fddZ  ZS )AllVehicleTypeszadmin_showallvehicletypes.htmlc       	         s4  t t| jf |}td tjjdd}g }|rd}xZ|D ]R}|d7 }|j||j|j	|j
|j|j|j|j|j|j|j|j|j|j|jd q:W t|d}t| jjjdd}td	| y|j|}td
 W nP tk
r   |j|j}td Y n* tk
r   |j|j}td Y nX ||d< d|d< |S )zKThis class shows the content on show all vehicle types screen to Admin userzAllVehicleTypes-in get F)r   r   r
   )r   r3   r  r  rd  r  r  r  r  r  r+   r   rI  rH  rG  rE   rF   zpage = rG   rH   rI   all_vehicletypesrB   Zvehicletypes_section)rO   r  rP   rQ   r   rS   rT   r[   r3   r  r  rd  r  r  r  r  r  r+   r   r  r  r  r   ri   rj   rk   rl   rF   rn   ro   rp   )	rq   rr   rs   r  r/  r   vehicler}   rF   )r~   r#   r%   rP   <'  sN    



z AllVehicleTypes.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r  8'  s   r  c                   s    e Zd ZdZ fddZ  ZS )AdminShowAllAdminszadmin_showalladmins.htmlc                s8  t t| jf |}td tjjdddjd}g }|rd}xP|D ]H}tjj|dj	 }|rB|d7 }|j
||j|j|j|jjd	|jd
 qBW t|d}t| jjjdd}	td|	 y"|j|	}
tt|
 td W nR tk
r   |j|j}
td Y n* tk
r*   |j|j}
td Y nX |
|d< |S )zGThis class shows the content on show all customers screen to Admin userzAdminShowAllAdmins-in get TF)r  r   z-idr   )r   r
   r(  )r   r3   r  r4   r   r,  r+   rE   rF   zpage = rG   rH   rI   
all_admins)rO   r!  rP   rQ   r   rS   rT   r   r  rU   r[   r3   r  r4   r   r.  r+   r   ri   rj   rk   rl   rF   rm   rn   ro   rp   )rq   rr   rs   Zall_admin_usersr/  r   Z
admin_userr  r}   rF   r"  )r~   r#   r%   rP   n'  sB    



z#AdminShowAllAdmins.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r!  j'  s   r!  c                   s    e Zd ZdZ fddZ  ZS )AdminShowAllCustomerszadmin_showallcustomers.htmlc                s  t t| jf |}td tjjdddjdjd}g }|rd}x|D ]}|d7 }|j	r`d	}nd
}|j
rpd	}nd
}|jrd	}	nd
}	|jr|j}
nd}
|js|j}n|jd |j }|j||
||j|jj|||	|jd	 qHW g }tjjdd}x |D ]}|j|j|jd qW ||d< t|d}t| jjjdd}td| y"|j|}tt| td W nR tk
r   |j|j}td Y n* tk
r   |j|j}td Y nX ||d< d|d< |S )zGThis class shows the content on show all customers screen to Admin userzAdminShowAllCustomers-in get r_   F)r   r   z-idr   r   r
   r(  r)  r/   r  )	r   r3   r  r4   r   r,  r   r  r+   )r   )r3   r+   r   rE   rF   zpage = rG   rH   rI   r5  rB   r6  )rO   r#  rP   rQ   r   rS   rT   r   r-  r   r,  r  r3   r  r  r[   r4   r   r.  r+   r   r   ri   rj   rk   rl   rF   rm   rn   ro   rp   )rq   rr   rs   r5  r/  r   r_   r   r,  r  r3   r  r   r   r   r}   rF   )r~   r#   r%   rP   '  sp    




z&AdminShowAllCustomers.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r#  '  s   r#  c                   s    e Zd ZdZ fddZ  ZS )AdminShowAllCompanieszadmin_showallcompanies.htmlc                s  t t| jf |}td tjjdddjdjd}g }|rd}x|D ]}|d7 }|j	r`d	}nd
}|j
rpd	}nd
}|jrd	}	nd
}	|jr|j}
nd}
|js|j}n|jd |j }|j||
||j|jj|||	|jd	 qHW g }tjjdd}x |D ]}|j|j|jd qW ||d< t|d}t| jjjdd}td| y"|j|}tt| td W nR tk
r   |j|j}td Y n* tk
r   |j|j}td Y nX ||d< d|d< |S )zGThis class shows the content on show all companies screen to Admin userzAdminShowAllCompanies-in get r   F)r   r   z-idr   r   r
   r(  r)  r/   r  )	r   r3   r  r4   r   r,  r   r  r+   )r   )r3   r+   r   rE   rF   zpage = rG   rH   rI   r5  rB   Zin_allcompanies_section)rO   r$  rP   rQ   r   rS   rT   r   r-  r   r,  r  r3   r  r  r[   r4   r   r.  r+   r   r   ri   rj   rk   rl   rF   rm   rn   ro   rp   )rq   rr   rs   r5  r/  r   r_   r   r,  r  r3   r  r   r   r   r}   rF   )r~   r#   r%   rP   '  sp    




z&AdminShowAllCompanies.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r$  '  s   r$  c                   s    e Zd ZdZ fddZ  ZS )AdminCreditRequestsz admin_showallcreditrequests.htmlc       	         s   t t| jf |}td g }tjj jd}|rxd}x@|D ]8}|d7 }|j||j	|j
|j|j|jjd|jd q<W t|d}t| jjjdd}td	| y"|j|}tt| td
 W nP tk
r   |j|j}td Y n* tk
r   |j|j}td Y nX ||d< |S )zGThis class shows the content on show all companies screen to Admin userzAdminCreditRequests-in get z-idr   r
   z%d/%m/%Y %I:%M:%S %p)r   r>  r@  note_by_companyr   r   r+   rE   rF   zpage = rG   rH   rI   r   )rO   r%  rP   rQ   r=  rS   r   r   r[   r>  r@  r&  r   r   r   r+   r   ri   rj   rk   rl   rF   rm   rn   ro   rp   )	rq   rr   rs   r   rA  r   r   r}   rF   )r~   r#   r%   rP   1(  s>    




z$AdminCreditRequests.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r%  -(  s   r%  c                   s    e Zd ZdZ fddZ  ZS )AdminShowAllDriverszadmin_showalldrivers.htmlc                sH  t t| jf |}td tjjddjdjd}g }|r`d}x|D ]}|d7 }d}|j	dkrld	}nN|j	dkr|d
}n>|j	dkrd}n.|j	dkrd}n|j	dkrd}n|j	dkrd}|j
rd}nd}|jrd}	nd}	|jrd}
nd}
tjj|dj }|r|j}|j}nd}d}|j||j|jd |j |jj||j|j|jj||	|
|||jd qJW g }tjjdd}x"|D ]}|j|j|jd qxW ||d< t|d}t| jjj dd}td| y"|j!|}tt"| td W nR t#k
r   |j!|j$}td Y n* t%k
r:   |j!|j$}td Y nX ||d < |S )!zEThis class shows the content on show all drivers screen to Admin userzAdminShowAllDrivers-in get F)r   z-idr   r   r
   r/   r#  r$  r0   z	Small Vanr%  z
Medium Vanr&  z	Large Vanr'  zNot Specifiedr(  r)  )r,   r  )r   r3   r  r4   r  r*  r+  r   r   r,  r  rX   rY   r+   )r3   r+   r   rE   rF   zpage = rG   rH   rI   r   )&rO   r'  rP   rQ   rR   rS   rT   r   r-  r  r   r,  r  rW   rU   rX   rY   r[   r3   r  r  r   r4   r*  r+  r.  r+   r   r   ri   rj   rk   rl   rF   rm   rn   ro   rp   )rq   rr   rs   r   r/  r   r,   r  r   r,  r  rz   rX   rY   r   r   r   r}   rF   )r~   r#   r%   rP   ](  s    









z$AdminShowAllDrivers.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r'  Y(  s   r'  c                   s    e Zd ZdZ fddZ  ZS )AdminShowAllDriversMapzadmin_showalldrivers_map.htmlc       	   
      s   t t| jf |}td tjjddjdjd}g }|rx^|D ]V}t	jj|dj
 }|rB|j}|j}|j|j|jd |j |jj|j|||jd qBW ||d	< |S )
zEThis class shows the content on show all drivers screen to Admin userzAdminShowAllDriversMap-in get F)r   z-idr   )r,   r  )r3   r  r4   r*  rX   rY   r+   r   )rO   r(  rP   rQ   rR   rS   rT   r   r-  rW   rU   rX   rY   r[   r3   r  r  r   r4   r*  r+   )	rq   rr   rs   r   r/  r,   rz   rX   rY   )r~   r#   r%   rP   (  s(    
z'AdminShowAllDriversMap.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r(  (  s   r(  c                   s    e Zd ZdZ fddZ  ZS )AllCountrieszadmin_allcountries.htmlc                s0   t t| jf |}td tjj }||d< |S )zGThis class shows the content on show all countries screen to Admin userzAllCountries-in get all_countries)rO   r)  rP   rQ   r  rS   r   )rq   rr   rs   r*  )r~   r#   r%   rP   (  s
    
zAllCountries.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r)  (  s   r)  c                   s    e Zd ZdZ fddZ  ZS )	AllCitieszadmin_allcities.htmlc                s0   t t| jf |}td tjj }||d< |S )zDThis class shows the content on show all cities screen to Admin userzAllCities-in get 
all_cities)rO   r+  rP   rQ   r  rS   r   )rq   rr   rs   r,  )r~   r#   r%   rP   (  s
    
zAllCities.get_context_data)r   r   r   r   rP   r   r#   r#   )r~   r%   r+  (  s   r+  c                   s(   e Zd ZdZ fddZdd Z  ZS )
AdminLoginzadmin_login.htmlc                s   t t| jf |}|S )zDThis class shows the content on show all cities screen to Admin user)rO   r-  rP   )rq   rr   rs   )r~   r#   r%   rP   (  s    zAdminLogin.get_context_datac             O   s  yDt d t|jd |jd d}|dk	r6|jd |jd< tjjt|jddj	 }|j
jd}|rtjj|d	j	 }|rd
|jd< tjj|d	}tdd
d|dS tdddS nptjjt|jddj	 }	|	r(tjj|	d	j	 }|rd|jd< tjj|d	}tddd|dS tdddS tdddS tdddS W n: tk
r }
 zt d|
 tdt|
dS d}
~
X nX dS )z7This class is used for the login process for admin userzAdminLogin Web - in postr4   r  )r  r  NT)r+   r   next)r   r  r  r   zsuperadmin login successfull)r   r   r   redirectlinkr   z5You can not login with Django admin credentials here.)r   r   )r+   r  r  zadmin login successfullzInvalid Credentials.zerror is)rQ   r   r   r  r   rS   rT   ri   r+   rU   rk   rl   r  r	   get_or_creater   r   r   )rq   rj   r   rr   r   Zsuperadmin_objr/  r  tokenr  r  r#   r#   r%   r   (  s6    



zAdminLogin.post)r   r   r   r   rP   r   r   r#   r#   )r~   r%   r-  (  s   r-  )r  r   django.views.generic.baser   django.httpr   r   r   django.contrib.authr   django.contrib.auth.modelsr   rest_framework.authtoken.modelsr	   
decoratorsr   django.utils.decoratorsr   Customer.modelsCustomer.commonfunctionsr   r   Driver.modelsmodelsr   r  r  r  r  ior   PILr   django.confr   django.urlsr   Z	pywebpushr   r   rest_framework.viewsr   django.core.paginatorr   adminfunctionsr   django.core.files.storager   sysr  mathr   r   r   r   r   r  django.core.mailr   django.corer    r!   r&   r(   r)   r   r   r   r   r   r   r   r   r   r   r   rL   r   r   r   r   r   r   r   r  r  r  r  r  r!  r0  r1  r2  r3  r4  r7  r8  r9  r:  r<  r=  r>  rE  rI  rZ  r`  ru  rv  r|  r}  r^  re  rP  rf  r]  rd  rO  r  rc  r  r  r  r  r  r  r8  rC  r_  r`  rb  rh  ry  rz  r{  r  r  r  r  r  r  r  r  r  r  r5  r6  r7  r?  rD  rE  rN  rS  rV  rW  ri  rj  rk  rm  rs  rt  ru  rw  rx  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  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%   <module>   s  (T 1YVVV*>Q?8aba``^\\[[POSO    /Q ) *O>C>>XXRP"i)# 2R ISS!#74:v'.n c A gc(1(Y(9	"$ ) -'h D 
^75GPS S\\D LSK'LW/J5@1,KI+Y