U
    \sc6                     @   s4  d dl 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mZmZmZ d dlmZmZmZ dd	lT dd	lT 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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(Z(d dl)m*Z* d dl)m+Z+ d dl,Z,d dl-Z-d dl.Z.dd	l/T d dl0m0Z0m1Z1 d dl2m3Z3m4Z4 d dl0Z0G dd dej5Z6d dl0Z0G dd dej5Z7G dd dej5Z8G dd dej5Z9G dd dej5Z:G dd  d ej5Z;G d!d" d"ej5Z<G d#d$ d$ej5Z=G d%d& d&ej5Z>G d'd( d(ej5Z?G d)d* d*ej5Z@dS )+    N)render)statusgenericspermissions)Response)partial)LoginMailToUserThreadRegisterMailToUserThreadResendOTPMailToUserThreadContactMailToUserThread)send_login_to_usersend_mobile_otp_to_usersend_register_to_user   )*)mail)r   r   r   )IsAuthenticated)settings)make_password)Q)generate_access_token)	send_mail)EmailMessage)datetime	timedelta)
FormParserMultiPartParserc                   @   s   e Zd ZeZdddZdS )UserRegisterAPIViewNc              
   O   s`  z|j }|d |d< |d |d< |dr6|dnd |d< |dd }tj j|d }|j|d< |dr~|dnd |d< |dr|dnd |d< d	|d
< dg|d< g |d< d}dt	j
tj|d}	|	|d< tj }
|
tdd }||d< tjt|d dt|d dB  }|r|jdkr|jdkr|d rtjj|jdj|	|d |d |	|jd}t|  ddd}nt|d |	 ddd}t|tjd W S |jdkr|jdkrdd!d}t|tjd W S n| j|j d"}| r| }tjj|jd }t|}tjj|j dd d# }|d rt d$ tjj|jdj|	|d |d |	|jd}t|  n(tjj|jdj|	|d t|d |	 dt!d% |j d&}t|tjd W S dd'|j"d&}t|tjd W S W n\ t#k
rZ } z<t$%d(t&|  dt'd% t&|d)}t|tj(d  W Y S d }~X Y nX d S )*Nemailusernameprofile_piccountry_code)r!   countrysocial_login_typeuid   rolesr   groupsuser_permissions    kotp   minutesexp_otp_datetimeZusername__iexactphone_numberr3   Fidr-   r1   r   current_otpnamer   z Please check your gmail account.r   messagezPlease check your mobile inbox.r   z*You have already registered. Please login.datar   zemail varification datar<   r   r<   r?   )A user with that username already exists.zUserRegisterAPIView:error => r   r<   error))r?   getCountryobjectsallfilterlastr6   joinrandomchoicesstringdigitsr   nowr   Userr   email_varificationphone_varificationupdate
first_namer	   startr   r   r   HTTP_201_CREATEDserializer_classis_validsaveZRegisterSerializerprintregister_messageerrors	ExceptionloggerrD   strExp_MESSAGEHTTP_400_BAD_REQUEST)selfrequestpkargskwargsr?   r"   Z
countryobj	otp_ranger-   rP   now_plus_10userdatarecord_datacontext
serializerZmagidZmgviewZserializers_viewsuserse rp   T/var/www/html/staging.mfahmagazine.net/magazine_api/magazine_web_admin/base/views.pypost)   sl    



(




zUserRegisterAPIView.post)N)__name__
__module____qualname__UserRegisterSerializerrX   rr   rp   rp   rp   rq   r   %   s   r   c                   @   s   e Zd ZeZdd ZdS )verifyOTPViewc              
   C   sl  |j d}|j d}z|d kr>ddd}t|tjdW S |d kr`ddd}t|tjdW S tjt|dt|d	B 	 }|d krdd
