
    vg                        d 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 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  edd      Z e e              ed      k\  rddl	m Z  n
ddl!Z!d Z"d Z  G d de      Z# G d de#      Z$ G d de#      Z%ed        Z&ed&d       Z'ed&d       Z(ed&d        Z)ed!        Z*ed"        Z+ed#        Z,d$ Z-ed%        Z.y)'z$ Django Notifications example views     )StrictVersion)get_version)login_required)model_to_dict)HttpResponse)get_object_or_404redirect)method_decorator)never_cache)ListView)
load_model)NotificationSound)settings)
get_config)id2slugslug2idnotificationsNotificationz1.7.0)JsonResponseNc                 >    t        | d      r| j                         S | S )N	isoformat)hasattrr   )objs    '/var/www/horilla/notifications/views.pydate_handlerr      s    ")#{";s}}DD    c                 N    t        t        j                  | t              d      S )N)defaultzapplication/json)content_type)r   jsondumpsr   )datas    r   r   r   !   s     JJt\2AS
 	
r   c                   d     e Zd ZdZdZ ej                         d   Z ee	       fd       Z
 xZS )NotificationViewListznotifications/list.htmlr   PAGINATE_BYc                 2    t        t        | 
  |g|i |S N)superr$   dispatch)selfrequestargskwargs	__class__s       r   r)   zNotificationViewList.dispatch,   s     )49'SDSFSSr   )__name__
__module____qualname__template_namecontext_object_namer   r   paginate_byr
   r   r)   __classcell__)r.   s   @r   r$   r$   '   s<    -M)%(%%'6Kn%T &Tr   r$   c                       e Zd ZdZd Zy)AllNotificationsListz+
    Index page for authenticated user
    c                     t        j                         d   r0| j                  j                  j                  j                         }|S | j                  j                  j                  j                         }|S )NSOFT_DELETE)r   r   r+   userr   activeall)r*   qsets     r   get_querysetz!AllNotificationsList.get_queryset6   s]     /<<$$2299;D  <<$$22668Dr   N)r/   r0   r1   __doc__r>    r   r   r7   r7   1   s    r   r7   c                       e Zd Zd Zy)UnreadNotificationsListc                 ^    | j                   j                  j                  j                         S r'   )r+   r:   r   unread)r*   s    r   r>   z$UnreadNotificationsList.get_queryset@   s!    ||  ..5577r   N)r/   r0   r1   r>   r@   r   r   rB   rB   >   s    8r   rB   c                     | j                   j                  j                          | j                  j	                  d      }|rt        |      S t        d      S )Nnextnotifications:unread)r:   r   mark_all_as_readGETgetr	   )r+   _nexts     r   rH   rH   D   sC    LL//1KKOOF#E*++r   c                     t        |      }t        t        | j                  |      }|j	                          | j
                  j                  d      }|rt        |      S t        d      S N	recipientidrF   rG   )r   r   r   r:   mark_as_readrI   rJ   r	   r+   slugnotification_idnotificationrK   s        r   rQ   rQ   O   sY    dmO$L KKOOF#E*++r   c                     t        |      }t        t        | j                  |      }|j	                          | j
                  j                  d      }|rt        |      S t        d      S rM   )r   r   r   r:   mark_as_unreadrI   rJ   r	   rR   s        r   rW   rW   `   sY    dmO$L !KKOOF#E*++r   c                 4   t        |      }t        t        | j                  |      }t	        j
                         d   rd|_        |j                          n|j                          | j                  j                  d      }|rt        |      S t        d      S )NrN   r9   TrF   znotifications:all)r   r   r   r:   r   r   deletedsavedeleterI   rJ   r	   rR   s        r   r[   r[   q   s~    dmO$L ]+#KKOOF#E'((r   c                 "   	 | j                   j                         }|sddi}t        |      S d| j                   j                  j	                         j                         i}t        |      S # t        $ r | j                   j                  }Y qw xY w)Nunread_countr   )r:   is_authenticated	TypeErrorr   rD   countr   r+   user_is_authenticatedr"   s      r   live_unread_notification_countrc      s    > ' = = ? !"
  GLL66==?EEG
   > ' = =>s   A, ,BBc                    	 | j                   j                         }|sdg d}t        |      S t	               d   }	 | j
                  j                  d|      }t        |      }d|cxk  rdk  sn |}g }| j                   j                  j                         d| D ]  }t        |      }t        |j                        |d<   |j                  rt        |j                        |d<   |j                   rt        |j                         |d	<   |j"                  rt        |j"                        |d
<   |j$                  r|j$                  |d<   |j'                  |       | j
                  j                  d      s|j)                           | j                   j                  j                         j+                         |d}t        |      S # t        $ r | j                   j                  }Y w xY w# t        $ r |}Y w xY w)-Return a json with a unread notification listr   )r]   unread_listNUM_TO_FETCHmax   d   rS   actortargetaction_objectr"   rQ   )r:   r^   r_   r   r   rI   rJ   int
ValueErrorr   rD   r   r   rP   rk   strrl   rm   r"   appendrQ   r`   )r+   rb   r"   default_num_to_fetchnum_to_fetchrf   rU   structs           r   live_unread_notification_listru      s   > ' = = ? ! !"5D!!%<7,{{u.BC<(\(S(/L K2299;AlK (|, 1v!,"4"45F7O"<#6#67F8%%&),*D*D&EF?#)..F6N6";;??>*%%'(  2299;AAC"D K  > ' = =>  ,+,s"   G 6G- G*)G*-G<;G<c                    	 | j                   j                         }|sdg d}t        |      S t	               d   }	 | j
                  j                  d|      }t        |      }d|cxk  rdk  sn |}g }| j                   j                  j                         d| D ]  }t        |      }t        |j                        |d<   |j                  rt        |j                        |d<   |j                   rt        |j                         |d	<   |j"                  rt        |j"                        |d
