ó
œºå^c           @   s8  d  d l  m Z d  d l m Z m Z m Z d  d l  m Z m Z d d l m Z m	 Z	 m
 Z
 m Z m Z m Z m Z d d l m Z m Z 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 Z d  d l Z d  d l m  Z  d  d l! Z! d  d l" m# Z# m$ Z$ e j% d ƒ Z& d „  Z' d „  Z( d „  Z) e# d d ƒ d „  ƒ Z* d „  Z+ e# d d ƒ d „  ƒ Z, e# d d ƒ d „  ƒ Z- d „  Z. d „  Z/ d „  Z0 d „  Z1 d „  Z2 e# d d ƒ d „  ƒ Z3 e# d d ƒ d „  ƒ Z4 d  „  Z5 d! „  Z6 d S("   iÿÿÿÿ(   t   render(   t	   Paginatort	   EmptyPaget   PageNotAnInteger(   R    t   get_object_or_404i   (   t   Eventt   Townt   Placet   EventCategoryt   Categoryt   Postt   Article(   t   TownPostFormt   SearchPostFormt   CategoryPostForm(   t   date(   t   formats(   t   redirect(   t   datetimet	   timedelta(   t   OrderedDictN(   t   Q(   t   cachedt   cached_viewt   djangoc         C   s   t  |  d ƒ } d | _ | S(   Ns   backoffice/404.htmli”  (   R    t   status_code(   t   requestt   response(    (    s3   /var/www/agenderbackend/backoffice/views/content.pyt   pageNotFound   s    	c         C   s   t  |  d  ƒ S(   N(   t   showAccueilt   None(   R   (    (    s3   /var/www/agenderbackend/backoffice/views/content.pyt   index   s    c         C   s;  y| d  k r d } n | } t j j d | ƒ } t j j d t d | ƒ j d ƒ j d ƒ j d ƒ j d ƒ d	  } g  } x' | D] } | j	 rƒ | j
 | ƒ qƒ qƒ Wx- | D]% } | j	 t k r­ | j
 | ƒ q­ q­ Wt j j d t d | ƒ j d
 ƒ j d ƒ j d ƒ d  } t j j d | d t ƒ j d ƒ j d ƒ j d ƒ d  } | d k rŠt j j d | d t ƒ j d ƒ j d ƒ d  }	 n d  }	 t j ƒ  j ƒ  }
 |
 t d d ƒ } t |  d i	 |	 d 6| d 6| d 6| d 6t d 6| d 6| d 6|
 d 6| d 6ƒ SWn/ t k
 r6} t j | ƒ | GHt |  d ƒ SXd  S(   Nt   Parist   cityt   validt   refTown__cityt   refPlacet   refTownt   refEventCategoryt	   dateEventi
   t   refCategoryt   namei   t   refUsers
   -createdAti   t   daysi   s   backoffice/index.htmlt   articlest   eventst   placest   actust   notIndext   townt   todayt   tomorrows   backoffice/404.html(   R   R   t   objectst   getR   t   filtert   Truet   select_relatedt   order_byt   onIndexPaget   appendt   FalseR   R
   R   R   t   nowR   R   R    t	   Exceptiont   loggert   info(   R   R)   t   villeR1   t   events_listt   new_event_listt   eventt   places_listt	   actu_listt   article_listR2   R3   t   e(    (    s3   /var/www/agenderbackend/backoffice/views/content.pyR   #   s8    	1	::4	+t   timeoutiX  c         C   s)   t  t d | ƒ} t |  d i | d 6ƒ S(   Nt   slugs   backoffice/article/article.htmlt   article(   R   R   R    (   R   RJ   RK   (    (    s3   /var/www/agenderbackend/backoffice/views/content.pyRK   I   s    c   	      C   s2  d } t  j j d t d | ƒ j d ƒ j d ƒ j d ƒ j d ƒ d  } t j j d | d t ƒ j d	 ƒ } t | d
 ƒ } t j	 ƒ  j
 ƒ  } |  j j d ƒ } y | j | ƒ } WnB t k
 rÕ | j d ƒ } n# t k
 r÷ | j | j ƒ } n Xt |  d i | d 6| d 6t d 6| d 6| d 6| d 6ƒ S(   NR    R"   R#   R$   R%   R&   R'   i   s
   -createdAti
   t   pagei   s   backoffice/article/blog.htmlR,   R-   R0   R!   R2   (   R   R4   R6   R7   R8   R9   R   R   R   R=   R   t   GETR5   RL   R   R   t	   num_pagesR    (	   R   R)   RB   R,   t	   paginatorR2   RL   t   list_articlesR/   (    (    s3   /var/www/agenderbackend/backoffice/views/content.pyR,   P   s    $$	c   
      C   s®  y" t  j j d | ƒ } | j } WnH t k
 rl } t j d | | f ƒ t  j j d d ƒ } | j } n Xt j ƒ  j	 ƒ  } t
 j j d | d t d | ƒ j d ƒ j d ƒ j d ƒ j d	 ƒ d
  } | st
 j j d t d | ƒ j d ƒ j d ƒ j d ƒ j d	 ƒ d
  } n d  } t j j d t d t d | ƒ j d ƒ j d ƒ j d ƒ } t  j j ƒ  j d ƒ j ƒ  }	 t |  d i | d 6| d 6| d 6| d 6|	 d 6t d 6ƒ S(   NR!   s   Exception avec city %s %sR    t   dateEvent__startswithR"   R%   R$   R&   R'   i   R#   t   highlightedR(   R)   s   backoffice/guide/guide-gay.htmlR-   t
   nexteventsR.   t   selectedTownt   townsR0   (   R   R4   R5   R!   R>   R?   R@   R   R=   R   R   R6   R7   R8   R9   R   R   t   allt   cacheR    (
   R   R!   R1   RT   RH   R2   RB   t   next_events_listRE   t	   town_list(    (    s3   /var/www/agenderbackend/backoffice/views/content.pyt   guidee   s$    !(F<c         C   sS  | d  k r d } n  t j j d t d | ƒ j d ƒ j d ƒ j d ƒ j d ƒ d  } t j j d | d t ƒ j d	 ƒ j d ƒ j d
 ƒ } t | d ƒ } t	 j
 ƒ  j ƒ  } |  j j d ƒ } y | j | ƒ } WnB t k
 rö | j d ƒ } n# t k
 r| j | j ƒ } n Xt |  d i | d 6| d 6t d 6| d 6| d 6| d 6ƒ S(   NR    R"   R#   R$   R%   R&   R'   i   R*   s
   -createdAti
   RL   i   s!   backoffice/actus/liste_actus.htmlR/   R-   R0   R!   R2   (   R   R   R4   R6   R7   R8   R9   R
   R   R   R=   R   RM   R5   RL   R   R   RN   R    (   R   R)   RB   RF   RO   R2   RL   R/   (    (    s3   /var/www/agenderbackend/backoffice/views/content.pyRF   }   s     	$6	c         C   s`  | d  k r d } n  |  j j d ƒ } y" t j j d | ƒ } | j } WnH t k
 r“ } t j d | | f ƒ t j j d d ƒ } | j } n X|  j j d ƒ } | d  k r» d } n  | rct	 j j
 d t d | d	 | ƒ j d
 ƒ j d ƒ j d	 ƒ j d ƒ j ƒ  } t j j
 d | d t ƒ j ƒ  } g  }	 x± | D]" }
 |
 |	 k rOq:|	 j |
 ƒ q:Wn„ d } t	 j j
 d t d | ƒ j d
 ƒ j d ƒ j d	 ƒ j d ƒ j ƒ  } g  }	 x0 | D]( } | j |	 k rÓq»|	 j | j ƒ q»Wt j j ƒ  j d ƒ j ƒ  } t | d ƒ } y | j | ƒ } WnB t k
 rI| j d ƒ } n# t k
 rk| j | j ƒ } n Xt j j
 d | d t ƒ j d ƒ j d ƒ j d ƒ d  } t j j
 d t ƒ j d ƒ j d ƒ d  } t j ƒ  j ƒ  } | t d d ƒ } t |  d i | d 6| d 6| d 6| d 6| d 6| d 6| d 6| d 6|	 d 6t d 6| d 6t | ƒ d 6ƒ S(    NR    t   categoryR!   s   Exception avec city %s %sRL   i   R"   R#   R&   R$   R%   R'   t   categoriesevent__refTown__cityt   categoriesevent__validi    id   R*   s
   -createdAti   R+   s"   backoffice/events/soirees-gay.htmlR-   R3   RT   RG   R/   RU   t
   categoriesR0   R2   t   categoryFiltre(    R   RM   R5   R   R4   R!   R>   R?   R@   R   R6   R7   R8   R9   RW   R   R;   R&   RV   R   RL   R   R   RN   R
   R   R   R=   R   R   R    t   int(   R   R)   R_   R1   RT   RH   RL   RB   t   categories_listR^   t   catRD   RY   RO   R-   RF   RG   R2   R3   (    (    s3   /var/www/agenderbackend/backoffice/views/content.pyt
   event_list“   sX    		K!*$+	c         C   s.  | d  k r d } n  |  j j d ƒ } y" t j j d | ƒ } | j } WnH t k
 r“ } t j d | | f ƒ t j j d d ƒ } | j } n X|  j j d ƒ } | d  k r» d } n  | rct	 j j
 d t d | d	 | ƒ j d
 ƒ j d ƒ j d	 ƒ j d ƒ j ƒ  } t j j
 d | d t ƒ j ƒ  } g  }	 x± | D]" }
 |
 |	 k rOq:|	 j |
 ƒ q:Wn„ d } t	 j j
 d t d | ƒ j d
 ƒ j d ƒ j d	 ƒ j d ƒ j ƒ  } g  }	 x0 | D]( } | j |	 k rÓq»|	 j | j ƒ q»Wt j j ƒ  j d ƒ j ƒ  } t | d ƒ } y | j | ƒ } WnB t k
 rI| j d ƒ } n# t k
 rk| j | j ƒ } n Xt j j
 d | d t ƒ j d ƒ j d ƒ j d ƒ d  } t j ƒ  j ƒ  } | t d d ƒ } t |  d i | d 6| d 6| d 6| d 6| d 6| d 6| d 6|	 d 6t d 6| d 6t | ƒ d 6ƒ S(   NR    R[   R!   s   Exception avec city %s %sRL   i   R"   R#   R&   R$   R%   R'   R\   R]   i    id   R*   s
   -createdAti   R+   s"   backoffice/events/fiestas-gay.htmlR-   R3   RT   R/   RU   R^   R0   R2   R_   (   R   RM   R5   R   R4   R!   R>   R?   R@   R   R6   R7   R8   R9   RW   R   R;   R&   RV   R   RL   R   R   RN   R
   R   R=   R   R   R    R`   (   R   R)   R_   R1   RT   RH   RL   RB   Ra   R^   Rb   RD   RY   RO   R-   RF   R2   R3   (    (    s3   /var/www/agenderbackend/backoffice/views/content.pyt   event_es_listÎ   sV    		K!*$	c         C   s^   |  j  ƒ  \ } } } | d k r* |  } n | d } |  t | ƒ } | t d ƒ } | | f S(   s¨   Find the first/last day of the week for the given day.
    Assuming weeks start on Sunday and end on Saturday.

    Returns a tuple of ``(start_date, end_date)``.

    i   i   (   t   isocalendarR   (   R   t   yeart   weekt   dowt
   start_datet   end_date(    (    s3   /var/www/agenderbackend/backoffice/views/content.pyt
   week_range  s    		
c         C   s®  t  j ƒ  } | t d d ƒ } t | ƒ \ } } d | d | f GH| d  k rW d } n  |  j j d ƒ } y" t j j d | ƒ } | j	 } WnH t
 k
 rÕ }	 t j d | |	 f ƒ t j j d d ƒ } | j	 } n X|  j j d	 ƒ }
 |
 d  k rý d }
 n  | r¥t j j d
 t d | d | ƒ j d ƒ j d ƒ j d ƒ j d ƒ j ƒ  } t j j d | d t ƒ j ƒ  } g  } x± | D]" } | | k r‘q|| j | ƒ q|Wn„ d } t j j d
 t d | ƒ j d ƒ j d ƒ j d ƒ j d ƒ j ƒ  } g  } x0 | D]( } | j | k rqý| j | j ƒ qýWt j j ƒ  j d ƒ j ƒ  } g  } xH | D]@ } | j j  ƒ  | k rT| j j  ƒ  | k rT| j | ƒ qTqTWt | d ƒ } y | j |
 ƒ } WnB t k
 rÜ| j d ƒ } n# t k
 rþ| j | j ƒ } n Xt j j d | d
 t ƒ j d ƒ j d ƒ j d ƒ d  } t j ƒ  j  ƒ  } t  |  d i | d 6| d 6|
 d	 6| d 6| d 6| d 6| d 6| d 6t d 6| d 6t! | ƒ d  6ƒ S(!   NR+   i   s   print function t    R    R[   R!   s   Exception avec city %s %sRL   R"   R#   R&   R$   R%   R'   R\   R]   i    id   R*   s
   -createdAti   s0   backoffice/events/sorties-gay-de-la-semaine.htmlR-   R3   RT   R/   RU   R^   R0   R2   R_   ("   R   R2   R   Rk   R   RM   R5   R   R4   R!   R>   R?   R@   R   R6   R7   R8   R9   RW   R   R;   R&   RV   R'   R   RL   R   R   RN   R
   R   R=   R    R`   (   R   R)   R2   R3   Ri   Rj   R_   R1   RT   RH   RL   RB   Ra   R^   Rb   RD   RY   t   list_filterRO   R-   RF   (    (    s3   /var/www/agenderbackend/backoffice/views/content.pyt
   event_week   sd    		K!**$	c         C   s  t  t d | ƒ} | j t d d ƒ | _ | j j ƒ  } t j j d t d | j d | ƒ } g  } xA | D]9 } | j	 | j	 k rk | j
 | ƒ t j d | ƒ qk qk Wd  } | j j	 d k r+t j j d	 | j d t ƒ } g  } xD | D]9 }	 | j	 |	 j	 k rqë | j
 |	 ƒ t j d
 |	 ƒ që Wn  d }
 d } ya | j j | j j k  r—| j j } | j j | j _ | | j _ | j j }
 | j j } n  Wn t k
 r­} n Xt j ƒ  j ƒ  } t |  d i | d 6| d 6| d 6|
 d 6| d 6t d 6| d 6| j d 6ƒ S(   NRJ   t   hoursi   R"   R%   t   dateEvent__containss   On a autre EVENT PARTIES %si    R$   s   On a autreEvents %ss   backoffice/events/detail.htmlRD   t   autreEventst   autrePartiest   latt   lonR0   R2   R1   (   R   R   R'   R   R   R4   R6   R7   R%   t   idR;   R?   R@   R   R$   t   locationt   xt   yR>   R   R=   R    (   R   RJ   RD   t   dateOtherPartiest   otherEventsRr   t   otherRq   t   resultst   eventfiltret   latitudet	   longitudet   provRH   R2   (    (    s3   /var/www/agenderbackend/backoffice/views/content.pyRD   c  sB    $c         C   s  | d  k r d } n  |  j j d ƒ } y" t j j d | ƒ } | j } WnH t k
 r“ } t j d t | f ƒ t j j d d ƒ } | j } n X| r3t	 j j
 d t d | d | ƒ j d ƒ j d ƒ j d	 ƒ j ƒ  } t j j
 d
 | d t ƒ j ƒ  } g  } x¨ | D]" }	 |	 | k rq
| j |	 ƒ q
Wn{ d } t	 j j
 d t d | ƒ j d ƒ j d ƒ j d	 ƒ j ƒ  } g  } x0 | D]( }
 |
 j | k ršq‚| j |
 j ƒ q‚Wt j j ƒ  j d ƒ j ƒ  } |  j j d ƒ } | d  k ród } n  t | d ƒ } y | j | ƒ } WnB t k
 r7| j d ƒ } n# t k
 rY| j | j ƒ } n Xt j j
 d | d t ƒ j d ƒ j d ƒ j d ƒ d  } t j ƒ  j ƒ  } t |  d i
 | d 6| d 6| d 6| d 6| d 6t d 6| d 6| d 6| d 6t | ƒ d 6ƒ S(   NR    R[   R!   s   Exception avec city %s %sR"   R#   R(   R%   R)   t   placescategories__refTown__cityt   placescategories__validi    RL   i   i2   R*   s
   -createdAti   s!   backoffice/places/lieux-gays.htmlR.   RT   RU   R^   R0   R/   R2   R_   (   R   RM   R5   R   R4   R!   R>   R?   R@   R   R6   R7   R8   R9   RW   R	   R;   R(   RV   R   RL   R   R   RN   R
   R   R=   R   R    R`   (   R   R)   R_   R1   RT   RH   RE   Ra   R^   Rb   t   placeRY   RL   RO   R.   RF   R2   (    (    s3   /var/www/agenderbackend/backoffice/views/content.pyRE   ’  sZ    	B!!		-c         C   sL  t  t d | ƒ} d } d } d d  l } | j rH | j | j ƒ } n d  } d  } d  } | rœ d | k r | d } | d } | d } q¨ d } d  } n d } d  } y( | j rÏ | j j } | j j } n  Wn t	 k
 rå }	 n X| j
 j d t ƒ j d ƒ }
 t |  d	 i | d
 6| d 6| d 6| d 6|
 d 6| d 6| d 6t d 6ƒ S(   NRJ   i    iÿÿÿÿt   ratingt   user_ratings_totalt   urlR"   R'   s   backoffice/places/detail.htmlRƒ   t   reviewst   placeEventsRs   Rt   R0   (   R   R   t   jsont   googlePlaceJsont   loadsR   Rv   Rx   Rw   R>   t   eventsplaceR6   R7   R9   R    (   R   RJ   Rƒ   R~   R   R‰   R„   R‡   R…   RH   Rˆ   (    (    s3   /var/www/agenderbackend/backoffice/views/content.pyRƒ   Ë  s8    	

		c         C   sÆ   |  j  d k r« |  j d } |  j d } | r‘ | r‘ t j j d t d | d | ƒ j d ƒ j d ƒ j d	 ƒ j d
 ƒ } t |  d i | d 6ƒ St |  d i d  d 6ƒ Sn t |  d i d  d 6ƒ Sd  S(   Nt   POSTR!   t
   searchTermR"   R#   t   name__icontainsR$   R%   R&   R'   s)   backoffice/recherche/rechercheEvents.htmlR-   (
   t   methodR   R   R4   R6   R7   R8   R9   R    R   (   R   R!   RŽ   R-   (    (    s3   /var/www/agenderbackend/backoffice/views/content.pyt   searchEventï  s    !$c         C   s´   |  j  d k r™ |  j d } |  j d } | r | r t j j d t d | d | ƒ j d ƒ j d ƒ } t |  d	 i | d
 6ƒ St |  d	 i d  d
 6ƒ Sn t |  d	 i d  d
 6ƒ Sd  S(   NR   R!   RŽ   R"   R#   R   R%   R(   s)   backoffice/recherche/recherchePlaces.htmlR.   (	   R   R   R   R4   R6   R7   R8   R    R   (   R   R!   RŽ   R.   (    (    s3   /var/www/agenderbackend/backoffice/views/content.pyt   searchPlaceÿ  s    3(7   t   django.shortcutsR    t   django.core.paginatorR   R   R   R   t   modelsR   R   R   R   R	   R
   R   t   formsR   R   R   R   R   t   django.utilsR   R   R   t   collectionsR   t   pytzt   ost   randomt   loggingt   django.db.modelsR   t   uuidt   cacheopsR   R   t	   getLoggerR?   R   R   R   RK   R,   RZ   RF   Rc   Rd   Rk   Rn   RD   RE   Rƒ   R‘   R’   (    (    (    s3   /var/www/agenderbackend/backoffice/views/content.pyt   <module>   sB   4			&		;	7		C	/9$	