U
    ‘c<X ã                   @   s  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 d d
lmZmZmZ d dlmZ d dlmZ d dlmZ d dlT ddlT d dlZe e¡Zd dlmZ d dl m!Z!m"Z" d dlmZmZmZ d dl#m$Z$ d dl%Z&d dl'm(Z(m)Z) d dlm*Z* ddl+T d dlm,Z, d dl#m-Z- d dl.Z.d dl/Z/d dl0T dd„ Z1G dd„ dej2ƒZ3G dd„ dej4ƒZ5G dd„ dej4ƒZ6G d d!„ d!ej4ƒZ7G d"d#„ d#ej4ƒZ8G d$d%„ d%ej4ƒZ9G d&d'„ d'ej4ƒZ:G d(d)„ d)ej4ƒZ;G d*d+„ d+ej4ƒZ<G d,d-„ d-ej2ƒZ=G d.d/„ d/ej2ƒZ>G d0d1„ d1ej2ƒZ?G d2d3„ d3ej4ƒZ@G d4d5„ d5ej4ƒZAG d6d7„ d7ej4ƒZBG d8d9„ d9ej4ƒZCG d:d;„ d;ej4ƒZDG d<d=„ d=ej4ƒZEG d>d?„ d?ej4ƒZFG d@dA„ dAej4ƒZGG dBdC„ dCej4ƒZHG dDdE„ dEej4ƒZIG dFdG„ dGej4ƒZJd dlmZ dHdI„ ZKdS )Jé    )Úmonth)ÚNONE)ÚPartialIteratorWrapper©Úrender)ÚHttpResponse)ÚAPIView)ÚResponse©Ústatus)ÚMultiPartParser)r   ÚgenericsÚpermissions)Úpartial)Úsend_push_notification)Ú*é   N)Úmail)ÚAllowAnyÚIsAuthenticated)r   r   r   )ÚQ)ÚOrderingFilterÚSearchFilter)ÚHttp404)Úfilters)ÚFc                 C   s>   t jj|d�}d|_| ¡  |jdkr4d|_| ¡  tdhƒS )N)ÚpkTz#5EFFFFzBackground colour changed)ÚMagazineInfoÚobjectsÚgetÚis_promotedÚsaveZbackground_colorr   )Úrequestr   Zmag© r#   ú[/var/www/html/staging.mfahmagazine.net/magazine_api/magazine_web_admin/magazineapp/views.pyÚvalidateBackground%   s    
r%   c                   @   s   e Zd ZeZddd„ZdS )ÚMagazineCategoryAPIViewNc              
   C   s”   z:t j ¡ }| j|dd�}dtd |jdœ}t|tjd�W S  t	k
rŽ } z6t
 dt|ƒ ¡ dtd d	œ}t|tjd� W Y ¢S d }~X Y nX d S )
NT©Úmanyr   Úmessage©r   r)   Údatar
   z!MagazineCategoryAPIView:error => r   ©r   r)   )ÚMagazineCategoryr   ÚallÚserializer_classZmagazinecategory_messager+   r	   r   ÚHTTP_200_OKÚ	ExceptionÚloggerÚerrorÚstrÚExp_MESSAGEÚHTTP_400_BAD_REQUEST©Úselfr"   ÚidÚusersÚ
serializerÚcontextÚer#   r#   r$   r   :   s    
zMagazineCategoryAPIView.get)N)Ú__name__Ú
__module__Ú__qualname__ÚMagazineCategorySerializerr/   r   r#   r#   r#   r$   r&   6   s   r&   c                   @   s   e Zd ZeZddd„ZdS )ÚSystemCategoryAPIViewNc              
   C   s”   z:t j ¡ }| j|dd�}dtd |jdœ}t|tjd�W S  t	k
rŽ } z6t
 dt|ƒ ¡ dtd d	œ}t|tjd� W Y ¢S d }~X Y nX d S )
NTr'   r   r)   r*   r
   zSystemCategoryAPIView:error => r   r,   )ÚSystemCategoryr   r.   r/   Zsystemcategory_messager+   r	   r   r0   r1   r2   r3   r4   r5   r6   r7   r#   r#   r$   r   I   s    
zSystemCategoryAPIView.get)N)r>   r?   r@   ÚSystemCategorySerializerr/   r   r#   r#   r#   r$   rB   F   s   rB   c                   @   s   e Zd ZeZddd„ZdS )ÚPromotionalMagazineAPIViewNc              
   C   s”   z:t j ¡ }| j|dd�}dtd |jdœ}t|tjd�W S  t	k
rŽ } z6t
 dt|ƒ ¡ dtd d	œ}t|tjd� W Y ¢S d }~X Y nX d S )
NTr'   r   r)   r*   r
   z$PromotionalMagazineAPIView:error => r   r,   )r   r   r.   r/   ZPromotionalMagazine_messager+   r	   r   r0   r1   r2   r3   r4   r5   r6   r7   r#   r#   r$   r   X   s    
zPromotionalMagazineAPIView.get)N)r>   r?   r@   ÚMagazineInfoSerializerr/   r   r#   r#   r#   r$   rE   U   s   rE   c                   @   s   e Zd ZejfZdd„ ZdS )ÚMagazinebySystemcategoryAPIViewc           
   
   C   sê  �z†| j j dd ¡}| j j dd ¡}| j j dd ¡}|r–|r–t| _tjj||d� d¡ 	¡ }| j|d|||dœd�}d	t
d
 |jdœ}t|tjd�W S |rèt| _tjj|d� ¡ }| j|dd|id�}d	t
d
 |jdœ}t|tjd�W S |�r<t| _tjj|d� ¡ }| j|dd|id�}d	t
d
 |jdœ}t|tjd�W S t| _tj ¡  ¡ }| j|dd|id�}d	t
