3
Ť4`	                 @   s  d dl mZ d dlmZmZmZmZ d dlZd dl	m
Z
 d dlZd dl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Zd dlmZ d dlT d dlT d dlT d dlT d dlT d d	lmZ d dlZd dlZd d
lm Z  d dl!Z!d dl"m#Z# d dl$Z$e$j%Z&e'ddddgZ(dwddZ)dd Z*dd Z+dd Z,dd Z-dd Z.dd Z/dd  Z0d!d" Z1d#d$ Z2d%d& Z3d'd( Z4d)d* Z5d+d, Z6d-d. Z7d/d0 Z8d1d2 Z9d3d4 Z:d5d6 Z;d7d8 Z<d9d: Z=d;d< Z>d=d> Z?d?d@ Z@dAdB ZAdCdD ZBdEdF ZCdGdH ZDdIdJ ZEdKdL ZFdMdN ZGdOdP ZHdQdR ZIdSdT ZJdUdV ZKdWdX ZLdYdZ ZMd[d\ ZNd]d^ ZOejPjQ ZQdxd_d`ZRdadb ZSdcdd ZTdedf ZUdgdh ZVdidj ZWdkdl ZXdmdn ZYdodp ZZdqdr Z[dsdt Z\dudv Z]dS )y    )secure_filename)FlaskrequestredirectjsonifyN)ValidationError)BytesIO)Image)app)*)ObjectId)	timedelta)wrapsZpdfZpngZjpgZjpegupload_filesc             C   s  ddd}y@|}t j|dd}tjjtjd d| }tjj|sNtj| |dd d	kr| d
 }tjj||}t	|d}	|	j
| |	j  |r|S d|d< d|d< |S n|dd dks|dd dkr6t|dd}
tj	tt j|
}|jd}| d }|jtjj|| |r |S d|d< d|d< |S nd|d< d|d< |S W nd tjk
r } zd|d< d|d< dS d }~X n2 tk
r } zd|d< d|d< dS d }~X nX d S )Nr    )responseStatusresultT)validate	SITE_ROOTzmedia/   s   %PDFz.pdfwbr   zSomething went to wrong!r   s   s   PNGascii)encodingRGBz.pngzError!)base64	b64decodeospathjoinr
   configexistsmakedirsopenwriteclosebytesr	   r   convertsavebinasciiErrorr   )fileNamepurchaseOrderFile	directorydata_statusb64byteZpurchase_foldermfilepdf_locf
image_dataimrgb_im	imageNamee r8   //home/ubuntu/zing/restaurant_api/common/util.py
upload_doc'   sR    



"
r:   c             C   s  ddd}y,|}t j|dd}tjjtjd d}tjj|sJtj| |dd d	kr| d
 }tjj||}t	|d}|j
| |j  |r|S d|d< d|d< |S n|dd dkr"t|dd}	tj	tt j|	}
|
jd}| d }|jtjj|| |r|S d|d< d|d< |S nd|d< d|d< |S W nd tjk
rl } zd|d< d|d< dS d }~X n2 tk
r } zd|d< d|d< dS d }~X nX d S )Nr   r   )r   r   T)r   r   zmedia/imagesr   s   %PDFz.pdfr   r   zSomething went to wrong!r   s   r   )r   r   z.pngzError!)r   r   r   r   r   r
   r   r    r!   r"   r#   r$   r%   r	   r   r&   r'   r(   r)   r   )r*   r+   r-   r.   r/   Zimg_filer0   r1   r2   r3   r4   r5   r6   r7   r8   r8   r9   upload_fileZ   sP    




r;   c       	      C   s  ddd}t jdk ryt| jj|d}tjj|d}|j}|dkrl|jdt|d d|d	< |d
 |d< |S d|d	< d| d |d< |S W nh tjk
r } zd|d	< d|d< |S d }~X n8 | jk
 r } zd|d	< |d |d< |S d }~X nX nd|d	< d|d< |S d S )Nr   r   )r   r   GET)	pk__exact      )status
