ó
qv™^c           @   sb  d  d l  Td  d l m Z d  d l m Z m Z d  d l Z d  d l Td  d l Td  d l  Td  d l	 m
 Z
 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 m Z d  d l m Z d  d l Z d  d l m Z d  d l m Z e j d e f d „  ƒ  Yƒ Z d e j j f d „  ƒ  YZ d e j  f d „  ƒ  YZ! d e j  f d „  ƒ  YZ" d e j  f d „  ƒ  YZ# d e j$ f d „  ƒ  YZ% d e j& f d „  ƒ  YZ' d e j( f d „  ƒ  YZ) d e j  f d „  ƒ  YZ* d  e j$ f d! „  ƒ  YZ+ d" e j& f d# „  ƒ  YZ, d$ „  Z- e. d% g ƒ d& „  ƒ Z/ d' e j  f d( „  ƒ  YZ0 d S()   iÿÿÿÿ(   t   *(   t   TokenHasReadWriteScope(   t   rendert   HttpResponseN(   t   Ft   Q(   R   (   t   JsonResponse(   t   Lookup(   t   Field(   t
   connection(   t
   namedtuple(   t	   b64decode(   t   ContentFilet   NotEqualc           B   s   e  Z d  Z d „  Z RS(   t   nec         C   sN   |  j  | | ƒ \ } } |  j | | ƒ \ } } | | } d | | f | f S(   Ns   %s <> %s(   t   process_lhst   process_rhs(   t   selft   compilerR	   t   lhst
   lhs_paramst   rhst
   rhs_paramst   params(    (    s)   /var/www/agenderbackend/api/views/chat.pyt   as_sql   s    
(   t   __name__t
   __module__t   lookup_nameR   (    (    (    s)   /var/www/agenderbackend/api/views/chat.pyR      s   t   NoChatFilterc           B   s   e  Z d  d d „  ƒ  YZ RS(   t   Metac           B   s   e  Z e Z d  Z RS(   t   __all__(   R   R   t   Chatt   modelt   fields(    (    (    s)   /var/www/agenderbackend/api/views/chat.pyR       s   (    (   R   R   R   (    (    (    s)   /var/www/agenderbackend/api/views/chat.pyR      s   t   ChatListViewc           B   s>   e  Z d  Z e j j ƒ  Z e Z d Z	 d Z
 e Z d „  Z RS(   s£   
        Renvoi la liste des chats disponible pour un user ou pour chat (id) donnÃ©

        Parametres : id ou refUser ou forUser ou mixte : (userId,forUser)
    t	   createdAts
   -createdAtc         C   sý   |  j  j j d d  ƒ } t j d |  j  j ƒ | d  k r® |  j  j j d d  ƒ } | d  k rƒ t j j ƒ  j	 d ƒ j	 d ƒ } n' t j j d | ƒ j	 d ƒ j	 d ƒ } | St j d ƒ t j j
 t d | ƒ t d | ƒ Bƒ j	 d ƒ j	 d ƒ } | Sd  S(   Nt   refUsers	   userID %st   idt
   refUserOnet
   refUserTwot   pks	   on filtre(   t   requestt   query_paramst   gett   Nonet   loggert   infoR   t   objectst   allt   select_relatedt   filterR   (   R   t   userIdR%   t   queryset(    (    s)   /var/www/agenderbackend/api/views/chat.pyt   get_queryset1   s    $':(   s
   -createdAt(   R   R   t   __doc__R   R/   R0   R4   t   ChatSerializert   serializer_classt   ordering_fieldst   orderingt   NoPaginationResultst   pagination_classR5   (    (    (    s)   /var/www/agenderbackend/api/views/chat.pyR"   $   s   t   ChatBetweenUserListViewc           B   s>   e  Z d  Z e j j ƒ  Z e Z d Z	 d Z
 e Z d „  Z RS(   s„   
        Renvoi la liste des chats disponible pour un user ou pour chat (id) donnÃ©

        Parametres : refUserOne refUserTwo
    R#   s
   -createdAtc         C   s‘   |  j  j j d d  ƒ } |  j  j j d d  ƒ } t j d |  j  j ƒ t j j t	 d | d | ƒ t	 d | d | ƒ Bƒ j
 d ƒ j
 d ƒ } | S(   NR&   R'   s	   userID %s(   R)   R*   R+   R,   R-   R.   R   R/   R2   R   R1   (   R   R&   R'   R4   (    (    s)   /var/www/agenderbackend/api/views/chat.pyR5   O   s    4(   s
   -createdAt(   R   R   R6   R   R/   R0   R4   R7   R8   R9   R:   R;   R<   R5   (    (    (    s)   /var/www/agenderbackend/api/views/chat.pyR=   A   s   t   AllChatListViewc           B   s>   e  Z d  Z e j j ƒ  Z e Z d Z	 d Z
 e Z d „  Z RS(   sE  
        Renvoi la liste des chats auxquels un utilisateur (userId) participe.
        La diffÃ©rence avec le WS prÃ©cÃ©dent est que l'utilisateur peut Ãªtre Ã  l'origine du chat (userId)
        ou Ãªtre le destinaire du chat (si quelqu'un a commencÃ© Ã  lui parler en 1ere) (forUser=userId)

        Parameter : userId
    R#   s
   -createdAtc         C   sÙ   |  j  j j d d  ƒ } | d  k r— |  j  j j d d  ƒ } | d  k rl t j j ƒ  j d ƒ j d ƒ } n' t j j d | ƒ j d ƒ j d ƒ } | St j j t	 d | ƒ t	 d | ƒ Bƒ j d ƒ j d ƒ } | Sd  S(   NR$   R%   R&   R'   R(   (
   R)   R*   R+   R,   R   R/   R0   R1   R2   R   (   R   R3   R%   R4   (    (    s)   /var/www/agenderbackend/api/views/chat.pyR5   g   s    $':(   s
   -createdAt(   R   R   R6   R   R/   R0   R4   R7   R8   R9   R:   R   t   filter_classR5   (    (    (    s)   /var/www/agenderbackend/api/views/chat.pyR>   Y   s   t   AddChatViewc           B   s   e  Z e j j ƒ  Z e Z RS(    (   R   R   R   R/   R0   R4   t   CreateChatSerializerR8   (    (    (    s)   /var/www/agenderbackend/api/views/chat.pyR@   t   s   t   ChatDetailViewc           B   s   e  Z e j j ƒ  Z e Z RS(    (   R   R   R   R/   R0   R4   R7   R8   (    (    (    s)   /var/www/agenderbackend/api/views/chat.pyRB   z   s   t   ChatMediaListViewc           B   s   e  Z d d  „ Z RS(   c         C   sË   | j  d k rº | j } | d } | d } | d } | j d ƒ \ } } t j j d | ƒ } t ƒ  }	 | |	 _ t t	 | ƒ d | ƒ|	 _
 |	 j ƒ  i |	 j
 j d 6}
 t |
 d t ƒSt d	 d
 ƒ d  S(   Nt   POSTt   refChatt   mediat   filenames   ;base64,R(   t   namet   safet   statusi”  (   t   methodt   _datat   splitR   R/   R+   t	   ChatMediaRE   R   R   RF   t   saveRH   R   t   FalseR   (   R   R)   t   formatt   dataRE   t   image_base64t   fileNamet   imgstrt   chatt	   chatMediat   newdict(    (    s)   /var/www/agenderbackend/api/views/chat.pyt   post   s    	


		
N(   R   R   R,   RY   (    (    (    s)   /var/www/agenderbackend/api/views/chat.pyRC   €   s   t   ChatMessageListViewc           B   s   e  Z e Z d  „  Z RS(   c         C   sÙ   |  j  j j d d  ƒ } |  j  j j d d  ƒ } |  j  j j d d  ƒ } | r´ | rŠ t j j d | d t d | ƒ j d ƒ j	 d ƒ } qÕ t j j d | ƒ j d ƒ j	 d ƒ } n! t j j
 ƒ  j d ƒ j	 d ƒ } | S(   NRE   t   unreadt   senderIdt   isReadt   senderId__neR%   (   R)   R*   R+   R,   t   ChatMessageR/   R2   RP   t   order_byR1   R0   (   R   t   chatIdR[   t   senderR4   (    (    s)   /var/www/agenderbackend/api/views/chat.pyR5   ˜   s    6*!(   R   R   t   ChatMessageSerializerR8   R5   (    (    (    s)   /var/www/agenderbackend/api/views/chat.pyRZ   ”   s   t   AddMessageViewc           B   s   e  Z e j j ƒ  Z e Z RS(    (   R   R   R_   R/   R0   R4   t   CreateChatMessageSerializerR8   (    (    (    s)   /var/www/agenderbackend/api/views/chat.pyRd   ¦   s   t   MessageDetailViewc           B   s   e  Z e j j ƒ  Z e Z RS(    (   R   R   R_   R/   R0   R4   Rc   R8   (    (    (    s)   /var/www/agenderbackend/api/views/chat.pyRf   «   s   c         C   sR   |  j  } t d g  | D] } | d ^ q ƒ } g  |  j ƒ  D] } | | Œ  ^ q< S(   s-   Return all rows from a cursor as a namedtupleR_   i    (   t   descriptionR
   t   fetchall(   t   cursort   desct   colt	   nt_resultt   row(    (    s)   /var/www/agenderbackend/api/views/chat.pyt   namedtuplefetchall±   s    	&t   GETc         C   sº   |  j  d k r¯ |  j j d d  ƒ } d } | d 7} | d t | ƒ t | ƒ f 7} | d t | ƒ 7} t j ƒ    } | j | ƒ t | ƒ } Wd  QXt	 t
 j | ƒ d d ƒSt	 j Sd  S(	   NRo   R3   sQ   select distinct (backoffice_chatmessage."refChat_id") from backoffice_chatmessagesO    join backoffice_chat on backoffice_chat.id=backoffice_chatmessage."refChat_id"s{    where (backoffice_chat."refUserOne_id"=%s or backoffice_chat."refUserTwo_id"=%s) and "backoffice_chatmessage"."isRead"='0's/    and "backoffice_chatmessage"."senderId_id"!=%st   content_types   application/json(   RK   R*   R+   R,   t   strR	   Ri   t   executeRn   R   t   jsont   dumpst   HttpResponseServerError(   R)   R3   t   queryRi   t	   listeChat(    (    s)   /var/www/agenderbackend/api/views/chat.pyt   nbNewMessage·   s    
 t   ChatFullDetailListViewc           B   s>   e  Z d  Z e j j ƒ  Z e Z d Z	 d Z
 e Z d „  Z RS(   s£   
        Renvoi la liste des chats disponible pour un user ou pour chat (id) donnÃ©

        Parametres : id ou refUser ou forUser ou mixte : (userId,forUser)
    R#   s
   -createdAtc         C   sÙ   |  j  j j d d  ƒ } | d  k r— |  j  j j d d  ƒ } | d  k rl t j j ƒ  j d ƒ j d ƒ } n' t j j d | ƒ j d ƒ j d ƒ } | St j j t	 d | ƒ t	 d | ƒ Bƒ j d ƒ j d ƒ } | Sd  S(   NR$   R%   R&   R'   R(   (
   R)   R*   R+   R,   R   R/   R0   R1   R2   R   (   R   R3   R%   R4   (    (    s)   /var/www/agenderbackend/api/views/chat.pyR5   Õ   s    $':(   s
   -createdAt(   R   R   R6   R   R/   R0   R4   t   ChatFullDetailSerializerR8   R9   R:   R;   R<   R5   (    (    (    s)   /var/www/agenderbackend/api/views/chat.pyRy   Ç   s   (1   t   api.serializerst"   oauth2_provider.ext.rest_frameworkR   t   django.shortcutsR   R   t   django_filterst   backoffice.modelst   api.views.usert   django.db.modelsR   R   t   django.httpR   R   t   django.db.models.fieldsR   t	   django.dbR	   t   collectionsR
   Rs   t   base64R   t   django.core.files.baseR   t   register_lookupR   t   rest_frameworkt	   FilterSetR   t   genericst   ListAPIViewR"   R=   R>   t   CreateAPIViewR@   t   RetrieveUpdateDestroyAPIViewRB   t   ListCreateAPIViewRC   RZ   Rd   Rf   Rn   t   api_viewRx   Ry   (    (    (    s)   /var/www/agenderbackend/api/views/chat.pyt   <module>   s@   



			