
>˜_^�'  ã               @   sÆ  d  d l  Td  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 Td  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  Gd d „  d e ƒ Z! Gd d „  d e ƒ Z" Gd d „  d e ƒ Z# Gd d „  d e ƒ Z$ Gd d „  d e ƒ Z% Gd 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  d | j d d | j d ƒ } | d  k	 rÑ | j d k rY d \ } } } qà t j j d | j ƒ j ƒ  } | r¿ t j j	 d | ƒ \ } } t
 | ƒ } | j } d \ } } } qà d \ } } } n d \ } } } WnC t k
 r&}	 z# d t |	 ƒ d d } } } WYd  d  }	 ~	 Xn Xy | r9| j } Wn+ t k
 rg}
 z d } WYd  d  }
 ~
 Xn Xt d | d | d | d | d | i ƒ S)NÚusernameÚpasswordTú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   úsuccess)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© r3   úb/home/ip-d/Documents/projects_daily_backup/Sterling/live_download/myproject/userapp/api/userapp.pyÚpost   s,    #	1zUserAppLogin.postN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Zpermission_classesr5   r3   r3   r3   r4   r      s   	r   c               @   s   e  Z d  Z d d d „ Z d S)ÚUserAppLogoutNc             C   s    | j  j j ƒ  t d t j ƒ S)Nr   )r   Ú
auth_tokenÚdeleter
   r   ZHTTP_200_OK)r/   r0   Úformatr3   r3   r4   Úget:   s    zUserAppLogout.get)r6   r7   r8   r>   r3   r3   r3   r4   r:   9   s   r:   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  } y” | j  j } | rŠ i  } t j j d t | ƒ ƒ j d ƒ } | rx t | d d ƒ} | j } d \ } } } q™ d \ } } } n d \ } } } WnC t	 k
 rß }	 z# d
 t
 |	 ƒ d d } } } WYd  d  }	 ~	 Xn Xt d | d | d | d | i ƒ S)NÚuserinfo_id__user_id_idz-idÚmanyTúFetched successfully.r   r   úNo post data.úInvalid User.zSomething went wrong :iô  r   r   r   r   r!   )rB   úsuccessr   )rC   r   rE   )rD   r   rE   )r   r(   ÚUserAddedPostr&   r'   ÚintÚorder_byZUserPostSerializerr+   r,   r-   r   )
r/   r0   r1   Úuser_idZ	user_postZuser_posts_serializerr   r   r   r2   r3   r3   r4   r>   D   s    $	1zUserPosts.getc             C   s[  yù| j  j } | ré| j j d ƒ } | j j d ƒ } | j j d ƒ } d | j k rv t d d d d d d	 i ƒ Sd | j k r¡ t d d
 d d d d	 i ƒ Sd | j k rÌ t d d d d d d	 i ƒ St j j d t	 | ƒ ƒ j
 ƒ  } | r×t	 | j ƒ t	 | ƒ d k  rWt d d t | j ƒ d t t	 | ƒ d ƒ d d d d d	 i ƒ St	 | j ƒ t	 | ƒ d | _ yt j j d t	 | ƒ ƒ j
 ƒ  } | r~| j } t j j d t	 | ƒ d | d t	 | ƒ d | 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 \ } } } Wqæt k
 rÓ} z# d t | ƒ d d } } } WYd  d  } ~ XqæXqød  \ } } } n d! \ } } } WnC t k
 r>} z# d t | ƒ d d } } } WYd  d  } ~ Xn Xt d | d | d | i ƒ S)"NÚimageÚtarget_usersÚkeyboard_idr   zPlease enter the image.r   r   r   r   zPlease enter the target_userszPlease enter the keyboard_idr   é   z	User has z coins. It requires min z coins for this target users.Úuserinfo_id_idÚkeyboard_id_idÚpost_view_accessÚ
total_viewú/éd   Z100X100_ú!Post has been added successfully.úInvalid User.zSomething went wrong :iô  r   )rS   rS   )rT   r   úsuccess)rU   r   rV   )rU   r   rV   )rU   r   rV   )r   r(   ÚFILESr>   r#   r   r%   r&   r'   rG   r)   Úcoinsr-   rF   ÚcreateÚsaverJ   ÚnameÚosÚpathÚjoinr   Ú
MEDIA_ROOTr   ÚopenZ	thumbnailr,   )r/   r0   rI   rJ   rK   rL   ÚobjÚuserinfo_idZpost_owner_idZsave_objZ
image_nameÚfileZimr[   Z
thumb_filer   r   r   r2   r3   r3   r4   r5   X   sN    !E !	9
41zUserPosts.postc       	      C   s  y· | j  j } | r§ d | j k r@ t d d d d d d i ƒ S| j j d ƒ } t j j d t | ƒ ƒ j	 ƒ  } | r• | j
 ƒ  d \ } } } q¶ d \ } } } n d \ } } } WnC t k
 rü } z# d t | ƒ d d } } } WYd  d  } ~ Xn Xt d | d | d | i ƒ S)NÚpost_idr   zpost_id is missing.r   r   r   r   r(   úPost deleted successfully.úInvalid post_id.úInvalid User.zSomething went wrong :iô  r   )re   r   úsuccess)rf   r   rh   )rg   r   rh   )r   r(   r#   r   r>   rF   r&   r'   rG   r)   r<   r,   r-   )	r/   r0   rI   rd   Zto_be_deletedr   r   r   r2   r3   r3   r4   r<   ‡   s    !
