o
    d                    @   s  d dl Z d dlZd dlZd dlmZ d dlmZ d dlT d dlT d dl	m
Z
 d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ G dd dejZG dd dejZG dd dejZG dd dejZG dd dejZ G dd dej!Z"G dd dejZ#G dd dej!Z$G dd dejZ%G d d! d!ej!Z&G d"d# d#ejZ'G d$d% d%ej!Z(G d&d' d'ejZ)G d(d) d)ej!Z*G d*d+ d+ejZ+G d,d- d-ej!Z,G d.d/ d/ejZ-G d0d1 d1ej!Z.G d2d3 d3ejZ/G d4d5 d5ej!Z0G d6d7 d7ejZ1G d8d9 d9ej!Z2G d:d; d;ejZ3G d<d= d=ej!Z4G d>d? d?ejZ5G d@dA dAej!Z6G dBdC dCejZ7G dDdE dEej!Z8G dFdG dGejZ9G dHdI dIej!Z:G dJdK dKejZ;G dLdM dMej!Z<G dNdO dOejZ=G dPdQ dQej!Z>G dRdS dSejZ?G dTdU dUej!Z@G dVdW dWejZAG dXdY dYej!ZBG dZd[ d[ejZCG d\d] d]ej!ZDG d^d_ d_ejZEG d`da daej!ZFG dbdc dcejZGG ddde deej!ZHG dfdg dgejZIG dhdi diej!ZJG djdk dkejZKG dldm dmej!ZLG dndo doejZMG dpdq dqej!ZNG drds dsejZOG dtdu duej!ZPG dvdw dwejZQG dxdy dyej!ZRG dzd{ d{ejZSG d|d} d}ej!ZTG d~d dejZUG dd dej!ZVG dd dejZWG dd dej!ZXG dd dejZYG dd dej!ZZG dd dejZ[G dd dej!Z\G dd dejZ]G dd dejZ^G dd dejZ_G dd dej!Z`G dd dejZaG dd dej!ZbG dd dejZcG dd dej!ZdG dd dejZeG dd dej!ZfG dd dejZgG dd dej!ZhG dd dejZiG dd dej!ZjG dd dejZkG dd dej!ZlG dd dejZmG dd dej!ZnG dd dejZoG dd dej!ZpG dd dejZqG dd dej!ZrG dd dejZsG dd dej!ZtG dd dejZuG dd dej!ZvG ddÄ dejZwG ddń dej!ZxG ddǄ dejZyG ddɄ dej!ZzG dd˄ dejZ{G dd̈́ dej!Z|G ddτ dejZ}G ddф dej!Z~G ddӄ dejZG ddՄ dej!ZG ddׄ dejZG ddل dej!ZG ddۄ dejZG dd݄ dej!ZG dd߄ dejZG dd dej!ZG dd dejZG dd dej!ZG dd dejZG dd dej!ZG dd dejZG dd dej!ZG dd dejZG dd dej!ZG dd dejZG dd dejZG dd dejZG dd dej!ZG dd dejZG dd dej!ZG dd dejZG d d dej!ZG dd dejZG dd dej!ZG dd dejZG dd	 d	ej!ZG d
d dejZG dd dej!ZG dd dejZG dd dej!ZG dd dejZG dd dej!ZG dd dejZG dd dej!ZG dd dejZG dd dej!ZG dd dejZG d d! d!ejZG d"d# d#ej!ZG d$d% d%ejZG d&d' d'ej!ZG d(d) d)ejZG d*d+ d+ej!ZG d,d- d-ejZG d.d/ d/ejZG d0d1 d1ej!ZG d2d3 d3ejZG d4d5 d5ej!ZG d6d7 d7ejZG d8d9 d9ej!ZG d:d; d;ejZG d<d= d=ej!ZG d>d? d?ejZG d@dA dAej!ZG dBdC dCejZG dDdE dEejZG dFdG dGej!ZG dHdI dIejZG dJdK dKej!ZG dLdM dMejZG dNdO dOej!ZG dPdQ dQejZG dRdS dSej!ZG dTdU dUejZG dVdW dWej!ZG dXdY dYejZG dZd[ d[ej!ZG d\d] d]ejZG d^d_ d_ej!ZG d`da daejZG dbdc dcej!ZG ddde deejZG dfdg dgejZG dhdi diej!ZG djdk dkejZG dldm dmej!ZG dndo doejZG dpdq dqej!ZG drds dsejZG dtdu duej!ZG dvdw dwejZG dxdy dyej!ZG dzd{ d{ejZG d|d} d}ej!ZG d~d dejZG dd dej!ZG dd dejZG dd dej!ZG dd dejZG dd dejZG dd dej!ZG dd dejZG dd dej!ZG dd dejZG dd dej!ZG dd dejZG dd dej!ZG dd dejZG dd dejZG dd dej!ZG dd dejZG dd dejZG dd dej!ZG dd dejZG dd dejZG dd dej!ZG dd dejZG dd dej!ZG dd dejZG dd dej!ZG dd dejZG dd dej!ZG dd dejZG dd dej!ZG dd dejZG dd dej!ZG dd dejZG dd dejZG ddÄ dej!ZG dĐdń dejZG dƐdǄ dej!ZdS (      N)Image)generics)*)DjangoFilterBackend)
pagination)filters)rest_framework)Response)Q)InMemoryUploadedFile)NotFound)
MEDIA_ROOTc                   @   s   e Zd ZdZdZdZdS )StandardSetPagination   	page_size  N)__name__
__module____qualname__r   page_size_query_parammax_page_size r   r   u/Users/waleedhassanin/Documents/snowflake_co_dev_github/snow_flake_back_end_deploy/rm_gallery_api/rm_gallery/views.pyr      s    r   c                   @   sp   e Zd ZdZdZdZdd Zdd Zdd	 Zd
d Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd ZdS )StandardItemSetPaginationr   r   r   c                 C   @   g }|D ]}t jj|d d}|t|d d|idj q|S )NbrandIdidr   
languageIdcontext)BrandobjectsfilterappendBrandSerializerdata)selfbrandDistinctr   	brandListiZcurrentBrandr   r   r   getBrandList   
   z&StandardItemSetPagination.getBrandListc                 C   r   )NdepartmentIdr   r   r   r   )
Departmentr"   r#   r$   DepartmentSerializerr&   )r'   departmentDistinctr   departmentListr*   ZcurrentDepartmentr   r   r   getDepartmentList$   r,   z+StandardItemSetPagination.getDepartmentListc                 C   8  |d ur]t jjddj|dj|djtdtdd}t jjddj|dj|djtdtdd}t jjddj|dj|dd	 }t jjddj|dj|dd
 }nHt jjddj|djtdtdd}t jjddj|djtdtdd}t jjddj|dd	 }t jjddj|dd
 }|d sd|d< |d sd|d< |d dkr|d dkr|d |d krd|d< |d sd|d< |d sd|d< |d dkr|d dkr|d |d krd|d< g }|D ]}|d|d	 i qg }	|D ]}
|	d|
d
 i q	||||	fS )NT
isApproved)newArrivalIdZ"item_itemlanguage__name__icontainsitem_sku__price	min_price	max_priceitem_sku__discountmin_discountmax_discountr   r-   r:   r   r;      r>   r?   r   	Itemr"   r#   	aggregateMinMaxvaluesdistinctr$   )r'   newArrivalIdValsearch	priceValsdiscountValsr(   r0   r)   brandr1   
departmentr   r   r   getNewArrivalFilter+   s<   00(*((  z-StandardItemSetPagination.getNewArrivalFilterc                 C   L  t |dkr$|d urdtjjddjddj|djtdtdd}tjjddjddj|djtdtdd	}tjjddjddj|dd
 }tjjddjddj|dd }nHtjjddjddjtdtdd}tjjddjddjtdtdd	}tjjddjddd
 }tjjddjddd }|d sd|d< |d sd|d< |d dkr|d dkr|d |d krd|d< |d sd|d< |d sd|d< |d dkr|d dkr|d |d krd|d< g }|D ]}|	d|d
 i q g }	|D ]}
|		d|
d i q||||	fS d S )NtrueTr4   )isTopr7   r8   r9   r<   r=   r   r-   r:   r   r;   r@   r>   r?   r   
strrB   r"   r#   rC   rD   rE   rF   rG   r$   )r'   isTopValrI   rJ   rK   r(   r0   r)   rL   r1   rM   r   r   r   getIsTopFilterR   @   00(*((  z(StandardItemSetPagination.getIsTopFilterc                 C   rO   )NrP   Tr4   )
isFavoriter7   r8   r9   r<   r=   r   r-   r:   r   r;   r@   r>   r?   r   rR   )r'   isFavoriteValrI   rJ   rK   r(   r0   r)   rL   r1   rM   r   r   r   getIsFavoriteFilter{   rV   z-StandardItemSetPagination.getIsFavoriteFilterc           
      C   s8  |d ur]t jjddjddj|djtdtdd}t jjddjddj|djtdtdd	}t jjddjddj|dd
 }t jjddjddj|dd }nHt jjddjddjtdtdd}t jjddjddjtdtdd	}t jjddjddd
 }t jjddjddd }|d sd|d< |d sd|d< |d dkr|d dkr|d |d krd|d< |d sd|d< |d sd|d< |d dkr|d dkr|d |d krd|d< g }|D ]}|d|d
 i qg }|D ]}	|d|	d i q	||||fS )NTr4   r   )Zitem_sku__discount__gtr7   r8   r9   r<   r=   r   r-   r:   r;   r@   r>   r?   r   rA   
