
    }FhX                        d dl mZmZmZmZmZmZmZ d dlm	Z	m
Z
m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Zd dlZ e       ZdZd Zd>d	Zd
 Zej5                  d      d>dededefd       Zej5                  d      d        Zej5                  d      d>dededefd       Zej5                  d      defd       Z ej5                  d      d>dededefd       Z!ej5                  d      defd       Z"ej5                  d      d>dededefd       Z#ej5                  d      defd       Z$ej5                  d      d>dededefd       Z%ej5                  d       defd!       Z&ej5                  d"      d>dededefd#       Z'ej5                  d$      defd%       Z(ej5                  d&e
eef   '       ed(d)d(*       ed+d,d(d-.       ee      fd/ed0ed1efd2       Z)ej5                  d3e*'       ee      fd4ed1efd5       Z+d6Z,ej[                  d7       ed8       ed8       ed8       ed8       ee      fd9ed:ed;ed<ed1ef
d=       Z.y)?    )	APIRouterHTTPExceptionDependsFileQueryForm
UploadFile)OptionalDictAnyN)Session)get_db)	Templatesz&./src/menu_design/designer/static/jsonc           
         	 t        t        j                  j                  t        |       d      5 }t        j                  |      cd d d        S # 1 sw Y   y xY w# t        $ r!}t        dd|  dt        |             d }~ww xY w)Nri  zError reading z: status_codedetail)
openospathjoinSTATIC_PATHjsonload	Exceptionr   str)	file_namefilees      A/var/www/html/hubwallet-dev/src/menu_design/apps/editor/router.pyread_json_filer"      sv    \"'',,{I6< 	#99T?	# 	# 	# \nYKrRUVWRXQY4Z[[\s4   .A A	A AA A 	B$B  Bc                     ||z  }||z   }| D cg c]5  }|j                         |j                  dd      j                         v s4|7 }}||| S c c}w )Ndesc )lowerget)datasizeindexkeywordstart_index	end_indexitemfiltereds           r!   paginate_arrayr0      s\    $,Kd"I!%YDHHVR<P<V<V<X)XYHYK	** Zs   5AAc                    | sg S | j                         } |D ch c]<  }|j                  dd      j                         j                         D ]	  }| |v s| > }}}t        |      D cg c]  \  }}|dz   |d c}}S c c}}w c c}}w )Nr$   r%      )idname)r&   r'   split	enumerate)queryr(   r.   kwunique_keywordsidxs         r!   search_keywordsr;   !   s    	KKME&*idTXXfb5I5O5O5Q5W5W5Yir]bfh]hririOi7@7QRGC37B'RR jRs   :BB,Bz/fontspspir8   c                 \   K   t        d      j                  dg       }t        || ||      S w)N
fonts.jsonr(   r"   r'   r0   r<   r=   r8   r(   s       r!   	get_fontsrB   *   .     ,'++FB7D$B++   *,z/draft-fontsc                  *  K   t        d      j                  dg       } | D cg c]U  }|d   |j                  di       j                         D cg c]!  \  }}|d    d|j                          ||d# c}}dW }}}}d|iS c c}}w c c}}}w w)	Nr?   itemsfamilyfiles )r4   styleurl)rG   stylesr(   )r"   r'   rF   
capitalize)r(   fontrJ   r   	formatteds        r!   get_draft_fontsrP   /   s     ,'++GR8D  
  8n*.((7B*?*E*E*GI&5$ $(>"2!E4D4D4F3G HSXaef I	
I  I	Is(   "B,B&B6B>BBBz
/templatesc                 `   K   t        d      j                  dg       }t        || ||      }|S wNztemplates.jsonr(   r@   )r<   r=   r8   r(   paginated_datas        r!   get_templatesrT   =   s4     *+//;D#D"b"5Ns   ,.z/template-suggestionc                 X   K   t        d      j                  dg       }t        | |      S wrR   r"   r'   r;   r8   r(   s     r!   template_suggestionrX   D   s+     *+//;D2t$$   (*z/textsc                 \   K   t        d      j                  dg       }t        || ||      S wNz
texts.jsonr(   r@   rA   s       r!   	get_textsr\   K   rC   rD   z/text-suggestionc                 X   K   t        d      j                  dg       }t        | |      S wr[   rV   rW   s     r!   text_suggestionr^   P   s*     ,'++FB7D2t$$rY   z/imagesc                 \   K   t        d      j                  dg       }t        || ||      S wNzimages.jsonr(   r@   rA   s       r!   
get_imagesra   W   .     -(,,VR8D$B++rD   z/image-suggestionc                 X   K   t        d      j                  dg       }t        | |      S wr`   rV   rW   s     r!   image_suggestionrd   \   *     -(,,VR8D2t$$rY   z/framesc                 \   K   t        d      j                  dg       }t        || ||      S wNzframes.jsonr(   r@   rA   s       r!   
get_framesrh   c   rb   rD   z/frame-suggestionc                 X   K   t        d      j                  dg       }t        | |      S wrg   rV   rW   s     r!   frame_suggestionrj   h   re   rY   z/shapesc                 \   K   t        d      j                  dg       }t        || ||      S wNzshapes.jsonr(   r@   rA   s       r!   
get_shapesrm   o   rb   rD   z/shape-suggestionc                 X   K   t        d      j                  dg       }t        | |      S wrl   rV   rW   s     r!   shape_suggestionro   t   re   rY   z/db-templates)response_modelr2   zPage number (starts from 1))descriptionge
   zNumber of records per paged   )rq   rr   lepage	page_sizedbc                    | dz
  |z  }|j                  t              j                         }|j                  t        j                  t        j                  t        j
                  t        j                        j                  |      j                  |      j                         }d| |||D cg c]1  }|j                  |j                  |j
                  |j                  d3 c}dS c c}w )Nr2   T)template_idtemplate_nametemplate_urltemplate_metadata)statusrv   rw   totalr(   )
