o
    }si                     @   s   d dl mZ d dlmZmZmZmZmZ d dlm	Z	 d dl
mZmZmZmZmZmZmZ edeZh dZede	dd	 Zejd
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jddgde	dd ZdS )    )BytesIO)	BlueprintResponsecurrent_appjsonifyrequest)login_required)DEFAULT_TEMPLATESSAMPLE_FIELDSTEMPLATE_FIELDSget_templaterender_templaterender_template_previewsave_templatelabel_templates>   digikeyproduct
order_itemorder_summaryproduct_sealedz/label-templates/<name>/getc                 C   sB   | t vrtdddfS tjd }t| |}t| g }t||dS )N	Not founderror  DATABASE_PATH)elementsfields)_VALIDr   r   configr   r   get)namedb_pathr   r    r"   =/var/www/warehouse.soldered.com/app/routes/label_templates.pyr      s   

r   z#/label-templates/<name>/preview.pngGETPOST)methodsc                 C   s   | t vrtdddfS tjd }t| |}tjdkr1tjddp!i }i t	| i |	di }nt	| i }t
||}t }|j|d	d
 |d t| dddidS )zCServer-render a preview PNG; POST body may contain custom {fields}.r   r   r   r   r%   Tsilentr   PNG)formatr   z	image/pngzCache-Controlzno-store)mimetypeheaders)r   r   r   r   r   r   methodget_jsonr
   r   r   r   saveseekr   read)r    r!   r   datar   imgbufr"   r"   r#   preview   s    




r5   z/label-templates/<name>/savec              
   C   s   | t vrtdddfS tjddpi }|dg }tjd }zt| || tddW S  tyF } ztd	t	|d
dfW  Y d }~S d }~ww )Nr   r   r   Tr'   r   r   okFr7   r     )
r   r   r   r.   r   r   r   r   	Exceptionstr)r    r2   r   r!   er"   r"   r#   r/   2   s   
 r/   z/label-templates/<name>/resetc              
   C   s~   | t vrtdddfS tjd }zt| tt| g | tddW S  ty> } ztdt	|dd	fW  Y d
}~S d
}~ww )z&Restore the built-in default template.r   r   r   r   Tr6   Fr8   r9   N)
r   r   r   r   r   listr	   r   r:   r;   )r    r!   r<   r"   r"   r#   resetA   s   
 r>   z"/label-templates/<name>/test-printc              
   C   s   | t vrtdddfS ddlm} tjd }tjddpi }i t	| i |	d	i }t
| |}t||}z|j|d
dd tddW S  ty` } ztdt|ddfW  Y d}~S d}~ww )z*Print a sample label to the small printer.r   r   r   r   )printerr   Tr'   r   small)r?   also_previewr6   Fr8   r9   N)r   r   app.servicesr?   r   r   r   r.   r
   r   r   r   print_labelr:   r;   )r    printer_svcr!   r2   r   r   r3   r<   r"   r"   r#   
test_printO   s   


 rE   N)ior   flaskr   r   r   r   r   flask_loginr   app.labels.template_rendererr	   r
   r   r   r   r   r   __name__label_templates_bpr   router   r5   r/   r>   rE   r"   r"   r"   r#   <module>   s*    $
	