r'   rI   rJ   rK   r(   r0   r)   rL   r1   rM   r   r   r   getMostDiscountFilter   s<   00(*((  z/StandardItemSetPagination.getMostDiscountFilterc                 C   r3   )NTr4   )r-   r7   r8   r9   r<   r=   r   r-   r:   r   r;   r@   r>   r?   r   rA   )r'   departmentIdValrI   rJ   rK   r(   r0   r)   rL   r1   rM   r   r   r   getDepartmentFilter   <   00(*((  z-StandardItemSetPagination.getDepartmentFilterc                 C   r3   )NTr4   
supplierIdr7   r8   r9   r<   r=   r   r-   r:   r   r;   r@   r>   r?   r   rA   )r'   supplierIdValrI   rJ   rK   r(   r0   r)   rL   r1   rM   r   r   r   getSupplierFilter   r^   z+StandardItemSetPagination.getSupplierFilterc                 C   r3   )NTr4   )r   r7   r8   r9   r<   r=   r   r-   r:   r   r;   r@   r>   r?   r   rA   )r'   
brandIdValrI   rJ   rK   r(   r0   r)   rL   r1   rM   r   r   r   getBrandFilter  r^   z(StandardItemSetPagination.getBrandFilterc           
      C   s  |d urMt jjddj|djtdtdd}t jjddj|djtdtdd}t jjddj|dd }t jjddj|dd	 }n@t j jddjtdtdd}t j jddjtdtdd}t j jddd }t j jddd	 }|d ur|d
 sd|d
< |d sd|d< |d
 dkr|d dkr|d
 |d krd|d
< |d ur|d sd|d< |d sd|d< |d dkr|d dkr|d |d krd|d< g }|D ]}|	d|d i qg }|D ]}	|	d|	d	 i q||||fS )NTr4   r7   r8   r9   r<   r=   r   r-   r:   r   r;   r@   r>   r?   r   )
rB   r"   r#   rC   rD   rE   rF   rG   allr$   rZ   r   r   r   getStandardFilterG  s@   (( "$$z+StandardItemSetPagination.getStandardFilterc                 C   s  | j jdd }| j jdd }| j jdd }| j jdd }| j jdd }| j jdd }| j jdd }| j jdd }	d }
d }g }g }|d urW| ||\}
}}}nn|d urf| ||\}
}}}n_|d uru| ||\}
}}}nP|d ur|d	ks|d
ks|dkr| |\}
}}}n6|d ur| ||\}
}}}n'|d ur| ||\}
}}}n|	d ur| 	|	|\}
}}}n	| 
|\}
}}}|
d urt| jjj|  |  |
d |
d |d |d |||d
S t| jjj|  |  |dS )NrI   r6   rQ   rW   
isDiscountr-   r`   r   1TruerP   r:   r;   r>   r?   )
countnextpreviousminPricemaxPriceminDiscountmaxDiscountr)   r1   resultsrj   rk   rl   rq   )requestquery_paramsgetrN   rU   rY   r[   r]   rb   rd   rf   r	   page	paginatorrj   get_next_linkget_previous_link)r'   r&   rI   rH   rT   rX   rg   r\   ra   rc   rJ   rK   ZfilterBrandListZfilterDepartmentListr   r   r   get_paginated_responseq  s`   z0StandardItemSetPagination.get_paginated_responseN)r   r   r   r   r   r   r+   r2   rN   rU   rY   r[   r]   rb   rd   rf   rz   r   r   r   r   r      s    '))()))*r   c                   @   s    e Zd ZdZdZdZdd ZdS )StandardSKUSetPaginationr   r   r   c              
   C   sH  t j jtdtdd}t j jtdtdd}|d urH|d s(d|d< |d s0d|d< |d dkrH|d dkrH|d |d krHd|d< |d urt|d	 sTd|d	< |d
 s\d|d
< |d	 dkrt|d
 dkrt|d	 |d
 krtd|d	< |d urt| jjj	| 
 |  |d |d |d	 |d
 |dS t| jjj	| 
 |  |dS )Npricer9   discountr=   r:   r   r;   r@   r>   r?   )rj   rk   rl   rm   rn   ro   rp   rq   rr   )SKUr"   r#   rC   rD   rE   r	   rv   rw   rj   rx   ry   )r'   r&   rJ   rK   r   r   r   rz     sF   z/StandardSKUSetPagination.get_paginated_responseN)r   r   r   r   r   r   rz   r   r   r   r   r{     s
    r{   c                   @   s0   e Zd ZeZdd Zdd Zdd Zdd Zd	S )
DashboardDataViewc                 C   s   d}t jttjjddjddjd ddd }|D ]}t|j}||d  }qt	jttjjddjddjd d	d
d }|D ]}t
|j}||d  }qH|S )Nr   )ZtaxesId__gt)ZrechargeId__gt)
rechargeIdr   )Zid__insumTaxes)ZpurchaseOrderId__gt)purchaseOrderIdr   Ztaxes)Recharger"   r#   r
   PaymentexcluderF   RechargeSerializerr&   PurchaseOrderPurchaseOrderSerializer)r'   r   ZrechargeListselected
serializerZpurchaseOrderListr   r   r   calculateTaxes  s   	4
4
z DashboardDataView.calculateTaxesc                 C   s4  t j }tjtd}|d d u rd|d< tjtd}|d d u r)d|d< tjtd}|d d u r;d|d< tjjdd	}tjjd
d	}d}d}d}	d}
d}d}| dkrtjj|d j	d }tjj|d j	dtd}|d d u rd|d< tjj|d j	dtd}	|	d d u rd|	d< | dkrtjj|d j	d }
tjj|d j	dtd}|d d u rd|d< tjj|d j	dtd}|d d u rd|d< |d }|	d }|d }|d }|| }|| }| 
 }t||d |d |d ||d |	d |
|d |d |||}|gS )Ntotal
total__sumr   paid	paid__sumchangechange__sumInTransZkeyName__icontainsOutTranstransactionTypeId)rB   r"   rj   r   rC   SumTransactionTyper#   __len__r   r   DashboardData)r'   
countItemssumPaymentTotalsumPaymentPaidsumPaymentChangeinTransoutTranscountTransactionInsumTransactionInTotalsumTransactionInPaidcountTransactionOutsumTransactionOutTotalsumTransactionOutPaidZ
sumTotalInZ	sumPaidInZsumTotalOutZ
sumPaidOutZbalanceTotalZbalancePaidr   dashboardDatar   r   r   getDashboardData  st   
z"DashboardDataView.getDashboardDatac                 C   s  t jj|d }tjt|dt|dB td}|d d u r&d|d< tjt|dt|dB td}|d d u rCd|d< tjt|dt|dB td	}|d
 d u r`d|d
< tjjdd}tjjdd}d}d}	d}
d}d}d}|	 dkrtjj|d j
dt|dt|dB  }tjj|d j
dt|dt|dB td}	|	d d u rd|	d< tjj|d j
dt|dt|dB td}
|
d d u rd|
d< |	 dkrGtjj|d j
dt|dt|dB  }tjj|d j
dt|dt|dB td}|d d u r"d|d< tjj|d j
dt|dt|dB td}|d d u rGd|d< t||d |d |d
 ||d |d ||	d |
d ddd}|gS )Nr_   ZsalesOrderId__supplierIdZsubscriptionId__supplierIdr   r   r   r   r   r   r   r   r   r   r   )rB   r"   r#   rj   r   r
   rC   r   r   r   r   r   )r'   r`   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   getSupplierDashboardData@  sf   &&&.44.44z*DashboardDataView.getSupplierDashboardDatac                 C   s   | j jd}| j jd}|d ur|d urtddi|d ur0t|dkr*|  S tddi|d urEt|dkr?| |S tdditddi)NisDashboardr`   ErrorInvalid Parametersr@   r   )rs   rt   ru   r   intr   r   )r'   r   r`   r   r   r   get_queryset  s   
zDashboardDataView.get_querysetN)	r   r   r   ZDashboardDataSerializerserializer_classr   r   r   r   r   r   r   r   r     s    PDr   c                   @      e Zd Zej ZeZdS )SettingsListN	r   r   r   Settingsr"   re   querysetZSettingsSerializerr   r   r   r   r   r         
r   c                   @   r   )SettingsDetailNr   r   r   r   r   r     r   r   c                   @      e Zd ZeZdd ZdS )LanguageListc                 C   .   | j jd}|dkrtj S tjjddS Nr   rh   T	isEnabled)rs   rt   ru   Languager"   re   r#   r'   r   r   r   r   r        
zLanguageList.get_querysetN)r   r   r   LanguageSerializerr   r   r   r   r   r   r         r   c                   @   r   )LanguageDetailN)	r   r   r   r   r"   re   r   r   r   r   r   r   r   r     r   r   c                   @   $   e Zd Zej ZeZdddZ	dS )AppContentListNc              	   C   s  | j jd}|d ur| j jd}t|d}t|}t	|}t }|j
|| d | j jd}	t|d|	| d d|  d}
| j jd	}| j jd
}| j jd}| j jd}| j jd}| j jd}|j
|||||
||d d S |
  d S )NimageBase64imageExtensionUTF-8format	imageNameimageimage/file