archivedByr   z Archived Successfullyr   z	 Invalid z !zEmployee does not existz does not existzRequired fields missing!)r>   )	r   methodobjectsgetResEmployeesr@   updater   DoesNotExist)	modeliddisplayNamerA   r-   querysetemployeequeryset_statusr7   r8   r8   r9   archiveSingleRecord   s2    
rN   c       	      C   s   ddd}t jdk ryt| jj|d}tjj|d}|j}|dkrl|jdt|d	 d|d
< |d |d< |S d|d
< d| d |d< |S W nh tjk
r } zd|d
< d|d< |S d }~X n8 | jk
 r } zd|d
< |d |d< |S d }~X nX d S )Nr   r   )r   r   r<   )rI   )r=   r?   r>   )r@   unArchivedByr   z Restored Successfullyr   z	 Invalid z !zEmployee does not existz does not exist)r?   )	r   rB   rC   rD   rE   r@   rF   r   rG   )	rH   rI   rJ   rO   r-   rK   rL   rM   r7   r8   r8   r9   restoreSingleRecord   s,    
rP   c       	      C   s  ddd}t jdk ryttjj|d}| jj|d}|j}|dkrl|jdt|d d|d	< |d
 |d< |S d|d	< d| d |d< |S W nh tjk
r } zd|d	< d|d< |S d }~X n8 | jk
 r } zd|d	< |d |d< |S d }~X nX nd|d	< d|d< |S d S )Nr   r   )r   r   DELETE)r=   r>      )r@   	deletedByr   z  Deleted Successfullyr   z	 Invalid z !zEmployee does not existz does not existzRequired fields missing!)r>   )	r   rB   rE   rC   rD   r@   rF   r   rG   )	rH   rI   rJ   rS   r-   rL   rK   rM   r7   r8   r8   r9   deleteSingleRecord   s2    
rT   c             C   s   ddd}t jdkryZ|dkrX| jj|ddgd}|rl|j|d d|d< d	|d
< |S nd|d< d|d
< |S W nj | jk
r } zd|d< |d |d
< |S d }~X n6 tk
r } zd|d< |jd |d
< |S d }~X nX d S )Nr   r   )r   r   PATCHr>   )r=   
status__in)r@   r   zStatus updated Successfullyr   zRequired fields missingz does not exist)r   r>   )r   rB   rC   rD   rF   rG   	Exceptionargs)rH   r@   rJ   rI   r-   rK   r7   r8   r8   r9   UpdateStatus   s*    

rY   c       
      C   s   ddd}g }g }|rt jdkrxd|D ]\}|d }|d }y0| jj|dgd}	|	rh|	j|d	 |j| W q&   |j| Y q&X q&W t|dkrd|d
< |d |d< t|dkrd|d
< |d |d< ||d< n||d< |d |d< |S d|d
< d|d< |S d S )Nr   r   )r   r   PUTrI   
orderValuer>   )rI   rV   )r[   r   z Order Successfully Updatedr   z Order partially UpdatedzinvalidOrders !z Order NOT  UpdatedzRequired fields missing !)r   rB   rC   rD   rF   appendlen)
rH   listDetailsrJ   r-   
valid_listinvalid_listdatarI   r[   rK   r8   r8   r9   SetOrder  s6    


rb   c             C   s   ddd}g }g }|rt jdkrxP|D ]H}y,| jj|dgd}|jdd |j| W q&   |j| Y q&X q&W t|dkrd|d	< |d
 |d< t|dkrd|d	< ||d| d < |d |d< n|d |d< |S d|d	< d|d< |S d S )Nr   r   )r   r   rZ   r>   )rI   rV   r?   )r@   r   z Successfully Archivedr   invalidlistz Partially Archivedz does not exist !zRequired fields missing !zinvalid  Orders !)r   rB   rC   rD   rF   r\   r]   )rH   r^   rJ   r-   r_   r`   rI   rK   r8   r8   r9   archiveMultipleRecords&  s.    

re   c             C   s   ddd}g }g }|rt jdkrxP|D ]H}y,| jj|dgd}|jdd |j| W q&   |j| Y q&X q&W t|dkrd|d	< |d
 |d< t|dkrd|d	< ||d| d < |d |d< n|d |d< |S d|d	< d|d< |S d S )Nr   r   )r   r   rZ   r?   )rI   rV   r>   )r@   r   z Successfully Restoredr   rc   rd   z Partially Restoredz does not exist !zRequired fields missing !zinvalid  Orders !)r   rB   rC   rD   rF   r\   r]   )rH   r^   rJ   r-   r_   r`   rI   rK   r8   r8   r9   restoreMultipleRecordsD  s.    

