ó
¡³^c           @   sÛ  d  d l  Z  d  d l m Z d  d l m Z m Z m Z m Z d  d l Z d  d l Z d  d l	 Z	 d  d l
 m Z d  d l m Z d  d l Td  d l m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z d  d l m Z m  Z  d  d	 l! m" Z" m# Z# d  d
 l$ m% Z% d  d l& Td  d l' Td  d l( m) Z) d „  Z* d „  Z+ d „  Z, d „  Z- d „  Z. d „  Z/ d „  Z0 d „  Z1 d „  Z2 d „  Z3 d „  Z4 e5 d „  ƒ Z6 d „  Z7 d „  Z8 d „  Z9 d S(   iÿÿÿÿN(   t   load_workbook(   t   datetimet   datet   timet	   timedelta(   t   chain(   t   OrderedDict(   t   *(   t   LldevicePdlagMeasuret   LldevicePdlagMeasureArchivet   LldevicePdlagRealtimet   LldevicePdlhgMeasuret   LldevicePdlhgMeasureArchivet   LldevicePdlhgRealtimet   LldeviceMailst   LldeviceMAG8000Measuret   LldeviceMAG8000Realtimet   LldeviceMAG8000Statust   LldeviceSOFRELMeasuret   LldeviceSOFRELRealtimet   LldeviceCSVMeasuret   LldeviceCSVRealtime(   t   Lldevicelistt   LldeviceMAG8000Parameters(   t   user_get_languaget   user_get_information(   t   devices_return_by_id(   t   sortdictc         C   s  t  j ƒ  } i  } t |  ƒ } | j d k r° t j j d | d | d |  ƒ j d ƒ } | | t d d ƒ k r t	 j j d | d | d |  ƒ j d ƒ } n  t
 t | | ƒ ƒ S| j d k rBt j j d | d | d |  ƒ j d ƒ } | | t d d ƒ k r/t j j d | d | d |  ƒ j d ƒ } n  t
 t | | ƒ ƒ S| j d	 k r…t j j d | d | d |  ƒ j d ƒ } t
 | ƒ S| j d
 k rÈt j j d | d | d |  ƒ j d ƒ } t
 | ƒ S| j d k rt j j d | d | d |  ƒ j d ƒ } t
 | ƒ Sg  Sd  S(   Ns   PDL-AGt   timestamp__gtet   timestamp__ltet   lldevicelistt	   timestampt   daysi"   s   PDL-HGt   MAG8000t   SOFRELt   CSV(   R   t   nowR   t   loc_typeR   t   objectst   filtert   order_byR   R	   t   listR   R   R   R   R   R   (   t	   device_idt
   start_timet   end_timet   current_datetimet   measurement_archivet   devicet   measurement(    (    s;   var/www/html/leakless-monitor/Applications/Measure/views.pyt   measure_get_measure_data   sT    


c         C   s•   t  j ƒ  } i  } t j j d | d | d |  ƒ j d ƒ } | | t d d ƒ k r‚ t j j d | d | d |  ƒ j d ƒ } n  t t	 | | ƒ ƒ S(   NR   R   t   lldevicelist__inR   R    i"   (
   R   R$   R   R&   R'   R(   R   R	   R)   R   (   t   device_id_listR+   R,   R-   R.   R0   (    (    s;   var/www/html/leakless-monitor/Applications/Measure/views.pyt!   measure_get_multiple_measure_dataR   s    c   7      C   s^  |  j  j ƒ  rPd } t j |  j d ƒ } | d } t j | d ƒ } | d } t j | d ƒ } | d } | | } | j d k r“ t d d	 ƒ St	 | ƒ }	 |	 j
 ƒ  }
 |	 j } t | | | ƒ } t 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( | ƒ } t) t* j+ t, | ƒ t, | ƒ ƒ ƒ } d } d } d } | | k r…| } n | } | d k r[| j- d ƒ } t | j. d ƒ _/ df | j. d ƒ _0 |  j1 j2 d d ƒ d k r | j3 d d d d d | d | d | d | | ƒ q| j3 d d d d d | d | d | d | | ƒ n¦|	 j4 d k r1
|
 j5 ƒ  } |
 j6 ƒ  } |
 j7 ƒ  } |
 j8 ƒ  } |
 j9 ƒ  }  |
 j9 ƒ  }! xL| d k r-