field_namenamesizecharsetcontent_typekeyNamedescription
navigateToisSliderFlagcreatedDateupdatedDater   r   r   r   r   r   r   rs   r&   ru   base64	b64decodeencodeioBytesIOr   opensaveupperr   tell)r'   r   r   r   r   r&   bufimgimg_ior   newImager   r   r   r   newCreatedDatenewUpdatedDater   r   r   perform_create  s8   


	zAppContentList.perform_createN)
r   r   r   
AppContentr"   re   r   AppContentSerializerr   r   r   r   r   r   r         
r   c                   @   r   )AppContentDetailNc              	   C   s  | j jd}|d ur| j jd}| j jd}t|d}t|}t	|}t }	|j
|	| d | j jd}
t|	d|
|	 d d|  d	}| j jd
}|d ur|dkrtjtd t| d | d | rttd t| d | d |  | j jd}| j jd}| j jd}| j jd}| j jd}| j jd}|j
|||||||d d S |
  d S )Nr   oldImageNamer   r   r   r   r   r   r   r   holderz/appcontents/appcontent_/.r   r   r   r   r   r   r   rs   r&   ru   r   r   r   r   r   r   r   r   r   r   r   ospathexistsr   rS   remove)r'   r   r   r   r   r   r&   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   perform_update  sD   

(&
	zAppContentDetail.perform_updater   )
r   r   r   r   r"   re   r   r   r   r   r   r   r   r   r     r   r   c                   @   r   )SocialLinkListN	r   r   r   
SocialLinkr"   re   r   ZSocialLinkSerializerr   r   r   r   r   r     r   r   c                   @   r   )SocialLinkDetailNr   r   r   r   r   r     r   r   c                   @   r   )ProviderListN	r   r   r   Providerr"   re   r   ZProviderSerializerr   r   r   r   r   r     r   r  c                   @   r   )ProviderDetailNr  r   r   r   r   r    r   r  c                   @   (   e Zd Zej ZeZe	gZ
ddgZdS )ProviderLanguageList
providerIdr   N)r   r   r   ProviderLanguager"   re   r   ProviderLanguageSerializerr   r   filter_backendsfilterset_fieldsr   r   r   r   r    
    
r  c                   @   r   )ProviderLanguageDetailN)	r   r   r   r  r"   re   r   r	  r   r   r   r   r   r    r   r  c                   @   s"   e Zd Zej ZeZdd Z	dS )ItemCostListc                 C   r   r   )rs   rt   ru   ItemCostr"   re   r#   r   r   r   r   r     r   zItemCostList.get_querysetN)
r   r   r   r  r"   re   r   ItemCostSerializerr   r   r   r   r   r   r    s    
r  c                   @   r   )ItemCostDetailN)	r   r   r   r  r"   re   r   r  r   r   r   r   r   r    r   r  c                   @   r   )FeesListc                 C   s@   | j jd}|dkrtj dS tj jddd d S )Nr   rh   -idTr   r@   )rs   rt   ru   Feesr"   re   order_byr#   r   r   r   r   r   #  s   zFeesList.get_querysetN)r   r   r   FeesSerializerr   r   r   r   r   r   r         r  c                   @   r   )
FeesDetailN)	r   r   r   r  r"   re   r   r  r   r   r   r   r   r  *  r   r  c                   @   r   )	TaxesListc                 C   >   | j jd}|dkrtj dS tj dd d S )Nr   rh   z-pricer@   )rs   rt   ru   Taxesr"   re   r  r   r   r   r   r   1     zTaxesList.get_querysetN)r   r   r   TaxesSerializerr   r   r   r   r   r   r  .  r  r  c                   @   r   )TaxesDetailN)	r   r   r   r  r"   re   r   r  r   r   r   r   r   r  8  r   r  c                   @   r   )OrderFromListN	r   r   r   	OrderFromr"   re   r   ZOrderFromSerializerr   r   r   r   r   r  <  r   r  c                   @   r   )OrderFromDetailNr   r   r   r   r   r"  @  r   r"  c                   @   r  )OrderFromLanguageListorderFromIdr   N)r   r   r   OrderFromLanguager"   re   r   OrderFromLanguageSerializerr   r   r
  r  r   r   r   r   r#  D  r  r#  c                   @   r   )OrderFromLanguageDetailN)	r   r   r   r%  r"   re   r   r&  r   r   r   r   r   r'  J  r   r'  c                   @   r   )CancelTypeListN	r   r   r   
CancelTyper"   re   r   ZCancelTypeSerializerr   r   r   r   r   r(  N  r   r(  c                   @   r   )CancelTypeDetailNr)  r   r   r   r   r+  R  r   r+  c                   @   r   )CancelTypeLanguageListN	r   r   r   CancelTypeLanguager"   re   r   ZCancelTypeLanguageSerializerr   r   r   r   r   r,  V  r   r,  c                   @   r   )CancelTypeLanguageDetailNr-  r   r   r   r   r/  Z  r   r/  c                   @   r   )ReturnCostListc                 C   r  )Nr   rh   z-costr@   )rs   rt   ru   
ReturnCostr"   re   r  r   r   r   r   r   `  r  zReturnCostList.get_querysetN)r   r   r   ReturnCostSerializerr   r   r   r   r   r   r0  ^  r   r0  c                   @   r   )ReturnCostDetailN)	r   r   r   r1  r"   re   r   r2  r   r   r   r   r   r3  g  r   r3  c                   @   r   )ReturnStatusListN	r   r   r   ReturnStatusr"   re   r   ZReturnStatusSerializerr   r   r   r   r   r4  k  r   r4  c                   @   r   )ReturnStatusDetailNr5  r   r   r   r   r7  o  r   r7  c                   @   r  )ReturnStatusLanguageListreturnStatusIdr   N)r   r   r   ReturnStatusLanguager"   re   r   ReturnStatusLanguageSerializerr   r   r
  r  r   r   r   r   r8  s  r  r8  c                   @   r   )ReturnStatusLanguageDetailN)	r   r   r   r:  r"   re   r   r;  r   r   r   r   r   r<  y  r   r<  c                   @   r   )TrackStatusListN	r   r   r   TrackStatusr"   re   r   ZTrackStatusSerializerr   r   r   r   r   r=  }  r   r=  c                   @   r   )TrackStatusDetailNr>  r   r   r   r   r@    r   r@  c                   @   r  )TrackStatusLanguageListtrackStatusIdr   N)r   r   r   TrackStatusLanguager"   re   r   TrackStatusLanguageSerializerr   r   r
  r  r   r   r   r   rA    r  rA  c                   @   r   )TrackStatusLanguageDetailN)	r   r   r   rC  r"   re   r   rD  r   r   r   r   r   rE    r   rE  c                   @   &   e Zd ZeZdd ZegZddgZdS )PaymentMethodListc                 C   r   r   )rs   rt   ru   PaymentMethodr"   re   r#   r   r   r   r   r     r   zPaymentMethodList.get_querysetr   r   N)	r   r   r   PaymentMethodSerializerr   r   r   r
  r  r   r   r   r   rG    
    rG  c                   @   r   )PaymentMethodDetailN)	r   r   r   rH  r"   re   r   rI  r   r   r   r   r   rK    r   rK  c                   @   r  )PaymentMethodLanguageListpaymentMethodIdr   N)r   r   r   PaymentMethodLanguager"   re   r   PaymentMethodLanguageSerializerr   r   r
  r  r   r   r   r   rL    r  rL  c                   @   r   )PaymentMethodLanguageDetailN)	r   r   r   rN  r"   re   r   rO  r   r   r   r   r   rP    r   rP  c                   @   r   )EligibleTypeListN	r   r   r   EligibleTyper"   re   r   ZEligibleTypeSerializerr   r   r   r   r   rQ    r   rQ  c                   @   r   )EligibleTypeDetailNrR  r   r   r   r   rT    r   rT  c                   @   r  )EligibleTypeLanguageListeligibleTypeIdr   N)r   r   r   EligibleTypeLanguager"   re   r   EligibleTypeLanguageSerializerr   r   r
  r  r   r   r   r   rU    r  rU  c                   @   r   )EligibleTypeLanguageDetailN)	r   r   r   rW  r"   re   r   rX  r   r   r   r   r   rY    r   rY  c                   @   &   e Zd Zej ZeZe	gZ
dgZdS )CountryListisActiveN)r   r   r   Countryr"   re   r   CountrySerializerr   r   r
  r  r   r   r   r   r[    
    

r[  c                   @   r   )CountryDetailN)	r   r   r   r]  r"   re   r   r^  r   r   r   r   r   r`    r   r`  c                   @   r  )CountryLanguageList	countryIdr   N)r   r   r   CountryLanguager"   re   r   CountryLanguageSerializerr   r   r
  r  r   r   r   r   ra    r  ra  c                   @   r   )CountryLanguageDetailN)	r   r   r   rc  r"   re   r   rd  r   r   r   r   r   re    r   re  c                   @   2   e Zd Zej ZeZe	j
egZddgZdgZdS )CityListrb  r\  r   N)r   r   r   Cityr"   re   r   CitySerializerr   searchfilterSearchFilterr   r
  r  search_fieldsr   r   r   r   rg        