rf   c                s^   d}y2t jt j t j  dj fddt| D }W n" tk
rX } zW Y d d }~X nX |S )Nr   c             3   s   | ]}t j V  qd S )N)randomchoice).0i)
charactersr8   r9   	<genexpr>f  s   z:generateAlphaNumericPunctuationPassword.<locals>.<genexpr>)stringascii_lettersdigitspunctuationr   rangerW   )Zpassword_lengthpassworderrr8   )rk   r9   'generateAlphaNumericPunctuationPasswordb  s    rt   c             C   s   ddd}yt jj| d}dS  t jk
rN } zd|d< d|d< |S d }~X n0 tk
r| } zd|d< d	|d< |S d }~X nX d S )
Nr   r   )r   r   )r=   Fr   zRestaurant Id Does Not Existsr   zInvalid Restaurant Id)
RestaurantrC   rD   rG   rW   )restaurantIdr-   queryset_resr7   r8   r8   r9   validate_restaurant_by_idm  s    
rx   c             C   s   ddd}yt jj| |d}dS  t jk
rP } zd|d< d|d< |S d }~X n0 tk
r~ } zd|d< d	|d< |S d }~X nX d S )
Nr   r   )r   r   )
id__iexactfranchiseIdFr   z5Restaurant Id Does Not Exists for Selected Franchise!r   zInvalid Restaurant Id)ru   rC   rD   rG   rW   )rv   rz   r-   rw   r7   r8   r8   r9   #validate_franchise_restaurant_by_id}  s    

r{   c             C   s   ddd}yt jj| d}dS  t jk
rN } zd|d< d|d< |S d }~X n0 tk
r| } zd|d< d	|d< |S d }~X nX d S )
Nr   r   )r   r   )ry   Fr   z&Franchise Stock Order Does Not Exists!r   zInvalid Stock Order Id)FranchiseOrdersrC   rD   rG   rW   )franchiseOrderIdr-   rw   r7   r8   r8   r9   "validate_franchise_order_by_id_one  s    
r~   c             C   s   ddd}yt jj| dd}dS  t jk
rP } zd|d< d|d	< |S d }~X n0 tk
r~ } zd|d< d
|d	< |S d }~X nX d S )Nr   r   )r   r   	franchise)r=   resTypeFr   zFranchise Id Does Not Existsr   zInvalid Franchise Id)ru   rC   rD   rG   rW   )rz   r-   rw   r7   r8   r8   r9   validate_franchise_by_id  s    

r   c             C   s   ddd}yt jj| dgd}dS  t jk
rR } zd|d< d|d	< |S d }~X n0 tk
r } zd|d< d
|d	< |S d }~X nX d S )Nr   r   )r   r   r>   )r=   rV   Fr   zEmployee Id Does Not Existsr   zInvalid Employee Id)rE   rC   rD   rG   rW   )
employeeIdr-   queryset_empr7   r8   r8   r9   validate_employee_by_id  s    
r   c             C   s   ddd}yt jj| |d}dS  t jk
rP } zd|d< d|d< |S d }~X n0 tk
r~ } zd|d< d	|d< |S d }~X nX d S )
Nr   r   )r   r   )r=   rv   Fr   z$Restaurant Stock Id Does Not Exists!r   zInvalid Restaurant Stock Id)r|   rC   rD   rG   rW   )ZstockOrderIdrv   r-   r   r7   r8   r8   r9   %validate_restaurant_stock_order_by_id  s    
r   c             C   s   ddd}yt jj| |dgd}dS  t jk
rT } zd|d< d|d	< |S d }~X n0 tk
r } zd|d< d
|d	< |S d }~X nX d S )Nr   r   )r   r   r>   )r=   rv   rV   Fr   z0Employee Id Does Not Exists for given Franchise!r   zInvalid Employee Id)rE   rC   rD   rG   rW   )r   rz   r-   r   r7   r8   r8   r9   !validate_franchise_employee_by_id  s    