| j- d t: | ƒ ƒ } t | j. d ƒ _/ dg | j. d ƒ _0 t | j. d ƒ _/ dh | j. d ƒ _0 | j; d ƒ }" di |" _< |  j1 j2 d d ƒ d k rÊ| j= d d d  | ƒ | j= d d d! |
 j> ƒ  d" |
 j? d# | ƒ | j= d d$ d% |
 j@ ƒ  d" |
 jA d# | ƒ | j= d d d& |
 jB ƒ  d" |
 jC d# | ƒ | j= d d d' |
 jD ƒ  d" |
 jE d# | ƒ | j= d d( d) |
 jF ƒ  d" |
 jG d# | ƒ | j= d d d* |
 jH ƒ  d" |
 jI d# | ƒ | j= d d+ d, |
 jJ d# | ƒ | j= d d- d. |
 jK d# | ƒ nr| j= d d d/ | ƒ | j= d d d0 |
 j> ƒ  d" |
 j? d# | ƒ | j= d d$ d1 |
 j@ ƒ  d" |
 jA d# | ƒ | j= d d d2 |
 jB ƒ  d" |
 jC d# | ƒ | j= d d d3 |
 jD ƒ  d" |
 jE d# | ƒ | j= d d( d4 |
 jF ƒ  d" |
 jG d# | ƒ | j= d d d5 |
 jH ƒ  d" |
 jI d# | ƒ | j= d d+ d6 |
 jJ d# | ƒ | j= d d- d7 |
 jK d# | ƒ d$ }# | | | !}$ x<|$ D]4}% |% jL jM d ƒ }& | j= |# d |& | ƒ | j= |# d |% jN ƒ  | | ƒ | j= |# d$ |% jO ƒ  | | ƒ | j= |# d |% jP ƒ  | | ƒ | j= |# d |% jQ ƒ  |  | ƒ | j= |# d( |% jR ƒ  | | ƒ | j= |# d |% jS ƒ  |! | ƒ | j= |# d+ |% jT | ƒ | j= |# d- |% jU | ƒ | d 8} |# d 7}# qVW| d k r¹| j3 |# |# d d d8 | ƒ n  | | jL jM d ƒ } | | d jL jM d ƒ } | } | | k r	| | 7} n
 | | 7} |  j1 j2 d d ƒ d k r¨	d9 t: | ƒ d: t: | ƒ | _V | j3 d d d d d; | d | d | d | | ƒ | j3 d d d+ d- | jV | ƒ nx d< t: | ƒ d= t: | ƒ | _V | j3 d d d d d> | d | d | d | | ƒ | j3 d d d+ d- | jV | ƒ | d 7} qµWnÐ|	 j4 d? k rí|
 j5 ƒ  }' |
 j6 ƒ  }( |
 jW ƒ  }) |
 jX ƒ  }* |
 j7 ƒ  }+ |
 j8 ƒ  }, |
 j9 ƒ  }- |
 j9 ƒ  }. x^| d k ré| j- d t: | ƒ ƒ } t | j. d ƒ _/ dj | j. d ƒ _0 t | j. d ƒ _/ dk | j. d ƒ _0 | j; d ƒ }" dl |" _< |  j1 j2 d d ƒ d k r`| j= d d d  | ƒ | j= d d d@ |
 j> ƒ  d" |
 j? d# | ƒ | j= d d$ dA |
 j@ ƒ  d" |
 jA d# | ƒ | j= d d dB |
 jY ƒ  d" |
 jZ d# | ƒ | j= d d dC |
 j[ ƒ  d" |
 j\ d# | ƒ | j= d d( d& |
 jB ƒ  d" |
 jC d# | ƒ | j= d d d' |
 jD ƒ  d" |
 jE d# | ƒ | j= d d+ dD dE |
 j] d# | ƒ | j= d d- d) |
 jF ƒ  d" |
 jG d# | ƒ | j= d dF d* |
 jH ƒ  d" |
 jI d# | ƒ | j= d dG dH dE |
 j^ d# | ƒ | j= d dI d, |
 jJ d# | ƒ | j= d dJ d. |
 jK d# | ƒ n| j= d d d/ | ƒ | j= d d dK |
 j> ƒ  d" |
 j? d# | ƒ | j= d d$ dL |
 j@ ƒ  d" |
 jA d# | ƒ | j= d d dM |
 jY ƒ  d" |
 jZ d# | ƒ | j= d d dN |
 j[ ƒ  d" |
 j\ d# | ƒ | j= d d( d2 |
 jB ƒ  d" |
 jC d# | ƒ | j= d d d3 |
 jD ƒ  d" |
 jE d# | ƒ | j= d d+ dO dE |
 j] d# | ƒ | j= d d- d4 |
 jF ƒ  d" |
 jG d# | ƒ | j= d dF d5 |
 jH ƒ  d" |
 jI d# | ƒ | j= d dG dP dE |
 j^ d# | ƒ | j= d dI d6 |
 jJ d# | ƒ | j= d dJ d7 |
 jK d# | ƒ d$ }# | | | !}$ xº|$ D]²}% |% jL jM d ƒ }& | j= |# d |& | ƒ | j= |# d |% j_ ƒ  |' | ƒ | j= |# d$ |% j` ƒ  |( | ƒ | j= |# d |% ja ƒ  |) | ƒ | j= |# d |% jb ƒ  |* | ƒ | j= |# d( |% jc ƒ  |+ | ƒ | j= |# d |% jd ƒ  |- | ƒ | j= |# d+ |% je ƒ  | ƒ | j= |# d- |% jf ƒ  |, | ƒ | j= |# dF |% jg ƒ  |. | ƒ | j= |# dG |% jh ƒ  | ƒ | j= |# dI |% ji ƒ  | ƒ | j= |# dJ |% jj ƒ  | ƒ | d 8} |# d 7}# q”W| d k ru| j3 |# |# d d d8 | ƒ n  | | jL jM d ƒ } | | d jL jM d ƒ } | } | | k rÄ| | 7} n
 | | 7} |  j1 j2 d d ƒ d k rdd9 t: | ƒ d: t: | ƒ | _V | j3 d d d d d; | d | d | d | | ƒ | j3 d d d+ d- | jV | ƒ nx d< t: | ƒ d= t: | ƒ | _V | j3 d d d d d> | d | d | d | | ƒ | j3 d d d+ d- | jV | ƒ | d 7} q£
Wn|	 j4 dQ k rd }/ d }0 |
 jk ƒ  }1 |
 jl ƒ  }2 |
 jm ƒ  }3 |
 jn ƒ  }4 xÆ| d k rý| j- d t: | ƒ ƒ } t | j. d ƒ _/ dm | j. d ƒ _0 t | j. d ƒ _/ dn | j. d ƒ _0 | j; d ƒ }" do |" _< |  j1 j2 d d ƒ d k r| j= d d d  | ƒ | j= d d dR |
 jo ƒ  d" |
 jp d# | ƒ | j= d d$ dS |
 jq ƒ  d" |
 jr d# | ƒ | j= d d dT |
 js ƒ  d" |
 jt d# | ƒ | j= d d dU |
 ju ƒ  d" |
 jv d# | ƒ | j= d d( dV |
 jw ƒ  d" |
 jx d# | ƒ | j= d d dW |
 jy ƒ  d" |
 jz d# | ƒ n0| j= d d d/ | ƒ | j= d d dX |
 jo ƒ  d" |
 jp d# | ƒ | j= d d$ dY |
 jq ƒ  d" |
 jr d# | ƒ | j= d d dZ |
 js ƒ  d" |
 jt d# | ƒ | j= d d d[ |
 ju ƒ  d" |
 jv d# | ƒ | j= d d( d\ |
 jw ƒ  d" |
 jx d# | ƒ | j= d d d] |
 jy ƒ  d" |
 jz d# | ƒ d$ }# | | | !}$ x
