3
.Lâ^á*  ã               @   sP  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 d dlT d dl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 d dlmZ d dlZd dlZd dlm Z  G dd„ deƒZ!G dd„ deƒZ"G dd„ deƒZ#G dd„ deƒZ$G dd„ deƒZ%G dd„ deƒZ&dS )é    )Ú*)ÚAllowAny)ÚUser)ÚAPIView)ÚJsonResponse)Úrender)Úauthenticate)ÚToken)ÚResponse)ÚTemplateViewN)ÚObtainAuthToken)Ústatus)ÚHttpResponseÚHttpResponseRedirect)Úsettings)ÚImagec               @   s   e Zd ZdZefZdd„ ZdS )ÚUserAppLoginz5
	For the  login operations of the userinfo master 
	c          #   C   s   g }y”t |jd |jd d�}|d k	rŒ|jdkr<d\}}}q–tjj|jd�jƒ }|r€tjj	|d	�\}}t
|ƒ}|j}d\}}}q–d\}}}n
d\}}}W n: tk
rÒ }	 zdt|	ƒ dd  }}}W Y d d }	~	X nX y|rà|j}W n( tk
�r
 }
 z
d}W Y d d }
~
X nX t|||||dœƒS )NÚusernameÚpassword)r   r   TúAdmin cannot login.éÈ   Úsuccess)Ú
user_id_id)ÚuserúLogin SuccessfulúUser Credentials were incorrectzSomething went wrong:iô  ÚerrorÚ )Úmessager   ÚcodeÚtokenÚinfo)r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   ÚPOSTÚis_superuserÚUserInfoÚobjectsÚfilterÚidÚfirstr	   Úget_or_createZUserInfoSerializerÚdataÚ	ExceptionÚstrÚkeyr   )ÚselfÚrequestÚuser_info_datar   r   r   r   Z	user_infor    r   Úe© r2   ú./var/www/html/myproject/userapp/api/userapp.pyÚpost   s,    
*
zUserAppLogin.postN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Zpermission_classesr4   r2   r2   r2   r3   r      s   r   c               @   s   e Zd Zddd„ZdS )ÚUserAppLogoutNc             C   s   |j jjƒ  ttjd�S )N)r   )r   Ú
auth_tokenÚdeleter
   r   ZHTTP_200_OK)r.   r/   Úformatr2   r2   r3   Úget:   s    zUserAppLogout.get)N)r5   r6   r7   r=   r2   r2   r2   r3   r9   9   s   r9   c               @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	Ú	UserPostsz.
	For the job operations of the users posts 
	c       
      C   s¶   i }yd|j j}|r\i }tjjt|ƒd�jdƒ}|rPt|dd�}|j}d\}}}qfd\}}}n
d\}}}W n: t	k
r¢ }	 zd
t
|	ƒ dd  }}}W Y d d }	~	X nX t||||dœƒS )N)Úuserinfo_id__user_id_idz-idT)ÚmanyúFetched successfully.r   r   úNo post data.úInvalid User.zSomething went wrong :iô  r   )r   r   r   r!   )rA   r   r   )rB   r   r   )rC   r   r   )r   r'   ÚUserAddedPostr%   r&   ÚintÚorder_byZUserPostSerializerr*   r+   r,   r   )
r.   r/   r0   Úuser_idZ	user_postZuser_posts_serializerr   r   r   r1   r2   r2   r3   r=   D   s    *zUserPosts.getc             C   sÀ  �yp|j j}|�rf|jjdƒ}|jjdƒ}|jjdƒ}d|jkrPtddddœƒS d|jkrjtddddœƒS |jd d ks†|jd d	kr–td
dddœƒS d|jkr°tddddœƒS |jd d ksÌ|jd d	krÜtddddœƒS tjjt	|ƒd�j
ƒ }|�rZt	|jƒt	|ƒd k �rBtdt|jƒ d tt	|ƒd ƒ d dddœƒS t	|jƒt	|ƒd  |_yÀtjjt	|ƒd�j
ƒ }|�r|j}tjjt	|ƒ|t	|ƒ||d�}	|jƒ  |	jj}
tjjtjd |
 ƒ}tj|ƒ}|jdƒ dt|
ƒ }tjjtjd | ƒ}|j|ƒ d\}}}n
d\}}}W n< tk
�rV } zdt|ƒ dd  }}}W Y d d }~X nX n
d\}}}n
d\}}}W n< tk
�r® } zdt|ƒ dd  }}}W Y d d }~X nX t|||dœƒS ) NÚimageÚtarget_usersÚkeyboard_idzPlease enter the image.r   r   )r   r   r   zPlease enter the target_usersr   z%Enter the value for the  target_userszPlease enter the keyboard_idz#Enter the value for the keyboard_id)r   é   z	User has z coins. It requires min z coins for this target users.)Úuserinfo_id_idrH   Úkeyboard_id_idÚpost_view_accessÚ
total_viewú/éd   Z100X100_ú!Post has been added successfully.úInvalid User.zSomething went wrong :iô  r   )rQ   rQ   )rR   r   r   )rS   r   r   )rS   r   r   )rS   r   r   )r   r'   ÚFILESr=   r"   r   r$   r%   r&   rE   r(   Úcoinsr,   rD   ÚcreateÚsaverH   ÚnameÚosÚpathÚjoinr   Ú
MEDIA_ROOTr   ÚopenZ	thumbnailr+   )r.   r/   rG   rH   rI   rJ   ÚobjÚuserinfo_idZpost_owner_idZsave_objZ
image_nameÚfileZimrX   Z
thumb_filer   r   r   r1   r2   r2   r3   r4   X   sV    


2


