o
    xh>                     @   s8  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Zd dl	T d dl
T d dlT d dlT d dlm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mZ G dd dZG dd dejZG dd deZG dd deZG dd dZG dd dZG dd deZG dd deZ dS )    )render)generics)View)JsonResponseN)*)datetime)
HTMLParser)InMemoryUploadedFile)Image)HttpResponsec                   @   s   e Zd Zdd Zdd ZdS )ParseRedbubbleProductURLc                 C   s
   || _ d S N)url)selfr    r   s/Users/waleedhassanin/Documents/GitHub/snow_flake_back_end_deploy/snow_flake_api/snow_flake_external_links/views.py__init__   s   
z!ParseRedbubbleProductURL.__init__c                 C   sD   | j d}|d d}i }|d |d< |d |d< | j |d< |S )	Nzhttps://www.redbubble.com/i/   /r   category   Z	productIdZ
productURL)r   split)r   ZstringList1ZstringList2Z
productMapr   r   r   getProductURL   s   
z&ParseRedbubbleProductURL.getProductURLN)__name__
__module____qualname__r   r   r   r   r   r   r      s    r   c                   @   s   e Zd Zej ZeZdS )RedbubbleDepartmentListN)	r   r   r   RedbubbleDepartmentobjectsallquerysetRedbubbleDepartmentSerializerserializer_classr   r   r   r   r   #   s    
r   c                   @   s<   e Zd Zg Zg Zdd Zdd Zdd Zdd Zd	d
 Z	dS )RedbubbleProductListParserc                 C   sV   d}|D ]$}d|v rd|v r|d7 }d|v rd|v r|d7 }|dkr(| j | qd S )Nr   classzstyles__link--3QJ5Nr   elementar   )attrListappend)r   attrscountir   r   r   checkProductListLink.   s   z/RedbubbleProductListParser.checkProductListLinkc                 C   s>   | j D ]}|D ]}d|v rt|d }| j|  qqd S )Nhrefr   )r'   r   productUrlMapListr(   r   )r   r+   jZparseUrlr   r   r   getProductURLFromList8   s   
z0RedbubbleProductListParser.getProductURLFromListc                 C      |dkr|  | d S d S )Nr&   )r,   r   tagr)   r   r   r   handle_starttag?      z*RedbubbleProductListParser.handle_starttagc                 C      d S r   r   r   r3   r   r   r   handle_endtagC      z(RedbubbleProductListParser.handle_endtagc                 C   r6   r   r   )r   datar   r   r   handle_dataG   r9   z&RedbubbleProductListParser.handle_dataN)
r   r   r   r'   r.   r,   r0   r4   r8   r;   r   r   r   r   r#   )   s    
r#   c                   @      e Zd Zdd ZdS )GetRedbubbleProductListPageViewc                 O   sf   t |j}i }d|v r)t }|j  |j  ||d  |  |j|d< d|d< t	|ddS )NhtmlPageZproductUrlListF	isSuccesssafe)
jsonloadsbodyr#   r.   clearr'   feedr0   r   r   requestargskwargsjsonDataZ
urlMapListparserr   r   r   postM   s   


z$GetRedbubbleProductListPageView.postNr   r   r   rM   r   r   r   r   r=   L       r=   c                   @   s   e 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d Zdd Zdd Zdd Zdd  Zd!S )"ConvertDatac                 C   s  d}i }|  }|dd}|dd}t|}|d t| }i }||d< ||d< d|d< d|d< tjj|d	}	|	 d
krPt|d}
|
d urP|
	 rP|

  ||d< d|d< t |d< t |d< tjj|d	}d }| d
krw|d
 }d }|d urt||d|jid}nt|d}d }|d ur|	 r|
  |jd }i }|d ur||d< |j|d< ||d< tjj|dj|jd}d }| d
kr|d
 }|j|d< nd|d< |d }d }|d
krt||d}nt|d}|d ur|	 r|
  d}|r|S d S )NF-_ keyNamename	isClothesisAccessoriesrT   r   r:   T	isVisiblecreatedDateupdatedDate