d}t|tjdW S tjj|d	 }t
|d krddd}t|tjdW S tj }tjt|dt|d	B 	 }|d kr(ddd}t|tjdW S t|j}	|j}
|}|j}||k rt|jt|krd|_|  tjt|dt|d	B  }tjj|jdjddd | |}dd|	|j 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 n\ tk
rf } z<tdt
|  dtd t
|d}t|tjd W Y S d }~X Y nX d S )Nr   r-   r   zPlease enter correct username.r;   r=   zPlease enter correct otp.r2   r4   .Please enter correct username or phone number.)r-   Tr5   )rR   rS   r   zOTP verify Successr   r<   access_tokenr?   zOTP verify is failz
Expire OTPUserLoginAPIView:error => r<   rC   )r?   rE   r   r   rW   rQ   rG   rI   r   rJ   r`   r   rP   r   r6   r1   intr-   ZverifiedrZ   firstrT   rX   r^   r_   rD   ra   rb   )rc   rd   r   r-   rl   Zexp_datetimeZotp_objcurrent_datetimern   rz   ZedddZexpiry_dateuserrm   ro   rp   rp   rq   rr      sV    

 


 



 


zverifyOTPView.postN)rs   rt   ru   UserLoginSerializerrX   rr   rp   rp   rp   rq   rw      s   rw   c                   @   s    e Zd ZeZejfZdd ZdS )UserLoginAPIViewc                 C   s|  zi }|j dd }|j dd }|j dd }|j dd }|j dd }|rd|j dd |d< |rz|j dd |d< |rtjt|dt|dB  }|r|j|d< nd	d
d}	t|	t	j
dW S tjj|d}
tjj|d}|
r|
 n| }|r|r2t||dd}| r&|  nt|jd t|j}d}dtjtj|d}tj tjdd }tjt|dt|dB j||d tjt|dt|dB  }|
r|j|j|jd}t|   |rtjj|d }t!|j"|j t#jj|jdd }t$|}t|jd tjt|dt|dB  }|j%rT|j%nd}|j&rf|j&nd}|j'rx|j'nd}|j(r|j(nd}|j)r|j)nd}|j|j|j*|j|j"|j+|j,|j-|j|j.||||||j d}dt/d ||d}	t|	t	j0dW S d	d
d}	t|	t	j
dW S W n\ t1k
rv } z<t23d t4|  d	t5d t4|d!}	t|	t	j6d W Y S d }~X Y nX d S )"Nr   	device_id	fcm_tokenr!   country_sort_name)Zcountry_code__iexact)Zsortname__iexactr"   r   rx   r;   r=   r2   r4   T)r?   r   z =============================///r)   r*   r+   r.   r/   Zphone_number__iexactr7   r8   )rn   is_subscriptionz======users.address)r6   rU   	last_namer   r3   r!   r   r   r-   zipcodeZaddress_line_1address_line_2statecitycountry_nameZSubscription_datar   r<   ry   r{   rC   )7r?   rE   rF   rG   rI   r   r}   r6   r   r   rW   rQ   rJ   r   rY   rZ   r[   r]   r   rK   rL   rM   rN   rO   r   rP   r   rT   r   r-   rU   r   rV   r   r3   MagazinePurchaseInfoZUserSubscriptionListSerializeraddressr   r   r   r   r   r!   r   r   r   Zlogin_messageHTTP_200_OKr^   r_   rD   r`   ra   rb   )rc   rd   rT   r   r   r   r!   r   r"   rl   r   phonern   rm   rz   rh   r9   r~   rj   rk   Z	mysublistZaddress1Zaddress2r   r   r   dictsro   rp   rp   rq   rr   -  sp     



&  <
zUserLoginAPIView.postN)	rs   rt   ru   r   rX   r   AllowAnypermission_classesrr   rp   rp   rp   rq   r   )  s   r   c                   @   s   e Zd ZeZdd ZdS )SocialLoginAPIViewc              
   C   s  zZ|j dd }|j dd }|j dd }t }|sRddd}t|tjdW S tjt|dt|d	B 	 }|s|||d
}dd|d}t|tjdW S |rZ|d krddd}t|tjdW S tjt|dt|d	B 	 }	|	d kr
ddd}t|tjdW S tjt|dt|d	B 	 }	t
|	j}
| |	}dtd |
|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 )Nr   r$   rU   r   zPlease enter id.r;   r=   r2   )Zuid__iexact)r$   rU   r      zThis user is not exist.rA   z%Please enter correct username or uid.r   r<   ry   zSocialLoginAPIView:error => rC   )r?   rE   r   r   r   rQ   rG   rI   r   rJ   r   r6   rX   ZSocial_login_messager^   r_   rD   r`   ra   rb   )rc   rd   r   r$   rU   responserl   Z	users_objZdicrn   rz   rm   ro   rp   rp   rq   rr   {  s<    
 
 

 


:zSocialLoginAPIView.postN)rs   rt   ru   SocialLoginSerializerrX   rr   rp   rp   rp   rq   r   v  s   r   c                   @   s    e Zd ZeZejfZdd ZdS )ResendOtpAPIViewc              
   C   s<  z|j dd }|d kr4ddd}t|tjdW S tjt|dt|dB 	 }|d krvddd}t|tjdW S tjj|d}tjj|d}|r<d	}d

tjtj|d}tj tjdd }	tjj|djt||	d}tjj|d	 }
|
j|
j|
jd}t|d t|  dtd d}t|tjdW S |rd	}d

tjtj|d}tj tjdd }	tjj|djt||	d}tjj|d }
t|
d d |
d d  dtd d}t|tjdW S W n\ tk
r6 } z<t dt|  dt!d t|d}t|tj"d W Y S d }~X Y nX d S )Nr   r   z/Please enter correct username and phone number.r;   r=   r2   r   r4   r)   r*   r+   r.   r/   r7   r@   r8   z====record data===r   r<   r3   r-   zResendOtpAPIView:error => rC   )#r?   rE   r   r   rW   rQ   rG   rI   r   rJ   rK   rL   rM   rN   rO   r   rP   r   rT   r`   r   r-   rU   r[   r
   rV   Zresendotp_messager   valuesr   r^   r_   rD   ra   rb   )rc   rd   r   rl   rn   Zuser_objZ	phone_objrh   r9   r~   rj   rk   ro   rp   rp   rq   rr     sF    
 