d
 |jdœ}t|tjd�W S W n\ tk
�rä }	 z<t dt|	ƒ ¡ dtd
 t|	ƒdœ}t|tjd� W Y ¢S d }	~	X Y nX d S )NÚuser_idÚsystem_category_idÚmagazine_category_id)Úsystem_categoryÚmagazine_categoryrK   T)rI   rJ   rH   ©r(   r<   r   r)   r*   r
   ©r9   z)MagazinebySystemcategoryAPIView:error => r   )r   r)   r3   )r"   Úquery_paramsr   Ú"SystemAndMagazineDetailsSerializerr/   r   r   ÚfilterÚvaluesÚdistinctZmagazinebysystem_messager+   r	   r   ÚHTTP_201_CREATEDrD   rC   r.   ÚSystemppCategorySerializerr-   r1   r2   r3   r4   r5   r6   )
r8   r"   rH   rI   rJ   Úmanginer;   r<   Zsys_categoryr=   r#   r#   r$   r   g   s>    z#MagazinebySystemcategoryAPIView.getN)r>   r?   r@   r   r   Úpermission_classesr   r#   r#   r#   r$   rG   d   s   rG   c                   @   s   e Zd ZeZddd„ZdS )ÚMagazineDetailAPIViewNc                 C   sn  | j j dd ¡}| j j dd ¡}|s<dddœ}t|tjd�S tjj|d� 	¡ }|�r|�rt
jj||d� 	¡ }tjj||d� 	¡ }tjj||d	d
� ¡ }	tjj||d� ¡ }
tjj||d	d� ¡ }tjj||d	d� ¡ }|rôtjj|d�jd	d� ntjj|d�jdd� |�r(tjj|d�jd	d� ntjj|d�jdd� |	�r\tjj|d�jd	d� ntjj|d�jdd� |
�r�tjj|d�jd	d� ntjj|d�jdd� |�rÄtjj|d�jd	d� ntjj|d�jdd� tjj|d�}t|d|idd�}dtd |jdœ}t|tjd�S |�rLt|dd�}dtd |jdœ}t|tjd�S |�sjdddœ}t|tjd�S d S )NrH   Úmagazine_idr   zplease enter magazine id.r,   r
   rN   ©Ú	magazinesr:   T)ÚmagazineInfosr:   Úis_buyed©ÚmagazineÚuser)r\   r:   Ú	is_rented)r\   r:   Úis_subscription)Úis_bookmarkF)Úis_favorite)Úis_purchase)Úis_read_status)ra   r`   )r<   r(   r   r)   r*   r'   úRecord is not available.)r"   rO   r   r	   r   r0   r   r   rQ   ÚlastÚMagazineBookmarkÚMagazineFavoriteÚMagazinePurchaseInfoÚfirstÚMagazineReadStatusÚupdateÚmagazineSerializerZmagazinedetail_messager+   ÚAlldataSerializer)r8   r"   ÚformatrH   rY   r<   ZMagazineobjZuserbookobjZuserfauvariteobjZuserpurchaseobjZreadstatusobjZ	rentedobjÚsubscriptionobjZmagazinedataÚserializersr#   r#   r$   r   ¤   sN    

zMagazineDetailAPIView.get)N)r>   r?   r@   ro   r/   r   r#   r#   r#   r$   rX       s   rX   c                   @   s   e Zd ZeZddd„ZdS )ÚMagazineBookmarkAPIViewNc           
   
   C   sÀ  �zb|j  dd ¡}|j }|d |d< |d |d< |d |d< tjj|d d� ¡ }|spdd	d
œ}t|tjd�W S |dkrÐt	|d�}| 
¡ r´| ¡  dtd |j dœ}t|tjd�W S ddd
œ}t|tjd�W S n’|dk�rHtjj|j|d d� ¡ }|�r,tjj|jd� ¡  dtd d
œ}t|tjd�W S ddd
œ}t|tjd�W S nddd
œ}t|tjd�W S W nV tk
�rº }	 z6t dt|	ƒ ¡ dtd d
œ}t|tjd� W Y ¢S d }	~	X Y nX d S )Nrc   Úmagazines_idr[   Úusers_idr:   Úpage_numberrN   r   úUser record is not available.r,   r
   T©r+   r   r)   r*   úRecord is not availableF©r:   r[   z"Please enter correct bookmark typez!MagazineBookmarkAPIView:error => )r+   r   ÚUserr   rQ   rh   r	   r   r0   ÚMagazineBookmarkSerializerÚis_validr!   Zbookmark_enter_messageri   r9   ÚdeleteZbookmark_delete_messager1   r2   r3   r4   r5   r6   )
r8   r"   r9   rc   r+   Ú	usersdatar<   r;   Úbookmarkobjr=   r#   r#   r$   Úpostô   s@    





zMagazineBookmarkAPIView.post)N)r>   r?   r@   r}   r/   r‚   r#   r#   r#   r$   rt   ð   s   rt   c                   @   s   e Zd ZeZddd„ZdS )ÚBookmarkListAPIViewNc              
   C   s”   z:t j ¡ }| j|dd�}dtd |jdœ}t|tjd�W S  t	k
rŽ } z6t
 dt|ƒ ¡ dtd d	œ}t|tjd� W Y ¢S d }~X Y nX d S )
NTr'   r   r)   r*   r
   zBookmarkListAPIView:error => r   r,   )ri   r   r.   r/   ZBookmark_list_messager+   r	   r   r0   r1   r2   r3   r4   r5   r6   )r8   r"   r9   Úorderobjrs   r<   r=   r#   r#   r$   r   +  s    
zBookmarkListAPIView.get)N)r>   r?   r@   ÚBookmarkListSerializerr/   r   r#   r#   r#   r$   rƒ   '  s   rƒ   c                   @   s   e Zd ZeZddd„ZdS )ÚMagazineFavoriteAPIViewNc           
   
   C   s"  �zÄ|j  dd ¡}|j }|d |d< |d |d< |d |d< tjj|d d� ¡ }|spdd	d
œ}t|tjd�W S |dk�rt	jj|j
|d d� ¡ }|d krôt|d�}| ¡ rØ| ¡  dtd |j dœ}t|tjd�W S ddd
œ}t|tjd�W S n&t|ƒ}dd|j dœ}t|tjd�W S n¨|dk�rªtjj|d d� ¡ }t	jj|j
|d d� ¡ }|�rŽt	jj|j
d� ¡  dtd d
œ}t|tjd�W S ddd
œ}t|tjd�W S nddd
œ}t|tjd�W S W nV tk
�r }	 z6t dt|	ƒ ¡ dtd d
œ}t|tjd� W Y ¢S d }	~	X Y nX d S )Nrd   ru   r[   rv   r:   rw   rN   r   rx   r,   r
   Tr{   ry   r   r)   r*   rz   z-Favourite record already create successfully.Fz"Please enter correct favorite typez!MagazineFavoriteAPIView:error => )r+   r   r|   r   rQ   rh   r	   r   r0   rj   r9   ÚMagazineFavoriteSerializerr~   r!   ZFavorite_enter_messager   ZFavorite_delete_messager1   r2   r3   r4   r5   r6   )
r8   r"   r9   rd   r+   r€   r<   Zfavoriteobjr;   r=   r#   r#   r$   r‚   =  sL    






zMagazineFavoriteAPIView.post)N)r>   r?   r@   r‡   r/   r‚   r#   r#   r#   r$   r†   9  s   r†   c                   @   s   e Zd ZeZddd„ZdS )ÚMagazinePurchaseAPIViewNc              
   C   sZ  �zü|j  dd ¡}|j }|d |d< |d |d< |d |d< tjj|d d�}|sldd	d
œ}t|tjd�W S tjj|d |d d� 	¡ }|�râ|dk�r>t
jj|d |d d� 	¡ }|d k�rt|d�}	|	 ¡ rú|	 ¡  dtd |	j dœ}t|tjd�W S ddd
œ}t|tjd�W S n&t|ƒ}	dd|	j dœ}t|tjd�W S n¢|dk�rÆtjj|d d� 	¡ }t
jj|jd� 	¡ }
|
�rªt
jj|
jd� ¡  dtd d
œ}t|tjd�W S ddd
œ}t|tjd�W S nddd
œ}t|tjd�W S nddd
œ}t|tjd�W S W nV tk
�rT } z6t dt|ƒ ¡ dtd d
œ}t|tjd� W Y ¢S d }~X Y nX d S )Nre   rY   r\   rH   r:   rw   rN   r   rx   r,   r
   ©r9   r:   T)r\   r:   ry   r   r)   r*   rz   z-Purchase record already create  successfully.F©r:   z"Please enter correct purchase typez'User and magazine id are not available.z!MagazinePurchaseAPIView:error => )r+   r   r|   r   rQ   r	   r   r0   r   rh   rk   ÚPurchaseInfoSerializerr~   r!   ÚPurchase_enter_messager9   r   ZPurchase_delete_messager1   r2   r3   r4   r5   r6   )r8   r"   r9   re   r+   r€   r<   Z	pagesdataZpurchaselistobjr;   Úpurchaseobjr=   r#   r#   r$   r‚   q  sT    








zMagazinePurchaseAPIView.post)N)r>   r?   r@   r‹   r/   r‚   r#   r#   r#   r$   rˆ   m  s   rˆ   c                   @   s$   e Zd ZeZddd„Zddd„ZdS )ÚMyLibraryAPIViewNc              
   C   sÚ   z€|j d |j d< |j d |j d< t|j d�}| ¡ r`| ¡  dtd |j dœ}t|tjd	�W S d
