
^B                 @   s  d  d l  m Z d  d l m Z m Z d  d l m Z d  d l m Z d  d l	 m
 Z
 d  d l m Z d  d l m Z m Z d  d l Td  d l Td	 d
 l m Z d  d l m Z d  d l Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z e e d d  Gd! d"   d" e   Z  d S)#    )render)TemplateViewView)APIView)authenticate)Token)method_decorator)JsonResponseHttpResponse)*   )checklogindriver)settingsNc               @   s   e  Z d  Z d d   Z d S)CheckDriverProfileCompletedc       
      O   s  t  d  t  d  t  d | j  yg  } d } |  j j j d  r$|  j j d } t j j d |  j   } t  d  | r t  d  t	 j j d |  j
 d  j   } | r | j r | j r | j r | j r | j r d	 } | j d
 | i  t  d  t  |  t t j |   St t j |   SWnU t k
 r}	 z5 t  |	  | j d
 | i  t t j |   SWYd  d  }	 ~	 Xn Xd  S)Nz

z)CheckDriverProfileCompleted API - in postzdata is  : Femail01userTprofile)printPOSTrequestsessionhas_keyUserobjectsfilterfirstDriverModelprefetch_relatednamer   phonevehicletypevehiclenumberappendr
   jsondumps	Exception)
selfr   argskwargsdatar   	email_valuser_obj
driver_obje r0   G/home/development/Documents/Good_Delivery/GoodsDelivery/Driver/views.pypost   s2    



$-


z CheckDriverProfileCompleted.postN)__name__
__module____qualname__r2   r0   r0   r0   r1   r      s   r   c               @   s   e  Z d  Z d d   Z d S)DriverProfileUpdatec             C   so  t  d  yi  } |  j j j d  r8 |  j j d } |  j j j d  r] |  j j d } |  j j j d  } |  j j j d  } |  j j j d  } |  j j j d  } |  j j j d  } |  j j j d  }	 | s t d	 d
 d d i  S| st d	 d
 d d i  S| s/t d	 d
 d d i  S| sKt d	 d
 d d i  S| sgt d	 d
 d d i  S|	 st d	 d
 d d i  St j j	 d |  j
   }
 |
 r| |
 _ | |
 _ | |
 _ t j j	 d |  j
   } | |
 _ |	 |
 _ |
 j   t d	 d d d i  St d	 d
 d d i  SWnE t k
 rj} z% t  |  t d	 d d d i  SWYd d } ~ Xn Xd S)z1This function shows the content on profile screenzDriverProfileUpdate - in get r   userroledriveridr    r!   r"   r#   status_codei  status_messagezDriver Id is requiredzName is requiredzEmail Address is requiredzPhone is requiredzvehicletype is requiredzvehiclenumber is requiredid   zProfile updated successfullyz%You are not allowed to change detailsi  zInternal server error.N)r   r   r   r   r   getr	   r   r   r   r   r    r   r!   VehicleTyper"   r#   saver'   )r(   r   contextr,   userrole_valZdriverid_valname_val	phone_valvehicletype_valvehiclenumber_valr.   vehicletype_objr/   r0   r0   r1   r2   2   sN    
					

zDriverProfileUpdate.postN)r3   r4   r5   r2   r0   r0   r0   r1   r6   1   s   r6   c                   s(   e  Z d  Z d Z   f d d   Z   S)DriverProfilezdriver_profile.htmlc       
         sc  t  t |   j |   } t d  |  j j j d  rG |  j j d } t j j	 d |  j
   } t d  | r6t d  t j j	 d |  j d  j
   } | r6t d  g  } | j s d } n | j j } | j s d } n	 | j } | j d | j d | j d	 | j d
 | d | d | j i  | | d <t j j	 d d  }	 |	 | d <d | d <| S)z1This function shows the content on profile screenzDriverProfile - in get r   r   r   r   2 r    r!   r"   r#   r;   	isdeletedFallvehicletypesyesZprofile_section)superrG   get_context_datar   r   r   r   r   r   r   r   r   r   r"   r;   r#   r$   r    r   r!   r>   )