zResendOtpAPIView.postN)	rs   rt   ru   r   rX   r   r   r   rr   rp   rp   rp   rq   r     s   r   c                   @   s   e Zd ZeZdddZdS )ShowdataAPIViewNc              
   C   s   zv|d k	rDt jj|d}| j|dd}dd|jd}t|tjdW S t j }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 )Nr5   Fmanyr   zUser Record found successfully.rA   r=   TzShowdataAPIView:error => r   r<   r;   )rQ   rG   rE   rX   r?   r   r   r   rH   rv   r^   r_   rD   r`   ra   rb   rc   rd   r6   rn   rm   rl   ro   rp   rp   rq   rE     s    
zShowdataAPIView.get)N)rs   rt   ru   rv   rX   rE   rp   rp   rp   rq   r     s   r   c                   @   s*   e Zd Zej ZeZdd Z	dd Z
dS )CountryAPIViewc              
   C   s   zH|j d D ]"}| j|dd}| r|  q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 )NZ	countriesF)r?   r   r   Record Found Successful.r;   r=   CountryAPIView:error => r   r<   r?   rX   rY   rZ   r   r   rW   r^   r_   rD   r`   ra   rb   )rc   rd   itemrm   rl   ro   rp   rp   rq   rr     s    

zCountryAPIView.postc              
   C   s   z6t j }| j|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 )NTr   r   r   rA   r=   r   r   r<   r;   )rF   rG   rH   rX   r?   r   r   rW   r^   r_   rD   r`   ra   rb   )rc   rd   rn   rm   rl   ro   rp   rp   rq   rE     s    
zCountryAPIView.getN)rs   rt   ru   rF   rG   rH   querysetZCountrySerializerrX   rr   rE   rp   rp   rp   rq   r     s   
r   c                   @   s*   e Zd ZeZejfZdd ZdddZ	dS )SubscriptionAPIViewc              
   C   s   zf|j d |j d< | j|j d}| rN|  dd|j d}t|tjdW S 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user_idrn   r>   r   z%Subscription Record Found Successful.rA   r=   r   z	Invailid.r;   SubscriptionAPIView:error => r<   r   rc   rd   rm   rl   ro   rp   rp   rq   rr     s    
zSubscriptionAPIView.postNc              
   C   s   zx|d k	rDt jj|d}| j|dd}dd|jd}t|tjdW S t j }| j|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 )Nr5   Fr   r   z,Subscription User Record Found Successfully.rA   r=   Tr   r   r<   r;   )SubscriptionrG   rE   rX   r?   r   r   r   rH   r^   r_   rD   r`   ra   rb   r   rp   rp   rq   rE   &  s    
zSubscriptionAPIView.get)N)
rs   rt   ru   ZSubscriptionSerializerrX   r   r   r   rr   rE   rp   rp   rp   rq   r     s   r   c                   @   sB   e Zd ZeZeZeZeefZ	dd Z
d
ddZdd Zdd	 ZdS )MagazineProfileAPIViewc                 C   s$   | j jdkrtS | j jdkr tS d S )NPOSTPUT)rd   methodMagazineProfileSerializerUpdateProfileSerializer)rc   rp   rp   rq   get_serializer_class?  s    z+MagazineProfileAPIView.get_serializer_classNc              
   C   s   z| j jdd }|rPtjj|d}t|dd}dd|jgd}t|tj	dW S tj
 }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 )Nr   r5   Fr   r   z-All user profile records found Successfully. rA   r=   T MagazineProfileAPIView:error => r   r<   r;   )rd   GETrE   rQ   rG   GetMagazineProfileSerializerr?   r   r   r   rH   r^   r_   rD   r`   ra   rb   )rc   rd   r6   r   rn   rm   rl   ro   rp   rp   rq   rE   E  s    
zMagazineProfileAPIView.getc              
   C   s  z|j }|d |d< |d |d< dg|d< d|d< g |d< d}d	tjtj|d
}||d< tj }|tdd }||d< d}|d j	
dd }||krddd}	t|	tjdW S | j|j d}
tjj|d d }|rddd}	t|	tjdW S tjj|d d }|r0ddd}	t|	tjdW S |
 r|
jdddd tjj|
j dd d }|j|j|jd}t|  d td! |
j d"}	t|	tjdW S 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 )%Nr   r   r   r'   r%   r&   r(   r)   r*   r+   r-   r.   r/   r1   ZjpgZpngr    .*Image extention should be '.jpg' or '.png'r;   r=   r>   )Zemail__iexactzEmail already exists.r3   r4   zPhone number already exists.T)rR   rS   otp_varificationr@   r8   r   r<   rA   rB   r   )#r?   rK   rL   rM   rN   rO   r   rP   r   r:   splitr   r   rW   rX   rQ   rG   rI   rJ   rY   rZ   rE   r   r-   rU   r	   rV   r\   r]   r^   r_   rD   r`   ra   rb   )rc   rd   r?   rh   r-   rP   ri   	valid_ext	extentionrl   rm   rn   Zphoneobjrk   ro   rp   rp   rq   rr   ]  sP    