r   c             C   s   ddd}yt jj| |dgd}dS  t jk
rT } zd|d< d|d	< |S d }~X n0 tk
r } zd|d< d
|d	< |S d }~X nX d S )Nr   r   )r   r   r>   )r=   rv   rV   Fr   z1Employee Id Does Not Exists for given Restaurant!r   zInvalid Employee Id)rE   rC   rD   rG   rW   )r   rv   r-   r   r7   r8   r8   r9   "validate_restaurant_employee_by_id  s    

r   c             C   s   ddd}yt jj| |d}dS  t jk
rP } zd|d< d|d< |S d }~X n0 tk
r~ } zd|d< d	|d< |S d }~X nX d S )
Nr   r   )r   r   )r=   rz   Fr   z"Franchise Order Id Does Not Existsr   zInvalid Franchise Order Id)r|   rC   rD   rG   rW   )r}   rz   r-   Zqueryset_for7   r8   r8   r9   validate_franchise_order_by_id  s    
r   c             C   s   ddd}yt jj| dgd}dS  t jk
rR } zd|d< d|d	< |S d }~X n0 tk
r } zd|d< d
|d	< |S d }~X nX d S )Nr   r   )r   r   r>   )r=   rV   Fr   zJob Id Does Not Existsr   zInvalid Job Id)ResJobsrC   rD   rG   rW   )jobIdr-   Zqueryset_jobr7   r8   r8   r9   validate_job_by_id  s    
r   c             C   s   ddd}yt jj| dgd}dS  t jk
rR } zd|d< d|d	< |S d }~X n0 tk
r } zd|d< d
|d	< |S d }~X nX d S )Nr   r   )r   r   r>   )r=   rV   Fr   zCustomer Id Does Not Existsr   zInvalid Customer Id)ResPosCustomerrC   rD   rG   rW   )
customerIdr-   queryset_custr7   r8   r8   r9   validate_customer_by_id  s    
r   c             C   s   ddd}yt jj| d}dS  t jk
rN } zd|d< d|d< |S d }~X n0 tk
r| } zd|d< d	|d< |S d }~X nX d S )
Nr   r   )r   r   )r=   Fr   zOrder Id Does Not Existsr   zInvalid Order Id)ResPosOrdersrC   rD   rG   rW   )Z
posOrderIdr-   r   r7   r8   r8   r9   validate_order_by_id#  s    
r   c             C   s   ddd}yt jj| d}dS  t jk
rN } zd|d< d|d< |S d }~X n0 tk
r| } zd|d< d	|d< |S d }~X nX d S )
Nr   r   )r   r   )r=   Fr   zGiftCard Id Does Not Exists!r   zInvalid GiftCard Id)ZResGiftCardrC   rD   rG   rW   )Z
giftcardIdr-   r   r7   r8   r8   r9   validate_giftcard_by_id3  s    
r   c             C   s   ddd}yt jj| dgd}dS  t jk
rR } zd|d< d|d	< |S d }~X n0 tk
r } zd|d< d
|d	< |S d }~X nX d S )Nr   r   )r   r   r>   )r=   rV   Fr   zInvoice Id Does Not Existsr   zInvalid Invoice Id)ZResInvoicesrC   rD   rG   rW   )Z	invoiceIdr-   Zqueryset_invr7   r8   r8   r9   validate_invoice_by_idC  s    
r   c             C   s   ddd}yt jj| dgd}dS  t jk
rR } zd|d< d|d	< |S d }~X n0 tk
r } zd|d< d
|d	< |S d }~X nX d S )Nr   r   )r   r   r>   )r=   rV   Fr   zDistributor Id Does Not Existsr   zInvalid Distributor Id)ZResDistributorsrC   rD   rG   rW   )ZdistributorIdr-   Zqueryset_disr7   r8   r8   r9   validate_distributor_by_idT  s    
r   c             C   s   ddd}yt jj| d}dS  t jk
rN } zd|d< d|d< |S d }~X n0 tk
r| } zd|d< d	|d< |S d }~X nX d S )
Nr   r   )r   r   )r=   Fr   zMenu Item Id Does Not Existsr   zInvalid Menu Item Id)ResMenuItemrC   rD   rG   rW   )Z
menuItemIdr-   Zqueryset_menuItemr7   r8   r8   r9   validate_menuItem_by_ide  s    
r   c             C   s   ddd}yt jj| d}dS  t jk
rN } zd|d< d|d< |S d }~X n0 tk
r| } zd|d< d	|d< |S d }~X nX d S )
Nr   r   )r   r   )r=   Fr   zMenu Group Id Does Not Existsr   zInvalid Menu Group Id)ResMenuGroupsrC   rD   rG   rW   )menuGroupIdr-   Zqueryset_menuGroupr7   r8   r8   r9   validate_menuGroup_by_idu  s    
r   c             C   s   ddd}yt jj| dgd}dS  t jk
rR } zd|d< d|d	< |S d }~X n0 tk
r } zd|d< d
|d	< |S d }~X nX d S )Nr   r   )r   r   r>   )r=   rV   Fr   z!Inventory item Id Does Not Existsr   zInvalid Inventory item Id)ZResInventoryItemsrC   rD   rG   rW   )itemIdr-   queryset_itemr7   r8   r8   r9   validate_inventory_item_by_id  s    
r   c             C   s   ddd}yt jj| dgd}dS  t jk
rR } zd|d< d|d	< |S d }~X n0 tk
r } zd|d< d
|d	< |S d }~X nX d S )Nr   r   )r   r   r>   )r=   rV   Fr   zRecipes Id Does Not Existsr   zInvalid Recipes Id)Z
ResRecipesrC   rD   rG   rW   )r   r-   r   r7   r8   r8   r9   validate_recipe_by_id  s    
r   c             C   s   ddd}yt jj| dgd}dS  t jk
rR } zd|d< d|d	< |S d }~X n@ tk
r } z$tjjtj	  d|d< d
|d	< |S d }~X nX d S )Nr   r   )r   r   r>   )r=   rV   Fr   z Worksheet Config Does Not Existsr   zInvalid Worksheet Config Id)
ZResInventoryWorkSheetConfigsrC   rD   rG   rW   r
   loggererror	traceback