|$ D]}% |% jL jM d ƒ }& | j= |# d |& | ƒ | j= |# d |% j{ ƒ  |/ | ƒ | j= |# d$ |% j| ƒ  |0 | ƒ | j= |# d |% j} ƒ  |1 | ƒ | j= |# d |% j~ ƒ  |2 | ƒ | j= |# d( |% j ƒ  |3 | ƒ | j= |# d |% j€ ƒ  |4 | ƒ | d 8} |# d 7}# qXW| d k r‰| j3 |# |# d d d8 | ƒ n  | | jL jM d ƒ } | | d jL jM d ƒ } | } | | k rØ| | 7} n
 | | 7} |  j1 j2 d d ƒ d k rxd9 t: | ƒ d: t: | ƒ | _V | j3 d d d d d; | d | d | d | | ƒ | j3 d d d+ d- | jV | ƒ nx d< t: | ƒ d= t: | ƒ | _V | j3 d d d d d> | d | d | d | | ƒ | j3 d d d+ d- | jV | ƒ | d 7} q;Wn  t j ƒ  jM d^ ƒ d_ | d` }5 t da db ƒ }6 dc |5 |6 dd <| j‚ |6 ƒ |6 St de ƒ Sd  S(p   Nièý  t   jsont
   start_dates   %Y-%m-%d %H:%M:%St   end_dateR*   i<   t   statusi  t   yellowt
   light_bluei   i    s   No datai   i   t   langs   en-gbt   hri   s   Nema podataka za uredaj: s    [s   ]
Vrijeme od: s    do s   No available data for device: s   ]
Time from: s    to s   PDL-AGt   Sheeti   i   t   Vrijemes   Analogni CH1 [s   ] (t   )i   s   Analogni CH2 [s   Impulsi frekvencija CH1 [s   Impulsi ukupno CH1 [i   s   Impulsi frekvencija CH2 [s   Impulsi ukupno CH2 [i   s   Digitalni CH1 [0/1] (i   s   Digitalni CH2 [0/1] (t   Times   Analog CH1 [s   Analog CH2 [s   Pulse frequency CH1 [s   Pulse total CH1 [s   Pulse frequency CH2 [s   Pulse total CH2 [s   Digital CH1 [0/1] (s   Digital CH2 [0/1] (s   More data on next pages	   Stranica s    od s   Uredaj: s   Page s    of s   Device: s   PDL-HGs   Analogni napon CH1 [s   Analogni napon CH2 [s   Analogni struja CH1 [s   Analogni struja CH2 [s   Impulsi signal CH1 [0/1]s    (i	   i
   s   Impulsi signal CH2 [0/1]i   i   s   Analog voltage CH1 [s   Analog voltage CH2 [s   Analog current CH1 [s   Analog current CH2 [s   Pulse digital CH1 [0/1]s   Pulse digital CH2 [0/1]R!   s   Analogna struja [s   Analogni napon [s   Protok [s   Ukupni protok CH1 [s   Ukupni protok CH2 [s   Ukupni protok CH3 [s   Analog current [s   Analog voltage [s   Flow [s   Total flow CH1 [s   Total flow CH2 [s   Total flow CH3 [s   %Y-%m-%d_%H-%M-%St   _s   .xlst   content_types   application/vnd.ms-excels   attachment; filename=%ss   Content-Dispositions   Invalid useri   i   i   i   i   i   i   i   i   i   (ƒ   t   usert   is_authenticatedR5   t   loadst   POSTR   t   strptimeR    t   HttpResponseR   t   get_device_infot   rem_identifierR1   t   xlwtt   Workbookt	   Alignmentt   Truet   wrapt   VERT_CENTERt   vertt   HORZ_CENTERt   horzt   Borderst   THINt   bottomt   leftt   rightt   topt   Patternt   SOLID_PATTERNt   patternt   Stylet
   colour_mapt   pattern_fore_colourt   Fontt   boldt   XFStylet   borderst   fontt	   alignmentt   lent   intt   matht   ceilt   floatt	   add_sheett   rowt   height_mismatcht   heightt   sessiont   gett   write_mergeR%   t   get_ch1_voltage_factort   get_ch2_voltage_factort   get_ch1_pulse_frequency_factort   get_ch2_pulse_frequency_factort   get_ch1_pulse_total_factort   strt   colt   widtht   writet   get_ch1_voltage_unitt   ch1voltagelabelt   get_ch2_voltage_unitt   ch2voltagelabelt   get_ch1_pulse_frequency_unitt   ch1pulsefrequencylabelt   get_ch1_pulse_total_unitt   ch1pulsetotallabelt   get_ch2_pulse_frequency_unitt   ch2pulsefrequencylabelt   get_ch2_pulse_total_unitt   ch2pulsetotallabelt   ch1digitallabelt   ch2digitallabelR   t   strftimet   get_ch1_analogt   get_ch2_analogt   get_ch1_pulset   get_ch1_totalt   get_ch2_pulset   get_ch2_totalt   digital_ch1t   digital_ch2t   namet   get_ch1_current_factort   get_ch2_current_factort   get_ch1_current_unitt   ch1currentlabelt   get_ch2_current_unitt   ch2currentlabelt   ch1pulsedigitallabelt   ch2pulsedigitallabelt   get_ch1_analog_voltaget   get_ch2_analog_voltaget   get_ch1_analog_currentt   get_ch2_analog_currentt   get_ch1_pulse_frequencyt   get_ch1_pulse_totalt   get_ch1_pulse_digitalt   get_ch2_pulse_frequencyt   get_ch2_pulse_totalt   get_ch2_pulse_digitalt   get_ch1_digitalt   get_ch2_digitalt   get_flow_factort   get_total_1_factort   get_total_2_factort   get_total_3_factort   get_analog_current_unitt   analogcurrentlabelt   get_analog_voltage_unitt   analogvoltagelabelt   get_flow_unitt	   flowlabelt   get_total_1_unitt   totalflow1labelt   get_total_2_unitt   totalflow2labelt   get_total_3_unitt   totalflow3labelt   get_analog_currentt   get_analog_voltaget   get_flowt   get_total_flow1t   get_total_flow2t   get_total_flow3R$   t   save(7   t   requestt   rows_per_filet   return_datat   excel_end_date_strt   excel_end_datet   excel_start_date_strt   excel_start_dateR*   t   elapsedTimeR/   t   device_infot   device_identifiert   measurementst   workbookt   alignRc   t   color_yellowt
   color_bluet	   font_boldt   style_yellowt
   style_bluet   style_whitet
   data_countt
   page_countt   page_countert   start_indext	   end_indext   sheett   factor_analog_ch1t   factor_analog_ch2t   factor_pulse_ch1t   factor_pulse_ch2t   factor_total_ch1t   factor_total_ch2t   columnt   xls_row_countert   measure_slicedt   measureR   t   factor_analog_voltage_ch1t   factor_analog_voltage_ch2t   factor_analog_current_ch1t   factor_analog_current_ch2t   factor_pulse_frequency_ch1t   factor_pulse_frequency_ch2t   factor_pulse_total_ch1t   factor_pulse_total_ch2t   factor_analog_currentt   factor_analog_voltaget   factor_flowt   factor_total_flow_ch1t   factor_total_flow_ch2t   factor_total_flow_ch3t   download_namet   response(    (    s;   var/www/html/leakless-monitor/Applications/Measure/views.pyt   measure_generate_exceld   s   



												%	;;	//////!$//////!!      

!8"!8	//////%//%!$//////%//%!!        

!8"!8	/////2//////      

!8"!8!c         C   sZ   |  j  j ƒ  rF t |  ƒ } t d i |  j  d 6| d 6t |  ƒ d 6ƒ St t d ƒ ƒ Sd  S(   Ns   deviceInfoTable.htmlt   user_objectt
   table_dataR;   t
   login_page(   RC   RD   t   get_device_realtime_info_datat   render_to_responseR   t   redirectt   reverse(   R¾   Ró   (    (    s;   var/www/html/leakless-monitor/Applications/Measure/views.pyt!   measure_show_device_realtime_infoÉ  s    c         C   s  g  } g  } |  j  j ƒ  } t |  ƒ } xF | D]> } | j d ƒ sI q. n  | j d d ƒ d } | j | ƒ q. Wg  } i g  d 6g  d 6} | d k r| d j d ƒ | d j d	 ƒ | d j d
 ƒ | d j d ƒ | d j d ƒ | d j d ƒ | d j d ƒ nw | d j d ƒ | d j d ƒ | d j d ƒ | d j d ƒ | d j d ƒ | d j d ƒ | d j d ƒ |  j  j rÇ| d k r³| d j d ƒ qÇ| d j d ƒ n  t j j	 d | ƒ } x%| D]}	 y¾ |	 j
 ƒ  d k rt |  |	 ƒ }
 n– |	 j
 ƒ  d k r4t |  |	 ƒ }
 nr |	 j
 ƒ  d k rXt |  |	 ƒ }
 nN |	 j
 ƒ  d k r|t |  |	 ƒ }
 n* |	 j
 ƒ  d k r t |  |	 ƒ }
 n g  }
 WnI t k
 rò} i i |	 j ƒ  d d 6t d 6d d  6g d! 6g  d" 6}
 n X| j |
 ƒ qãW| | d <| S(#   Ns   DeviceList.t   .i   iÿÿÿÿt   header_columnst	   body_rowsR<   t   IDt   IDENTIFIKATORs   ZADNJE OSVJEZENJEt   TIPt   VERZIJAt   BATERIJAt   SIGNALt
   IDENTIFIERs   LAST REFRESHt   TYPEt   VERSIONt   BATTERYt   GRUPEt   GROUPSt   id__ins   PDL-AGs   PDL-HGR!   R"   R#   s    - Data errort   valuet   sortt   whitet   colort   row_datat
   extra_data(   RC   t   get_all_permissionsR   t
   startswitht   splitt   appendt   is_superuserR   R&   R'   t   get_device_typet   get_row_data_pdlagt   get_row_data_pdlhgt   get_row_data_mag8000t   get_row_data_sofrelt   get_row_data_csvt	   Exceptiont   get_device_idt   False(   R¾   t   device_listR  t   permissionsR;   t   permt   permission_namet   devices_infot   ReturnR/   t   datat   e(    (    s;   var/www/html/leakless-monitor/Applications/Measure/views.pyRõ   Õ  sh    

,
c         C   s$  y t  j j d | ƒ } WnH t k
 rc i i | j ƒ  d d 6t d 6d d 6g d 6g  d 6} | SXg  } d	 } | j ƒ  d
 k r‹ d } n | j ƒ  d k r¦ d } n  d	 } | j ƒ  } | d k  rÍ d } n | d k  râ d } n  d	 } | j ƒ  }	 |	 d k  r	d } n |	 d k  rd } n  | j	 i | j ƒ  d 6t d 6d	 d 6ƒ | j	 i | j
 ƒ  d 6t d 6d	 d 6ƒ | j	 i | j ƒ  d 6t d 6| j ƒ  d 6| d 6ƒ | j	 i | j ƒ  d 6t d 6d	 d 6ƒ | j	 i | j ƒ  d 6t d 6d	 d 6ƒ | j	 i | j ƒ  d 6t d 6| d 6ƒ | j	 i | j ƒ  d 6t d 6| d 6ƒ |  j j rz| j	 i | j ƒ  d 6t d 6d	 d 6ƒ n  g  }
 | j ƒ  } |
 j	 i d | j d d 6t | j ƒ  ƒ d | j ƒ  d 6ƒ |
 j	 i d | j d d 6t | j ƒ  ƒ d | j ƒ  d 6ƒ |
 j	 i d | j d d 6t | j ƒ  ƒ d | j ƒ  d 6ƒ |
 j	 i d | j d d 6t | j  ƒ  ƒ d | j! ƒ  d 6ƒ |
 j	 i d | j" d d 6t | j# ƒ  ƒ d | j$ ƒ  d 6ƒ |
 j	 i d | j% d d 6t | j& ƒ  ƒ d | j' ƒ  d 6ƒ i | d 6|
 d 6} | S(   NR   s    - Realtime data errorR
  R  t   redR  R  R  R  i ¸L
s   #ffc2b3i \&i   s   #ffff66i   i   i
   i   t
   sort_values   CH1 Voltage (R?   R’   t    s   CH2 Voltage (s   CH1 Pulse frequency (s   CH2 Pulse frequency (s   CH1 Pulse total (s   CH2 Pulse total (i ¸L
((   R
   R&   Rp   t   ObjectDoesNotExistR  R  t   get_elapsed_ms_timet   get_device_info_battery_valuet   get_device_info_signal_valueR  t   get_device_identifiert   get_elapsed_timeRN   R  t   get_device_versiont   get_device_info_batteryt   get_device_info_signalRC   R  t   get_device_groupsRI   R|   Rw   t   get_ch1_pressureR{   R~   t   get_ch2_pressureR}   R€   t   get_ch1_flowR   R„   t   get_ch2_flowRƒ   R‚   t   get_ch1_total_flowR   R†   t   get_ch2_total_flowR…   (   R¾   R/   t   measure_dataR$  R  t   time_elapsed_colort   battery_colort   battery_valuet   signal_colort   signal_valueR  RÆ   R#  (    (    s;   var/www/html/leakless-monitor/Applications/Measure/views.pyR    sX    ,
						((5((((+@@@@@@

c         C   s  y t  j j d | ƒ } WnH t k
 rc i i | j ƒ  d d 6t d 6d d 6g d 6g  d 6} | SXg  } d	 } | j ƒ  d
 k r‹ d } n | j ƒ  d k r¦ d } n  d	 } | j ƒ  d k  rÇ d } n | j ƒ  d k  râ d } n  d	 } | j ƒ  d k  rd } n | j ƒ  d k  rd } n  | j	 i | j ƒ  d 6t d 6d	 d 6ƒ | j	 i | j
 ƒ  d 6t d 6d	 d 6ƒ | j	 i | j ƒ  d 6t d 6| j ƒ  d 6| d 6ƒ | j	 i | j ƒ  d 6t d 6d	 d 6ƒ | j	 i | j ƒ  d 6t d 6d	 d 6ƒ | j	 i | j ƒ  d 6t d 6| d 6ƒ | j	 i | j ƒ  d 6t d 6| d 6ƒ |  j j rs| j	 i | j ƒ  d 6t d 6ƒ n  g  } | j ƒ  }	 | j	 i d |	 j d d 6t | j ƒ  ƒ d |	 j ƒ  d 6ƒ | j	 i d |	 j d d 6t | j ƒ  ƒ d |	 j ƒ  d 6ƒ | j	 i d |	 j d d 6t | j ƒ  ƒ d |	 j ƒ  d 6ƒ | j	 i d |	 j d d 6t | j  ƒ  ƒ d |	 j! ƒ  d 6ƒ | j	 i d |	 j" d d 6t | j# ƒ  ƒ d |	 j$ ƒ  d 6ƒ | j	 i d |	 j% d d 6t | j& ƒ  ƒ d |	 j' ƒ  d 6ƒ | j	 i d |	 j( d d 6t | j) ƒ  ƒ d |	 j* ƒ  d 6ƒ | j	 i d |	 j+ d d 6t | j, ƒ  ƒ d |	 j- ƒ  d 6ƒ i | d 6| d 6}
 |
 S(    NR   s    - Realtime data errorR
  R  R&  R  R  R  R  i ¸L
s   #ffc2b3i \&i   s   #ffff66i   i   i
   i   R'  s   CH1 Voltage (R?   R’   R(  s   CH2 Voltage (s   CH1 Current (s   CH2 Current (s   CH1 Pulse frequency (s   CH2 Pulse frequency (s   CH1 Pulse total (s   CH2 Pulse total (i ¸L
(.   R   R&   Rp   R)  R  R  R*  R+  R,  R  R-  R.  RN   R  R/  R0  R1  RC   R  R2  RI   R|   Rw   t   get_ch1_voltageR{   R~   t   get_ch2_voltageR}   R–   t   get_ch1_currentR•   R˜   t   get_ch2_currentR—   R€   RŸ   R   R„   R¢   Rƒ   R‚   R    R   R†   R£   R…   (   R¾   R/   R9  R$  R  R:  R;  R=  R  RÆ   R#  (    (    s;   var/www/html/leakless-monitor/Applications/Measure/views.pyR  T  sX    ,
						((5(((($@@@@@@@@

c         C   s  y t  j j d | ƒ } WnH t k
 rc i i | j ƒ  d d 6t d 6d d 6g d 6g  d 6} | SXg  } d } | j ƒ  d	 k r‹ d
 } n | j ƒ  d k r¦ d } n  d } | j ƒ  d k  rÇ d
 } n | j ƒ  d k  râ d } n  d } | j ƒ  d k  rd
 } n | j ƒ  d k  rd } n  | j	 i | j ƒ  d 6t d 6d d 6ƒ | j	 i | j
 ƒ  d 6t d 6d d 6ƒ | j	 i | j ƒ  d 6t d 6| j ƒ  d 6| d 6ƒ | j	 i | j ƒ  d 6t d 6d d 6ƒ | j	 i | j ƒ  d 6t d 6d d 6ƒ | j	 i | j ƒ  d 6t d 6| d 6ƒ | j	 i | j ƒ  d 6t d 6| d 6ƒ |  j j rs| j	 i | j ƒ  d 6t d 6ƒ n  g  } | j ƒ  }	 | j	 i d |	 j d d 6t | j ƒ  ƒ d |	 j ƒ  d 6ƒ | j	 i d |	 j d d 6t | j ƒ  ƒ d |	 j ƒ  d 6ƒ | j	 i d |	 j d d 6t | j ƒ  ƒ d |	 j ƒ  d 6ƒ | j	 i d |	 j d d 6t | j  ƒ  ƒ d |	 j! ƒ  d 6ƒ | j	 i d |	 j" d d 6t | j# ƒ  ƒ d |	 j$ ƒ  d 6ƒ | j	 i d |	 j% d d 6t | j& ƒ  ƒ d |	 j' ƒ  d 6ƒ i | d 6| d 6}
 |
 S(   NR   s    - Realtime data errorR
  R  R  R  R  R  i ¸L
s   #ffc2b3i \&i   s   #ffff66i   i   i
   i   R'  s   Analog current (R?   R’   R(  s   Analog voltage (s   Flow (s   Total flow 1 (s   Total flow 2 (s   Total flow 3 (i ¸L
((   R   R&   Rp   R)  R  R  R*  R+  R,  R  R-  R.  RN   R  R/  R0  R1  RC   R  R2  RI   R¬   Rw   R·   R«   R®   R¸   R­   R°   R¹   R¯   R²   Rº   R±   R´   R»   R³   R¶   R¼   Rµ   (   R¾   R/   R9  R$  R  R:  R;  R=  R  RÆ   R#  (    (    s;   var/www/html/leakless-monitor/Applications/Measure/views.pyR  Œ  sT    ,
						((5(((($@@@@@@

c         C   s  y t  j j d | ƒ } WnH t k
 rc i i | j ƒ  d d 6t d 6d d 6g d 6g  d 6} | SXg  } d	 } | j ƒ  d
 k r‹ d } n | j ƒ  d k r¦ d } n  d	 } | j ƒ  d k  rÇ d } n | j ƒ  d k  râ d } n  d	 } | j ƒ  d k  rd } n | j ƒ  d k  rd } n  | j	 i | j ƒ  d 6t d 6d	 d 6ƒ | j	 i | j
 ƒ  d 6t d 6d	 d 6ƒ | j	 i | j ƒ  d 6t d 6| j ƒ  d 6| d 6ƒ | j	 i | j ƒ  d 6t d 6d	 d 6ƒ | j	 i | j ƒ  d 6t d 6d	 d 6ƒ | j	 i | j ƒ  d 6t d 6| d 6ƒ | j	 i | j ƒ  d 6t d 6| d 6ƒ |  j j rs| j	 i | j ƒ  d 6t d 6ƒ n  g  } | j ƒ  }	 | j	 i d |	 j d d 6t | j ƒ  ƒ d |	 j ƒ  d 6ƒ | j	 i d |	 j d d 6t | j ƒ  ƒ d |	 j ƒ  d 6ƒ | j	 i d |	 j d d 6t | j ƒ  ƒ d |	 j ƒ  d 6ƒ | j	 i d |	 j d d 6t | j  ƒ  ƒ d |	 j! ƒ  d 6ƒ i | d 6| d 6}
 |
 S(   NR   s    - Realtime data errorR
  R  R&  R  R  R  R  i ¸L
s   #ffc2b3i \&i   s   #ffff66i   i   i
   i   R'  s   Flow 1 (R?   R’   R(  s   Flow 2 (s   Total flow 1 (s   Total flow 2 (i ¸L
("   R   R&   Rp   R)  R  R  R*  R+  R,  R  R-  R.  RN   R  R/  R0  R1  RC   R  R2  RI   t
   flow1labelRw   t
   get_flow_1t   get_flow_1_unitt
   flow2labelt
   get_flow_2t   get_flow_2_unitR²   t   get_total_flow_1R±   R´   t   get_total_flow_2R³   (   R¾   R/   R9  R$  R  R:  R;  R=  R  RÆ   R#  (    (    s;   var/www/html/leakless-monitor/Applications/Measure/views.pyR  Â  sP    ,
						((5(((($@@@@

c   	      C   s¥  y t  j j d | ƒ } WnH t k
 rc i i | j ƒ  d d 6t d 6d d 6g d 6g  d 6} | SXg  } d	 } | j ƒ  d
 k r‹ d } n | j ƒ  d k r¦ d } n  | j i | j ƒ  d 6t d 6d	 d 6ƒ | j i | j ƒ  d 6t d 6d	 d 6ƒ | j i | j	 ƒ  d 6t
 d 6| j ƒ  d 6| d 6ƒ | j i | j ƒ  d 6t d 6d	 d 6ƒ | j i | j ƒ  d 6t d 6d	 d 6ƒ | j i | j ƒ  d 6t d 6d	 d 6ƒ | j i | j ƒ  d 6t d 6d	 d 6ƒ |  j j rû| j i | j ƒ  d 6t d 6ƒ n  g  } | j ƒ  } | j i d | j d d 6t | j ƒ  ƒ d | j ƒ  d 6ƒ | j i d | j d d 6t | j ƒ  ƒ d | j ƒ  d 6ƒ | j i d | j d d 6t | j ƒ  ƒ d | j ƒ  d 6ƒ | j i d | j d d 6t | j ƒ  ƒ d | j ƒ  d 6ƒ | j i d | j  d d 6t | j! ƒ  ƒ d | j" ƒ  d 6ƒ | j i d | j# d d 6t | j$ ƒ  ƒ d | j% ƒ  d 6ƒ | j i d | j& d d 6t | j' ƒ  ƒ d | j( ƒ  d 6ƒ | j i d | j) d d 6t | j* ƒ  ƒ d | j+ ƒ  d 6ƒ | j i d | j, d d 6t | j- ƒ  ƒ d | j. ƒ  d 6ƒ | j i d | j/ d d 6t | j0 ƒ  ƒ d | j1 ƒ  d 6ƒ i | d 6| d 6} | S(   NR   s    - Realtime data errorR
  R  R&  R  R  R  R  i ¸L
s   #ffc2b3i \&i   s   #ffff66R'  s   Measurement 1 (R?   R’   R(  s   Measurement 2 (s   Measurement 3 (s   Measurement 4 (s   Measurement 5 (s   Measurement 6 (s   Measurement 7 (s   Measurement 8 (s   Measurement 9 (s   Measurement 10 (i ¸L
(2   R   R&   Rp   R)  R  R  R*  R  R-  R.  RN   R  R/  R0  R1  RC   R  R2  RI   t   measurement1labelRw   t   get_measurement_1t   get_measurement_1_unitt   measurement2labelt   get_measurement_2t   get_measurement_2_unitt   measurement3labelt   get_measurement_3t   get_measurement_3_unitt   measurement4labelt   get_measurement_4t   get_measurement_4_unitt   measurement5labelt   get_measurement_5t   get_measurement_5_unitt   measurement6labelt   get_measurement_6t   get_measurement_6_unitt   measurement7labelt   get_measurement_7t   get_measurement_7_unitt   measurement8labelt   get_measurement_8t   get_measurement_8_unitt   measurement9labelt   get_measurement_9t   get_measurement_9_unitt   measurement10labelt   get_measurement_10t   get_measurement_10_unit(	   R¾   R/   R9  R$  R  R:  R  RÆ   R#  (    (    s;   var/www/html/leakless-monitor/Applications/Measure/views.pyR  ö  sH    ,
		((5(((($@@@@@@@@@@

c         C   sÃ  t  |  ƒ } |  j d k rñ|  j d } t | ƒ } | j ƒ  } | j d k r” t | |  j d | ƒ} | j ƒ  r‡ | j ƒ  t	 d ƒ St	 d ƒ Sq¿| j d k rè t
 | |  j d | ƒ} | j ƒ  rÛ | j ƒ  t	 d ƒ St	 d ƒ Sq¿| j d k r<t | |  j d | ƒ} | j ƒ  r/| j ƒ  t	 d ƒ St	 d ƒ Sq¿| j d	 k rt | |  j d | ƒ} | j ƒ  rƒ| j ƒ  t	 d ƒ St	 d ƒ Sq¿| j d
 k rät | |  j d | ƒ} | j ƒ  r×| j ƒ  t	 d ƒ St	 d ƒ Sq¿t	 d ƒ SnÎ|  j j d ƒ } t | ƒ } | j ƒ  } | j d k rmt d | d | ƒ } t d i | d 6| d 6| d 6d t |  ƒ ƒS| j d k r¿t
 d | d | ƒ } t d i | d 6| d 6| d 6d t |  ƒ ƒS| j d k rt d | d | ƒ } t d i | d 6| d 6| d 6d t |  ƒ ƒS| j d	 k rct d | d | ƒ } t d i | d 6| d 6| d 6d t |  ƒ ƒS| j d
 k rµt d | d | ƒ } t d i | d 6| d 6| d 6d t |  ƒ ƒSt	 d ƒ Sd  S(   NRF   R   s   PDL-AGt   instancet   Okt   Errors   PDL-HGR!   R"   R#   R*   R;   s0   unit_recalculation/unit_recalculation_pdlag.htmlt   formt   context_instances0   unit_recalculation/unit_recalculation_pdlhg.htmls2   unit_recalculation/unit_recalculation_mag8000.htmls1   unit_recalculation/unit_recalculation_sofrel.htmls.   unit_recalculation/unit_recalculation_csv.html(   R   t   methodRF   R   RI   R%   t   unit_recalculate_form_pdlagt   is_validR½   RH   t   unit_recalculate_form_pdlhgt   unit_recalculate_form_mag8000t   unit_recalculate_form_sofrelt   unit_recalculate_form_csvt   GETRp   Rö   t   RequestContext(   R¾   R;   R*   R/   RÆ   Rl  (    (    s;   var/www/html/leakless-monitor/Applications/Measure/views.pyt   measure_unit_recalculation_form#  s–    














c         C   sê  |  j  d k rà|  j j d ƒ } t | ƒ d k rA | d  d n | } |  j j d ƒ } t | ƒ d k ry | d  d n | } |  j j d d ƒ } t | ƒ d k r´ | d  d n | } |  j j d d ƒ } t | ƒ d k rï | d  d n | } d  }	 x6 |  j D]+ }
 |  j |
 } | j d	 k  r| }	 qqWt d | d | d | d
 | d |	 ƒ } | d k rƒt | ƒ sÝ| j	 ƒ  qÝqà| d k r«t
 | ƒ sÝ| j	 ƒ  qÝqà| d k rÓt | ƒ sÝ| j	 ƒ  qÝqà| j	 ƒ  n  t d ƒ S(   NRF   t   senderiŒ   s   ..t	   recipientt   subjectt    s
   body-plaini@B t
   body_plaint
   attachments   mag8000@mg.smtech.hrs   sofrel@mg.smtech.hrs   csv@mg.smtech.hrt   OK(   Rn  RF   Rp   Rf   t   Nonet   FILESt   sizeR   t   measure_parse_mag8000_mailR½   t   measure_parse_sofrel_mailt   measure_parse_csv_mailRH   (   R¾   Rx  t   sender_saveRy  t   recipient_saveRz  t   subject_saveR|  t   body_plain_saveR}  t   keyt   filet   new_mail(    (    s;   var/www/html/leakless-monitor/Applications/Measure/views.pyt   measure_accept_mail‘  s4    &&&&'c         C   sø  |  j  d  k r t S|  j  j } | j d ƒ rð| | j d ƒ d | j d ƒ !} y, t j j	 d | ƒ } | j
 d k r| t SWn t k
 r‘ t SXt j |  j  j d d d d# ƒ} d  } xç | D]ß } | } | d	 } t | ƒ d k rñ | } n | d  d | d } t d | d | d
 d | d d | d d | d d | d d | d d | d d | d d | ƒ 
}	 |	 j ƒ  t d | d  | d d | ƒ }
 |
 j ƒ  qÀ W| d  k	 rô| d	 } t | ƒ d k rÔ| } n | d  d | d } yì t j j	 d | ƒ } | | _ | d
 | _ | d | _ | d | _ | d | _ | d | _ | d | _ | d | _ | d | _ | j ƒ  d! | d d" | _ | j ƒ  t j j	 d | ƒ } | d | _ | d | _ | j ƒ  Wqít k
 réqíXqôn t St  S($   Nt   MAG8000_RA   i   t   idR!   t	   delimitert   ;t
   fieldnamest	   Timestampt	   FlowValuet   FlowUnitt
   TotalFlow1t
   TotalFlow2t
   TotalFlow3t	   TotalUnitt   AnalogCurrentt   AnalogVoltaget   Batteryi   i   t   :R   t
   flow_valuet	   flow_unitt   total_flow1t   total_flow2t   total_flow3t
   total_unitt   analog_currentt   analog_voltageR   t   batterys   BAT: t   %(
   s	   Timestamps	   FlowValues   FlowUnits
   TotalFlow1s
   TotalFlow2s
   TotalFlow3s	   TotalUnits   AnalogCurrents   AnalogVoltages   Battery(!   R}  R  R  R’   R  t   findt   rfindR   R&   Rp   R%   R)  t   csvt
   DictReaderRŠ  Rf   R   R½   R   R   R   R  Rž  RŸ  R   R¡  R¢  R£  R¤  t   rem_infoR   t   total_flow_unitRN   (   t   mailt   attachment_nameRŽ  R/   t   readert   last_rowRl   t   timestamp_dataR   t   new_measuret
   new_statust   device_realtimet   device_parameters(    (    s;   var/www/html/leakless-monitor/Applications/Measure/views.pyR‚  ¹  sz    #!
	







	

	
		


c         C   sS  |  j  d  k r t S|  j j d ƒ rK|  j |  j j d ƒ d |  j j d ƒ !j ƒ  } y, t j	 j
 d | ƒ } | j d k r‚ t SWn t k
 r— t SX| j ƒ  } t d |  j  j ƒ } d  } d  } | d } i  } x\| j d	 d
 d d ƒ D]B}	 |	 d j }
 |
 d  k rqî n  |
 | k rHi d d 6d d 6d d 6d d 6| |
 <n  t |	 d
 j ƒ j d d ƒ } | d k ryqî n  t | ƒ | j k r¦|	 d j | |
 d <qî t | ƒ | j k rÓ|	 d j | |
 d <qî t | ƒ | j k r |	 d j | |
 d <qî t | ƒ | j k rî |	 d j | |
 d <qî qî qî Wt t | j ƒ  d d „  ƒƒ } xm | j ƒ  D]_ \ } } | } | } t d | d | d d | d d | d d | d d | ƒ } | j ƒ  qbW| d  k	 rOy` t j	 j
 d | ƒ } | | _  | d | _! | d | _" | d | _# | d | _$ | j ƒ  WqHt k
 rDqHXqOn t St% S(   Ns   Report - Scada : Rœ  i   s   Dnevni podaciRŽ  R"   t   filenamet   DATAt   min_rowi   t   max_rowiˆ  i    t   flow_1t   flow_2t   total_flow_1t   total_flow_2t   asciit   ignoreR  R‰  c         S   s   |  d S(   Ni    (    (   t   t(    (    s;   var/www/html/leakless-monitor/Applications/Measure/views.pyt   <lambda><  s    R   R   (&   R}  R  R  Rz  R  R§  R¨  t   stripR   R&   Rp   R%   R)  RI   R    RŠ  t	   iter_rowsR
  t   unicodet   encodeRw   R²   R´   RC  RF  R   t   sortedt   itemst	   iteritemsR   R½   R   R   Rº  R»  R¼  R½  RN   (   R­  RŽ  R/   RÆ   R¯  t	   last_datat   last_timestampt   wst	   data_dictRl   R   R$  t   orderedR‰  R
  R²  R´  (    (    s;   var/www/html/leakless-monitor/Applications/Measure/views.pyRƒ  	  sz    2

!



		
c         C   s  |  j  d  k r t S|  j d k rt j j d d ƒ } d  } x/ | D]' } | j ƒ  j |  j	 k rD | } qD qD W| d  k r t St
 j |  j  j d d d d% ƒ} d  } d  } d d d g } x”| D]Œ} | d  k rà | } qÂ n  | } | d d | d }	 x< | D]4 }
 y t j |	 |
 ƒ } PWqt k
 r6qqXqWt d | d | d	 d  k r]d  n t | d	 j d d ƒ ƒ d | d
 d  k rd  n t | d
 j d d ƒ ƒ d | d d  k rÁd  n t | d j d d ƒ ƒ d | d d  k ród  n t | d j d d ƒ ƒ d | d d  k r%d  n t | d j d d ƒ ƒ d | d d  k rWd  n t | d j d d ƒ ƒ d  | d d  k r‰d  n t | d j d d ƒ ƒ d! | d d  k r»d  n t | d j d d ƒ ƒ d" | d d  k ríd  n t | d j d d ƒ ƒ d# | d d  k rd  n t | d j d d ƒ ƒ d$ | ƒ } | j ƒ  qÂ W| d  k	 r| d d | d }	 x< | D]4 }
 y t j |	 |
 ƒ } PWq{t k
 r®q{q{Xq{Wy>t j j d$ | ƒ } | | _ | d	 d  k rêd  n t | d	 j d d ƒ ƒ | _ | d
 d  k rd  n t | d
 j d d ƒ ƒ | _ | d d  k rTd  n t | d j d d ƒ ƒ | _ | d d  k r‰d  n t | d j d d ƒ ƒ | _ | d d  k r¾d  n t | d j d d ƒ ƒ | _ | d d  k ród  n t | d j d d ƒ ƒ | _ | d d  k r(d  n t | d j d d ƒ ƒ | _ | d d  k r]d  n t | d j d d ƒ ƒ | _ | d d  k r’d  n t | d j d d ƒ ƒ | _ | d d  k rÇd  n t | d j d d ƒ ƒ | _  | j ƒ  Wqt! k
 rqXqn t St" S(&   Ns   csv@mg.smtech.hrR%   R#   R  R  R‘  t   DateR@   t   Measurement1t   Measurement2t   Measurement3t   Measurement4t   Measurement5t   Measurement6t   Measurement7t   Measurement8t   Measurement9t   Measurement10s   %d.%m.%Y. %H:%M:%Ss   %d/%m/%y %H:%M:%Ss   %d.%m.%y %H:%M:%SR(  R   t   measurement_1t   ,Rú   t   measurement_2t   measurement_3t   measurement_4t   measurement_5t   measurement_6t   measurement_7t   measurement_8t   measurement_9t   measurement_10R   (   s   Dates   Times   Measurement1s   Measurement2s   Measurement3s   Measurement4s   Measurement5s   Measurement6s   Measurement7s   Measurement8s   Measurement9s   Measurement10(#   R}  R  R  Ry  R   R&   R'   RI   t   deviceparsenameRz  R©  Rª  RŠ  R   RG   t
   ValueErrorR   Rj   t   replaceR½   R   Rp   R   RÙ  RÛ  RÜ  RÝ  RÞ  Rß  Rà  Rá  Râ  Rã  R)  RN   (   R­  R  R/   t   devR¯  R°  t	   first_rowt   timestamp_format_dataRl   R±  t   ft   date_time_objR²  R´  (    (    s;   var/www/html/leakless-monitor/Applications/Measure/views.pyR„  \  s‚    !2222222222		5555555555
(:   RK   t   openpyxlR    R   R   R   R   Rh   R5   R©  t	   itertoolsR   t   collectionsR   t   LeakLessMonitor.baset   Applications.Measure.modelsR   R	   R
   R   R   R   R   R   R   R   R   R   R   R   t   Applications.Devices.modelsR   R   t   Applications.Users.viewsR   R   t   Applications.Devices.viewsR   t"   Applications.Measure.support_unitst   Applications.Measure.formst   Applications.Base.viewsR   R1   R4   Rñ   Rù   Rõ   R  R  R  R  R  Rw  t   csrf_exemptRŒ  R‚  Rƒ  R„  (    (    (    s;   var/www/html/leakless-monitor/Applications/Measure/views.pyt   <module>   s<   "
^

	8		ÿ f		G	8	8	6	4	-	n(	P	S