zMagazineProfileAPIView.postc           
   
   C   sF  z|j }|j dd }|rTd}|d jdd }||krTddd}t|tjdW S |sf| }|d= tj	j|d	 d
}|sddd}t|tjdW S t
||}| r|  dd|j d}t|tjdW S 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 )Nr    r   r   r   r   r   r;   r=   r   r5   zPlease enter valid user idr   z User has been update successful.rA   zUser has not been update.r   r<   )r?   rE   r:   r   r   r   rW   dictrQ   rG   r   rY   rZ   r]   r^   r_   rD   r`   ra   rb   )
rc   rd   r?   profiler   r   rl   Zuseronjrm   ro   rp   rp   rq   put  s6    


zMagazineProfileAPIView.put)N)rs   rt   ru   r   rX   r   r   r   r   parser_classesr   rE   rr   r   rp   rp   rp   rq   r   9  s   
 r   c                   @   s   e Zd ZeZdd ZdS )MagazineContactsAPIViewc              
   C   s  z|j }|dd |d< t|j d}| r|  tjj|j dd d }|d |j	|j
d}t|  dd|j d	}t|tjd
W S 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 )Nr   r   r>   r   )r   )r   r<   r:   r   z(Contact User has been create successful.rA   r=   r   zUser has not been create data.z!MagazineContactsAPIView:error => r<   r;   )r?   rE   ContactsSerializerrY   rZ   
ContactsUsrG   rI   rJ   r<   rU   r   rV   r   r   rW   r]   r^   r_   rD   r`   ra   rb   )rc   rd   r?   rm   rn   rk   rl   ro   rp   rp   rq   rr   "  s"    zMagazineContactsAPIView.postN)rs   rt   ru   r   rX   rr   rp   rp   rp   rq   r     s   r   c                   @   s"   e Zd ZeZdd ZdddZdS )MasterCurrencyAPIViewc              
   C   s   z^| j |jd}| rB|jdd dd|jd}t|tjdW S 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 )Nr>   T)currency_statusr   z)Master Currency Record Create Successful.rA   r=   r   z%Master currency record is not create.MasterCurrencyAPIView:error => r<   r;   )rX   r?   rY   rZ   r   r   rW   r]   r^   r_   rD   r`   ra   rb   r   rp   rp   rq   rr   C  s    zMasterCurrencyAPIView.postNc              
   C   s   z6t j }| j|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 )NTr   r   z*Master Currency Record Found Successfully.rA   r=   r   r   r<   r;   )MasterCurrencyrG   rH   rX   r?   r   r   r   r^   r_   rD   r`   ra   rb   r   rp   rp   rq   rE   R  s    
zMasterCurrencyAPIView.get)N)rs   rt   ru   ZMasterCurrencySerializerrX   rr   rE   rp   rp   rp   rq   r   ?  s   r   )Ar   django.shortcutsr   rest_frameworkr   r   r   rest_framework.responser   uritemplater   Zbase.threadsr   r	   r
   r   Zmagazine.utilsr   r   r   modelsserializersZmagazineapp.modelsZmagazineapp.serializerslogging	getLoggerrs   r_   django.corer   Zrest_framework.permissionsr   django.confr   django.contrib.auth.hashersr   django.db.modelsr   testsr   Zjwtdjango.core.mailr   r   rL   rN   requestsZbase_messager   r   Zrest_framework.parsersr   r   ZGenericAPIViewr   rw   r   r   r   r   r   r   r   r   r   rp   rp   rp   rq   <module>   sV   
 J9M  23!' g 