
VWc           @   s"  d  d l  m Z d  d l  m Z d  d l m Z 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 d  d l 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$ 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- d  d l. m/ Z/ d  d l0 m1 Z1 d  d l2 Z2 e2 j3 e4  Z5 d  d l6 Z6 d  d l7 Z7 d  d l8 Z8 d  d l9 m: Z: m; Z; d  d  l< m= Z= d  d l> Z> d  d l? Z? d  d l@ Z@ d  d! lA mB ZB d  d" lC mD ZD d  d lE ZE d  d lF ZF d  d# lG mH ZH d  d$ lI mJ ZJ d%   ZK e d&    ZL e d'    ZM e d(    ZN e d)    ZO e d*    ZP d+   ZQ d,   Z d-   Z d.   ZR d/   ZS d0   ZT d1   ZU d2   ZV d3   ZW e d4    ZX e d5    ZY e d6    ZZ d7   Z[ d8   Z\ d9   Z] d:   Z^ d;   Z_ d<   Z` e d=    Za e d>    Zb e d?    Zc e d@    Zd e dA    Ze dB   Zf dC   Zg d S(D   i(   t   render(   t   render_to_response(   t   HttpResponset   HttpResponseRedirect(   t   RequestContextt   loader(   t   reverse(   t   login_required(   t   ensure_csrf_cookie(   t   csrf_protect(   t   User(   t   authenticate(   t   login(   t   logout(   t   AuthenticationForm(   t	   Paginatort	   EmptyPaget   PageNotAnInteger(   t   serializers(   t   chaini   (   t   Session(   t   Tracking(   t   AOI(   t   AoiPosition(   t   SessionForm(   t   AOIForm(   t	   LoginForm(   t   RegisterForm(   t   AccountForm(   t   AOIUpdateForm(   t   settings(   t	   send_mailN(   t   Imaget	   ImageDraw(   t   BytesIO(   t
   S3Transfer(   t   Config(   t   randint(   t   GeaDatac         C   s
   t  d  S(   NR   (   R   (   t   request(    (    s*   /var/www/gea-beta/gazeanalyserapp/views.pyt   index>   s    c         C   s-  t  j d t |  j   t j j   j d |  j  t j j   j d |  j  B} | j   } t	 | d  } |  j
 j d  } y | j |  } WnO t k
 r | j d  } n0 t k
 r t  j d  | j | j  } n Xt   } t   } t   } t |  d i | d	 6| d
 6| d 6| d 6 S(   Ns   Getting sessions for user t   ownert   sharedi   t   pagei   s(   page out of range, delivering last page s   gazeanalyserapp/sessions.htmlt   sessionFormt   aoiFormt   aoiUpdateFormt   sessions(   t   loggert   infot   strt   userR   t   objectst   select_relatedt   filtert   distinctR   t   GETt   getR+   R   R   t   errort	   num_pagesR   R   R   R    (   R'   R/   t	   paginatorR+   t   sessions_listR,   R-   R.   (    (    s*   /var/www/gea-beta/gazeanalyserapp/views.pyR/   A   s     :			c   
      C   s  t  j d t |  j   |  j   r|  j d k rt |  j  } i  } | j   r |  j } |  j d } |  j d } t	 d | d | d | d t
 d d   } | j   t  j d	 t | j  d
 t |  d | d | d t t  d  d | d <t j |  } t | d d Sd | d <t  j d  x8 | j j   D]' \ } }	 |	 | | <t  j d |	  qGWt j |  } t | d d Sn  t t d   S(   Ns   Creating session for user t   POSTt   namet   descriptionR)   t   confirmationi'  i s   Session s    with params (s   , s    succesfully created.i   t   validt   content_types   application/jsoni    s6   Session form is not valid. Session will not be createds   Session form error = R/   (   R0   R1   R2   R3   t   is_ajaxt   methodR   R>   t   is_validR   R%   t   savet   keyRA   t   jsont   dumpsR   R:   t   errorst   itemsR   R   (
   R'   t   formRK   R)   R?   R@   t   sessiont   datat   kt   v(    (    s*   /var/www/gea-beta/gazeanalyserapp/views.pyt   createSession[   s,    	*
J


c   
      C   s  |  j    r|  j d k rt |  j |  j  } i  } | j   rS|  j d } t j j d |  } t	 j
 d |  | j j |  j j k r |  j d } t d | d |  } | j   t	 j
 d t | j j   d | d	 <t j |  } t | d
 d Sd | d	 <g  | d <| d j d  t	 j
 d  t j |  } t | d
 d Sqd | d	 <t	 j d  x8 | j j   D]' \ } }	 |	 | | <t	 j d |	  qzWt j |  } t | d
 d Sn  t t d   S(   NR>   RH   s   Uploading image to session t   aoiRN   t   files   Image file saved to i   RB   RC   s   application/jsoni    t   upload_image_errors"   You are not owner of this session!s5   Image upload error. User is not owner of this sessions4   Upload form is not valid. Image will not be uploadeds   Upload form error = R/   (   RD   RE   R   R>   t   FILESRF   R   R4   R9   R0   R1   R)   t   idR3   R   RG   R2   RT   R?   RI   RJ   R   t   appendR:   RK   RL   R   R   (
   R'   RM   RK   t   uuidRN   RT   RS   RO   RP   RQ   (    (    s*   /var/www/gea-beta/gazeanalyserapp/views.pyt   uploadImage   s:    





c         C   s   |  j  d k r t |  j |  j  } | j   r |  j } |  j d } |  j d } t d | d | d |  } | j   t t	 d   Sn	 t   } t
 |  d i | d 6 S(   NR>   R@   RS   R)   R/   s"   gazeanalyserapp/createSession.htmlRM   (   RE   R   R>   RV   RF   R3   R   RG   R   R   R    (   R'   RM   R)   R@   RS   RN   (    (    s*   /var/www/gea-beta/gazeanalyserapp/views.pyt   createSessionNoAjax   s    	
	c         C   sp   t  j d |  t j j d |  } | j j |  j j k r` | j   t  j d | d  n  t	 t
 d   S(   Ns   Deleting session RH   s   Session s   deleted succesfullyR/   (   R0   R1   R   R4   R9   R)   RW   R3   t   deleteR   R   (   R'   RY   RN   (    (    s*   /var/www/gea-beta/gazeanalyserapp/views.pyt   deleteSession   s    
c         C   s   |  j  d k r t |  j  } | j   r |  j d } |  j d } |  j d } |  j d } |  j d } t j j | | |  } | | _ | | _ | j	   t
 |  d i | d 6 St
 |  d	 i | d 6 Sn  t   } t
 |  d	 i | d 6 Sd  S(
   NR>   t   usernamet   passwordt
   first_namet	   last_namet   emails   gazeanalyserapp/login.htmlRM   s   gazeanalyserapp/register.html(   RE   R   R>   RF   R
   R4   t   create_userR`   Ra   RG   R    (   R'   RM   R^   R_   t	   firstNamet   lastNameRb   R3   (    (    s*   /var/www/gea-beta/gazeanalyserapp/views.pyt   register   s     		
	c         C   s   |  j  d k r t d |  j  } | j   r | j   } | d  k	 rn | j r t |  |  t t	 d   Sq t
 |  d i | d 6 Sq t
 |  d i | d 6 Sn  t   } t
 |  d i | d 6 Sd  S(   NR>   RO   R/   s   gazeanalyserapp/login.htmlRM   (   RE   R   R>   RF   t   get_usert   Nonet	   is_activet   django_loginR   R   R    (   R'   RM   R3   (    (    s*   /var/www/gea-beta/gazeanalyserapp/views.pyR      s    		c         C   s   t  |   t t d   S(   NR   (   t   django_logoutR   R   (   R'   (    (    s*   /var/www/gea-beta/gazeanalyserapp/views.pyR     s    
c         C   s\   t  j d |  y3 t j j d |  } t |  d d i | d 6SWn t |  d  SXd  S(   Ns,   Loading gaze tracking front end for session RH   s$   gazeanalyserapp/gazeTrackerBeta.htmlt   contextRN   s   gazeanalyserapp/404.html(   R0   R1   R   R4   R9   R    (   R'   RY   RN   (    (    s*   /var/www/gea-beta/gazeanalyserapp/views.pyt   gazeTrackerBeta
  s    c         C   s\   t  j d |  y3 t j j d |  } t |  d d i | d 6SWn t |  d  SXd  S(   Ns,   Loading gaze tracking front end for session RH   s    gazeanalyserapp/gazeTracker.htmlRl   RN   s   gazeanalyserapp/404.html(   R0   R1   R   R4   R9   R    (   R'   RY   RN   (    (    s*   /var/www/gea-beta/gazeanalyserapp/views.pyt   gazeTracker  s    c         C   s   t  |  d  S(   Ns$   gazeanalyserapp/TrackerDetector.html(   R    (   R'   (    (    s*   /var/www/gea-beta/gazeanalyserapp/views.pyt   TrackDetect  s    c      
   C   sK  t  j |  j j d   } |  j d } |  j d } d } t j d d d d d	 d
 t d d  d d } t |  } i d d 6} t j	 d d t
 |  d t
 |  d }	 d t
 |  d t
 |  d }
 t |	 d   } t  j | |  Wd  QXd | GHd |	 GHd | GH| j |	 | |
 d | t j |	  d GHt d  S(   Nt   annDatat	   sessionIDt	   timeStamps   gaze-annotationst   s3t   aws_access_key_idt   AKIAJ2SINXH66UFNIAYQt   aws_secret_access_keys(   OAWd2cTSjVrYMNXLm6o5GP9/gy5D/O0A09dq/HmYt   configt   signature_versiont   s3v4t   region_names	   us-east-1s   aws:kmst   ServerSideEncryptiont   /t   annotations_t   _s   .txtt   ws   bucketKey value: %ss   outputFileName value: %ss   outfile value: %st
   extra_argss   SUCCESS!t   success(   RI   t   loadsR>   R9   t   boto3t   clientR$   R#   R   t
   MEDIA_ROOTR2   t   opent   dumpt   upload_filet   ost   removeR   (   R'   RY   RO   Rq   t   timestampIDt	   bucketKeyR   t   transferR   t   outputFileNamet   destFileNamet   outfile(    (    s*   /var/www/gea-beta/gazeanalyserapp/views.pyt   uploadAnnotation  s$    0-"			c      
   C   s)  t  j |  j j d   } |  j d } |  j d } d } t j d d d d d	 d
 t d d  d d } t |  } i d d 6} t j	 d d t
 |  d t
 |  d }	 t |	 d   }
 t  j | |
  Wd  QXd | GHd |	 GHd |
 GH| j |	 | |	 d | t j |	  d GHt d  S(   Nt	   calibDataRr   Rq   s   gaze-annotationsRs   Rt   Ru   Rv   s(   OAWd2cTSjVrYMNXLm6o5GP9/gy5D/O0A09dq/HmYRw   Rx   Ry   Rz   s	   us-east-1s   aws:kmsR{   R|   t   calibration_R~   s   .txtR   s   bucketKey value: %ss   outputFileName value: %ss   outfile value: %sR   s   SUCCESS!R   (   RI   R   R>   R9   R   R   R$   R#   R   R   R2   R   R   R   R   R   R   (   R'   RY   RO   R   Rq   R   R   R   R   R   R   (    (    s*   /var/www/gea-beta/gazeanalyserapp/views.pyt   uploadCalibrationData8  s"    0-			c         C   s  t  j d |  y@|  j j d  } |  j j d  } |  j j d  } |  j j d  } t j |  j j d   } t j |  j j d   } t j |  j j d   } t j j d	 |  }	 t d
 |	 d | d | d |  }
 |
 j	   t  j d t
 |
 j  d t
 |	 j  d t
 |  d t
 |  d t
 |   d } t  j d t
 |
 j  d t
 t |    x | t |  k  rt d | | d	 d |
 j d | | d d | | d d | | d d | | d  } | d 7} | j	   qyWg  } g  } g  } g  } g  } g  } g  } g  } g  } g  } g  } d } t  j d  x| t |  k  rY| j | | d  | j | | d  | j | | d  | j | | d  | j | | d  | j | | d  | j | | d  | j | | d  | j | | d  | j | | d  | j | | d  | d 7} qSWd } g  } t  j d  x{ | t |  k  ri  } | | d | d <| | d  | d  <| | d! | d! <| | d" | d" <| j |  | d 7} qvWt  j d#  i | d 6| d 6| d 6| d$ 6| d% 6| d& 6| d' 6| d( 6| d) 6| d 6| d 6| d* 6} | d+ k rwt
 |
 j  d, n t
 |
 j  d- } t  j d. |  t t j d/ | d0   } t j | |  Wd  QXt  j d1 t j d/ |  d2 | |
 j _ |
 j	 d3 d4 g  t  j d5 t
 |
 j  d6  t t j t d7 |
 j   d8 d9 SWn8 t k
 r} t
 |  GHt  j t
 |   t d:  SXd  S(;   Ns$   Uploading tracking data for session t   typet   widtht   heightt   qualityRO   t   aoist
   validationRH   RN   s%   Creating tracking data with params ( s   , i    s"   Saving AOI positions for tracking s"   Number of AOIs in this session is t   aoi_idt   tracking_idt   xt   yi   s3   Processing frame data for gaze and emotion trackingt	   timestampt   angert   disgustt   feart   happyt   sadnesst   surpriset   genders    Processing validation point datat
   position_xt
   position_yt   gaze_xt   gaze_ys>   Creating JSON dictionary with frame data and validation pointst	   emo_angert   emo_disgustt   emo_feart	   emo_happyt   emo_sadnesst   emo_surpriset   validationst	   regressors   _regressor.jsons   _gauss.jsons:   Saving frame data and validation points to file with name R|   R   s   Data sucessfuly dumped to s   ./t   update_fieldsRT   s	   Tracking s     updated with data file locationt
   trackingIDRC   s   application/jsons   Upload failed(   R0   R1   R>   R9   RI   R   R   R4   R   RG   R2   RW   RH   t   lenR   RX   R   R   R   R   RT   R?   R   RJ   t   dictt	   ExceptionR:   (   R'   RY   R   R   R   R   RO   R   R   RN   t   trackingt   it   positionR   R   R   R   R   R   R   R   R   R   t   validPointst
   validPointt   filenameR   t   e(    (    s*   /var/www/gea-beta/gazeanalyserapp/views.pyt   uploadR  s    !
U.X
B2)c         C   s  t  j j d |  } t } x6 | j j   D]% } | j |  j j k r+ t } Pq+ q+ W| j	 j |  j j k r} | r} t
 d  St j j   j d | j  } g  } x| D]} t t j d | j j  j   } t j |  }	 g  }
 t j j d |  } x! | D] } |
 j | j    qWt |	 d  } g  } x t d |  D] } g  } | j |	 d |  | j |	 d	 |  | j |	 d
 |  | j |	 d |  | j |	 d |  | j |	 d |  t |	 d | |	 d | |	 d | |	 d | |	 d | |  } | j | j    qEWg  } d |	 k rH|	 d } n  | j t d | j j d | j d | j d | j d | j d |
 d | d |   q Wt
 t j  |  d d S(   NRH   sJ   You are not allowed to view this session. This incident has been reported.RN   R|   R   R   i    R   R   R   R   R   R   R   R   R   R   R   R?   R   R   R   RO   RC   s   application/json(!   R   R4   R9   t   FalseR*   t   allRW   R3   t   TrueR)   R   R   R5   R6   R   R   R   RT   R?   t   readRI   R   R   RX   t   as_jsonR   t   rangeR&   R   R   R   R   RJ   (   R'   RY   RN   t	   is_sharedR3   t	   trackingst   resultsR   t	   json_datat   jsonDataR   t	   positionsR   t   countRO   R   t   emotionst	   framedataR   (    (    s*   /var/www/gea-beta/gazeanalyserapp/views.pyt
   getResults  sD    
#CVc         C   s  t  j j d |  } t } x6 | j j   D]% } | j |  j j k r+ t } Pq+ q+ W| j	 j |  j j k r} | r} t
 d  St j j   j d | j  } g  } t |  } t |  } | j   | k  r d }	 nL t | j    | d k rt | j    | n t | j    | d }	 | |	 k rEt
 t j |  d d S| | t | j    k rg| n t | j    | }
 g  } x< t | d | | d | |
  D] } | j | |  qWx| D]} t t j d | j j  j   } t j |  } g  } t j j d	 |  } x! | D] } | j | j    q#Wt | d
  } g  } x t d |  D] } g  } | j | d |  | j | d |  | j | d |  | j | d |  | j | d |  | j | d |  t | d
 | | d | | d | | d | | d | |  } | j | j    qfWg  } d | k ri| d } n  | j t d | j j d	 | j d | j  d | j! d | j" d | d | d |   qWt
 t j |  d d S(   NRH   sJ   You are not allowed to view this session. This incident has been reported.t
   session_idi   i    RC   s   application/jsonR|   R   R   R   R   R   R   R   R   R   R   R   R   R   R?   R   R   R   RO   (#   R   R4   R9   R   R*   R   RW   R3   R   R)   R   R   R5   R6   t   intR   RI   RJ   R   RX   R   R   R   RT   R?   R   R   R   R   R   R&   R   R   R   R   (   R'   RY   R+   t   pageSizeRN   R   R3   R   R   t   nPagest   nPageElementst   pagedTrackingsR   R   R   R   R   R   R   R   RO   R   R   R   (    (    s*   /var/www/gea-beta/gazeanalyserapp/views.pyt	   getResult  sZ    
	L8*#CVc         C   sK   y3 t  j j d |  } t |  d d i | d 6SWn t |  d  SXd  S(   NRH   s   gazeanalyserapp/results.htmlRl   RN   s   gazeanalyserapp/404.html(   R   R4   R9   R    (   R'   RY   RN   (    (    s*   /var/www/gea-beta/gazeanalyserapp/views.pyt   detailsH  s
    c         C   s   t  |  d  S(   Ns   gazeanalyserapp/httpreq.html(   R    (   R'   (    (    s*   /var/www/gea-beta/gazeanalyserapp/views.pyt   httpreqP  s    c         C   s(   t  d i  d t |   } d | _ | S(   Ns   gazeanalyserapp/404.htmlt   context_instancei  (   R   R   t   status_code(   R'   t   response(    (    s*   /var/www/gea-beta/gazeanalyserapp/views.pyt
   handler404S  s    	c         C   s(   t  d i  d t |   } d | _ | S(   Ns   gazeanalyserapp/503.htmlR   i  (   R   R   R   (   R'   R   (    (    s*   /var/www/gea-beta/gazeanalyserapp/views.pyt
   handler503X  s    	c         C   sZ   |  j  j d  } d } |  j  j d  } t d t |  t |  d d g  t d  S(   NRq   i    t   comments   comment for session s   gea@visagetechnologies.coms   Comment sent!(   R>   R9   R   R2   R   (   R'   Rq   R   R   (    (    s*   /var/www/gea-beta/gazeanalyserapp/views.pyR   ]  s
    &c         C   s   t  |  d  S(   Ns   gazeanalyserapp/about.html(   R    (   R'   (    (    s*   /var/www/gea-beta/gazeanalyserapp/views.pyt   aboutg  s    c         C   s:   t  j j d |  } t t j t d | j   d d S(   NRH   RA   RC   s   application/json(   R   R4   R9   R   RI   RJ   R   RA   (   R'   RY   RN   (    (    s*   /var/www/gea-beta/gazeanalyserapp/views.pyRA   j  s    c   
      C   sd  t  |  j  } i  } | j   r|  j d } |  j d } |  j d } t j j d |  } | j j |  j j k r | | _	 | | _
 | j d d d g  d | d <t j |  } t | d d Sd	 | d <g  | d
 <| d
 j d  t j |  } t | d d SnS d	 | d <x' | j j   D] \ } }	 |	 | | <q'Wt j |  } t | d d Sd  S(   NRH   R?   R@   R   i   RB   RC   s   application/jsoni    t   update_session_errors"   You are not owner of this session!(   R   R>   RF   R   R4   R9   R)   RW   R3   R?   R@   RG   RI   RJ   R   RX   RK   RL   (
   R'   RM   RK   RY   R?   R@   RN   RO   RP   RQ   (    (    s*   /var/www/gea-beta/gazeanalyserapp/views.pyt   updateo  s0    		



c         C   s   |  j  d } |  j  d } |  j  d } yQ t j j d |  } | | _ | | _ | j d d d g  t t d   SWn t	 |  d  SXd  S(   NRH   R?   R@   R   R/   s   gazeanalyserapp/404.html(
   R>   R   R4   R9   R?   R@   RG   R   R   R    (   R'   RY   R?   R@   RN   (    (    s*   /var/www/gea-beta/gazeanalyserapp/views.pyt   updateNoAjax  s    		c         C   s   |  j  d } |  j  d } yU t j j d |  } t t |  d  | _ | j d d g  t t	 d   SWn t
 |  d  SXd  S(   NRW   t   durationi  R   R/   s   gazeanalyserapp/404.html(   R>   R   R4   R9   R   t   floatR   RG   R   R   R    (   R'   RW   R   RS   (    (    s*   /var/www/gea-beta/gazeanalyserapp/views.pyt   updateimageNoAjax  s    c   	      C   s  t  |  j  } i  } | j   r]|  j d } |  j d } t |  d k  r d | d <g  | d <| d j d  t j |  } t | d d St j	 j
 d |  } | j j j |  j j k rt t |  d  | _ | j d	 d g  d
 | d <t j |  } t | d d Sd | d <g  | d <| d j d  t j |  } t | d d SnS d | d <x' | j j   D] \ } } | | | <qwWt j |  } t | d d Sd  S(   NRW   R   i    RB   s!   Duration cannot be lesser than 0!RC   s   application/jsoni  R   i   t   update_image_errors"   You are not owner of this session!(   R   R>   RF   R   RX   RI   RJ   R   R   R4   R9   RN   R)   RW   R3   R   R   RG   RK   RL   (	   R'   RM   RK   RW   R   RO   RS   RP   RQ   (    (    s*   /var/www/gea-beta/gazeanalyserapp/views.pyt   updateimage  s8    





c         C   s   |  j  d k r t d |  j d |  j  } | j   ry |  j d } |  j j |  |  j j d d g  t t d   St	 |  d i | d	 6 Sn) t d |  j  } t	 |  d i | d	 6 Sd  S(
   NR>   RO   R3   t   new_passwordR   R_   R/   s   gazeanalyserapp/account.htmlRM   (
   RE   R   R>   R3   RF   t   set_passwordRG   R   R   R    (   R'   RM   R   (    (    s*   /var/www/gea-beta/gazeanalyserapp/views.pyt   account  s    c      
   C   s  |  j  d } d } |  j  d } |  j  d } |  j  d } | j d  d } | | t |  !} t j t t j |    } t j	 j
 d |  }	 t |  d	 k  r d
 | } n  t j d t |  t |  | d }
 | j |
 d  t j d d d d d d t d d  d d } t |  } i d d 6} d t |  d t |  d | d } | j |
 | | d | t j |
  t d  S(   Nt   urls   gaze-annotationsRq   Rr   t   calibPointIndext   base64i   RW   i
   t   0R|   s   .jpgt   JPEGRs   Rt   Ru   Rv   s(   OAWd2cTSjVrYMNXLm6o5GP9/gy5D/O0A09dq/HmYRw   Rx   Ry   Rz   s	   us-east-1s   aws:kmsR{   t   imgR~   R   R   t   img_(   R>   R(   R   R    R   R"   R   t	   b64decodeR   R4   R9   R   R   R   R2   RG   R   R   R$   R#   R   R   R   R   (   R'   t   input_stringR   Rq   Rr   R   t
   data_indexRO   t   imRN   t   imNameR   R   R   R   (    (    s*   /var/www/gea-beta/gazeanalyserapp/views.pyt   uploadAnnotatedImageToS3  s(    )0*c         C   s=   |  j  d } |  j  d } t j d | d |  t d  S(   Nt   messaget   clientIDs   CLIENT s   : s   log processed(   R>   R0   R1   R   (   R'   R   R   (    (    s*   /var/www/gea-beta/gazeanalyserapp/views.pyt	   uploadLog  s    (h   t   django.shortcutsR    R   t   django.httpR   R   t   django.templateR   R   t   django.core.urlresolversR   t   django.contrib.auth.decoratorsR   t   django.views.decorators.csrfR   R	   t   django.contrib.auth.modelsR
   t   django.contrib.authR   R   Rj   R   Rk   t   django.contrib.auth.formsR   t   django.core.paginatorR   R   R   t   django.coreR   t	   itertoolsR   t   modelsR   R   R   R   t   formsR   R   R   R   R   R   t   django.confR   t   django.core.mailR   t   loggingt	   getLoggert   __name__R0   t   pdbRI   t   datetimet   PILR    R!   t   ioR"   R   t	   cStringIOR   t   boto3.s3.transferR#   t   botocore.clientR$   R   t	   threadingt   randomR%   t   utilsR&   R(   R/   RR   RZ   R[   R]   Rf   Rm   Rn   Ro   R   R   R   R   R   R   R   R   R   R   R   RA   R   R   R   R   R   R   R   (    (    (    s*   /var/www/gea-beta/gazeanalyserapp/views.pyt   <module>   s   	$2										f@P				
		+/	