format_exc)ZwcnfIdr-   r   r7   r8   r8   r9   validate_worksheet_config_by_id  s    
r   c             C   s   ddd}yt jj| dgd}dS  t jk
rR } zd|d< d|d	< |S d }~X n0 tk
r } zd|d< d
|d	< |S d }~X nX d S )Nr   r   )r   r   r>   )r=   rV   Fr   zWorksheet Does Not Existsr   zInvalid Worksheet Id)ZResInventoryWorkSheetsrC   rD   rG   rW   )ZwIdr-   r   r7   r8   r8   r9   validate_worksheet_by_id  s    
r   c             C   s   ddd}yt jj| dgd}dS  t jk
rR } zd|d< d|d	< |S d }~X n0 tk
r } zd|d< d
|d	< |S d }~X nX d S )Nr   r   )r   r   r>   )r=   rV   Fr   z!Wastage Worksheet Does Not Existsr   zInvalid Wastage Worksheet Id)ZResWastageWorksheetrC   rD   rG   rW   )Zwidr-   r   r7   r8   r8   r9    validate_wastage_worksheet_by_id  s    
r   c             C   s   ddd}yt jj| dgd}dS  t jk
rR } zd|d< d|d	< |S d }~X n0 tk
r } zd|d< d
|d	< |S d }~X nX d S )Nr   r   )r   r   r>   )r=   rV   Fr   zStorage area Does Not Existsr   zInvalid Storage area Id)ZResStorageAreasrC   rD   rG   rW   )Zsidr-   Zqueryset_storage_arear7   r8   r8   r9   validate_storage_area_by_id  s    
r   c             C   s   ddd}yt jj| dgd}dS  t jk
rR } zd|d< d|d	< |S d }~X n0 tk
r } zd|d< d
|d	< |S d }~X nX d S )Nr   r   )r   r   r>   )r=   rV   Fr   zMenu Does Not Existsr   zInvalid Storage area Id)ResMenusrC   rD   rG   rW   )midr-   Zqueryset_menur7   r8   r8   r9   validate_menu_by_id  s    
r   c             C   s:   y | t j j| djdkrtdS  tk
r4   dS X d S )Nz%m-%d-%Y %H:%M:%STF)datetimestrptimestrftime
ValueError)	date_textr8   r8   r9   validate_date_format  s    r   c             C   s:   y | t j j| djdkrtdS  tk
r4   dS X d S )Nz%Y-%m-%dTF)r   r   r   r   )r   r8   r8   r9   validate_date_only_format  s    r   c             C   s<   yt | }d}W n& tk
r6 } z
d}W Y d d }~X nX |S )NTF)floatrW   )test_stringoutputresrs   r8   r8   r9   check_float_string  s    r   c             C   s   ddd}yt jj| dgd}dS  t jk
rR } zd|d< d|d	< |S d }~X n0 tk
r } zd|d< d
|d	< |S d }~X nX d S )Nr   r   )r   r   r>   )r=   rV   Fr   zMenu Group Does Not Existsr   zInvalid Menu Group)r   rC   rD   rG   rW   )mgidr-   queryset_menu_groupr7   r8   r8   r9   validate_menu_group_by_id  s    
r   c             C   s   ddd}yt jj|dgt| gd}dS  t jk
rZ } zd|d< d|d	< |S d }~X n0 tk
r } zd|d< d|d	< |S d }~X nX d S )
Nr   r   )r   r   r>   )r=   rV   Z
menuId__inFr   z$Menu Group Does Not Exists In MenuIdr   )r   rC   rD   r   rG   rW   )r   r   r-   r   r7   r8   r8   r9   #validate_menuid_in_menu_group_by_id*  s    
r   c             C   s<   | j | | j|  }}t|d d\}}t|| |d dS )Nr>      )yearmonthdivmoddate)dtZd_yearsZd_monthsymar8   r8   r9   get_first_day=  s    r   c             C   s6   | j dkr| jddS | j| j d ddtjdd S )Nr      )dayr>   )r   r   )days)r   replacer   r   )r   r8   r8   r9   last_day_of_monthD  s    
r   c             C   s  i }d}d}y| dkr,t d t}t}n:| dkrPttjdd }|}|}n| dkrtttj d }	|	tdd }
|	}|
}n| d	krttjd
d }t}|}n| dkrtjtj dd}t| }|tdd }|}|}n| dkr0tjj jddtjdd }tjj jddtj|jd }|}|}n6| dkrTtt}t	t}|}|}n| dkrf|}|}|r|rt
|d | }t
|d | }nt
|d }t
|d }tjj|d}tjj|d}||d< ||d< |S  tk
r } ztjjtj  W Y d d }~X nX |S )Nr   todaycame	yesterdayr>   )r   thisWeek   	lastSeven   lastWeek)r   weeks	lastMonth)r   	thisMonthcustom z	 00:00:00z	 23:59:59z%Y-%m-%d %H:%M:%S
start_dateend_date)printr   r   r   weekdayr   r   r   r   r   strr   rW   r
   r   r   r   r   )dateType	startTimeendTimecusstartcusend
