ó
¦§¸]c           @   su  d  d l  Z  d  d l Z d  d l 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 m Z m Z m Z m Z d  d l m Z d  d	 l m Z d  d
 l m Z m Z m Z d  d l Td  d l m Z m Z d  d l  Td „  Z! d „  Z" d „  Z# d „  Z$ d „  Z% d „  Z& d „  Z' d „  Z( d „  Z) d „  Z* d d d „ Z, d S(   iÿÿÿÿN(   t   datet	   timedelta(   t   JsonResponse(   t   render(   t   render_to_string(   t   ObjectDoesNotExist(   t   Qt   Maxt   Mint   Countt
   FloatField(   t   RequestContext(   t
   connection(   t   LldevicePdlagMeasuret   LldevicePdlagMeasureArchivet   Lldeviceannotations(   t   *(   t   user_get_devicet   user_get_informationc         C   s­   |  j  j ƒ  rŸ t j j d d ƒ } g  } xC | D]; } |  j  j d t | j ƒ ƒ r1 | j t	 | ƒ ƒ q1 q1 Wt
 d i t j | ƒ d 6t |  d t g ƒƒ St d ƒ Sd  S(   Nt
   loc_activei   s   DeviceList.s   totalizers/totalizers.htmlt   devices_treeviewt
   processorss   Invalid user(   t   usert   is_authenticatedt   Lldevicelistt   objectst   filtert   has_permt   strt   idt   appendt   totalizers_return_device_nodet   render_to_responset   jsont   dumpsR   t   general_contextt   HttpResponse(   t   requestt   device_listR   t   device(    (    sF   var/www/html/leakless-monitor/Applications/Measure/Totalizers/views.pyt   totalizers_view   s    /c         C   s>  i
 |  j  ƒ  d |  j ƒ  d d 6|  j  ƒ  d 6|  j ƒ  d 6d d 6d d 6t d	 6d
 d 6t d 6i t d 6t d 6t d 6t d 6d 6d  d 6} |  j d k r® t |  ƒ | d <nŒ |  j d k rÐ t |  ƒ | d <nj |  j d k rò t |  ƒ | d <nH |  j d k rt	 |  ƒ | d <n& |  j d k r4t | d d <n i  } | S(   Ns    [t   ]t   textt	   device_idt
   identifiers   glyphicon glyphicon-stopt   icont   selectedIcont   showCheckboxt   whitet	   backColort
   selectablet   checkedt   disabledt   expandedt   selectedt   statet   nodess   PDL-AGs   PDL-HGt   MAG8000t   SOFRELt   CSV(
   t   get_device_idt   get_device_identifiert   Falset   Truet   Nonet   loc_typet)   totalizers_return_measurement_nodes_pdlagt)   totalizers_return_measurement_nodes_pdlhgt+   totalizers_return_measurement_nodes_mag8000t*   totalizers_return_measurement_nodes_sofrel(   R'   t   return_data(    (    sF   var/www/html/leakless-monitor/Applications/Measure/Totalizers/views.pyR   %   s6    
c         C   s  |  j  ƒ  } g  } i |  j ƒ  d 6|  j ƒ  d 6d d 6d d 6d d 6t d 6i t d	 6t d
 6t d 6t d 6d 6g  d 6} | j ƒ  } d | j ƒ  d | j d | d <d | d <| j | ƒ | j ƒ  } d | j	 ƒ  d | j
 d | d <d | d <| j | ƒ | S(   NR+   R,   t   UnknownR*   s   glyphicon glyphicon-stopR-   R.   s   selectable R3   R4   R5   R6   R7   t   tagss   Pulse total CH1 [s   ] (t   )t   CH1t   channels   Pulse total CH2 [t   CH2(   t   get_device_infoR<   R=   R?   R>   t   copyt   get_ch1_pulse_total_unitt   ch1pulsetotallabelR   t   get_ch2_pulse_total_unitt   ch2pulsetotallabel(   R'   t   device_infoRF   t	   node_infot   node_info_ch1_total_flowt   node_info_ch2_total_flow(    (    sF   var/www/html/leakless-monitor/Applications/Measure/Totalizers/views.pyRB   I   s0    
#
#
c         C   s  |  j  ƒ  } g  } i |  j ƒ  d 6|  j ƒ  d 6d d 6d d 6d d 6t d 6i t d	 6t d
 6t d 6t d 6d 6g  d 6} | j ƒ  } d | j ƒ  d | j d | d <d | d <| j | ƒ | j ƒ  } d | j	 ƒ  d | j
 d | d <d | d <| j | ƒ | S(   NR+   R,   RG   R*   s   glyphicon glyphicon-stopR-   R.   s   selectable R3   R4   R5   R6   R7   RH   s   Pulse total CH1 [s   ] (RI   RJ   RK   s   Pulse total CH2 [RL   (   RM   R<   R=   R?   R>   RN   RO   RP   R   RQ   RR   (   R'   RS   RF   RT   RU   RV   (    (    sF   var/www/html/leakless-monitor/Applications/Measure/Totalizers/views.pyRC   j   s0    
#
#
c         C   s  |  j  ƒ  } g  } i |  j ƒ  d 6|  j ƒ  d 6d d 6d d 6d d 6t d 6i t d	 6t d
 6t d 6t d 6d 6g  d 6} | j ƒ  } d | j ƒ  d | j d | d <d | d <| j | ƒ | j ƒ  } d | j	 ƒ  d | j
 d | d <d | d <| j | ƒ | S(   NR+   R,   RG   R*   s   glyphicon glyphicon-stopR-   R.   s   selectable R3   R4   R5   R6   R7   RH   s   Pulse total CH1 [s   ] (RI   RJ   RK   s   Pulse total CH2 [RL   (   RM   R<   R=   R?   R>   RN   t   get_total_1_unitt   totalflow1labelR   t   get_total_2_unitt   totalflow2label(   R'   RS   RF   RT   RU   RV   (    (    sF   var/www/html/leakless-monitor/Applications/Measure/Totalizers/views.pyRD   ‹   s0    
#
#
c         C   s  |  j  ƒ  } g  } i |  j ƒ  d 6|  j ƒ  d 6d d 6d d 6d d 6t d 6i t d	 6t d
 6t d 6t d 6d 6g  d 6} | j ƒ  } d | j ƒ  d | j d | d <d | d <| j | ƒ | j ƒ  } d | j	 ƒ  d | j
 d | d <d | d <| j | ƒ | S(   NR+   R,   RG   R*   s   glyphicon glyphicon-stopR-   R.   s   selectable R3   R4   R5   R6   R7   RH   s   Pulse total CH1 [s   ] (RI   RJ   RK   s   Pulse total CH2 [RL   (   RM   R<   R=   R?   R>   RN   RW   RX   R   RY   RZ   (   R'   RS   RF   RT   RU   RV   (    (    sF   var/www/html/leakless-monitor/Applications/Measure/Totalizers/views.pyRE   ¬   s0    
#
#
c      
   C   sB  t  j ƒ  j ƒ  } t j j d d ƒ } | | } t j } i  } |  j d k r–| t	 d d ƒ k rõ t
 j j i | d 6ƒ } | j d | d t  j | | ƒ d	 |  ƒ j d d	 ƒ j d
 t d ƒ d t d ƒ d t d ƒ d t d ƒ ƒ j d ƒ } n  t j j i | d 6ƒ }	 |	 j d | d t  j | | ƒ d	 |  ƒ j d d	 ƒ j d
 t d ƒ d t d ƒ d t d ƒ d t d ƒ ƒ j d ƒ }
 t t | |
 ƒ ƒ S|  j d k rì| t	 d d ƒ k rKt j j i | d 6ƒ } | j d | d t  j | | ƒ d	 |  ƒ j d d	 ƒ j d
 t d ƒ d t d ƒ d t d ƒ d t d ƒ ƒ j d ƒ } n  t j j i | d 6ƒ }	 |	 j d | d t  j | | ƒ d	 |  ƒ j d d	 ƒ j d
 t d ƒ d t d ƒ d t d ƒ d t d ƒ ƒ j d ƒ }
 t t | |
 ƒ ƒ S|  j d k r“t j j i | d 6ƒ }	 |	 j d | d t  j | | ƒ d	 |  ƒ j d d	 ƒ j d
 t d ƒ d t d ƒ d t d ƒ d t d ƒ ƒ j d ƒ }
 t |
 ƒ S|  j d k r:t j j i | d 6ƒ }	 |	 j d | d t  j | | ƒ d	 |  ƒ j d d	 ƒ j d
 t d ƒ d t d ƒ d t d ƒ d t d ƒ ƒ j d ƒ }
 t |
 ƒ Sg  Sd  S(   Nt   dayt	   timestamps   PDL-AGt   daysi"   R    t   timestamp__gtt   timestamp__ltet   lldevicelistt   TotalCH1Maxt   ch1_total_flowt   TotalCH1Mint   TotalCH2Maxt   ch2_total_flowt   TotalCH2Mins   PDL-HGt	   pulsetch1t	   pulsetch2R9   t   total_flow1t   total_flow2R:   t   total_flow_1t   total_flow_2(   t   datetimet   nowR    R   t   opst   date_trunc_sqlt   timet   maxRA   R   R   R   t   extraR   t   combinet   valuest   annotateR   R   t   order_byR   t   listt   chaint   LldevicePdlhgMeasureArchivet   LldevicePdlhgMeasuret   LldeviceMAG8000Measuret   LldeviceSOFRELMeasure(   R'   t
   start_datet   end_datet   current_datetimet   truncate_datet
   delta_timet   max_timet   min_max_list_archivet   qs_at   qst   min_max_list(    (    sF   var/www/html/leakless-monitor/Applications/Measure/Totalizers/views.pyt   totalizers_return_measurementsÏ   sr    
		!3	!		!	!		!	
	!	
c      	      s“  |  j  j ƒ  r…|  j ƒ  r|  j d k rmi  } t j |  j ƒ } t j | d d ƒ j	 ƒ  } t j | d d ƒ j	 ƒ  } | d } t
 t d | d | ƒ ƒ } xÁ| D]¹} t | ƒ } | j ƒ  }	 g  }
 t | | | ƒ } | j ƒ  d k r3|	 j ƒ  |	 j ƒ  g } |	 j ƒ  |	 j ƒ  g } |	 j |	 j g } n| j ƒ  d	 k rŠ|	 j ƒ  |	 j ƒ  g } |	 j ƒ  |	 j ƒ  g } |	 j |	 j g } n± | j ƒ  d
 k rá|	 j ƒ  |	 j ƒ  g } |	 j ƒ  |	 j ƒ  g } |	 j |	 j g } nZ | j ƒ  d k r¦ |	 j ƒ  |	 j ƒ  g } |	 j ƒ  |	 j ƒ  g } |	 j |	 j g } n q¦ xä | D]Ü ‰  t ‡  f d †  | Dƒ d  ƒ } | d  k rˆˆ  } d } d } n^ | d } t | d ƒ } t | d ƒ } t | d ƒ } t | d ƒ } | | } | | } |
 j | t  | | d d ƒ t  | | d d ƒ g ƒ qBWi |
 d 6| d d 6| d d 6| d d 6| d d 6| | <q¦ Wt! | ƒ St j |  j" ƒ } qn
 t# d ƒ Sd  S(   Nt   POSTR~   s   %Y-%m-%dR   t   device_id_listt   startt   ends   PDL-AGs   PDL-HGR9   R:   c         3   s+   |  ]! } | d  j  ƒ  ˆ  k r | Vq d S(   R    N(   R    (   t   .0t   item(   R    (    sF   var/www/html/leakless-monitor/Applications/Measure/Totalizers/views.pys	   <genexpr>>  s    i    R    Ra   Rc   Rd   Rf   i   i   t   datat   unit1t   unit2t   label1t   lable2s   Invalid user($   R   R   t   is_ajaxt   methodR!   t   loadst   bodyRm   t   strptimeR    Rx   t   totalizers_get_date_ranget   devices_return_by_idRM   Rˆ   t   get_device_typeRO   RQ   t   get_ch1_pulse_total_factort   get_ch2_pulse_total_factorRP   RR   RW   RY   t   get_total_1_factort   get_total_2_factorRX   RZ   t   nextR@   t   totalizers_check_is_noneR   t   roundR   t   GETR$   (   R%   t   data_responseRF   t   data_start_datet   data_end_datet   data_id_listt	   date_listR+   R'   RS   t
   data_arrayt   min_max_datat   unitst   factorst   lablest   data_objectt
   date_valuet	   delta_ch1t	   delta_ch2t   max_value_ch1t   min_value_ch1t   max_value_ch2t   min_value_ch2(    (   R    sF   var/www/html/leakless-monitor/Applications/Measure/Totalizers/views.pyt   totalizers_return_data  sp    
	


	
c   &   
      s?
  |  j  j ƒ  r1
|  j d k r;
i  } t j |  j d ƒ } t j | d d ƒ j ƒ  } t j | d d ƒ j ƒ  } | d } t	 t
 d | d | ƒ ƒ } t j ƒ  } t j ƒ  } t | _ | j | _ | j | _ t j ƒ  }	 t |	 _ | j |	 _ | j |	 _ t j ƒ  }
 t j j |
 _ t j j |
 _ t j j |
 _ t j j |
 _ t j ƒ  } t j j | _ t j j d	 | _  t j ƒ  } t j j | _ t j j d
 | _  t j! ƒ  } t | _" t j# ƒ  } |
 | _$ | | _% | | _& | | _ t j# ƒ  } |
 | _$ | | _% | | _& | | _ t j# ƒ  } |
 | _$ t j# ƒ  } |
 | _$ |	 | _& | | _% | j' d ƒ } t | j( d ƒ _) d; | j( d ƒ _* t | j( d ƒ _) d< | j( d ƒ _* | j+ d ƒ } d= | _, | j+ d ƒ } d> | _, d } |  j- j. d d ƒ d k r)| j/ d d d | ƒ | j/ d d d | ƒ n, | j/ d d d | ƒ | j/ d d d | ƒ xO | D]G ‰  | d 7} | j+ | ƒ } d? | _, | j/ d | ˆ  j0 d ƒ | ƒ q\W|  j- j. d d ƒ d k r| j1 d d d | d | d j0 d ƒ d | d j0 d ƒ | ƒ nB | j1 d d d | d  | d j0 d ƒ d! | d j0 d ƒ | ƒ d } x•| D]} t2 | d" ƒ } | j3 ƒ  } | j4 ƒ  d# k rÏ| j5 ƒ  | j6 ƒ  g } | j7 ƒ  | j8 ƒ  g } | j9 | j: g } n| j4 ƒ  d$ k r&| j5 ƒ  | j6 ƒ  g } | j7 ƒ  | j8 ƒ  g } | j9 | j: g } n± | j4 ƒ  d% k r}| j; ƒ  | j< ƒ  g } | j= ƒ  | j> ƒ  g } | j? | j@ g } nZ | j4 ƒ  d& k rV| j; ƒ  | j< ƒ  g } | j= ƒ  | j> ƒ  g } | j? | j@ g } n qV| d' t k rà| d( t k rà| j1 | | d d d | jA ƒ  d) | jB ƒ  d* | ƒ |  j- j. d d ƒ d k r•| j/ | d d@ | d d* | ƒ | j/ | d d dA | d d* | ƒ q&| j/ | d dB | d d* | ƒ | j/ | d d dC | d d* | ƒ nF| d' t k rƒ| j/ | d | jA ƒ  d) | jB ƒ  d* | ƒ |  j- j. d d ƒ d k r^| j/ | d dD | d d* | ƒ q&| j/ | d dE | d d* | ƒ n£ | d( t k r&| j/ | d | jA ƒ  d) | jB ƒ  d* | ƒ |  j- j. d d ƒ d k r| j/ | d dF | d d* | ƒ q&| j/ | d dG | d d* | ƒ n  tC | | | ƒ } d } xk| D]c‰  tD ‡  f d/ †  | Dƒ d  ƒ } | d  k r…d } d } nT tF | d0 ƒ }  tF | d1 ƒ }! tF | d2 ƒ }" tF | d3 ƒ }# |  |! } |" |# } | d' t k r<	| d( t k r<	| j/ | | | | d | ƒ | j/ | d | | | d | ƒ nb | d' t k rm	| j/ | | | | d | ƒ n1 | d( t k rž	| j/ | | | | d | ƒ n  | d 7} qEW| d' t k rÙ	| d( t k rÙ	| d 7} qV| d 7} qVWt jG ƒ  j0 d4 ƒ d5 }$ tH d6 d7 ƒ }% d8 |$ |% d9 <| jI |% ƒ |% Sn
 tH d: ƒ Sd  S(H   NR‰   R!   R~   s   %Y-%m-%dR   R&   R‹   RŒ   t   yellowt
   light_bluet   Datai    i   i   i   i   iô  i   i¾   t   langs   en-gbt   hrs   Uredaj [Identifikator]t   Mjerenjes   Device [Identifier]t   Measurei–   s   %d-%m-%Ys
   Datum od: s    do iÿÿÿÿs   Date from: s    to R+   s   PDL-AGs   PDL-HGR9   R:   Rk   Rl   s    [R)   s   Uk. protok CH1s   Uk. protok CH2s   Total flow CH1s   Total flow CH2c         3   s+   |  ]! } | d  j  ƒ  ˆ  k r | Vq d S(   R    N(   R    (   R   RŽ   (   R    (    sF   var/www/html/leakless-monitor/Applications/Measure/Totalizers/views.pys	   <genexpr>õ  s    Ra   Rc   Rd   Rf   s   %Y-%m-%d_%H-%M-%Ss   _totalizers.xlst   content_types   application/vnd.ms-excels   attachment; filename=%ss   Content-Dispositions   Invalid useri   i   i˜:  iD  i”  s   Uk. protok CH1 [s   Uk. protok CH2 [s   Total flow CH1 [s   Total flow CH2 [s   Uk. protok CH1 [s   Total flow CH1 [s   Uk. protok CH2 [s   Total flow CH2 [(J   R   R   R•   R!   R–   R‰   Rm   R˜   R    Rx   R™   t   xlwtt   Workbookt	   AlignmentR?   t   wrapt   VERT_CENTERt   vertt   HORZ_CENTERt   horzt	   HORZ_LEFTt   Borderst   THINt   bottomt   leftt   rightt   topt   Patternt   SOLID_PATTERNt   patternt   Stylet
   colour_mapt   pattern_fore_colourt   Fontt   boldt   XFStylet   borderst   fontt	   alignmentt	   add_sheett   rowt   height_mismatcht   heightt   colt   widtht   sessiont   gett   writet   strftimet   write_mergeRš   RM   R›   RO   RQ   Rœ   R   RP   RR   RW   RY   Rž   RŸ   RX   RZ   R<   R=   Rˆ   R    R@   R¡   Rn   R$   t   save(&   R%   R¤   RF   R¥   R¦   t   device_request_listR¨   t   workbookt   alignt   align_vR×   t   color_yellowt
   color_bluet	   font_boldt   style_yellowt
   style_bluet   style_whitet   style_white_boldt   sheett   columnt   column_countert   row_countert   device_requestR'   RS   R«   R¬   R­   t   totalizer_listR®   t   total_flow_ch1t   total_flow_ch2R²   R³   R´   Rµ   t   download_namet   response(    (   R    sF   var/www/html/leakless-monitor/Applications/Measure/Totalizers/views.pyt   totalizers_return_excelc  s   
																	
	#EB 8")").%%.%%	

 %!! c         C   s   |  d  k r d }  n  |  S(   Ni    (   R@   (   t   value(    (    sF   var/www/html/leakless-monitor/Applications/Measure/Totalizers/views.pyR¡     s    	c         c   s>   | |  } x- t  | j d ƒ D] } |  t d | ƒ Vq Wd  S(   Ni   R]   (   t   xrangeR]   R   (   R‹   RŒ   t   spant   i(    (    sF   var/www/html/leakless-monitor/Applications/Measure/Totalizers/views.pyR™      s    
(-   R!   RN   R¿   Rm   R    R   t   django.httpR   t   django.shortcutsR   t   django.template.loaderR   t   django.core.exceptionsR   t   django.db.modelsR   R   R   R	   R
   t   django.templateR   t	   django.dbR   t   Applications.Measure.modelsR   R   R   t   Applications.Measure.viewst   Applications.Users.viewsR   R   t   Applications.Base.viewsR(   R   RB   RC   RD   RE   Rˆ   R¶   Rû   R¡   R@   R™   (    (    (    sF   var/www/html/leakless-monitor/Applications/Measure/Totalizers/views.pyt   <module>   s0   (

		$	!	!	!	#	G	M	¸	