td dœ}t|tjd	�W S W nT t	k
rÔ } z6t
 dt|ƒ ¡ d
td dœ}t|tjd	� W Y ¢S d }~X Y nX d S )NrH   r:   rY   r\   ry   r   r)   r*   r
   r   r,   úMyLibraryAPIView:error => )r+   r‹   r~   r!   Zmylibrary_messager	   r   r0   Zmylibrary_errormessager1   r2   r3   r4   r5   r6   )r8   r"   r9   r;   r<   r=   r#   r#   r$   r‚   §  s    zMyLibraryAPIView.postc              
   C   s„  �z&| j j dd ¡}| j j dd ¡}|sBdddœ}t|tjd�W S tjj|d� 	¡ }t
jj|d�}|dkr¾tjj|d�jd	d
d�}tjj|d� ¡ }	t|	d
d�}
d|
ji}dtd |dœ}�n\|dk�rt
jj|d
d�}t|d
d�}
d|
ji}dtd |dœ}�n|dk�r^tjj|d�jd	d
d�}tjj|d� ¡ }t|d
d�}
d|
ji}dtd |dœ}n¼g }g }g }g }t
jj|d�jdd
d�}tjj|d�jd	d
d�}	tjj|d�jd	d
d�}t|ƒ t|	ƒ¡ t|ƒ¡}t|dƒ tjjt|ƒd�}t|d
d�j}||||dœ}dtd |dœ}t|tjd�W S  tk
�r~ } z6t dt|ƒ ¡ dtd dœ}t|tjd� W Y ¢S d }~X Y nX d S )NrH   Úfilter_typer   úPlease enter correct user id.r,   r
   rŠ   ÚBookmarkr[   T©Úflat)Úid__inr'   r   r)   r*   ÚPurchase©r:   r]   Ú	Favouriter\   z<==============@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@)r’   r–   r˜   Úlibrary_allr�   ) r"   rO   r   r	   r   r0   r   r   rQ   rh   rk   ri   Úvalues_listr.   ÚmagazineliberarySerializerr+   ZBookmark_messageÚMagazinePurchaseInfoSerializerrŒ   rj   ZFavourite_messageÚsetÚunionÚprintÚlistZalldata_messager1   r2   r3   r4   r5   r6   )r8   r"   r9   Úuseridr�   r<   Úmagazineobjr�   Zbookmark_id_lir�   r;   ÚdictZfavorite_id_liZfavouriteobjZbookmarkdataZfavouritedataZpurchasedatar™   Zall_liberaryZall_liberary_objr=   r#   r#   r$   r   ¹  sV    