date_fieldcus_start_datecus_end_dater   startday_of_the_weekend_Day_of_the_weekweek_agostart_deltastart_of_weekend_of_weeklast_day_of_prev_monthstart_day_of_prev_month	first_daylast_day	startDateendDater   r   rs   r8   r8   r9   get_start_end_dateJ  sn    


"r   c             C   s   i }d}d}yz|}|}| r@|r@t |d |  }t |d | }nt |d }t |d }tjj|d}	tjj|d}
|	|d< |
|d< |S  tk
r } ztjjtj  W Y d d }~X nX |S )Nr   r   z	 00:00:00z	 23:59:59z%Y-%m-%d %H:%M:%Sr   r   )	r   r   r   rW   r
   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   rs   r8   r8   r9   get_start_end_date_only  s&    "r   c             C   s  i }d}d}y| dkr,t d t}t}n:| dkrPttjdd }|}|}n| dkrtttj d }	|	tdd }
|	}|
}n| d	krttjd
d }t}|}n| dkrtjtj dd}t| }|tdd }|}|}n| dkr0tjj jddtjdd }tjj jddtj|jd }|}|}n6| dkrTtt}t	t}|}|}n| dkrf|}|}|r|rt
|d | }t
|d | }nt
|d }t
|d }tjj|d}tjj|d}||d< ||d< |S  tk
r } ztjjtj  W Y d d }~X nX |S )Nr   r   r   r   r>   )r   r   r   r   r   r   )r   r   r   )r   r   r   r   z 00:00z 23:59z%Y-%m-%d %H:%Mr   r   )r   r   r   r   r   r   r   r   r   r   r   r   rW   r
   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rs   r8   r8   r9   #get_start_end_date_with_out_seconds  sn    