rg  c                   @   r   )
CityDetailN)	r   r   r   rh  r"   re   r   ri  r   r   r   r   r   rn    r   rn  c                   @   r  )CityLanguageListcityIdr   N)r   r   r   CityLanguager"   re   r   CityLanguageSerializerr   r   r
  r  r   r   r   r   ro    r  ro  c                   @   r   )CityLanguageDetailN)	r   r   r   rq  r"   re   r   rr  r   r   r   r   r   rs    r   rs  c                   @   rf  )ZoneListrp  r\  r   N)r   r   r   Zoner"   re   r   ZoneSerializerr   rj  rk  r   r
  r  rl  r   r   r   r   rt    rm  rt  c                   @   r   )
ZoneDetailN)	r   r   r   ru  r"   re   r   rv  r   r   r   r   r   rw    r   rw  c                   @   r  )ZoneLanguageListzoneIdr   N)r   r   r   ZoneLanguager"   re   r   ZoneLanguageSerializerr   r   r
  r  r   r   r   r   rx    r  rx  c                   @   r   )ZoneLanguageDetailN)	r   r   r   rz  r"   re   r   r{  r   r   r   r   r   r|    r   r|  c                   @   rf  )DistrictListry  r\  r   N)r   r   r   Districtr"   re   r   DistrictSerializerr   rj  rk  r   r
  r  rl  r   r   r   r   r}    rm  r}  c                   @   r   )DistrictDetailN)	r   r   r   r~  r"   re   r   r  r   r   r   r   r   r    r   r  c                   @   r  )DistrictLanguageList
districtIdr   N)r   r   r   DistrictLanguager"   re   r   DistrictLanguageSerializerr   r   r
  r  r   r   r   r   r    r  r  c                   @   r   )DistrictLanguageDetailN)	r   r   r   r  r"   re   r   r  r   r   r   r   r   r    r   r  c                   @   s(   e Zd ZeZdd Zdd Zdd ZdS )GetDistrictPriceListc           
      C   s   g }g }|dkr>t jt|dt|dB }|D ]$}tjj|jjdj|djddjdd}| d	kr<||d	  qntjj|djddjdd}| d	krZ||d	  | d	krjt	|d
d d}	|	S d	S )NFrp  ry  r   )
isInternal)
isStandardTr   r   c                 S   s   | j S r   )r|   )itemr   r   r   <lambda>"  s    z/GetDistrictPriceList.getPrice.<locals>.<lambda>)key)
DeliveryPriceCityZoner"   r#   r
   DeliveryPricedeliveryPriceIdr   r   r$   max)
r'   ZselectedCityIdZselectedZoneIdr  r  ZselectedDeliveryPriceListZdeliveryPriceListZdeliveryPriceCityZoneListr   ZmaxValuer   r   r   getPrice  s"   *zGetDistrictPriceList.getPricec                 C   s^  d }d }d }d }	d }
d }d }d }d }|dkrt jj|d}|d urtjj|jdj|d}| dkr8|d j}tjj|j	jd}|d urt
jj|jdj|d}| dkr\|d j}	tjj|jjd}
|
d urtjj|
jdj|d}| dkr|d j}tjj|
jjd}|d urtjj|jdj|d}| dkr|d j}d}|
d ur|d ur| |
j|j||}|j}n| d d ||}|j}|d ur|d urtjj|jd	j|d
}| dkr|d j|jkr|d j}n|j}|dkr	t|j||
j||j|	|j||d	gS |dkr td d d d d d d d t|j|d
gS td d d d d d d d d |d
gS )NFr   r  r   r   r  r  rb  )r  deliveryManId)	rb  countryrp  cityry  zoner  districtr|   T)
rb  r  rp  r  ry  r  r  r  r  r|   )r~  r"   ru   r  r#   r   r   r   ru  ry  rz  rh  rp  rq  r]  rb  rc  r  r|   DeliveryManPriceDistrictPricer   )r'   r   r  r  r  r  ZselectedDistrictZselectedDistrictNameZselectedZoneZselectedZoneNameZselectedCityZselectedCityNameZselectedCountryZselectedCountryNameZselectedDeliveryPricedistrictLanguageListzoneLanguageListcityLanguageListcountryLanguageListrn   ZselectedDeliveryManPricer   r   r   getDistrictPrice'  s   





z%GetDistrictPriceList.getDistrictPricec                 C   s  | j jd}| j jd}| j jd}| j jd}| j jd}d }d }|d u r1tddi|dks=|d	ks=|d
kr@d}n|dksL|dksL|dkrOd}ntddi|d u r_tddi|dksk|d	ksk|d
krnd}n|dksz|dksz|dkr}d}ntddi|d ur|dkr|d u rtddi| stddit|dkrtddi|d u rtddi| stddit|dkrtddi|d ur|dkr|d u rtddi| stddit|dkrtddi| j|||||dS )Nr   r  r  r  r  r   zRequired isInternal Parameterrh   ri   rP   T0FalsefalseFzInvalid isInternal ParameterzRequired isStandard ParameterzInvalid isStandard ParameterzRequired LanguageId Parameterz!Not a Number LanguageId Parameterr   z(Invalid Primary Key LanguageId ParameterzRequired districtId Parameterz!Not a number districtId Parameterz(Invalid Primary Key districtId Parameterz Required deliveryManId Parameterz$Not a number deliveryManId Parameterz+Invalid Primary Key deliveryManId Parameter)r   r  r  r  r  )rs   rt   ru   r   isdigitr   r  )r'   r   r  r  r  r  ZisInternalValZisStandardValr   r   r   r     sX   z!GetDistrictPriceList.get_querysetN)r   r   r   ZDistrictPriceSerializerr   r  r  r   r   r   r   r   r    s
    br  c                   @   s    e Zd ZeZdd Zdd ZdS )GetAllDistrictListc                 C   s@  g }t jjdd}|D ]}tjj|jdj|d}| dkrtjj|jd}|D ]s}tjj|jdj|d}| dkrtjj|jd}	|	D ]T}
t	jj|
jdj|d}| dkrt
jj|
jd}|D ]5}tjj|jdj|d}| dkrt|j|d j|j|d j|
j|d j|j|d jd	}|| qeqGq)q|S )
NT)r\  r  r  r   r  r  r  )rb  r  rp  r  ry  r  r  r  )r]  r"   r#   rc  r   r   rh  rq  ru  rz  r~  r  AllDistrictDatar   r$   )r'   r   ZareaListZcountryListr  r  ZcityListr  r  ZzoneListr  r  ZdistrictListr  r  ZallDistrictDatar   r   r   getAllDistricts  s<   

z"GetAllDistrictList.getAllDistrictsc                 C   sX   | j jd}|d u rtddi| stddit|dkr'tddi| |S )Nr   r   r   r   )rs   rt   ru   r   r  r   r  )r'   r   r   r   r   r     s   
zGetAllDistrictList.get_querysetN)r   r   r   ZAllDistrictSerializerr   r  r   r   r   r   r   r    s    %r  c                   @   rF  )DeliveryPriceListc                 C   r   r   )rs   rt   ru   r  r"   re   r#   r   r   r   r   r     r   zDeliveryPriceList.get_querysetr  r  N)	r   r   r   DeliveryPriceSerializerr   r   r   r
  r  r   r   r   r   r    rJ  r  c                   @   r   )DeliveryPriceDetailN)	r   r   r   r  r"   re   r   r  r   r   r   r   r   r    r   r  c                   @   s2   e Zd Zej dZeZ	e
ZegZg dZdS )DeliveryPriceCityZoneListr   )r  rp  ry  N)r   r   r   r  r"   re   r  r   DeliveryPriceCityZoneSerializerr   r   pagination_classr   r
  r  r   r   r   r   r        r  c                   @   r   )DeliveryPriceCityZoneDetailN)	r   r   r   r  r"   re   r   r  r   r   r   r   r   r    r   r  c                   @   s:   e Zd ZeZejegZg dZ	dgZ
dd ZdddZdS )	DepartmentList)
isSelectedr-   	isPopularr   Z#department_departmentlanguage__namec                 C   s:   | j jd}|dkrtj dS tjjdddS )Nr   rh   r   T	isVisible)rs   rt   ru   r.   r"   re   r  r#   r   r   r   r   r      s   zDepartmentList.get_querysetNc              	   C   s@  | j jd}|d ur| j jd}t|d}t|}t	|}t }|j
|| d | j jd}	t|d|	| d d|  d}
| j jd	}| j jd
}| j jd}| j jd}| j jd}| j jd}|d urtjjt|d}|j
||||
|||d d S |j
||||
||d d S |
  d S )Nr   r   r   r   r   r   r   r   r  r  
totalViewsr   r   r-   r   r  r  r  r   r   r   r-   r  r  r  r   r   r   )rs   r&   ru   r   r   r   r   r   r   r   r   r   r   r   r.   r"   rS   )r'   r   r   r   r   r&   r   r   r   r   r   r  r  r  r   r   r-   rM   r   r   r   r   '  sL   


	
zDepartmentList.perform_creater   )r   r   r   r/   r   rj  rk  r   r
  r  rl  r   r   r   r   r   r   r    s    
r  c                   @   r   )DepartmentetailNc              	   C   s  | j jd}|d ur| j jd}| j jd}t|d}t|}t	|}t }	|j
|	| d | j jd}
t|	d|
|	 d d|  d	}| j jd
}|d urtjtd t| d | d | rttd t| d | d |  | j jd}| j jd}| j jd}| j jd}| j jd}| j jd}|d urtjjt|d}|j
|||||||d d S |j
||||||d d S |
  d S )Nr   r   r   r   r   r   r   r   r   r   z/departments/department_r   r   r  r  r  r   r   r-   r   r  r  )rs   r&   ru   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rS   r   r.   r"   )r'   r   r   r   r   r   r&   r   r   r   r   r   r   r  r  r  r   r   r-   rM   r   r   r   r   T  sV   