languageIdr:   contextiddepartmentId)ra   r]   )lowerreplacelenstrr   r   filter__len__r!   is_validsaver   now
DepartmentDepartmentSerializerr`   r:   DepartmentLanguageDepartmentLanguageSerializer)r   ZdepartmentNameselectedLanguageisValidZdepartmentMap
stringData	stringLenrT   ZtikTokDepartmentMapZredbubbleDepartmentListZredbubbleDepartmentSerializerZdepartmentListZselectedDepartmentZdepartmentSerializerZdepIdZdepartmentLanguageMapselectedLangListZdepartmentLanguageZ	depLangIdZdepartmentLanguageSerializerr   r   r   saveDepartment`   s   



zConvertData.saveDepartmentc                 C   s  d}i }|  }|dd}|dd}t|}|d t| }||d< d|d< t |d< t |d	< tjj|d
}d }	|	 dkrG|d }	d }
|	d urXt
|	|d|jid}
nt
|d}
d }|
d ur|
 rk|
  |
jd }i }|d ur||d< |j|d< ||d< tjj|dj|jd}d }|	 dkr|d }|j|d< nd|d< |d }d }|dkrt||d}nt|d}|d ur| r|  d}|r|S d S )NFrQ   rR   rS   rT   TrZ   r[   r\   rX   r   r]   r^   rY   r`   rU   brandId)rw   rb   rc   )rd   re   rf   rg   r   rl   Brandr   rh   ri   BrandSerializerr`   rj   rk   r:   BrandLanguageBrandLanguageSerializer)r   Z	brandNamerq   rr   ZbrandMaprs   rt   rT   Z	brandListZselectedBrandZbrandSerializerrw   ZbrandLanguageMapru   ZbrandLanguageZbrandLangIdZbrandLanguageSerializerr   r   r   	saveBrand   sn   


zConvertData.saveBrandc                 C   s   t jj|d}d }| dkr|d }i }||d< ||d< d|d< d|d< d|d	< t |d
< t |d< |j|d< d }|d urL|j|d< t||d}nt|d}|d urb| r]|	  |j
d S d S )N)emailr   rU   r}    passwordT
isVerifiedisFreeSubscriptionUsedr[   r\   selectedLanguageIdr`   rY   )Supplierr   rh   ri   r   rl   r`   SupplierSerializerrj   rk   r:   )r   rU   r}   rq   supplierListZselectedSupplierZsupplierMapZsupplierSerializerr   r   r   saveSupplier   s.   



zConvertData.saveSupplierc                 C   s   t j }|d ur|jS d S r   )
NewArrivalr   lastr`   )r   selectedr   r   r   getNewArrival  s   
zConvertData.getNewArrivalc                 C   s  t jj|d d}d }| dkr|d }d }i }|d urd|j|d< |j|d< |j|d< |j|d< |j|d< |j	|d< |j
|d	< |j|d
< |d |d< |d |d< |d |d< |d |d< t||d}nC|d |d< d|d< d|d< d|d< d|d< d|d< t |d	< t |d
< |d |d< |d |d< |d |d< |d |d< t|d}|d ur| r|  | |jd |d | | |jd |d | | |jd |d | d S d S d S )NrT   rX   r   
isApprovedisTop
isFavoriteisElectronic
totalViewsr[   r\   ra   rw   
supplierIdnewArrivalIdrY   TFr`   titlefeatureBulletListMap
skuListMap)Itemr   rh   ri   rT   r   r   r   r   r   r[   r\   ItemSerializerr   rl   rj   rk   saveItemLanguageListr:   saveFeatureBulletListsaveSKUList)r   rB   rq   ZselectedItemListZselectedItemZitemSerializeritemMapr   r   r   saveItem!  sR   








zConvertData.saveItemc                 C   s   t t j|S r   )uuiduuid5NAMESPACE_URL)r   sentencer   r   r   sentence_to_uuidP  s   zConvertData.sentence_to_uuidc           	      C   s   t jj|d}d }|D ]}|jj|jkr|} nqi }||d< ||d< ||d< |j|d< d }|d ur>|j|d< t||d}nt|d}|d urQ| rS|  d S d S d S )NitemIdrU   descriptionr   r]   r`   rY   )ItemLanguager   rh   r]   r`   ItemLanguageSerializerrj   rk   )	r   r   ZitemNamerq   ZselectedItemLanguageListr   currentselectedMapZitemLanguageSerializerr   r   r   r   S  s4   