"r   c                s   t   fdd}|S )Nc                 s\  ddd}t jjdd }t jd }| r:|dkr:t jd }| sF| rZd|d< d|d	< |S ybtjj|d
gd tjj|d
gd tjj||d
gdj }|r | |S d|d< d|d	< |S W n tjk
r } zd|d< d|d	< |S d }~X nj tjk
r  } zd|d< d|d	< |S d }~X n8 t	k
rV } zd|d< |j
d |d	< |S d }~X nX d S )Nr   )r   r   r   rv   userIdr   r   zRequired fields missing!r   r>   )rI   rV   )rI   rv   rV   zInvalid Credentials!zRestaurant Does Not Exists!zEmployee Does Not Exists!)r   jsonrD   rE   rC   ru   filterfirstrG   rW   rX   )rX   kwargsr-   r   restautantIdempr7   )r2   r8   r9   decorated_function  s>    



z5restaurant_login_required.<locals>.decorated_function)r   )r2   r   r8   )r2   r9   restaurant_login_required  s    #r   c                s   t   fdd}|S )Nc                 s   ddd}t jd }|s,d|d< d|d< |S ytjj|dgd	  | |S  tjk
rz } zd|d< d
|d< |S d }~X n6 tk
r } zd|d< |jd |d< |S d }~X nX d S )Nr   )r   r   rv   r   r   zRequired fields missing!!r   r>   )rI   rV   zRestaurant Does Not Exists!)r   r   ru   rC   rD   rG   rW   rX   )rX   r   r-   r   r7   )r2   r8   r9   get_restaurant  s"    


z+restaurant_required.<locals>.get_restaurant)r   )r2   r   r8   )r2   r9   restaurant_required  s    r   c                s   t   fdd}|S )Nc                 s   ddd}t jd }|s,d|d< d|d< |S ytjj|dd	gd
  | |S  tjk
r| } zd|d< d|d< |S d }~X n6 tk
r } zd|d< |jd |d< |S d }~X nX d S )Nr   )r   r   rz   r   r   zRequired fields missing!!r   r   r>   )rI   r   rV   zFranchise Does Not Exists!)r   r   ru   rC   rD   rG   rW   rX   )rX   r   r-   rz   r7   )r2   r8   r9   get_franchise2  s$    


z)franchise_required.<locals>.get_franchise)r   )r2   r   r8   )r2   r9   franchise_required1  s    r   c                s   t   fdd}|S )Nc                 s   ddd}t jjdd }| r0|dkr0t jd }|sHd|d< d|d< |S ytjj|d	gd
  | |S  tjk
r } zd|d< d|d< |S d }~X n6 tk
r } zd|d< |jd |d< |S d }~X nX d S )Nr   )r   r   r   r   r   r   zRequired fields missing!!r   r>   )rI   rV   zCustomer Does Not Exists!)r   r   rD   r   rC   rG   rW   rX   )rX   r   r-   r   r7   )r2   r8   r9   get_customerK  s&    