zMyLibraryAPIView.get)N)N)r>   r?   r@   r›   r/   r‚   r   r#   r#   r#   r$   rŽ   ¥  s   
rŽ   c                       sJ   e Zd Zej ¡  dddd¡ZeZ	e
jgZddddgZ‡ fdd„Z‡  ZS )ÚMagazineSearchAPIViewÚnameZauthor__author_nameZsystem_category__category_nameZ magazine_category__category_namec              
      s  �z¸| j j dd ¡}|�r<tjj|d� ¡ }|r|tjj|d�jtdƒd d� t	ƒ j
|f|ž|Ž}dtd |jdœ|_|W S tj t|d�t|d	�B t|d
�B t|d�B ¡ ¡ }|�rtjj|d�}tjj|jd�j|jd� t	ƒ j
|f|ž|Ž}dtd |jdœ|_|W S t	ƒ j
|f|ž|Ž}dtd |jdœ|_|W S n|tj ¡  ¡  d¡d d… }tjjdd� d¡d d… }	t|	dd�j}
||
dœ}t	ƒ j
|f|ž|Ž}dtd |dœ|_|W S W nV tk
�r } z6t dt|ƒ ¡ dt|ƒdœ}t|tjd� W Y ¢S d }~X Y nX d S )NÚsearch)Ztitle__icontainsÚcountr   )r§   r)   r*   )Zname__icontains)Zauthor__author_name__icontains)Z)system_category__category_name__icontains)Z+magazine_category__category_name__icontains)ÚtitlerN   )r\   z-counté   T)r]   z-magazineInfosé
   r'   ©Zsearch_dataZpuchase_datazMagazineSearchAPIView:error => r   r,   r
   )r"   rO   r   ÚSearchMagazineinfor   rQ   rh   rn   r   Úsuperr    Zsearch_messager+   r   r   Úcreater9   r.   rR   Úorder_byrk   rœ   r1   r2   r3   r4   r	   r   r6   )r8   r"   ÚargsÚkwargsr¦   Zsearch_infoÚresponseZ	searchobjZsearchidZpurchase_infor;   Zdict11r=   r<   ©Ú	__class__r#   r$   r    !  s<    4

zMagazineSearchAPIView.list)r>   r?   r@   r   r   r.   r¯   ÚquerysetÚSearchMagazineDetailSerializerr/   r   r   Úfilter_backendsÚsearch_fieldsr    Ú__classcell__r#   r#   r³   r$   r¤     s
   r¤   c                   @   s   e Zd ZeZddd„ZdS )ÚNoSearchAPIViewNc              
   C   sº   z`| j j dd ¡}|s@g g dœ}dtd |dœ}t|tjd�W S dtd dœ}t|tjd�W S W nT tk
r´ } z6t	 
d	t|ƒ ¡ dt|ƒdœ}t|tjd� W Y ¢S d }~X Y nX d S )
Nr¦   r«   r   r)   r*   r
   r   r,   zNoSearchAPIView:error => )r"   rO   r   Znosearch_messager	   r   r0   Znosearch_error_messager1   r2   r3   r4   r6   )r8   r"   r9   r¦   r£   r<   r=   r#   r#   r$   r   ü  s    
zNoSearchAPIView.get)N)r>   r?   r@   r¶   r/   r   r#   r#   r#   r$   rº   ú  s   rº   c                   @   s$   e Zd ZeZddd„Zddd„ZdS )ÚMagazinePurchaseInfoAPIViewNc              
   C   sâ   zˆ| j j dd ¡}|s0dddœ}t|tjd�W S tjj|d� 	¡ }|s`dddœ}t|tjd�W S t
|dd	�}d
d|jdœ}t|tjd�W S  tk
rÜ } z6t dt|ƒ ¡ dtd dœ}t|tjd� W Y ¢S d }~X Y nX d S )NrH   r   r‘   r,   r
   rŠ   rg   Fr'   r   z)magazine purchase data found successfullyr*   ú%MagazinePurchaseInfoAPIView:error => r)   )r"   rO   r   r	   r   r0   rk   r   rQ   rh   Ú"MagazinePurchaseInfodataSerializerr+   r1   r2   r3   r4   r5   r6   )r8   r"   r9   rH   r<   Z
purchadatars   r=   r#   r#   r$   r     s     

zMagazinePurchaseInfoAPIView.getc              
   C   sØ	  �	zz|j d |j d< |j  dd ¡|j d< |j  dd ¡|j d< |j d |j d< ztj d¡}W n tjk
rv   d}Y nX d	|j d › |j› �}||j d
< |j d
 |j d
< tjj|j d d� 	¡ }|j d dk�rjt
j
 ¡ |j d< |j d |j d< |j  dd ¡|j d< |j  dd ¡|j d< |j  dd ¡|j d< |j  dd ¡|j d< |j d �sX|j d �rP|j d }t
j
 ¡  ¡ }tj t|j d d�t|�r�|ndd�B ¡ 	¡ }|j|  k�r¼|jk�sØn dddœ}	t|	tjd�W S |j|j d< tt|j d ƒt|jƒ d ƒ}
