o
    viD                     @   s|  d dl Z d dlZd dlmZmZmZmZmZmZ d dl	m
Z
mZ d dlmZ d dlmZ d dlmZmZ edeZg dZejd	d
gde
dd Zejdd
gde
dd Zejdd
gde
dd Zede
dd Zejdd
gde
dd Zejdd
gde
dd Zg dZejddgde
d d! Zejdd
gde
d"d# Z ejd$dgde
d%d& Z!dS )'    N)	Blueprintcurrent_appredirectrequesturl_forjsonify)login_requiredcurrent_user)generate_password_hash)db)DEFAULT_RULESrules_from_jsonsettings)
PRINT_MODEPRINTER_INVOICEPRINT_API_HOSTPRINT_API_PORTPRINT_API_KEYMAKE_ORDER_NOTIFY_URLMAKE_TEST_EMAILMAKE_TEST_MODEERACUNI_URLERACUNI_USERNAMEERACUNI_PASSWORDERACUNI_TOKENSHOPIFY_DOMAINSHOPIFY_SHOP_DOMAINSHOPIFY_CLIENT_IDSHOPIFY_CLIENT_SECRETSHOPIFY_GRANT_TYPESHOPIFY_ACCESS_TOKENDHL_API_KEYDHL_ACCOUNT_NUMBERDHL_SHIPPER_NAMEDHL_SHIPPER_STREETDHL_SHIPPER_CITYDHL_SHIPPER_POSTALDHL_SHIPPER_COUNTRYDHL_SHIPPER_EMAILDHL_SHIPPER_PHONEDPD_API_KEYDPD_API_URLPAKET24_API_KEYPAKET24_API_URLz/settings/savePOST)methodsc                  C   sz   t jd } tjddpi }|dd }|dd }|r#|tvr+tddd	d
fS t	|||  |t j|< td|dS )z%Save a single setting key/value pair.DATABASE_PATHTsilentkey valueFzUnknown keyokerror  )r7   r3   )
r   configr   get_jsongetstripALL_SETTINGS_FIELDSr   databaseset_setting)db_pathdatar3   r5    rC   6/var/www/warehouse.soldered.com/app/routes/settings.pysave_setting$   s   

rE   z/settings/save-allc                  C   s   t jd } tjddpi }|di }g }g }| D ]-\}}| }|r)|tvr/|| qt	
|t| |  t| t j|< || q|rTtd||ddfS td|dS )	z5Save multiple setting key/value pairs in one request.r0   Tr1   r   F)r7   savederrorsr9   )r7   rF   )r   r:   r   r;   r<   itemsr=   r>   appendr?   r@   strr   )rA   rB   pairsrF   rG   r3   r5   rC   rC   rD   save_all_settings5   s    

rL   z/settings/printers/testc               
   C   s  ddl m}  ddlm}m}m}m}m} tj	ddpi }|
dd}|dvr.td	d
ddfS |dkrt||}}	|||	\}
}|jddd|dddd |jdd|  d|dd |jd|d dfgdd |jddd|dd n:| \}
}|jddd|dddd |jdd|  d|dd |jd |d! d"fgdd |jd#dd|d$d z| j|
|dd% tdd&W S  ty } ztd	t|dd'fW  Y d(}~S d(}~ww ))zLPrint a test label image on the requested printer slot ('small' or 'large').r   )printer)	new_label	load_fontLABEL_WLARGE_LABEL_WLARGE_LABEL_HTr1   rM   small)rS   largeFzInvalid printer slotr6   r9   rT   )(   rU   z
Test PrintH   )bold)fillfont)rU      z	Printer: 0   )rU      rU      )rX   )rU      zSoldered Warehouse v3)   r_   &   )r_   rV      )r_   r   r_   u   )r_   |      )rM   also_preview)r7   i  N)app.servicesrM   app.labels.renderrN   rO   rP   rQ   rR   r   r;   r<   r   textupper	rectangleprint_label	ExceptionrJ   )printer_svcrN   rO   rP   rQ   rR   rB   slotwhimgdrawerC   rC   rD   test_printerM   s2   
 
  ru   z/settings/printers/listc               
   C   s   z1t jddgdddd} g }| j D ]}|dr+| }t|dkr+||d  qt|d	W S  t	yK } ztg t
|d
W  Y d}~S d}~ww )z4Return available CUPS printer names on this machine.lpstatz-pT   )capture_outputri   timeoutzprinter       )printers)r|   r8   N)
subprocessrunstdout
splitlines
startswithsplitlenrI   r   rm   rJ   )resultr|   linepartsrt   rC   rC   rD   list_printersp   s"   
r   z/settings/users/addc                  C   s   t jd } tjdd  }tjdd }tjdd }|r&|s.ttdd S ||kr:ttdd S t	
|| rHttdd	 S t	|t||  ttdd
 S )Nr0   emailr4   passwordconfirmorders.index_redirectz"?tab=settings&error=missing_fieldsz%?tab=settings&error=password_mismatchz ?tab=settings&error=email_exists?tab=settings&saved=users)r   r:   r   formr<   r=   lowerr   r   r?   get_user_by_emailcreate_userr
   )rA   r   r   r   rC   rC   rD   add_user   s   
r   z$/settings/users/<int:user_id>/deletec                 C   sb   t jd }| tjkrttdd S tt|dkr#ttdd S t	| | ttdd S )Nr0   r   z$?tab=settings&error=cant_delete_selfr{   z?tab=settings&error=last_userr   )
r   r:   r	   idr   r   r   r?   get_all_usersdelete_user)user_idrA   rC   rC   rD   r      s   

r   )DPDDHLPaket24PickupGLSFREE_SHIPPINGz/settings/shipping-rulesGETc                  C   s*   t jd } td| }t|}t|tdS )Nr0   SHIPPING_RULES_JSONrulescarriers)r   r:   r?   get_settingr   r   SHIPPING_CARRIERS)rA   
rules_jsonr   rC   rC   rD   get_shipping_rules   s   
r   c                  C   sX   t jd } tjddpi }|dg }dd |D }tdt||  t	dt
|dS )	Nr0   Tr1   r   c                 S   s,   g | ]}| d p
d r| dr|qS )matchr4   carrier)r<   r=   ).0rrC   rC   rD   
<listcomp>   s   , z'save_shipping_rules.<locals>.<listcomp>r   )r7   count)r   r:   r   r;   r<   r?   r@   jsondumpsr   r   )rA   rB   r   validrC   rC   rD   save_shipping_rules   s   
r   z!/settings/shipping-rules/defaultsc                   C   s   t ttdS )Nr   )r   r   r   rC   rC   rC   rD   shipping_rules_defaults   s   r   )"r   r}   flaskr   r   r   r   r   r   flask_loginr   r	   werkzeug.securityr
   appr   r?   app.services.shipping_mappingr   r   __name__settings_bpr>   routerE   rL   ru   r   r   r   r   r   r   r   rC   rC   rC   rD   <module>   sJ     
!	