z ConvertData.saveItemLanguageListc                 C   s   t jj|d}|D ]s}| |d }d}|D ]}|j| kr#d} nqi }	d }
|rE|j|	d< |j|	d< t	 |	d< ||	d< t
||	d	}
nd
|	d< | |	d< t	 |	d< t	 |	d< ||	d< t
|	d	}
|
d ur||
 r||
  | |
jd |d | q	d S )Nr   r   FTr`   r[   r\   r   rY   r   rT   )FeatureBulletr   rh   r   rT   __str__r`   r[   r   rl   FeatureBulletSerializerrj   rk   saveFeatureBulletLanguageListr:   )r   r   r   rq   featureBulletListfeatureBulletMapZserial_uuidZisExistsZfeatureBulletZfeatureBulletNewMapZfeatureBulletSerializerr   r   r   r   o  s:   


z!ConvertData.saveFeatureBulletListc           	      C   s   t jj|d}d }|D ]}|jj|jkr|} nqd }i }|d ur;|j|d< ||d< |j|d< |j|d< t||d}n||d< ||d< |j|d< t|d}|d ur[| r]|  d S d S d S )N)featureBulletIdr`   r   r   r]   rY   )	FeatureBulletLanguager   rh   r]   r`   r   FeatureBulletLanguageSerializerrj   rk   )	r   r   r   rq   ZfeatureBulletLanguageListr   r   ZfeatureBulletLanguageSerializerr   r   r   r   r     s0   




z)ConvertData.saveFeatureBulletLanguageListc                 C   s  t jj|d}|D ]}d }|d }|D ]}|j|d kr |} nqd }	i }
|d urt|j|
d< |j|
d< |j|
d< |d |
d< |d d |
d< |j|
d< |j|
d< |j|
d	< |j	|
d
< |j
|
d< |j|
d< |j|
d< ||
d< t||
d}	nC|d |
d< |d |
d< |d |
d< |d d |
d< d|
d< d|
d< d|
d	< d|
d
< d|
d< t |
d< t |
d< ||
d< t|
d}	|	d ur|	 r|	  | |	jd |d | | |	jd |d | | |	jd |d  q	d S )Nr   pricer`   rT   rU   amountdiscountr   r   isMostDiscountisNewArrivalr[   r\   r   rY      FskuOptionListskuImageList)SKUr   rh   rT   r`   rU   r   r   r   r   r   r[   r\   SKUSerializerr   rl   rj   rk   saveSKUOptionListr:   saveSKUDescriptionListsaveSKUImageList)r   r   Z
skuNewListrq   Z
skuOldListZskuNewZselectedOldr   ZskuOldZskuSerializerskuMapr   r   r   r     s^   










zConvertData.saveSKUListc              	   C   s:  t jj|d}|D ]}d }|D ]}|j|d kr|}qd }i }	|d urK|j|	d< |j|	d< |j|	d< |j|	d< ||	d< |d dkrDd	|_t||	d
}n%|d |	d< t	
 |	d< t	
 |	d< ||	d< |d dkrkd	|	d< t|	d
}|d ur| r|  d}
d|v r|d }
| |jd |d |d |jd |
| q	d S NskuIdskuOptionKeyNamer`   rT   r[   r\   r   Z	bodyColorTrY   isColorr~   skuOptionColorskuOptionTitleskuOptionValue)	SKUOptionr   rh   rT   r`   r[   r\   r   SKUOptionSerializerr   rl   rj   rk   saveSKUOptionLanguageListr:   )r   r   ZnewSKUOptionListrq   ZoldSKUOptionListZnewSKUOptionr   ZoldSKUOptionZskuOptionSerializerskuOptionMap	colorNamer   r   r   r     sD   




(zConvertData.saveSKUOptionListc                 C   s6  t jj|d}d }|D ]}	|	jj|jkr|	} nqd }
i }|d ur\|j|d< ||d< ||d< t|dkrAd|  |d< ||d< n||d< ||d< |jj|d< |jj|d	< t||d
}
n-||d< t|dkrsd|  |d< ||d< n||d< ||d< |j|d< ||d	< t|d
}
|
d ur|
	 r|

  d S d S d S )N)skuOptionIdr`   r   valueTZ0xFFr   r]   r   rY   )SKUOptionLanguager   rh   r]   r`   boolupperr   SKUOptionLanguageSerializerrj   rk   )r   r   r   r   r   r   rq   skuOptionLanguageListr   ZskuOptionLanguageZskuOptionLanguageSerializerZskuOptionLanguageMapr   r   r   r     sF   