t|j d ƒt|
ƒ }|j|j d< t|
dƒ|j d< t|dƒ|j d< d|j d < tjj|j d |j d dd!� 	¡ }|�r’dd"dœ}	t|	tjd�W S t|j d#�}| ¡ �rH| ¡ }tjj|jd� 	¡ }t|ƒ}|j d }tjj|d� 	¡ }d$}d%|j› d&|j› d'�}t|||ƒ |j||jd(œ}t |ƒ !¡  d)d*|j d+œ}	t|	tjd�W S dd,|j"d+œ}	t|	tjd�W S �n|j d- dk�rØt
j
 ¡ |j d.< t
j
 ¡ t
j#d/d0� |j d1< t$|j  dd ¡ƒ|j d2< tjj|j d |j d dd3� 	¡ }|�r dd4dœ}	t|	tjd�W S t|j d#�}| ¡ �r¶| ¡ }tjj|jd� 	¡ }t|ƒ}|j d }tjj|d� 	¡ }d$}d%|j› d5|j› d6�}t|||ƒ |j||jd(œ}t |ƒ !¡  d)d7|j d+œ}	t|	tjd�W S dd,|j"d+œ}	t|	tjd�W S �n¢|j d8 dk�rÖt
j
 ¡ |j d.< d9|j d< |j d: }t%jj|d� 	¡ }|j|j d;< |�sJdd<dœ}	t|	tjd�W S |j&}t'|j(ƒt'd=ƒ t'd>ƒ |j d>< |j(}d?t$|ƒ }t
j
 ¡ t
j#|d0� |j d1< |j)|j d@< tjj|j d dddA� 	¡ }|�ræd)dBdœ}	t|	tjd�W S t|j d#�}| ¡ �r´tjj|j d dddA�j*dCdD� | ¡ }tjj|jd� 	¡ }t|ƒ}|j d }tjj|d� 	¡ }d$}d%|j› dE�}t|||ƒ |j||jd(œ}t |ƒ !¡  d)dF|j d+œ}	t|	tjd�W S dd,|j"d+œ}	t|	tjd�W S �n¤|j dG dk�	r`|j d |j dH< |j  dd ¡|j d< |j  dd ¡|j d< |j  dd ¡|j d< |j  dd ¡|j d< tjj|j d d� 	¡ }|�s~ddIdœ}	t|	tjd�W S |j d �s–|j d �r¦|j d }t
j
 ¡  ¡ }tj t|j d d�t|�rÎ|ndd�B ¡ 	¡ }|j|  k�rú|jk�sn dddœ}	t|	tjd�W S |j+�r$|j+nd|j dJ< |j|j d< tt|j dH ƒt|jƒ d ƒ}
t|j dH ƒt|
ƒ }|j|j d< t|
dƒ|j d< t|dƒ|j d< d|j d < t|j d#�}| ¡ �	r@| ¡ }tjj|jd� 	¡ }t|ƒ}|j d }tjj|d� 	¡ }d$}d%|j› d&|j› d'�}t|||ƒ d)dK|j d+œ}	t|	tjd�W S ddL|j"d+œ}	t|	tjd�W S nddMdœ}	t|	tjd�W S W nV t,k
�	rÒ } z6t- .dNt'|ƒ ¡ dt'|ƒdœ}	t|	tj/d� W Y ¢S d }~X Y nX d S )ONrH   r:   rY   r\   ÚcurrencyÚtransaction_idr9   Z001ZMAGÚpurchases_order_idrN   r]   TÚbuy_dateÚpriceÚ	buy_priceÚoffer_max_amountÚoffer_discount_amountZoffer_idÚ
offer_codeÚ ©Zcode__iexactr   ú/Coupon code has been expired, Please try again.r,   r
   ÚmagazineOfferéd   Úoffer_discounté   Úoffer_priceÚ