,*zUserPosts.postc       	      C   sÆ   yz|j j}|rnd|jkr(tddddœƒS |jjdƒ}tjjt|ƒd�j	ƒ }|rb|j
ƒ  d\}}}qxd\}}}n
d\}}}W n: tk
r´ } zd
t|ƒ dd  }}}W Y d d }~X nX t|||dœƒS )NÚpost_idzpost_id is missing.r   r   )r   r   r   )r'   úPost deleted successfully.úInvalid post_id.úInvalid User.zSomething went wrong :iô  r   )rb   r   r   )rc   r   r   )rd   r   r   )r   r'   r"   r   r=   rD   r%   r&   rE   r(   r;   r+   r,   )	r.   r/   rG   ra   Zto_be_deletedr   r   r   r1   r2   r2   r3   r;   �   s    
*zUserPosts.deleteN)r5   r6   r7   r8   r=   r4   r;   r2   r2   r2   r3   r>   @   s   5r>   c               @   s   e Zd ZdZdd„ ZdS )ÚUserPostsCSVz.
	For the perations of the users posts csv  
	c             C   s<  yî|j j}|râtjjt|ƒd�jdƒ}|rÖtdd�}d|d< tj	|ƒ}d}|j
dd	d
ddgƒ xr|D ]j}t|ƒ}ttjƒt|jjƒ }	t|jƒ}
|j}|jdkr¤d}|jdkr²d}|j
||	|
||gƒ |d }qdW |S d\}}}n
d\}}}W n< tk
�r* } zdt|ƒ dd  }}}W Y d d }~X nX t|||dœƒS )N)r?   z-idztext/csv)Úcontent_typez&attachment; filename="post_report.csv"zContent-Dispositioné   zS.Noz	Post Linkz
View LimitzCurrent ViewsÚIs_offensiveTÚYesFÚNoúNo Post Information.r   r   úInvalid User.zSomething went wrong :iô  r   )r   r   r   )rk   r   r   )rl   r   r   )r   r'   rD   r%   r&   rE   rF   r   ÚcsvÚwriterÚwriterowr,   r   Ú
API_SERVERrH   rX   rO   Úcurrent_viewÚ	offensiver+   r   )r.   r/   rG   r^   Úresponsern   ÚcÚiZs_noZ	post_linkZ
view_limitZcurrent_viewsÚoffr   r   r   r1   r2   r2   r3   r=   ¨   s6    





*zUserPostsCSV.getN)r5   r6   r7   r8   r=   r2   r2   r2   r3   re   ¤   s   re   c               @   s   e Zd Zdd„ ZdS )ÚSinglePostCsvc             C   sJ  |j j}|�r0d|jkr(tddddœƒS |jd d ksD|jd dkrTtddddœƒS |jjdƒ}tjjt|ƒd�}t	d	d
�}d|d< t
j|ddt
jd�}tjjt|ƒd�jƒ }|�r$t|jƒt|jƒkrØtddddœƒS |jdk� rød}|j|gƒ |S x |D ]}	|	j}|j|gƒ � qþW |S |S n
d\}
}}n
d\}
}}t|
||dœƒS )Nra   zpost_id is missing.r   r   )r   r   r   r   zEnter the value for the post_id)Ú
post_id_idztext/csv)rf   z&attachment; filename="post_report.csv"zContent-Dispositionú )Ú	delimiterÚ
escapecharÚquoting)r'   zJob is not completed.Trh   úInvalid post_id.úInvalid User.)r}   r   r   )r~   r   r   )r   r'   ÚGETr   r=   ÚOtherUsersReactionr%   r&   rE   r   rm   rn   Ú
QUOTE_NONErD   r(   rq   rO   rr   ro   Úrank)r.   r/   rG   ra   r^   rs   rn   Z	check_objZrank_submittedru   r   r   r   r2   r2   r3   r=   Ê   s8    



zSinglePostCsv.getN)r5   r6   r7   r=   r2   r2   r2   r3   rw   É   s   rw   c               @   s   e Zd Zdd„ ZdS )ÚJobCompletec       	      C   s  yÆ|j j}|rºd|jkr(tddddœƒS |jd d ksD|jd dkrTtddddœƒS |jjdƒ}tjjt|ƒd�j	ƒ }|r®d	|_
t|jƒ|_|j|_d
|_|jƒ  d\}}}qÄd\}}}n
d\}}}W n< tk
�r } zdt|ƒ dd  }}}W Y d d }~X nX t|||dœƒS )Nra   zpost_id is missing.r   r   )r   r   r   r   zEnter the value for the post_id)r'   Tr   úSuccessfully completed the job.úInvalid post id.úInvalid User.zSomething went wrong :iô  r   )r„   r   r   )r…   r   r   )r†   r   r   )r   r'   r   r   r=   rD   r%   r&   rE   r(   rr   rq   Úoffensive_atrO   rN   rW   r+   r,   )	r.   r/   rG   ra   Úobj1r   r   r   r1   r2   r2   r3   r=   ó   s*    
*zJobComplete.getN)r5   r6   r7   r=   r2   r2   r2   r3   rƒ   ò   s   rƒ   )'Zuserapp.modelsZrest_framework.permissionsr   Údjango.contrib.auth.modelsr   Zrest_framework.viewsr   Údjango.httpr   Zdjango.shortcutsr   Údjango.contrib.authr   Zrest_framework.authtoken.modelsr	   Zrest_framework.responser
   Údjango.views.generic.baser   Z&userapp.serializers.userapp_serializerÚjsonZrest_framework.authtoken.viewsr   Úrest_frameworkr   r   r   Údjango.confr   rm   rY   ÚPILr   r   r9   r>   re   rw   rƒ   r2   r2   r2   r3   Ú<module>   s2   #d%)