<   |j$                  r|j$                  |d<   |j'                  |       | j
                  j                  d      s|j)                           | j                   j                  j+                         |d}t        |      S # t        $ r | j                   j                  }Y w xY w# t        $ r |}Y {w xY w)re   r   )	all_countall_listrg   rh   ri   rj   rS   rk   rl   rm   r"   rQ   )r:   r^   r_   r   r   rI   rJ   rn   ro   r   r<   r   r   rP   rk   rp   rl   rm   r"   rq   rQ   r`   )r+   rb   r"   rr   rs   rx   rU   rt   s           r   live_all_notification_listry      s   > ' = = ? !B/D!!%<7,{{u.BC<(\(S(/L H22668<H (|, 1v!,"4"45F7O"<#6#67F8%%&),*D*D&EF?#)..F6N;;??>*%%'( !3399;RDE  > ' = =>  ,+,s"   F9 6G 9GGG.-G.c                    	 | j                   j                         }|sddi}t        |      S d| j                   j                  j	                         i}t        |      S # t        $ r | j                   j                  }Y cw xY w)Nrw   r   )r:   r^   r_   r   r`   r   ra   s      r   live_all_notification_countr{      s    > ' = = ? !Q
  3399;
   > ' = =>s   A B ?B c                     | j                   j                  }t        j                  j	                  |      \  }}|s"|j
                   |_        |j                          t        d      S )N)employee )r:   employee_getr   objectsget_or_createsound_enabledrZ   r   )r+   r}   soundcreateds       r   notification_soundr      sV    ||((H&..<<h<ONE7"'"5"55

r   r'   )/r?   distutils.versionr   djangor   django.contrib.auth.decoratorsr   django.formsr   django.httpr   django.shortcutsr   r	   django.utils.decoratorsr
   django.views.decorators.cacher   django.views.genericr   swapperr   base.modelsr   r   r   notifications.settingsr   notifications.utilsr   r   r   r   r    r   r$   r7   rB   rH   rQ   rW   r[   rc   ru   ry   r{   r   r@   r   r   <module>r      s8   *  9 & $ 8 4 5 )  ) " - 0/>:=#99( E
T8 T
/ 
82 8 , , , ,  , ,  ) )*   ) )X & &R  r   