is_offered)r:   r\   r]   z User has been already taken buy.ry   zMagazine PurchasezHi z, you have been purchased z magazine successfully.)Úusernamer)   r¥   r   z,Magazine purchase record create successfullyr*   z*Magazine purchase record is not available.ra   Ú	rent_dateé   )ÚdaysÚrent_expiry_dateÚ
rent_price)r:   r\   ra   z!User has been already taken rent.z, you have been rented z  magazine successfully.z(Magazine rent record create successfullyrb   é   Úsubscription_typeÚsubscriptionzsubcription id is not matchú Úmonthsé   Úsubscription_price)r:   rb   Úsubscription_user_statusz(User has been already taken subscriptionF)rÝ   z3, you have been subscripted magazines successfully.z0Magazine subscription record create successfullyÚis_hard_copyÚhard_copy_pricezUser id is not matchÚdelivery_locationz(magazine hard record create successfullyz+magazine hard copy record is not available.zplease enter currect status.r¼   )0r+   r   rk   r   ÚlatestÚDoesNotExistr9   r   rQ   rh   ÚdatetimeÚnowÚdateÚMagazineOfferinfor   Ú
start_dateÚend_dater	   r   r0   ÚfloatÚdiscountÚroundÚCreatepurchageSerializerr~   r!   ÚShowPurchaseSerializerr|   Ú
first_namer¥   r   rÐ   ÚBuyMailToUserThreadÚstartÚerrorsÚ	timedeltaÚintÚSubscriptionTyper×   r4   rÓ   rÂ   rn   Úaddressr1   r2   r3   r6   )r8   r"   r9   ZlastidÚcoder¢   rÆ   Úcurrent_dateZ	couponobjr<   ÚofferobjÚ
offerpriceÚbuyobjr;   ÚmagidÚmgviewÚserializers_viewsrH   Zuserdetailsr¨   ÚmsgÚrecord_dataÚrentobjZsubcriptio_idrr   ÚsubtypeÚqÚpZsubstimer`   r=   r#   r#   r$   r‚   &  s>   


0
 
"


"





 

 


0
 



z MagazinePurchaseInfoAPIView.post)N)N)r>   r?   r@   r½   r/   r   r‚   r#   r#   r#   r$   r»     s   
r»   c                   @   s   e Zd ZeZddd„ZdS )ÚMagazineOfferListAPIViewNc              
   C   s8  zÜ|j  dd ¡}tj ¡  ¡ }|r tjj|d�jddd�}t	jj||d�}t	jjd|d�}t
t|ƒ t|ƒ¡ƒ}| j|dd	�}	d
td |	jdœ}
t|
tjd�W S t	jj|d�}| j|dd	�}	d
td |	jdœ}
t|
tjd�W S  tk
�r2 } z6t dt|ƒ ¡ dtd dœ}
t|
tjd� W Y ¢S d }~X Y nX d S )NrH   )r`   ÚmagazineofferTr“   )r•   Úend_date__gteÚAll)Zfor_users__icontainsr  r'   r   r)   r*   r
   )r  z"MagazineOfferListAPIView:error => r   r,   )ÚGETr   rã   rä   rå   ÚUserMapOfferr   rQ   rš   ræ   r    r�   rž   r/   Úoffer_messager+   r	   r   r0   r1   r2   r3   r4   r5   r6   )r8   r"   r9   rH   r÷   Z	userofferÚuserobjZuserobj1rø   rs   r<   r=   r#   r#   r$   r   (  s&    zMagazineOfferListAPIView.get)N)r>   r?   r@   ÚMutipleMAGOfferListSerializerr/   r   r#   r#   r#   r$   r  %  s   r  c                   @   s   e Zd ZeZddd„ZdS )ÚMAGOfferInfoAPIViewNc                 C   sö  �z˜|j  dd ¡}|j  dd ¡}|j  dd ¡}z$tj t|d�t|d�B ¡ ¡ }W n tjk
rl   d }Y nX |sŒdddœ}t|t	j
d	�W S |d kr®dd
dœ}t|t	j
d	�W S i }tj ¡  ¡ }	tj t|d�t|d�B ¡ ¡ }
|
j|	  krú|
jk�r^n �n^tjj||
jd�}|�r2dddœ}t|t	j
d	�W S |�rètt|ƒt|
jƒ d ƒ}t|ƒt|ƒ }t|dƒ}tj t|d�t|d�B ¡ ¡ }|j||t|dƒ|j|j|j|j|j|j|j|j|jdœ}dtd |gdœ}t|t	j
d	�W S tj t|d�t|d�B ¡ ¡ }|jd d d |j|j|j|j|j|j|j|j|jdœ}dtd |gdœ}t|t	j
d	�W S tj t|d�t|d�B ¡jdd� dddœ}t|t	j
d	�W S  tk
�rð } z6t dt |ƒ ¡ dt!d dœ}t|t	j"d	� W Y ¢S d }~X Y nX d S )NÚamountÚ	coupon_idrH   )Z
id__iexactrÈ   r   z,Please enter correct offer id or offer code.r,   r
   r‘   )r:   rÊ   z!This coupon code is already used.rË   rÍ   )r9   Z
real_pricerÎ   Údiscount_pricerö   rê   Úmax_discountrç   rè   Úoffer_statusÚdescriptionÚ
created_onÚ
updated_onr   r)   r*   F)r  rÉ   zMAGOfferInfoAPIView:error => )#r  r   ræ   r   rQ   r   rh   râ   r	   r   r0   rã   rä   rå   rç   rè   rk   r9   ré   rê   rë   rö   r  r  r  r  r  r
  rn   r1   r2   r3   r4   r5   r6   )r8   r"   r9   r  r  rH   rø   r<   Údicr÷   r  Ú
percentageZofferprrù   Zofferr=   r#   r#   r$   r   e  sR    $


 	 

 : 4$
zMAGOfferInfoAPIView.get)N)r>   r?   r@   ÚMAGOfferListSerializerr/   r   r#   r#   r#   r$   r  b  s   r  c                   @   s   e Zd ZeZddd„ZdS )ÚMagazineSubscriptionInfoAPIViewNc           
   
   C   sæ   zŒ|j  dd ¡}|rVtjj|d� ¡ }| j|dd�}dtd |jdœ}t	|t
jd�W S tj ¡ }t|dd�}dtd |jdœ}t	|t
jd�W S  tk
rà }	 z6t d	t|	ƒ ¡ d
td dœ}t	|t
jd� W Y ¢S d }	~	X Y nX d S )NrH   rŠ   Tr'   r   r)   r*   r
   z)MagazineSubscriptionInfoAPIView:error => r   r,   )r  r   ÚSubscriptionr   rQ   r.   r/   Úsubscribtion_messager+   r	   r   r0   ÚSubscriptionSerializerr1   r2   r3   r4   r5   r6   )