(&
	
zDepartmentetail.perform_updater   )
r   r   r   r.   r"   re   r   r/   r   r   r   r   r   r   r  P  r   r  c                   @   r  )DepartmentLanguageListr-   r   N)r   r   r   DepartmentLanguager"   re   r   DepartmentLanguageSerializerr   r   r
  r  r   r   r   r   r    r  r  c                   @   r   )DepartmentLanguageDetailN)	r   r   r   r  r"   re   r   r  r   r   r   r   r   r    r   r  c                   @   s8   e Zd ZeZejegZdgZ	dgZ
dd ZdddZdS )		BrandListr   Zbrand_brandlanguage__namec                 C   r   )Nr   rh   Tr  )rs   rt   ru   r!   r"   re   r#   r   r   r   r   r     r   zBrandList.get_querysetNc              	   C      | j jd}|d ur`| j jd}t|d}t|}t	|}t }|j
|| d | j jd}	t|d|	| d d|  d}
| j jd	}| j jd
}|j
|
||d d S |
  d S Nr   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     s    

zBrandList.perform_creater   )r   r   r   r%   r   rj  rk  r   r
  r  rl  r   r   r   r   r   r   r    s    
r  c                   @   r   )BrandDetailNc              	   C   >  | j jd}|d ur| j jd}| j jd}t|d}t|}t	|}t }	|j
|	| d | j jd}
t|	d|
|	 d d|  d	}| j jd
}|d urtjtd t| d | d | rttd t| d | d |  | j jd}| j jd}|j
|||d d S |
  d S )Nr   r   r   r   r   r   r   r   r   r   z/brands/brand_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BrandDetail.perform_updater   )
r   r   r   r!   r"   re   r   r%   r   r   r   r   r   r   r    r   r  c                   @   r  )BrandLanguageListr   r   N)r   r   r   BrandLanguager"   re   r   BrandLanguageSerializerr   r   r
  r  r   r   r   r   r    r  r  c                   @   r   )BrandLanguageDetailN)	r   r   r   r  r"   re   r   r  r   r   r   r   r   r    r   r  c                   @   r   )SubscriptionStatusListN	r   r   r   SubscriptionStatusr"   re   r   ZSubscriptionStatusSerializerr   r   r   r   r   r    r   r  c                   @   r   )SubscriptionStatusDetailNr  r   r   r   r   r    r   r  c                   @   r  )SubscriptionStatusLanguageListsubscriptionStatusIdr   N)r   r   r   SubscriptionStatusLanguager"   re   r   $SubscriptionStatusLanguageSerializerr   r   r
  r  r   r   r   r   r    r  r  c                   @   r   ) SubscriptionStatusLanguageDetailN)	r   r   r   r  r"   re   r   r  r   r   r   r   r   r    r   r  c                   @   r   )SubscriptionOptionListN	r   r   r   SubscriptionOptionr"   re   r   ZSubscriptionOptionSerializerr   r   r   r   r   r    r   r  c                   @   r   )SubscriptionOptionDetailNr  r   r   r   r   r    r   r  c                   @   r  )SubscriptionOptionLanguageListsubscriptionOptionIdr   N)r   r   r   SubscriptionOptionLanguager"   re   r   $SubscriptionOptionLanguageSerializerr   r   r
  r  r   r   r   r   r    r  r  c                   @   r   ) SubscriptionOptionLanguageDetailN)	r   r   r   r  r"   re   r   r  r   r   r   r   r   r    r   r  c                   @   s(   e Zd Zej ZeZe	gZ
g dZdS )SubscriptionTypeList)r  ZsubscriptionOptionId__keyNamer   N)r   r   r   SubscriptionTyper"   re   r   SubscriptionTypeSerializerr   r   r
  r  r   r   r   r   r    r  r  c                   @   r   )SubscriptionTypeDetailN)	r   r   r   r  r"   re   r   r  r   r   r   r   r   r     r   r  c                   @   r  )SubscriptionTypeLanguageListsubscriptionTypeIdr   N)r   r   r   SubscriptionTypeLanguager"   re   r   "SubscriptionTypeLanguageSerializerr   r   r
  r  r   r   r   r   r    r  r  c                   @   r   )SubscriptionTypeLanguageDetailN)	r   r   r   r  r"   re   r   r  r   r   r   r   r   r  
  r   r  c                   @   r   )TransactionTypeListN	r   r   r   r   r"   re   r   ZTransactionTypeSerializerr   r   r   r   r   r    r   r  c                   @   r   )TransactionTypeDetailNr  r   r   r   r   r    r   r  c                   @   r  )TransactionTypeLanguageListr   r   N)r   r   r   TransactionTypeLanguager"   re   r   !TransactionTypeLanguageSerializerr   r   r
  r  r   r   r   r   r    r  r  c                   @   r   )TransactionTypeLanguageDetailN)	r   r   r   r  r"   re   r   r  r   r   r   r   r   r    r   r  c                   @   s"   e Zd ZeZdd ZdddZdS )NewArrivalListc                 C   r  )Nr   rh   -createdDater@   )rs   rt   ru   
NewArrivalr"   re   r  r   r   r   r   r   "  r  zNewArrivalList.get_querysetNc              	   C   r  r  r   r  r   r   r   r   )  s    

zNewArrivalList.perform_creater   )r   r   r   NewArrivalSerializerr   r   r   r   r   r   r   r     s    r  c                   @   r   )NewArrivalDetailNc              	   C   r  )Nr   r   r   r   r   r   r   r   r   r   z/newarrivals/newarrival_r   r   r   r   r  r   r  r   r   r   r   B  r  zNewArrivalDetail.perform_updater   )
r   r   r   r  r"   re   r   r  r   r   r   r   r   r   r  >  r   r  c                   @   r  )NewArrivalLanguageListr6   r   N)r   r   r   NewArrivalLanguager"   re   r   NewArrivalLanguageSerializerr   r   r
  r  r   r   r   r   r  \  r  r  c                   @   r   )NewArrivalLanguageDetailN)	r   r   r   r  r"   re   r   r  r   r   r   r   r   r  b  r   r  c                   @   0   e Zd Zej dZeZ	e
ZegZdgZdS )
CouponListr  codeN)r   r   r   Couponr"   re   r  r   CouponSerializerr   r   r  r   r
  r  r   r   r   r   r  f      
r  c                   @   r   )CouponDetailN)	r   r   r   r  r"   re   r   r  r   r   r   r   r   r  m  r   r  c                   @   s>   e Zd Zej dZeZ	e
ZejegZddgZg dZdS )
ClientListr   emailpassword)	firstNamelastNameZclient_phone__phoneN)r   r   r   Clientr"   re   r  r   ClientSerializerr   r   r  rj  rk  r   r
  r  rl  r   r   r   r   r  q  s    
r  c                   @   r   )ClientDetailN)	r   r   r   r  r"   re   r   r  r   r   r   r   r   r  y  r   r  c                   @   s0   e Zd Zej ZeZe	j
egZdgZdgZdS )ClientPhoneListclientIdphoneN)r   r   r   ClientPhoner"   re   r   ClientPhoneSerializerr   rj  rk  r   r
  r  rl  r   r   r   r   r  }  s    


r  c                   @   r   )ClientPhoneDetailN)	r   r   r   r	  r"   re   r   r
  r   r   r   r   r   r    r   r  c                   @   rZ  )ClientCreditCardListr  N)r   r   r   ClientCreditCardr"   re   r   ClientCreditCardSerializerr   r   r
  r  r   r   r   r   r    r_  r  c                   @   r   )ClientCreditCardDetailN)	r   r   r   r  r"   re   r   r  r   r   r   r   r   r    r   r  c                   @   rZ  )ClientAddressBookListr  N)r   r   r   ClientAddressBookr"   re   r   ClientAddressBookSerializerr   r   r
  r  r   r   r   r   r    r_  r  c                   @   r   )ClientAddressBookDetailN)	r   r   r   r  r"   re   r   r  r   r   r   r   r   r    r   r  c                   @   s0   e Zd Zej dZeZ	e
ZegZdgZdS )
WalletListr  N)r   r   r   Walletr"   re   r  r   WalletSerializerr   r   r  r   r
  r  r   r   r   r   r    s    
r  c                   @   r   )WalletDetailN)	r   r   r   r  r"   re   r   r  r   r   r   r   r   r    r   r  c                   @   2   e Zd Zej dZeZ	e
ZegZddgZdS )TransactionListr  walletIdr   N)r   r   r   Transactionr"   re   r  r   TransactionSerializerr   r   r  r   r
  r  r   r   r   r   r    r  r  c                   @   r   )TransactionDetailN)	r   r   r   r  r"   re   r   r  r   r   r   r   r   r    r   r  c                   @   rZ  )ShoppingCartListr  N)r   r   r   ShoppingCartr"   re   r   ShoppingCartSerializerr   r   r
  r  r   r   r   r   r    r_  r  c                   @   r   )ShoppingCartDetailN)	r   r   r   r  r"   re   r   r   r   r   r   r   r   r!    r   r!  c                   @   s*   e Zd Zej ZeZe	Z