z%ConvertData.saveSKUOptionLanguageListc                 C   s2  t jj|d}|D ]}d }|D ]}|j|d kr|}qd }i }	|d urK|j|	d< |j|	d< |j|	d< |j|	d< ||	d< |d dkrDd	|_t||	d
}n%|d |	d< t	
 |	d< t	
 |	d< ||	d< |d dkrkd	|	d< t|	d
}|d ur| r|  d}
d|v r|d }
| |jd |d |d |
| q	d S r   )SKUDescriptionr   rh   rT   r`   r[   r\   r   SKUDescriptionSerializerr   rl   rj   rk   saveSKUDescriptionLanguageListr:   )r   r   ZnewSKUDescriptionListrq   ZoldSKUDescriptionListZnewSKUDescriptionr   ZoldSKUDescriptionZskuDescriptionSerializerZskuDescriptionMapr   r   r   r   r   +  sD   




 z"ConvertData.saveSKUDescriptionListc                 C   s   t jj|d}d }|D ]}|jj|jkr|} nqd }	i }
|d urF|j|
d< ||
d< ||
d< |f|
d< |jj|
d< |jj|
d< t||
d}	n||
d< ||
d< ||
d< |j|
d< ||
d< t|
d}	|	d urn|	 rp|	  d S d S d S )	N)skuDescriptionIdr`   r   r   r   r]   r   rY   )	SKUDescriptionLanguager   rh   r]   r`   r    SKUDescriptionLanguageSerializerrj   rk   )r   r   r   r   r   rq   skuDescriptionLanguageListr   ZskuDescriptionLanguageZ skuDescriptionLanguageSerializerZskuDescriptionLanguageMapr   r   r   r   P  s8   



z*ConvertData.saveSKUDescriptionLanguageListc           	      C   s   t jj|d}|D ]o}d }|D ]}|j|d kr|} nqd }i }|d urO|j|d< |j|d< |j|d< |j|d< |d |d< |j|d< |j|d< t	||}n!|d |d< d |d< d |d< |d |d< d |d< ||d< t	||}|
 rx|  q	d S )	Nr   rT   r`   fileName	extensionimagesourcer   )SKUImager   rh   rT   r`   r   r   r   r   SKUImageSerializerrj   rk   )	r   r   ZnewSKUImageListZoldSKUImageListZnewSKUImager   ZoldSKUImageZskuImageSerializerZskuImageMapr   r   r   r   n  s<   






zConvertData.saveSKUImageListc                 C   s   d }d }d }d }t jjdd}d }| dkr|d }d|v r-| |d |}| d|}| dd|}|  }|d ur^|d ur^|d ur^|d ur^||d< ||d	< ||d
< ||d< | || d S )Nen)languageCoder   r   zSnowflake RedbubblezRedbubble Snowflakezsnowflakecodev12022@gmail.comra   rw   r   r   )	Languager   rh   ri   rv   r|   r   r   r   )r   rB   ra   rw   r   r   languageListrq   r   r   r   convert  s(    zConvertData.convertN)r   r   r   rv   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rP   ^   s"    VI/ 5$)% rP   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
RedbubbleProductDetailDatac                 C   s$   |D ]}|d |d kr dS qdS )Nr   TFr   )r   skuOptionMapListr   r   r   r   r   checkIfSKUOptionExists  s
   z1RedbubbleProductDetailData.checkIfSKUOptionExistsc                 C   s|   |D ]9}d|v r;d|v r;d|v r;|d dkr;|d |kr;|d }|D ]}d|v r:d|v r:|d dkr:|d     S q"qdS )NrU   r   
attributesconfigurationdefaultTextr~   r   )r   ZconfigurationSetListr   r   subAttributeListsubAttributer   r   r   getSKUOptionTitle  s   z,RedbubbleProductDetailData.getSKUOptionTitlec                 C   s  d }i }i }g }d|v r|d }d|v rd|d i}d|v r"|d }d|v rVd|d v rV|d d }g }|D ]}	i }
d|	v rU|	d dkrU|	d |
d	< |	d
 |
d< | |
 q6d|v r|d }|D ]b}i }d|v rd|v rd|v r|d |d< |d |d< |d }|D ]"}d|v rd|v r|d dkr|d |d< |d dkr|d |d< q| ||dkr| ||d }|dkr||d< | | q`|||||d}|S )Nr`   r   rU   r   Z
previewSetpreviewsZpreviewTypeIdprimaryrT   r   r   r   r   r   r   r   r   ZhexColorr   Fr~   )r`   r   r   r   r   )r(   r   r   )r   itemconfigSetListr`   ZcategoryMapZpriceMapr   r   r   r   ZskuImageZattributesList	attributer   r   r   r   r   r   r   r   getItemFromInventoryCategorySet  sl   

z:RedbubbleProductDetailData.getItemFromInventoryCategorySetc                 C   s  i }d }d|v r%d|d v r%d|d d v r|d d d }n|d d }|d urg }d }d }d }d }d|v r;|d }d|v rC|d }d }	d|v ri|d }	|	d urid|	v rY|	d }d|	v ri|	d }
d	|
v ri|
d	 }g }d
|d d v r||d d d
 v r|d d d
 | }g }|D ]}i }||d< | | qd|v r|d }| dkr||d< ||d	< ||d< ||d< ||d< d|v r|d }g }|D ]}| ||}| | q||d< tdd}t|| W d    |S 1 sw   Y  |S )NpropsZ	pagePropsinventoryCategorySetr`   ZcategoryNamedefaultItemproductTypeIdworkr   ZproductDescriptionsr   ZconfigurationSetr   rT   r   r   itemsr   z	data.jsonw)r(   ri   r   openrB   dump)r   rK   r   r   r   ZitemKeyNameZ	itemTitleZitemCategoryr   r   r   r   ZproductDescriptionListr   r   Zskusr   skur   fr   r   r   getItemDetail  st   