r8   r"   r9   rH   Ú	mysublistÚserializerdatar<   rr   rs   r=   r#   r#   r$   r   ¬  s    
z#MagazineSubscriptionInfoAPIView.get)N)r>   r?   r@   Ú"MagazineSubscriptionInfoSerializerr/   r   r#   r#   r#   r$   r  ©  s   r  c                   @   s   e Zd ZeZddd„ZdS )ÚMagazineSubscriptionListAPIViewNc                 C   s¶  |j  dd ¡}|j  dd ¡}|rb|sbtjj|d� ¡ }t|dd�}dtd |jdœ}t	|t
jd	�S |rÆ|sÆtjj|d
� ¡ }tjj|jd� ¡ }	t|	dd�}
g |
jdœ}dtd |dœ}t	|t
jd	�S |�rš|�ršzHtjj|d
� ¡ }tjj|jd�jddd�}tjj|dd|d� ¡ }W n  tk
�r:   tj ¡ }Y nX t|dd�}tjj|jd� ¡ }	t|	dd|id�}
|j|
jdœ}dtd |dœ}t	|t
jd	�S dddœ}t	|t
jd	�S d S )NrH   Ú	sort_namerN   Fr'   r   r)   r*   r
   )Úsortname)ÚcountryT)Úuser_subscriptionÚsubscription_listr9   r“   )r:   rb   rÝ   Úsubscription__inrM   r   zInvalid termsr,   )r  r   r|   r   rQ   rl   ÚUserPurchaseListSerializerr  r+   r	   r   r0   ÚCountryrh   rô   r9   r.   ÚCountryListUserSerializerrš   rk   r1   ÚnoneÚListUserSerializer)r8   r"   r9   rH   r!  Zuserlistr;   r<   Z
countryonjrr   Zcountryserializerr£   Zsubscriptionobj1Zmysublr  r#   r#   r$   r   Ä  s:    
z#MagazineSubscriptionListAPIView.get)N)r>   r?   r@   ÚUserPurchCountrySerializerr/   r   r#   r#   r#   r$   r   Á  s   r   c                   @   s   e Zd ZeZddd„ZdS )ÚShowMagazineOrderHistoryAPIViewNc           	   
   C   s  z¦| j j dd ¡}|s0dddœ}t|tjd�W S tjj|d� 	¡ }|s`dddœ}t|tjd�W S t
jj|dd	� ¡  d
¡}t|dd�}dtd |jdœ}t|tjd�W S  tk
� rü } z6t dt|ƒ ¡ dtd dœ}t|tjd� W Y ¢S d }~X Y nX d S )NrH   r   úplease enter user id.r,   r
   rN   úrecord is not available.Tr—   ú-idr'   r   r)   r*   z)ShowMagazineOrderHistoryAPIView:error => )r"   rO   r   r	   r   r0   r|   r   rQ   rh   rk   r.   r¯   ÚMGAOrderHistorySerializerZorder_history_messager+   r1   r2   r3   r4   r5   r6   )	r8   r"   r9   rH   r<   r  Úuserdatars   r=   r#   r#   r$   r      s"    

z#ShowMagazineOrderHistoryAPIView.get)N)r>   r?   r@   r1  r/   r   r#   r#   r#   r$   r-  þ  s   r-  c                   @   s   e Zd ZeZddd„ZdS )ÚMagazineOrderDetailAPIViewNc              
   C   s`  �z| j j dd ¡}| j j dd ¡}|sBdddœ}t|tjd�W S |s`dddœ}t|tjd�W S tjj|d� 	¡ }|s�dd	dœ}t|tjd�W S t
jj|d� 	¡ }|sÀdd	dœ}t|tjd�W S t
jj||d
� ¡  d¡}| j|dd�}	dd|	jdœ}t|tjd�W S  tk
�rZ }
 z6t dt|
ƒ ¡ dtd dœ}t|tjd� W Y ¢S d }
~
X Y nX d S )NrH   Úorder_idr   r.  r,   r
   zplease enter order id.rN   r/  r‰   r0  Tr'   r   z0magazine order detail records found successfullyr*   z$MagazineOrderDetailAPIView:error => r)   )r"   rO   r   r	   r   r0   r|   r   rQ   rh   rk   r.   r¯   r/   r+   r1   r2   r3   r4   r5   r6   )r8   r"   r9   rH   r4  r<   r  r„   r2  rs   r=   r#   r#   r$   r     s2    



zMagazineOrderDetailAPIView.get)N)r>   r?   r@   ÚMagazineOrderDetailSerializerr/   r   r#   r#   r#   r$   r3    s   r3  c                   @   s$   e Zd ZeZddd„Zddd„ZdS )ÚMagazineReviewInfoAPIViewNc              
   C   sr  �z| j j dd ¡}| j j dd ¡}|sBdddœ}t|tjd�W S |s`dddœ}t|tjd�W S tjj|d�}|sŒdd	dœ}t|tjd�W S t	jj|d�}|s¸dd	dœ}t|tjd�W S |rþ|rþt
jj||d
� ¡ }t|dd�}	dd|	jdœ}t|tjd�W S dddœ}t|tjd�W S  tk
�rl }
 z6t dt|
ƒ ¡ dtd dœ}t|tjd� W Y ¢S d }
~
X Y nX d S )NrH   rY   r   zPlease enter magazine id.r,   r
   zPlease enter user id.rN   rg   rZ   Fr'   r   z$Magazine review record found successr*   z#Magazine review record is not foundú#MagazineReviewInfoAPIView:error => r)   )r"   rO   r   r	   r   r0   r|   r   rQ   r   ÚmagazineReviewInforh   ÚMagazineReviewInfoSerializerr+   r1   r2   r3   r4   r5   r6   )r8   r"   r9   rH   rY   r<   r  r¢   r„   rs   r=   r#   r#   r$   r   ˜  s8    




zMagazineReviewInfoAPIView.getc              
   C   s¦  �zH|j }| dd ¡|d< | dd ¡|d< tjj|d |d d� ¡ }|rÊtjj|d d� ¡ }| j||j dd�}| ¡ r¬| 	¡ }t
|d	d
�}dd|j dœ}	t|	tjd�W S dtd dœ}	t|	tjd�W S | j|d�}| ¡ �r*| 	¡ }
tjj|
jd� ¡ }t
|d	d
�}dtd |j dœ}	t|	tjd�W S dtd dœ}	t|	tjd�W S W nV tk
�r  } z6t dt|ƒ ¡ dt|ƒdœ}	t|	tjd� W Y ¢S d }~X Y nX d S )NrH   r:   rY   r[   )r:   ru   rŠ   T)r+   r   Fr'   r   z)magazine review data update successfully.r*   r
   r   r)   r,   ry   rN   r7  )r+   r   r8  r   rQ   rh   rl   r/   r~   r!   ÚReviewInfoSerializerr	   r   r0   Zreview_error_messager9   Zreview_enter_messager1   r2   r3   r4   r6   )r8   r"   r9   r+   r  r¡   r;   rü   rý   r<   rû   r=   r#   r#   r$   r‚   ¾  s8    