egZdgZdS )ShoppingCartDashboardListr  N)r   r   r   r  r"   re   r   r   r   r   r  r   r
  r  r   r   r   r   r"    s    

r"  c                   @   sD   e Zd ZejdddZejdddZejdddZG dd dZ	d	S )
PurchaseOrderFilterr   gter   lookup_exprltZ*purchaseorder_shippingitem__isValidAndPaidexactc                   @      e Zd ZeZg dZdS )zPurchaseOrderFilter.Meta)	rM  r$  couponIdr  
isCanceled
isRefunded	sessionIdr   isValidAndPaidN)r   r   r   r   modelfieldsr   r   r   r   Meta  r   r1  N)
r   r   r   r   DateTimeFiltercurrentDatepreviousDateBooleanFilterr.  r1  r   r   r   r   r#    s
    r#  c                   @   s:   e Zd Zej dZeZ	e
ZejegZeZddgZdS )PurchaseOrderListr  r   r-  N)r   r   r   r   r"   re   r  r   r   r   r   r  rj  rk  r   r
  r#  filterset_classrl  r   r   r   r   r6    s    
r6  c                   @   r   )PurchaseOrderDetailN)	r   r   r   r   r"   re   r   r   r   r   r   r   r   r8    r   r8  c                   @   <   e Zd Zej dZeZ	e
ZejegZddgZdgZdS )SupplierListr   r  r   r   N)r   r   r   Supplierr"   re   r  r   SupplierSerializerr   r   r  rj  rk  r   r
  r  rl  r   r   r   r   r:        

r:  c                   @   r   )SupplierDetailN)	r   r   r   r;  r"   re   r   r<  r   r   r   r   r   r>    r   r>  c                   @   r  )SupplierPhoneListr   r`   r  N)r   r   r   SupplierPhoner"   re   r  r   SupplierPhoneSerializerr   r   r  r   r
  r  r   r   r   r   r?    r  r?  c                   @   r   )SupplierPhoneDetailN)	r   r   r   r@  r"   re   r   rA  r   r   r   r   r   rB    r   rB  c                   @   rZ  )SupplierCreditCardListr`   N)r   r   r   SupplierCreditCardr"   re   r   SupplierCreditCardSerializerr   r   r
  r  r   r   r   r   rC    r_  rC  c                   @   r   )SupplierCreditCardDetailN)	r   r   r   rD  r"   re   r   rE  r   r   r   r   r   rF     r   rF  c                   @   s4   e Zd Zej ZeZe	Z
egZdgZdddZdS )SupplierDocumentListr`   Nc              	   C   sV  | j jd}|d urt|d}| j jd}| j jd}| j jd}| j jd}td }	td t| }
tj	
|	d	krHt|	 tj	
|
d	krUt|
 |
d
 | }t|dd}|| t|d|| d |d
 |  d}| j jd}| j jd}tjjt|d}|j||||||d t| |  d S |  d S )NfileDocumentBase64r   r`   fileDocumentNamecontentTypefileDocumentExtensionz/suppliers/z/suppliers/supplier_Tr   zwb+)r   modefileDocumentr   r   r   r   )fileNamerJ  rM  r`   r   r   )rs   r&   ru   r   r   r   r   rS   r   r   r   mkdirr   writer   r   r   r;  r"   r   r   close)r'   r   r   rH  r&   r`   rI  rJ  rK  Z
parentPath	childPathZfilePathr   ZnewFiler   r   Zsupplierr   r   r   r     sB   



z#SupplierDocumentList.perform_creater   )r   r   r   SupplierDocumentr"   re   r   SupplierDocumentSerializerr   r   r  r   r
  r  r   r   r   r   r   rG    s    
rG  c                   @   r   )SupplierDocumentDetailN)	r   r   r   rS  r"   re   r   rT  r   r   r   r   r   rU  8  r   rU  c                   @   r  )SubscriptionListr  r`   r  N)r   r   r   Subscriptionr"   re   r  r   SubscriptionSerializerr   r   r  r   r
  r  r   r   r   r   rV  <  r  rV  c                   @   r   )SubscriptionDetailN)	r   r   r   rW  r"   re   r   rX  r   r   r   r   r   rY  C  r   rY  c                   @   r9  )DeliveryManListr   r  r   r   N)r   r   r   DeliveryManr"   re   r  r   DeliveryManSerializerr   r   r  rj  rk  r   r
  r  rl  r   r   r   r   rZ  G  r=  rZ  c                   @   r   )DeliveryManDetailN)	r   r   r   r[  r"   re   r   r\  r   r   r   r   r   r]  O  r   r]  c                   @   s,   e Zd Zej ZeZe	Z
egZddgZdS )DeliveryManPhoneListr  r  N)r   r   r   DeliveryManPhoner"   re   r   DeliveryManPhoneSerializerr   r   r  r   r
  r  r   r   r   r   r^  S  s    
r^  c                   @   r   )DeliveryManPhoneDetailN)	r   r   r   r_  r"   re   r   r`  r   r   r   r   r   ra  Z  r   ra  c                   @   r  )DeliveryManPriceListr   r  r  N)r   r   r   r  r"   re   r  r   DeliveryManPriceSerializerr   r   r  r   r
  r  r   r   r   r   rb  ^  r  rb  c                   @   r   )DeliveryManPriceDetailN)	r   r   r   r  r"   re   r   rc  r   r   r   r   r   rd  e  r   rd  c                   @   r  )ShippingItemListr  r   N)r   r   r   ShippingItemr"   re   r  r   ShippingItemSerializerr   r   r  r   r
  r  r   r   r   r   re  i  r  re  c                   @   r   )ShippingItemDetailN)	r   r   r   rf  r"   re   r   rg  r   r   r   r   r   rh  p  r   rh  c                   @   6   e Zd ZejdddZejdddZG dd dZdS )ShippingAddressFilterr   r$  r%  r'  c                   @   r)  )zShippingAddressFilter.Meta)shippingItemIdtrackNumberr  r  r3  r4  N)r   r   r   ShippingAddressr/  r0  r   r   r   r   r1  x  r   r1  Nr   r   r   r   r2  r3  r4  r1  r   r   r   r   rj  t      rj  c                   @   s&   e Zd ZeZeZegZe	Z
dd ZdS )ShippingAddressListc                 C   s   | j jd}| j jd}| j jd}|d ur'tjj|djdddS |d urY|dkrAtjjd	d
jddjdddS |dkrWtjjdd
jddjdddS d S |d urktjj|djdddS tjjdddS )Nrl  r  notAssignedDeliveryMan)rl  F)Z+shippingItemId__purchaseOrderId__isCanceled-shippingItemIdrh   T)ZdeliveryManId__isnull r  r  )rs   rt   ru   rm  r"   r#   r  r   )r'   rl  r  rq  r   r   r   r     s   $$z ShippingAddressList.get_querysetN)r   r   r   ShippingAddressSerializerr   r   r  r   r
  rj  r7  r   r   r   r   r   rp    s    rp  c                   @       e Zd Zej dZeZ	dS )ShippingAddressDetailrr  N)
r   r   r   rm  r"   re   r  r   rt  r   r   r   r   r   rv        rv  c                   @   r  )	TrackListr  shippingAddressIdrB  N)r   r   r   Trackr"   re   r  r   TrackSerializerr   r   r  r   r
  r  r   r   r   r   rx    r  rx  c                   @   r   )TrackDetailN)	r   r   r   rz  r"   re   r   r{  r   r   r   r   r   r|    r   r|  c                   @   s2   e Zd Zej dZeZ	e
gZddgZeZdS )SalesOrderListr  r`   rk  N)r   r   r   
SalesOrderr"   re   r  r   SalesOrderSerializerr   r   r
  r  r   r  r   r   r   r   r}    s    r}  c                   @   r   )SalesOrderDetailN)	r   r   r   r~  r"   re   r   r  r   r   r   r   r   r    r   r  c                   @   sv   e Zd ZejdddZejdddZejdddZejdddZejdddZ	ej
d	d
ej dZG dd dZdS )
ItemFilterr  r$  r%  item_sku__amountlter8   r<   gtr   r   r   to_field_namer   c                   @   r)  )zItemFilter.Meta)r   r   r5   rQ   rW   r-   r   r`   r6   r  discount_gtr:   r;   amountr  linkIdN)r   r   r   rB   r/  r0  r   r   r   r   r1    r   r1  N)r   r   r   r   NumberFilterr  r  r:   r;   r  ModelMultipleChoiceFilterr!   r"   re   r   r1  r   r   r   r   r    s    r  c                   @   s2   e Zd ZeZejegZe	Z
g dZeZdd ZdS )ItemList)Zitem_itemlanguage__namer   r   c                 C   s   | j jd}|dkrtjd S tj 	 }d}|d ur#|j
}|dkr1tjdjddS tjjdd	}| d
krOtjdjddj|d
 jdS d S )Nr   rh   r   FTr  r4   active)r   r   )Z7supplierId__supplier_subscription__subscriptionStatusId)rs   rt   ru   rB   r"   r  rG   r   re   first#isEnableFreeSubscriptionForSupplierr#   r  r   r   )r'   r   ZselectedSettingsZisEnableFreeSubscriptionZ
statusListr   r   r   r     s   "zItemList.get_querysetN)r   r   r   ItemSerializerr   rj  rk  r   r
  r  r7  rl  r   r  r   r   r   r   r   r    s    