1zUserPosts.deleteN)r6   r7   r8   r9   r>   r5   r<   r3   r3   r3   r4   r?   @   s   /r?   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µ  yS| j  j } | rCt j j d t | ƒ ƒ j d ƒ } | r1t d d ƒ } d | d <t j	 | ƒ } d } | j
 d d	 d
 d d g ƒ x¡ | D]™ } t | ƒ } t t j ƒ t | j j ƒ }	 t | j ƒ }
 | j } | j d k rî d } | j d k rd } | j
 | |	 |
 | | g ƒ | d } q� W| Sd \ } } } n d \ } } } WnC t k
 r˜} z# d t | ƒ d d } } } WYd  d  } ~ Xn Xt d | d | d | i ƒ S)Nr@   z-idÚcontent_typeztext/csvz&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   )ro   r   úsuccess)rp   r   rq   )r   r(   rF   r&   r'   rG   rH   r   ÚcsvÚwriterÚwriterowr-   r   Ú
API_SERVERrJ   r[   rQ   Úcurrent_viewÚ	offensiver,   r   )r/   r0   rI   ra   Úresponsers   ÚcÚiZs_noZ	post_linkZ
view_limitZcurrent_viewsÚoffr   r   r   r2   r3   r3   r4   r>   ¢   s6    $
	1zUserPostsCSV.getN)r6   r7   r8   r9   r>   r3   r3   r3   r4   ri   ž   s   ri   c               @   s   e  Z d  Z d d „  Z d S)ÚSinglePostCsvc             C   sŸ  | j  j } | rtd | j k r= t d d d d d d i ƒ S| j j d ƒ } t j j d t | ƒ ƒ } t	 d	 d
 ƒ } d | d <t
 j | d d d d d t
 j ƒ} t j j d t | ƒ ƒ j ƒ  } | rbt | j ƒ t | j ƒ k rt d d d d d d i ƒ S| j d k r1d } | j | g ƒ | Sx' | D] }	 |	 j } | j | g ƒ q8W| Sqƒd \ }
 } } n d \ }
 } } t d |
 d | d | i ƒ S)Nrd   r   zpost_id is missing.r   r   r   r   Ú
post_id_idrj   ztext/csvz&attachment; filename="post_report.csv"zContent-DispositionÚ	delimiterú Z
escapecharZquotingr(   zJob is not completed.Trl   úInvalid post_id.úInvalid User.)r€   r   úsuccess)r�   r   r‚   )r   r(   ÚGETr   r>   ÚOtherUsersReactionr&   r'   rG   r   rr   rs   Z
QUOTE_NONErF   r)   rv   rQ   rw   rt   Úrank)r/   r0   rI   rd   ra   rx   rs   Z	check_objZrank_submittedrz   r   r   r   r3   r3   r4   r>   Ä   s2    
!	zSinglePostCsv.getN)r6   r7   r8   r>   r3   r3   r3   r4   r|   Ã   s   r|   c               @   s   e  Z d  Z d d „  Z d S)ÚJobCompletec       	      C   sI  yç | j  j } | r× d | j k r@ t d d d d d d i ƒ S| j j d ƒ } t j j d t | ƒ ƒ j	 ƒ  } | rÅ d	 | _
 t | j ƒ | _ | j | _ d
 | _ | j ƒ  d \ } } } qæ d \ } } } n d \ } } } WnC t k
 r,} z# d t | ƒ d d } } } WYd  d  } ~ Xn Xt d | d | d | i ƒ S)Nrd   r   zpost_id is missing.r   r   r   r   r(   Tr   úSuccessfully completed the job.úInvalid post id.úInvalid User.zSomething went wrong :iô  r   )r‡   r   úsuccess)rˆ   r   rŠ   )r‰   r   rŠ   )r   r(   rƒ   r   r>   rF   r&   r'   rG   r)   rw   rv   Úoffensive_atrQ   rP   rZ   r,   r-   )	r/   r0   rI   rd   Úobj1r   r   r   r2   r3   r3   r4   r>   é   s&    !		
1zJobComplete.getN)r6   r7   r8   r>   r3   r3   r3   r4   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   rr   r\   ÚPILr   r   r:   r?   ri   r|   r†   r3   r3   r3   r4   Ú<module>   s2   

#^%%