zMagazineReviewInfoAPIView.post)N)N)r>   r?   r@   r9  r/   r   r‚   r#   r#   r#   r$   r6  •  s   
&r6  c                   @   s   e Zd ZeZddd„ZdS )Ú MagazineReviewInfoHistoryAPIViewNc           
   
   C   sT  zø| j j dd ¡}| j j dd ¡}tjj|d�}|sNdddœ}t|tjd�W S |r˜|r˜t	jj||d� 
¡ }t|d	d
�}dtd |jdœ}t|tjd�W S |rÜt	jj|d� 
¡ }t|d	d
�}dtd |jdœ}t|tjd�W S dtd dœ}t|tjd�W S  tk
�rN }	 z6t dt|	ƒ ¡ dtd dœ}t|tjd� W Y ¢S d }	~	X Y nX d S )NrH   rY   rN   r   ú!Please enter correct magazine id.r,   r
   rZ   Tr'   r   r)   r*   ©r[   z*MagazineReviewInfoHistoryAPIView:error => )r"   rO   r   r   r   rQ   r	   r   r0   r8  r.   Ú#MagazineReviewInfoHistorySerializerÚallreview_error_messager+   r1   r2   r3   r4   r5   r6   ©
r8   r"   r9   rH   rY   r¢   r<   r„   rs   r=   r#   r#   r$   r   ç  s.    
z$MagazineReviewInfoHistoryAPIView.get)N©r>   r?   r@   r>  r/   r   r#   r#   r#   r$   r;  ä  s   r;  c                   @   s   e Zd ZeZdd„ ZdS )ÚMagazineReadStatusInfoAPIViewc              
   C   sx  �z|j }|d |d< |d |d< tjj|d d�}|sVdtd dœ}t|tjd	�W S tjj|d |d d
� 	¡ }|d krò| j
|d�}| ¡ rÔ| ¡ }tjj|jd� 	¡ }t|ƒ}	dtd |	j dœ}t|tjd	�W S d|jdœ}t|tjd	�W S n(|  
|¡}dd|j dœ}t|tjd	�W S W nV tk
�rr }
 z6t dt|
ƒ ¡ dt|
ƒdœ}t|tjd	� W Y ¢S d }
~
X Y nX d S )NrY   r_   rH   r`   rN   r   r)   r,   r
   r^   ry   r   r*   z1magazine read Record already create Successfully.z'MagazineReadStatusInfoAPIView:error => )r+   r   r   rQ   Zread_status_error_messager	   r   r0   rm   rh   r/   r~   r!   r9   ÚShowMGAReadStatusSerializerZread_status_messagerñ   r1   r2   r3   r4   r6   )r8   r"   r+   r¢   r<   Úreadobjr;   rû   rü   rý   r=   r#   r#   r$   r‚   
  s4    
z"MagazineReadStatusInfoAPIView.postN)r>   r?   r@   ÚMagazineReadStatusSerializerr/   r‚   r#   r#   r#   r$   rB    s   rB  c                   @   s   e Zd ZeZddd„ZdS )Ú!ShowMagazineReadStatusInfoAPIViewNc           
   
   C   sZ  � zü| j j dd ¡}| j j dd ¡}tjj|d�}|sPdddœ}t|tjd�W S |rœ|rœt	jj||d� 
¡ }| j|d	d
�}dtd |jdœ}t|tjd�W S |rât	jj|d� 
¡ }| j|d	d
�}dtd |jdœ}t|tjd�W S dtd dœ}t|tjd�W S  tk
�rT }	 z6t dt|	ƒ ¡ dtd dœ}t|tjd� W Y ¢S d }	~	X Y nX d S )NrH   rY   rN   r   r<  r,   r
   rZ   Tr'   r   r)   r*   r=  z+ShowMagazineReadStatusInfoAPIView:error => )r"   rO   r   r   r   rQ   r	   r   r0   rm   r.   r/   r?  r+   r1   r2   r3   r4   r5   r6   r@  r#   r#   r$   r   .  s.    
z%ShowMagazineReadStatusInfoAPIView.get)NrA  r#   r#   r#   r$   rF  +  s   rF  c                 C   s   t | ddd�S )Nzweb/404.htmli”  r
   r   )r"   Ú	exceptionr#   r#   r$   Ú	error_404P  s    rH  )LÚcalendarr   Úpickler   Zwsgiref.validater   Údjango.shortcutsr   Údjango.httpr   Úrest_framework.viewsr   Úrest_framework.responser	   Úrest_frameworkr   Zrest_framework.parsersr   r   r   Úuritemplater   Zmagazine.fcmr   Zmagazineapp.modelsrs   ÚloggingÚ	getLoggerr>   r2   Údjango.corer   Zrest_framework.permissionsr   r   Údjango.db.modelsr   Zdjango_filters.rest_frameworkZdjango_filtersZrest_framework.filtersr   r   r   Zmagazine_messager   r   ÚstringÚrandomÚbase.threadsr%   ÚListAPIViewr&   ÚGenericAPIViewrB   rE   rG   rX   rt   rƒ   r†   rˆ   rŽ   r¤   rº   r»   r  r  r  r   r-  r3  r6  r;  rB  rF  rH  r#   r#   r#   r$   Ú<module>   st   
<P748u a  =G=|O#$"