r  c                   @   r   )
ItemDetailN)	r   r   r   rB   r"   re   r   r  r   r   r   r   r   r    r   r  c                   @   r  )ItemLanguageListitemIdr   N)r   r   r   ItemLanguager"   re   r   ItemLanguageSerializerr   r   r
  r  r   r   r   r   r    r  r  c                   @   r   )ItemLanguageDetailN)	r   r   r   r  r"   re   r   r  r   r   r   r   r   r    r   r  c                   @   s*   e Zd Zej ZeZe	gZ
dgZeZdS )FeatureBulletListr  N)r   r   r   FeatureBulletr"   re   r   FeatureBulletSerializerr   r   r
  r  r   r  r   r   r   r   r    s    
r  c                   @   r   )FeatureBulletDetailN)	r   r   r   r  r"   re   r   r  r   r   r   r   r   r    r   r  c                   @   r  )FeatureBulletLanguageListfeatureBulletIdr   N)r   r   r   FeatureBulletLanguager"   re   r   FeatureBulletLanguageSerializerr   r   r
  r  r   r   r   r   r    r  r  c                   @   r   )FeatureBulletLanguageDetailN)	r   r   r   r  r"   re   r   r  r   r   r   r   r   r    r   r  c                   @   r  )EligibleListr  rV  N)r   r   r   Eligibler"   re   r   EligibleSerializerr   r   r
  r  r   r   r   r   r  
  r  r  c                   @   r   )EligibleDetailN)	r   r   r   r  r"   re   r   r  r   r   r   r   r   r    r   r  c                   @   sR   e Zd ZejdddZejdddZejdddZejdddZG dd	 d	Z	d
S )	SKUFilterr  r  r%  r|   r$  r}   r  c                   @   r)  )zSKUFilter.Meta)r   r  r:   r;   r  r  ZitemId__departmentIdZitemId__brandIdZitemId__supplierIdZitemId__newArrivalIdZitemId__isTopZitemId__isFavoriteZitemId__isApprovedN)r   r   r   r~   r/  r0  r   r   r   r   r1    r   r1  N)
r   r   r   r   r  r  r:   r;   r  r1  r   r   r   r   r    s    r  c                   @   sD   e Zd Zej dZeZ	e
ZejegZeZg dZdddZdS )SKUListr  )r   r   r   Nc              
   C   sh  | j jd}d }|d ur| j jd}t|d}t|}t	|}t }	|j
|	| d | j jd}
t|	d|
|	 d d|  d}| j jd	}| j jd
}| j jd}| j jd}| j jd}| j jd}| j jd}tjjt|d}tj }d}|d ur|jd }|t| t| }|j
||||||||d}|t| t|j }||_|
  d S | j jd	}| j jd
}| j jd}| j jd}| j jd}| j jd}| j jd}tjjt|d}tj }d}|d ur
|jd }|t| t| }|j
|||||||d}|t| t|j }||_|
  d S )Nr   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  )rs   r&   ru   r   r   r   r   r   r   r   r   r   r   r   rB   r"   rS   r~   lastr   r   )r'   r   r   r   r   r   r&   r   r   r   r   ZcurrentNamer|   r}   r  r   r   r  r  ZlastSKUZnewIdskuNamer   r   r   r   5  s   







zSKUList.perform_creater   )r   r   r   r~   r"   re   r  r   SKUSerializerr   r{   r  rj  rk  r   r
  r  r7  rl  r   r   r   r   r   r  -  s    
r  c                   @   r   )	SKUDetailNc              
   C   s  | j jd}|d ur| j jd}| j jd}t|d}t|}t	|}t }	|j
|	| d | j jd}
t|	d|
|	 d d|  d	}| j jd
}| j jd}|d urtjtd t| d t| d | d | rttd t| d t| d | d |  | j jd}| j jd}| j jd}| j jd}| j jd}| j jd}tjjt|d}|j
||||||||d d S |
  d S )Nr   r   r   r   r   r   r   r   r   r   r  z/items/item_z/sku_z/images/r   r   r|   r}   r  r   r   r   )r   r   r|   r}   r  r   r   r  )rs   r&   ru   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rS   r   rB   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     sF   

42
	zSKUDetail.perform_updater   )
r   r   r   r~   r"   re   r   r  r   r   r   r   r   r   r    r   r  c                   @   rZ  )SKUOptionListskuIdN)r   r   r   	SKUOptionr"   re   r   SKUOptionSerializerr   r   r
  r  r   r   r   r   r    r_  r  c                   @   r   )SKUOptionDetailN)	r   r   r   r  r"   re   r   r  r   r   r   r   r   r    r   r  c                   @   r  )SKUOptionLanguageListskuOptionIdr   N)r   r   r   SKUOptionLanguager"   re   r   SKUOptionLanguageSerializerr   r   r
  r  r   r   r   r   r    r  r  c                   @   r   )SKUOptionLanguageDetailN)	r   r   r   r  r"   re   r   r  r   r   r   r   r   r    r   r  c                   @   rZ  )SKUDescriptionListr  N)r   r   r   SKUDescriptionr"   re   r   SKUDescriptionSerializerr   r   r
  r  r   r   r   r   r    r_  r  c                   @   r   )SKUDescriptionDetailN)	r   r   r   r  r"   re   r   r  r   r   r   r   r   r    r   r  c                   @   r  )SKUDescriptionLanguageListskuDescriptionIdr   N)r   r   r   SKUDescriptionLanguager"   re   r    SKUDescriptionLanguageSerializerr   r   r
  r  r   r   r   r   r    r  r  c                   @   r   )SKUDescriptionLanguageDetailN)	r   r   r   r  r"   re   r   r  r   r   r   r   r   r    r   r  c                   @   r  )ItemSubscriptionListr  r  r  N)r   r   r   ItemSubscriptionr"   re   r  r   ItemSubscriptionSerializerr   r   r  r   r
  r  r   r   r   r   r    r  r  c                   @   r   )ItemSubscriptionDetailN)	r   r   r   r  r"   re   r   r  r   r   r   r   r   r    r   r  c                   @   s.   e Zd Zej dZeZ	e
gZddgZdS )ShoppingCartItemListr  shoppingCartIdr  N)r   r   r   ShoppingCartItemr"   re   r  r   ShoppingCartItemSerializerr   r   r
  r  r   r   r   r   r    s
    r  c                   @   r   )ShoppingCartItemDetailN)	r   r   r   r  r"   re   r   r  r   r   r   r   r   r    r   r  c                   @   r  )PurchaseShippingItemListr   rk  r  N)r   r   r   PurchaseShippingItemr"   re   r  r   PurchaseShippingItemSerializerr   r   r  r   r
  r  r   r   r   r   r    r  r  c                   @   r   )PurchaseShippingItemDetailN)	r   r   r   r  r"   re   r   r  r   r   r   r   r   r    r   r  c                   @   ri  )RequestReturnFilterr   r$  r%  r'  c                   @   r)  )zRequestReturnFilter.Meta)r9  purchaseShippingItemIdZ&purchaseShippingItemId__shippingItemIdZreturnStatusId__keyNamer3  r4  r   N)r   r   r   RequestReturnr/  r0  r   r   r   r   r1  	  r   r1  Nrn  r   r   r   r   r  	  ro  r  c                   @   s.   e Zd Zej dZeZ	e
ZegZeZdS )RequestReturnListr  N)r   r   r   r  r"   re   r  r   RequestReturnSerializerDetailr   r   r  r   r
  r  r7  r   r   r   r   r  	  s    r  c                   @   r   )RequestReturnDetailN)	r   r   r   r  r"   re   r   r  r   r   r   r   r   r  	  r   r  c                   @   r  )SalesOrderItemListr   salesOrderIdr  N)r   r   r   SalesOrderItemr"   re   r  r   SalesOrderItemSerializerr   r   r  r   r
  r  r   r   r   r   r  	  r  r  c                   @   r   )SalesOrderItemDetailN)	r   r   r   r  r"   re   r   r  r   r   r   r   r   r  %	  r   r  c                   @   r  )FavoriteListr   r  r  N)r   r   r   Favoriter"   re   r  r   FavoriteSerializerr   r   r  r   r
  r  r   r   r   r   r  )	  r  r  c                   @   r   )FavoriteDetailN)	r   r   r   r  r"   re   r   r  r   r   r   r   r   r  0	  r   r  c                   @   r  )ClientItemRateReviewListr  r  r  N)r   r   r   ClientItemRateReviewr"   re   r  r   ClientItemRateReviewSerializerr   r   r  r   r
  r  r   r   r   r   r  4	  r  r  c                   @   r   )ClientItemRateReviewDetailN)	r   r   r   r  r"   re   r   r  r   r   r   r   r   r  ;	  r   r  c                   @   r  )ClientSupplierRateReviewListr  r  r`   N)r   r   r   ClientSupplierRateReviewr"   re   r  r   "ClientSupplierRateReviewSerializerr   r   r  r   r
  r  r   r   r   r   r  ?	  r  r  c                   @   r   )ClientSupplierRateReviewDetailN)	r   r   r   r  r"   re   r   r  r   r   r   r   r   r  F	  r   r  c                   @   r  )FeedbackListr  r  N)r   r   r   Feedbackr"   re   r  r   FeedbackSerializerr   r   r  r   r
  r  r   r   r   r   r  J	  r  r  c                   @   ru  )FeedbackDetailr  N)