r(   r*   r@   r,   r-   r.   Zdriver_datavehicletypeidr#   rF   )	__class__r0   r1   rN   g   s<    


$
								


zDriverProfile.get_context_data)r3   r4   r5   template_namerN   r0   r0   )rP   r1   rG   d   s   rG   c                   s4   e  Z d  Z d Z d d   Z   f d d   Z   S)CustomerJobDetailzcustomerjobdetail.htmlc             O   s   d  S)Nr0   )r(   r   r)   r*   r0   r0   r1   r2      s    zCustomerJobDetail.postc          -      s  t  t |   j |   } |  j j j d  r|  j j d } i  } t j j d |  j	   } | rt
 j j d |  j	   } | r| d } t |  t j j d |  j	   } | r| j j s d }	 n | j j }	 | j j s d }
 n | j j }
 | j j sd } n t t j  | j j j } | j j sOt t j  d } n t t j  | j j j } d } i  } | j d | j j d	 | j j d
 | j j d | j j d | j i  d } | j d | j j d | j j d | j j 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( j d | j j) d | d d d | d | j j d  d! t d" | j j  d# | d$ | i  | | d% <| S)&Nr   r   customerjobidcustomerjob_idrI   z /static/images/open-parcel-1.pngF
drivernamedrivercountrycodedriverphoner8   driverjobidTr;   
sendernamesenderemailsenderphone
sendercitysenderpickupaddressrecipientnamerecipientphonerecipientdropoffaddressweightheightwidthimager"   priceparcelimageparcelpdf_linkqrcode	awbnumberzAWB-i'  driverexistdriverdetailscustomerjob)*rM   rR   rN   r   r   r   r   r   r   r   r   r   	DriverJobrl   sendercountrycoderecipientcountrycoderh   strr   MEDIA_BASE_URLr    rd   updatedrivercountrycoder!   r;   rY   customerr   r   r[   r\   pickupaddressr^   r_   dropoffaddressra   rb   rc   r"   re   )r(   r*   r@   emailidr+   r-   customer_objrS   driverjob_objrn   ro   rh   rf   rj   driverjob_data)rP   r0   r1   rN      st    

			
z"CustomerJobDetail.get_context_data)r3   r4   r5   rQ   r2   rN   r0   r0   )rP   r1   rR      s   rR   c                   s(   e  Z d  Z d Z   f d d   Z   S)DriverNotificationszdriver_notifications.htmlc                s  t  t |   j |   } t d  |  j j j d  r|  j j d } t j j	 d |  j
   } | rg  } t j j	 d |  j d  } | rxZ | D]R } | j d | j d | j d | j d | j d	 | j d
 | j d | j i  q W| | d <d | d <| S)z<This function shows the content on customer dashboard screenzDriverNotifications - in get r   r   z-idr;   	fordrivernotificationtypenotificationtextstatusdatedeletedall_notificationsrs   r7   )rM   r|   rN   r   r   r   r   r   r   r   r   Notificationsorder_byr$   r;   r}   r~   r   r   r   r   )r(   r*   r@   r,   r-   notifications_datar   notification)rP   r0   r1   rN      s*    
						

z$DriverNotifications.get_context_data)r3   r4   r5   rQ   rN   r0   r0   )rP   r1   r|      s   r|   c                   s(   e  Z d  Z d Z   f d d   Z   S)MyJobszdriver_myjobs.htmlc       
         s_  t  t |   j |   } t d  g  } |  j j j d  rQ|  j j d } t j j	 d |  j
   } | rQt j j	 d |  j
   } | rQt j j	 d |  } x | D] } | j s | j r | j r d }	 q | j r d }	 n d }	 | j d | j d	 | j j j d
 | j j d | j j d |	 d | j i  q W| | d <d | d <d | d <| S)z<This function shows the content on all customer jobs by userzMyJobs - in get r   r   rs   	Completedz	Picked UpAssignedrY   r    r[   rv   r   r;   all_driverjobszMy Jobsheader_titlerL   myjobs_section)rM   r   rN   r   r   r   r   r   r   r   r   r   rm   
jobstartedjobcompletedr$   rl   rs   r   
first_namer[   rv   r;   )
r(   r*   r@   r+   r,   r-   r.   driverjobs_obj	driverjobr   )rP   r0   r1   rN     s8    
					


zMyJobs.get_context_data)r3   r4   r5   rQ   rN   r0   r0   )rP   r1   r     s   r   c                   s(   e  Z d  Z d Z   f d d   Z   S)DriverOutstandingRequestszdriver_myjobs.htmlc       
         s  t  t |   j |   } t d  g  } |  j j j d  r|  j j d } t j j	 d |  j
   } | rt j j	 d |  j
   } | rt j j	 d | d d  } x | D] } | j s | j r | j r d }	 q | j r d }	 n d	 }	 |	 d k s|	 d	 k r | j d
 | j j d | j j d | j j d | j j d | j j d | j j d | j j d |	 d | j i	  q W| | d <d | d <d | d <| S)z<This function shows the content on all customer jobs by userz#DriverOutstandingRequests - in get r   r   rs   r   Fr   z	Picked Upr   rY   rZ   r[   r]   r^   r`   rS   r   r;   r   zOutstanding Requestsr   rL   r   )rM   r   rN   r   r   r   r   r   r   r   r   r   rm   r   r   r$   rl   rY   rZ   r[   rv   r^   rw   r;   )
