
    si                        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 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     )get_version)login_required)model_to_dict)HttpResponse)JsonResponse)get_object_or_404redirect)method_decorator)never_cache)ListView)
load_model)NotificationSound)settings)
get_config)id2slugslug2idnotificationsNotificationc                   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       7/var/www/python-projects/worksol/notifications/views.pyr   zNotificationViewList.dispatch   s     )49'SDSFSS    )__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_queryset'   s]     /<<$$2299;D  <<$$22668Dr"   N)r#   r$   r%   __doc__r2    r"   r!   r+   r+   "   s    r"   r+   c                       e Zd Zd Zy)UnreadNotificationsListc                 ^    | j                   j                  j                  j                         S r   )r   r.   r   unread)r   s    r!   r2   z$UnreadNotificationsList.get_queryset1   s!    ||  ..5577r"   N)r#   r$   r%   r2   r4   r"   r!   r6   r6   /   s    8r"   r6   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!   r<   r<   5   sC    LL//1KKOOF#E*++r"   Nc                     t        |      }t        t        | j                  |      }|j	                          | j
                  j                  d      }|rt        |      S t        d      S N	recipientidr:   r;   )r   r   r   r.   mark_as_readr=   r>   r	   r   slugnotification_idnotificationr?   s        r!   rE   rE   @   sY    dmO$L KKOOF#E*++r"   c                     t        |      }t        t        | j                  |      }|j	                          | j
                  j                  d      }|rt        |      S t        d      S rA   )r   r   r   r.   mark_as_unreadr=   r>   r	   rF   s        r!   rK   rK   Q   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 )NrB   r-   Tr:   znotifications:all)r   r   r   r.   r   r   deletedsavedeleter=   r>   r	   rF   s        r!   rO   rO   b   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   r8   countr   r   user_is_authenticateddatas      r!   live_unread_notification_countrX   x   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   )rQ   unread_listNUM_TO_FETCHmax   d   rG   actortargetaction_objectrW   rE   )r.   rR   rS   r   r   r=   r>   int
ValueErrorr   r8   r   r   rD   r`   strra   rb   rW   appendrE   rT   )r   rV   rW   default_num_to_fetchnum_to_fetchr[   rI   structs           r!   live_unread_notification_listrj      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)rZ   r   )	all_countall_listr\   r]   r^   r_   rG   r`   ra   rb   rW   rE   )r.   rR   rS   r   r   r=   r>   rc   rd   r   r0   r   r   rD   r`   re   ra   rb   rW   rf   rE   rT   )r   rV   rW   rg   rh   rm   rI   ri   s           r!   live_all_notification_listrn      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)Nrl   r   )r.   rR   rS   r   rT   r   rU   s      r!   live_all_notification_countrp      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_enabledrN   r   )r   rr   soundcreateds       r!   notification_soundrz      sV    ||((H&..<<h<ONE7"'"5"55

r"   r   )+r3   djangor   django.contrib.auth.decoratorsr   django.formsr   django.httpr   r   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+   r6   r<   rE   rK   rO   rX   rj   rn   rp   rz   r4   r"   r!   <module>r      s   *  9 & $ $ 8 4 5 )  ) " - 0/>:T8 T
/ 
82 8 , , , ,  , ,  ) )*   ) )X & &R  r"   