3

\                 @   s   d dl mZ d dlmZ d dlmZ d dlmZ d dlZd dl	m
Z
 d dlmZ d dlmZ d dlZd dlZd dlZd dlmZ d d	lmZ ejd
ZG dd deeZeZdS )    )
FixedPrice)Decimal)AbstractShipping)settingsN)timezone)	timedelta)ShippingApiError)	mark_safeshippingc               @   s   e Zd ZdZdZedZedZdZe	e
dZe	e
dZed e ZdZd	d
 Zdd Zdd Zdd Zdd Zdd ZdddZdd Zdd ZdS )	HonestBeezExpress shipping	honestbeez2.50z,Delivery within 3 working days. Track onlineHONESTBEE_API_KEYHONESTBEE_ENDPOINTz{ep}?access_token=SGDc             C   s   t j tdd S )N   )days)r   nowr   )self r   :/var/www/html/oscar2019/apps/shipping/methods/honestbee.py_get_pickup_date   s    zHonestBee._get_pickup_datec             C   s   t jt jt jt jt jdS )N)email
first_name	last_namecontact_numberZalt_contact_number)ship_settingsSENDER_EMAILSENDER_FIRST_NAMESENDER_LAST_NAMESENDER_CONTACT_NUMBERSENDER_CONTACT_NUMBER_ALT)r   orderr   r   r   _get_pickup_contact"   s
    zHonestBee._get_pickup_contactc          
   C   s*   t jt jt jt jt jt jt jt jt j	d	S )N)	street1street2unitfloorpostal_codecitystatecountry_codetype)
r   SENDER_STREET_1SENDER_STREET_2SENDER_UNIT_NUMBERSENDER_FLOOR_NUMBERSENDER_POSTAL_CODESENDER_CITYSENDER_STATESENDER_COUNTRY_CODESENDER_TYPE)r   r!   r   r   r   _get_pickup_address+   s    zHonestBee._get_pickup_addressc             C   s&   |j j|jj|jjt|jjdddS )N	singapore)r   r   r   r   r)   r(   )userr   shipping_addressr   r   strphone_number)r   r!   r   r   r   _get_customer_contact8   s    
zHonestBee._get_customer_contactc             C   s   |j j|j j|j jddddS )N	Singaporer6   SG)r#   r$   r'   r(   r)   r*   )r8   line1line2postcode)r   r!   r   r   r   _get_customer_addressB   s    zHonestBee._get_customer_addressc             C   s  dt |jd| j|| j|| j jd| j jdd| j|| j|ddddt|j	 d d	d
dt|j
| jddgdgi}tj| jjddtj|ddid}tjdj|j |jdkrtj|j}|d d d }|S tjdj|j t|jdS )z^
        Process the shipment for given order.
        :param order:
        :return:
        ordersZ3DAz%Y-%m-%d)contactaddress
start_dateend_date)customerrD   gQ?gQ?i  zCoffee Bags/PodssmallZfood)amountZcurrency_code)widthlengthheightweightdescriptionZpackage_typeZcommodity_typeZcommercial_value)	referenceZservice_level_codeZpickupZdeliverypackages)epzcontent-typezapplication/json)dataheadersz$Honest bee response status code : {}   Zorder_requestsr   tracking_idz!HonestBee returned an error : {} N)r9   numberr"   r5   r   strftimer;   rA   floatget_total_weightbasket_total_excl_taxCURRENCY_CODErequestspostendpointformatjsondumpsloggerdebugstatus_codeloadstexterrorr   )r   r!   rR   resshipment_detailsrU   r   r   r   process_shipmentL   s6    
zHonestBee.process_shipmentNc             C   s:   t j| jjddd|id}|jdkr6tj|jj S dS )zr
        Get the waybill PDF for honestbee
        :param waybill:
        :param order:
        :return:
        waybill)rQ   Ztracking_ids)params   N)	r\   getr^   r_   rd   ioBytesIOcontentgetvalue)r   rk   r!   rh   r   r   r   get_waybill_pdf   s    
zHonestBee.get_waybill_pdfc             C   s   d}t |S )Nzn<a class="text-info" href="https://www.honestbee.sg/en/goodship/track" target="_blank">Track your shipment</a>)r	   )r   urlr   r   r   tracking_url   s    zHonestBee.tracking_urlc             C   s   dS )NTr   )r   r   r   r   tracking_available   s    zHonestBee.tracking_available)N)__name__
__module____qualname__namecoder   charge_excl_taxcharge_incl_taxrN   getattrr   Zapi_keyZbase_endpointr^   r[   r   r"   r5   r;   rA   rj   rs   ru   rv   r   r   r   r   r      s$   

	

3
r   )oscar.apps.shipping.methodsr   decimalr   apps.shipping.abstract_shippingr   django.confr   r\   django.utilsr   datetimer   apps.shippingr   logging
simplejsonr`   ro   apps.shipping.exceptionsr   django.utils.textr	   	getLoggerrb   r   __shipping_method_class__r   r   r   r   <module>   s    
 