ó
ÎÀš^c           @   sû   d  d l  Td  d l m Z m Z d  d l m Z m Z d  d l Z d  d l 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 Z d  d l Z e j d ƒ Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d S(   iÿÿÿÿ(   t   *(   t   datetimet	   timedeltaN(   t   timezone(   t	   FCMDevice(   t   FCMError(   t   Imaget   djangoc         C   s‘   t  j t j ƒ } i i i |  d 6g d 6| d 6g d 6i d d 6d 6i d d 6d	 | d
 d 6g d 6t j d 6} | j j j j d | ƒ } d  S(   Nt   emailt   tot   subjectt   personalizationss   Agender <csurbier@idevotion.fr>t   froms	   text/htmlt   types   <strong>s	   </strong>t   valuet   contentt   template_idt   request_body(	   t   sendgridt   SendGridAPIClientt   settingst   SENDGRID_API_KEYt   MESSAGE_TEMPLATE_IDt   clientt   mailt   sendt   post(   R   t   messageR
   t   sgt   datat   response(    (    s+   /var/www/agenderbackend/backoffice/batch.pyt   envoiMessageMail   s    c          C   sb   t  j ƒ  }  |  t d d ƒ } t j j d t d | ƒ } x! | D] } t | _ | j	 ƒ  qA Wd  S(   Nt   minutesi<   t   onlinet   lastConnexionDate__lte(
   R   t   nowR   t   Usert   objectst   filtert   Truet   FalseR!   t   save(   t   todayt
   oneHourAgot   userst   theUser(    (    s+   /var/www/agenderbackend/backoffice/batch.pyt   checkUserOnlineForOneHour,   s    	c          C   s  t  j ƒ  j ƒ  }  t j j d |  d t ƒ } xg | D]_ } | j ry t j	 d | ƒ | j
 t d d ƒ | _
 | j ƒ  q4 t j	 d | ƒ | j ƒ  q4 Wt j j d |  d t ƒ } xP | D]H } | j rî t j	 d | ƒ |  | _
 | j ƒ  q¹ t | _ | j ƒ  q¹ Wt d d d	 ƒ d  S(
   Nt   dateEvent__ltet   automaticDeletes   on reprogramme %st   daysi   s   On efface event pÃ©rimÃ© %ss   csurbier@idevotion.frs   Traitements celery effectues   Batch Agender(   R   R#   t   datet   EventR%   R&   R'   t   isWeeklyt   loggert   infot	   dateEventR   R)   t   deleteR(   t   isDailyt   validR   (   R*   t   eventPerimest   eventt
   eventDaily(    (    s+   /var/www/agenderbackend/backoffice/batch.pyt   checkEventStillAvailable4   s&    				c          C   s<  t  j j d d d d ƒ }  x|  D]} | j } | j r&| j r&| j r&yž t j j d | j d t	 ƒ } | rÖ | j
 d d d | j d	 d
 d d d i d d 6| j d 6ƒ t j d | ƒ d | _ | j ƒ  n d | _ | j ƒ  Wq4t k
 r"} t j d | ƒ d | _ | j ƒ  q4Xq" | j r!| j r!| j r!y¤ t j j d | j d t	 ƒ } | rÑ| j
 d d d | j d	 d
 d d d d d i d d 6| j d 6ƒ t j d | ƒ d | _ | j ƒ  n d | _ | j ƒ  Wq4t k
 r} t j d | ƒ d | _ | j ƒ  q4Xq" d | _ | j ƒ  q" Wd  S(   Nt   statusi    t
   notifyTypet   registration_idt   activet   titlet   Agendert   bodyt   badgei   t   soundt   defaultR   s!   on envoi message a utilisateur %si   i   s7   Impossible d'envoyer push une exception est survenue %st   click_actiont   FCM_PLUGIN_ACTIVITYi   (   t   NotificationToSendR%   R&   t   toUserIdt   iost	   pushTokent
   acceptPushR   t   getR'   t   send_messageR   R5   R6   R?   R)   t	   Exceptiont   errort   android(   t   notifsToSendt   theNotift   usert   devicet   e(    (    s+   /var/www/agenderbackend/backoffice/batch.pyt   sendNotifications]   sH    	$			$				c          C   s}  t  j d }  d } xct j |  ƒ D]R\ } } } x@| D]8} yt j j | | ƒ } t j | ƒ } | j \ } }	 | d k rIy¯ t j j | | ƒ }
 t	 j
 d | | |	 |
 ƒ | t | j d ƒ } t t | j d ƒ t | ƒ ƒ } | j | | f t j ƒ } | j |
 ƒ t	 j
 d |
 ƒ | j ƒ  WqIt k
 rE} qIXn  Wq9 t k
 rp} t	 j d | ƒ q9 Xq9 Wq# Wd  S(   Ns   media/i,  s!   TO_RESIZE: on a %s et %d %d => %si    i   s   Resize done et sauve %ss   Error resize %s(   R   t
   MEDIA_ROOTt   ost   walkt   patht   joinR   t   opent   sizeR5   R6   t   floatt   intt   resizet	   ANTIALIASR)   t   closeRR   t   IOErrorRS   (   R^   t	   basewidtht   roott   dirnamest	   filenamest   filenamet   originet   imt   widtht   heightt   destinationt   wpercentt   hsizeRY   (    (    s+   /var/www/agenderbackend/backoffice/batch.pyt   resizeImage   s.    #c          C   s¸   t  j j ƒ  }  x¢ |  D]š } | j j } d | k s@ d | k r t j | ƒ } | j d k ra q° d | j d | j d } | d | j	 d | j d	 7} t
 d
 | d ƒ q q Wd  S(   Nt   httpst   httpiÈ   s   L'event s    sur la ville s    n a plus d'imagesH   Url de l'event : <a href="https://www.agender.fr/admin/backoffice/event/s
   /change/">s   </a>s   juliengruberg75@gmail.coms   Agender: image manquante(   R3   R%   t   allt   picturet   namet   requestst   headt   status_codet   refTownt   idR   (   t	   allEventsR<   t
   urlPictureR   R   (    (    s+   /var/www/agenderbackend/backoffice/batch.pyt   checkUrl©   s     (   t   backoffice.modelsR   R   Rz   t   loggingt   django.utilsR   t   fcm_django.modelsR   R   t   fcm_django.fcmR   t   PILR   R\   t   syst	   getLoggerR5   R   R.   R>   RZ   Rt   R   (    (    (    s+   /var/www/agenderbackend/backoffice/batch.pyt   <module>   s"   
			)	0	