z'customer_required.<locals>.get_customer)r   )r2   r   r8   )r2   r9   customer_requiredJ  s    r   c                s   t   fdd}|S )Nc                 s   ddd}t jjdd }| r0|dkr0t jd }|sPtd d|d< d|d	< |S ytjj|d
gd  | |S  tjk
r } zd|d< d|d	< |S d }~X n6 tk
r } zd|d< |jd |d	< |S d }~X nX d S )Nr   )r   r   r   r   Zissuer   r   zRequired fields missing!!r   r>   )rI   rV   zEmployee Does Not Exists!)	r   r   rD   r   rE   rC   rG   rW   rX   )rX   r   r-   r   r7   )r2   r8   r9   get_employeee  s(    


z'employee_required.<locals>.get_employee)r   )r2   r   r8   )r2   r9   employee_requiredd  s    r  c                s   t   fdd}|S )Nc                 s^  ddd}t jjdd }t jd }| r:|dkr:t jd }| sF| rZd|d< d|d	< |S ydtjj|d
gd tjj|dd
gd tjj||d
gdj }|r | |S d|d< d|d	< |S W n tjk
r } zd|d< d|d	< |S d }~X nj tjk
r" } zd|d< d|d	< |S d }~X n8 t	k
rX } zd|d< |j
d |d	< |S d }~X nX d S )Nr   )r   r   r   rz   r   r   r   zRequired fields missing!r   r>   )rI   rV   r   )rI   r   rV   )rI   rv   rV   zInvalid Credentials!zFranchise Does Not Exists!zEmployee Does Not Exists!)r   r   rD   rE   rC   ru   r   r   rG   rW   rX   )rX   r   r-   r   rz   r   r7   )r2   r8   r9   check_franchise_login~  s>    



z7franchise_login_required.<locals>.check_franchise_login)r   )r2   r  r8   )r2   r9   franchise_login_required}  s    #r  c             C   s  i }d}d}y| dkr$t }t }n:| dkrHt tjdd }	|	}|	}n| dkrzt tt j d }
|
tdd }|
}|}n| dkrt tjd	d }t }|}n| d
krtjt j dd}t | }|tdd }|}|}n| dkr(tjj  jddtjdd }tjj  jddtj|jd }|}|}n6| dkrLtt }tt }|}|}n| dkr^|}|}|r|rt	|d | }t	|d | }nt	|d }t	|d }|rt
j|}tjj|d}tjj|d}tjj|dj|}tjj|dj|}nNt
jd}tjj|d}tjj|d}tjj|dj|}tjj|dj|}|j j }|tj|d }|tj|d }|j||d< |j||d< |S  tk
r } ztjjtj  W Y d d }~X nX |S )Nr   r   r   r>   )r   r   r   r   r   r   )r   r   r   )r   r   r   r   z	 00:00:00z	 23:59:59z%Y-%m-%d %H:%M:%SzAsia/Kolkata)secondsr   r   )r   r   r   r   r   r   r   r   r   r   pytztimezoner   
astimezone	utcoffsettotal_secondsrW   r
   r   r   r   r   )r   r   r   r   r   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Z	time_zoneZstart_date1Z	end_date1r   r   Z
offset_secZstart_time_zoneZend_time_zoners   r8   r8   r9   &get_start_end_date_time_with_time_zone  s    




"r
  )r   )r   r   )^Zwerkzeug.utilsr   flaskr   r   r   r   urllib.requesturllibmongoenginer   r(   r   ior   PILr	   r   rg   r   rm   restaurant_apir
   &restaurant_api.restaurant_admin.modelsZ%restaurant_api.franchise_admin.modelsZrestaurant_api.pos.modelsrestaurant_api.admin.modelsZrestaurant_api.inventory.modelsbsonr   r   timer   calendar	functoolsr   r  utcUTCsetZALLOWED_EXTENSIONSr:   r;   rN   rP   rT   rY   rb   re   rf   rt   rx   r{   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r
  r8   r8   r8   r9   <module>   s   
35  !		

FH'(Z