r(   r*   r@   r+   r,   r-   r.   r   r   r   )rP   r0   r1   rN   )  s@    
				


z*DriverOutstandingRequests.get_context_data)r3   r4   r5   rQ   rN   r0   r0   )rP   r1   r   &  s   r   c                   s(   e  Z d  Z d Z   f d d   Z   S)DriverCompletedRequestszdriver_myjobs.htmlc       
         s  t  t |   j |   } t d  g  } |  j j j d  r|  j j d } t j j	 d |  j
   } | rt j j	 d |  j
   } | rt j j	 d | d d  } x | D] } | j s | j r | j r d }	 q | j r d }	 n d	 }	 |	 d k r | j d
 | j j d | j j d | j j d | j j d | j j d | j j d | j j d |	 d | j i	  q W| | d <d | d <d | d <| S)z<This function shows the content on all customer jobs by userz!DriverCompletedRequests - in get r   r   rs   r   Tr   z	Picked Upr   rY   rZ   r[   r]   r^   r`   rS   r   r;   r   zCompleted Requestsr   rL   r   )rM   r   rN   r   r   r   r   r   r   r   r   r   rm   r   r   r$   rl   rY   rZ   r[   rv   r^   rw   r;   )
r(   r*   r@   r+   r,   r-   r.   r   r   r   )rP   r0   r1   rN   R  s@    
				


z(DriverCompletedRequests.get_context_data)r3   r4   r5   rQ   rN   r0   r0   )rP   r1   r   O  s   r   c               @   s"   e  Z d  Z d Z d d   Z d S)Loginz5This class is used for login process for driver usersc             O   s  y>t  d  | j j d  } | s; t d d d d i  S| j j d  } | si t d d d d i  St d	 | d |  } | d  k	 r't j j d
 |  j   } | rt	 j j
 d
 |  \ } }	 | j j d  | j d <d | j d <t d d d
 d d | j d d i  St d d d d i  St d d d d i  SWnR t k
 r}
 z2 t  d |
  t d d d d t |
  i  SWYd  d  }
 ~
 Xn Xd  S)NzDeliveryLogin API - in postr   r9   r<   r:   zEmail address is requiredpasswordzPassword is requiredusernamer   rs   r7   tokenzdriver login successfullr   zInvalid Credentials.zerror iszException occurred : )r   r   r=   r	   r   r   r   r   r   r   get_or_creater   keyr'   rp   )r(   r   r)   r*   r,   password_valr   r.   r   r   errorr0   r0   r1   r2   }  s*    
%z
Login.postN)r3   r4   r5   __doc__r2   r0   r0   r0   r1   r   z  s   r   r    dispatchc                   s.   e  Z d  Z d Z d Z   f d d   Z   S)	DashboardzAThis class is used to show the content on driver dashboard screenzdriver_dashboard.htmlc       
         s  t  t |   j |   } t d  g  } |  j j j d  rx|  j j d } t j j	 d |  j
   } | rxt j j	 d |  j d  j
   } | rx| | d <d | d <t j j	 d |  j d  d  d  } | rxx | D] } | j j s	t t j  d }	 n t t j  | j j j }	 | j d	 | j j d
 | j j d | j j d | j j d |	 d | j j i  q W| | d <| S)NzDriverDashboard - in get r   r   rs   r7   z-id   z /static/images/open-parcel-1.pngrY   r^   rv   rw   rf   rS   recent_driverjobs)rM   r   rN   r   r   r   r   r   r   r   r   r   r   rm   r   rl   rd   rp   r   rq   r    r$   rY   r^   rv   rw   r;   )
r(   r*   r@   Zrecent_driverjobs_datar,   r-   r.   r   jobrf   )rP   r0   r1   rN     s4    
$

(
zDashboard.get_context_data)r3   r4   r5   r   rQ   rN   r0   r0   )rP   r1   r     s   r   )!django.shortcutsr   django.views.generic.baser   r   rest_framework.viewsr   django.contrib.authr   rest_framework.authtoken.modelsr   django.utils.decoratorsr   django.httpr	   r
   Driver.modelsZAdminApp.models
decoratorsr   django.confr   r%   r   r6   rG   rR   r|   r   r   r   r   r   r0   r0   r0   r1   <module>   s,   

!3+S%)+