r7   r   countrz   r{   r|   r}   offsetlimitall)rv   rw   rx   r   total_templates	templatests          r!   get_all_templatesr   {   s     Qh)#Fhhy)//1O 	!!##""''		
 
	y		    !
 	  !}}!" !%&%8%8	
 

s   ,6C'z/templates/{template_id}rz   c                    |j                  t              j                  t        j                  | k(        j	                         }|st        dd      |j                  |j                  |j                  |j                  |j                  dS )Ni  zTemplate not foundr   )rz   r{   r|   template_datar}   )
r7   r   filterrz   firstr   r{   r|   r   r}   )rz   rx   templates      r!   get_template_by_idr      sy    xx	")))*?*?;*NOUUWH4HII  ++!// --!//%77     z>https://hubwallet-dev.dreamztesting.com/static/template_imagesz/upload-template/.r{   r}   
image_file	json_filec                 .  K   |j                   j                         j                  d      st        dd      |j                   j                         j                  d      st        dd      d}t	        j
                  |d	       t        j                  j                  ||j                         }t        |d
      5 }t        j                  |j                  |       d d d        t         d|j                    }	 t        j                  |j                        }	t        j                  |	      }
	 t        j$                  |      }t'        | ||
t        j                  |            }|j)                  |       |j+                          |j-                  |       d|j.                  |j0                  dS # 1 sw Y   xY w# t         $ r}t        ddt#        |             d }~ww xY w# t         $ r}t        ddt#        |             d }~ww xY ww)N)z.pngz.jpgz.jpegi  zInvalid image file typer   z.jsonzOnly JSON files are allowedz1./src/menu_design/designer/static/template_imagesT)exist_okwb/zInvalid JSON in template file: z#Invalid JSON in template_metadata: )r{   r|   r   r}   zTemplate uploaded successfully)messagerz   r|   )filenamer&   endswithr   r   makedirsr   r   r   shutilcopyfileobjr   BASE_URLr   r   dumpsr   r   loadsr   addcommitrefreshrz   r|   )r{   r}   r   r   rx   STATIC_PATH_TEMP_IMG
image_pathbuffer	image_urljson_contentjson_data_strr    metadatar   s                 r!   upload_templater      s     $$&//0IJ4MNN ##%..w74QRR OKK$t42J4G4GHJ	j$	 46:??F34 *Aj1123I`yy0

<0
d::/0
 ##**X.	H FF8IIKJJx 4++ -- =4 4  `6UVYZ[V\U]4^__`  d6YZ]^_Z`Ya4bccdsa   B<H>!F5H=4G 2G+ A.H5F>:H	G(
G##G((H+	H4HHH)   r   r%   )/fastapir   r   r   r   r   r   r	   typingr
   r   r   r   r   sqlalchemy.ormr   src.utils.dbr   "src.menu_design.apps.editor.modelsr   r   routerr   r"   r0   r;   r'   intr   rB   rP   rT   rX   r\   r^   ra   rd   rh   rj   rm   ro   r   dictr   r   postr    r   r!   <module>r      sb   T T T & &  	 "  8   
 7\+S H, ,c ,3 , , N	 	 LC # s   "#%# % $% H, ,c ,3 , , %c %  % I, ,s ,C , ,  %s % !% I, ,s ,C , ,  %s % !% I, ,s ,C , ,  %s % !% ODcN;a%BqI2+GARUV&/#
## 	# <#N &t<7>v C W  = L  !c!#Y!#Y I&/555 5 	5
 	5 "5r   