z(RedbubbleProductDetailData.getItemDetailN)r   r   r   r   r   r   r   r   r   r   r   r     s
    @r   c                   @   s4   e Zd ZdZg Zdd Zdd Zdd Zdd	 Zd
S )RedbubbleProductDetailParserFc                 C   s$   |D ]}d|v rd|v rd| _ qd S )Nr`   Z__NEXT_DATA__T)isData)r   r)   r+   r   r   r   checkProductDataK  s
   z-RedbubbleProductDetailParser.checkProductDatac                 C   r1   )Nscript)r  r2   r   r   r   r4   P  r5   z,RedbubbleProductDetailParser.handle_starttagc                 C   r6   r   r   r7   r   r   r   r8   T  r9   z*RedbubbleProductDetailParser.handle_endtagc                 C   sZ   | j r+zt|}t }||}t }|| W d S  tjy*   td Y d S w d S )NzFailed to decode JSON data)	r  rB   rC   r   r   rP   r   JSONDecodeErrorprint)r   r:   rK   ZproductDetailr   ZconvertDatar   r   r   r;   W  s   

z(RedbubbleProductDetailParser.handle_dataN)	r   r   r   r  skuListr  r4   r8   r;   r   r   r   r   r   F  s    r   c                   @   r<   )!GetRedbubbleProductDetailPageViewc                 O   sX   t |j}td i }d|v r"td t }||d  td d|d< t|ddS )Nherer>   Zhere1Zhere3Fr?   r@   )rB   rC   rD   r  r   rF   r   rG   r   r   r   rM   e  s   z&GetRedbubbleProductDetailPageView.postNrN   r   r   r   r   r  d  rO   r  )!django.shortcutsr   rest_frameworkr   django.viewsr   django.httpr   rB   snow_flake.modelssnow_flake.serializersZ snow_flake_external_links.modelsZ%snow_flake_external_links.serializersr   html.parserr   r   requestsdjango.core.files.uploadedfiler	   PILr
   ior   r   ListCreateAPIViewr   r#   r=   rP   r   r   r  r   r   r   r   <module>   s>    #    M  