r   r   r   r  r"   re   r  r   r  r   r   r   r   r   r  Q	  rw  r  c                   @   r  )RequestListr  r  isDoneN)r   r   r   Requestr"   re   r  r   RequestSerializerr   r   r  r   r
  r  r   r   r   r   r  U	  r  r  c                   @   r   )RequestDetailN)	r   r   r   r  r"   re   r   r  r   r   r   r   r   r  \	  r   r  c                   @   r   )PolicyTypeListN	r   r   r   
PolicyTyper"   re   r   ZPolicyTypeSerializerr   r   r   r   r   r  `	  r   r  c                   @   r   )PolicyTypeDetailNr  r   r   r   r   r  d	  r   r  c                   @   s0   e Zd Zejddej dZG dd dZ	dS )PolicyHeaderFilterZpolicyTypeId__namer   r  c                   @   s   e Zd ZeZddgZdS )zPolicyHeaderFilter.MetapolicyTypeIdpolicyTypeNameN)r   r   r   PolicyHeaderr/  r0  r   r   r   r   r1  j	  s
    r1  N)
r   r   r   r   r  r  r"   re   r  r1  r   r   r   r   r  h	  s    r  c                   @   s$   e Zd Zej ZeZe	gZ
eZdS )PolicyHeaderListN)r   r   r   r  r"   re   r   PolicyHeaderSerializerr   r   r
  r  r7  r   r   r   r   r  q	  s
    
r  c                   @   r   )PolicyHeaderDetailN)	r   r   r   r  r"   re   r   r  r   r   r   r   r   r  x	  r   r  c                   @   r  )PolicyHeaderLanguageListpolicyHeaderIdr   N)r   r   r   PolicyHeaderLanguager"   re   r   PolicyHeaderLanguageSerializerr   r   r
  r  r   r   r   r   r  |	  r  r  c                   @   r   )PolicyHeaderLanguageDetailN)	r   r   r   r  r"   re   r   r  r   r   r   r   r   r  	  r   r  c                   @   rZ  )PolicyDescriptionListr  N)r   r   r   PolicyDescriptionr"   re   r   PolicyDescriptionSerializerr   r   r
  r  r   r   r   r   r  	  r_  r  c                   @   r   )PolicyDescriptionDetailN)	r   r   r   r  r"   re   r   r  r   r   r   r   r   r  	  r   r  c                   @   r  )PolicyDescriptionLanguageListpolicyDescriptionIdr   N)r   r   r   PolicyDescriptionLanguager"   re   r   #PolicyDescriptionLanguageSerializerr   r   r
  r  r   r   r   r   r  	  r  r  c                   @   r   )PolicyDescriptionLanguageDetailN)	r   r   r   r   r"   re   r   r  r   r   r   r   r   r  	  r   r  c                   @   ri  )RechargeFilterr   r$  r%  r  c                   @   r)  )zRechargeFilter.Meta)taxesIdr-  rM  r   	startDateendDateN)r   r   r   r   r/  r0  r   r   r   r   r1  	  r   r1  Nr   r   r   r   r2  r  r  r1  r   r   r   r   r  	  ro  r  c                   @   8   e Zd Zej dZeZ	e
ZejegZeZdgZdS )RechargeListr  r   N)r   r   r   r   r"   re   r  r   r   r   r   r  rj  rk  r   r
  r  r7  rl  r   r   r   r   r	  	      

r	  c                   @   r   )RechargeDetailN)	r   r   r   r   r"   re   r   r   r   r   r   r   r   r  	  r   r  c                   @   ri  )PaymentFilterr   r$  r%  r  c                   @   r)  )zPaymentFilter.Meta)r   r   subscriptionIditemSubscriptionIdr  r  r  r   r  r   r  N)r   r   r   r   r/  r0  r   r   r   r   r1  	  r   r1  Nr  r   r   r   r   r  	  ro  r  c                   @   r  )PaymentListr  descriptionDetailN)r   r   r   r   r"   re   r  r   PaymentSerializerr   r   r  rj  rk  r   r
  r  r7  rl  r   r   r   r   r  	  r
  r  c                   @   r   )PaymentDetailN)	r   r   r   r   r"   re   r   r  r   r   r   r   r   r  	  r   r  c                   @   s0   e Zd ZeZeZeje	gZ
eZdgZdd ZdS )SupplierPaymentListr  c                 C   sH   | j jd}|d urtjt|dt|dB d}|S tddi)Nr`   r   r   r  r   r   )	rs   rt   ru   r   r"   r#   r
   r  r   )r'   r`   resultr   r   r   r   	  s
   "z SupplierPaymentList.get_querysetN)r   r   r   r  r   r   r  rj  rk  r   r
  r  r7  rl  r   r   r   r   r   r  	  s    
r  c                   @   s2   e Zd Zej dZeZ	e
ZejgZdgZdS )AccessoryListr   r   N)r   r   r   	Accessoryr"   re   r  r   AccessorySerializerr   r   r  rj  rk  r
  rl  r   r   r   r   r  	  s    
r  c                   @   r   )AccessoryDetailN)	r   r   r   r  r"   re   r   r  r   r   r   r   r   r  	  r   r  c                   @   s6   e Zd Zej dZeZ	e
ZejegZddgZdS )AccessoryTransactionListr  r   accessoryIdN)r   r   r   AccessoryTransactionr"   re   r  r   AccessoryTransactionSerializerr   r   r  rj  rk  r   r
  r  r   r   r   r   r  	  s    
r  c                   @   r   )AccessoryTransactionDetailN)	r   r   r   r  r"   re   r   r  r   r   r   r   r   r  	  r   r  c                   @   r9  )EmployeeListr   r  r   fullNameN)r   r   r   Employeer"   re   r  r   EmployeeSerializerr   r   r  rj  rk  r   r
  r  rl  r   r   r   r   r  	  r=  r  c                   @   r   )EmployeeDetailN)	r   r   r   r   r"   re   r   r!  r   r   r   r   r   r"  
  r   r"  c                   @   r   )LinkTypeListN	r   r   r   LinkTyper"   re   r   ZLinkTypeSerializerr   r   r   r   r   r#  
  r   r#  c                   @   r   )LinkTypeDetailNr$  r   r   r   r   r&  
  r   r&  c                   @   r   )LinkStatusListN	r   r   r   
LinkStatusr"   re   r   ZLinkStatusSerializerr   r   r   r   r   r'  
  r   r'  c                   @   r   )LinkStatusDetailNr(  r   r   r   r   r*  
  r   r*  c                   @   r  )LinkStatusLanguageListlinkStatusIdr   N)r   r   r   LinkStatusLanguager"   re   r   LinkStatusLanguageSerializerr   r   r
  r  r   r   r   r   r+  
  r  r+  c                   @   r   )LinkStatusLanguageDetailN)	r   r   r   r-  r"   re   r   r.  r   r   r   r   r   r/   
  r   r/  c                   @   s(   e Zd ZejdddZG dd dZdS )ExternalLinkFilterr   r'  r%  c                   @   r)  )zExternalLinkFilter.Meta)r,  Z&externallink_externallinklanguage__urlr   Zexternallink_item__departmentIdN)r   r   r   Externalinkr/  r0  r   r   r   r   r1  )
  r   r1  N)r   r   r   r   r2  r   r1  r   r   r   r   r0  &
  s    r0  c                   @   s8   e Zd Zej dZeZ	e
ZejegZeZdgZdS )ExternalLinkListr   N)r   r   r   r1  r"   re   r  r   ExternalinkSerializerr   r   r  rj  rk  r   r
  r0  r7  rl  r   r   r   r   r2  2
  r
  r2  c                   @   ru  )ExternalLinkDetailr   N)
r   r   r   r1  r"   re   r  r   r3  r   r   r   r   r   r4  :
  rw  r4  c                   @   r  )ExternalLinkLanguageListexternalLinkIdr   N)r   r   r   ExternalLinkLanguager"   re   r   ExternalLinkLanguageSerializerr   r   r
  r  r   r   r   r   r5  >
  r  r5  c                   @   r   )ExternalLinkLanguageDetailN)	r   r   r   r7  r"   re   r   r8  r   r   r   r   r   r9  D
  r   r9  )r   r   r   PILr   r   r   rm_gallery.modelsZrm_gallery.serializerZdjango_filters.rest_frameworkr   r   r   rj  django_filtersZrest_framework.responser	   django.db.modelsr
   django.core.files.uploadedfiler   rest_framework.exceptionsr   Zrm_gallery_api.settingsr   ZPageNumberPaginationr   r   r{   ZListAPIViewr   ZListCreateAPIViewr   ZRetrieveUpdateDestroyAPIViewr   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r"  r#  r'  r(  r+  r,  r/  r0  r3  r4  r7  r8  r<  r=  r@  rA  rE  rG  rK  rL  rP  rQ  rT  rU  rY  r[  r`  ra  re  rg  rn  ro  rs  rt  rw  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  r  r  r  r  r  r  r  r  r  r  r  r  r!  r"  	FilterSetr#  r6  r8  r:  r>  r?  rB  rC  rF  rG  rU  rV  rY  rZ  r]  r^  ra  rb  rd  re  rh  rj  rp  rv  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  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/  r0  r2  r4  r5  r9  r   r   r   r   <module>   s      0 @	#*


	 :663!4^.	