ó
¦§¸]c           @   sS  d  d l  m  Z  d  d l  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
 m Z d  d l m Z d  d l m Z m Z m Z m Z d  d	 l m Z m Z m Z d  d
 l Td  d l m Z d  d l m Z m Z d „  Z d „  Z d „  Z d „  Z d „  Z  d „  Z! d „  Z" d „  Z# d „  Z$ d S(   iÿÿÿÿ(   t   datetime(   R    t   datet	   timedeltaN(   t   JsonResponse(   t   render(   t   render_to_string(   t   annotations_get_icon_list(   t   LldevicePdlagMeasuret   LldevicePdlagMeasureArchivet   Lldeviceannotationst   LldevicePdlagStatus(   t   LldevicePdlhgMeasuret   LldevicePdlhgMeasureArchivet   LldevicePdlhgStatus(   t   *(   t   user_get_device(   t   devices_return_identifiert   devices_return_by_idc   	      C   s†  |  j  j ƒ  rx|  j j d ƒ } t | ƒ } | d  k rC t d ƒ St ƒ  } t |  ƒ } i  } | j	 d k r| t
 |  ƒ } n„ | j	 d k rš t |  ƒ } nf | j	 d k r¸ t |  ƒ } nH | j	 d k rÖ t |  ƒ } n* | j	 d k rô t |  ƒ } n t
 |  ƒ } | | d <d	 | j } d
 | } t d i |  j  d 6| d 6| d 6| d 6| d 6| d 6t |  ƒ d 6ƒ | d <t | ƒ St d ƒ Sd  S(   Nt	   device_ids   Invalid devices   PDL-AGs   PDL-HGt   MAG8000t   SOFRELt   CSVt   datasetss   Identifikator: s   ID: s   maps/plot_measurement.htmlt   user_objectt   user_device_typet   title_string_topt   title_string_bottomt   annotation_icon_listt   langt   page_renders   Invalid user(   t   usert   is_authenticatedt   GETt   getR   t   Nonet   HttpResponseR   R   t   loc_typet   plot_generate_pdlagt   plot_generate_pdlhgt   plot_generate_mag8000t   plot_generate_sofrelt   plot_generate_csvt   rem_identifierR   t   user_get_languageR   (	   t   requestR   t   deviceR   R   t   dataR   R   R   (    (    s@   var/www/html/leakless-monitor/Applications/Measure/Plot/views.pyt   plot_generate   s>    
	


c         C   së  |  j  j d ƒ } t j |  j  j d ƒ d ƒ } t j |  j  j d ƒ d ƒ } |  j  j d ƒ } |  j  j d ƒ } |  j  j d ƒ } |  j  j d ƒ } t | ƒ } | j ƒ  }	 t | | | ƒ }
 t j j	 d	 | d
 | d | ƒ j
 d ƒ } g  } g  } g  } g  } g  } g  } g  } g  } x´ | D]¬ } | j } | | j | j | j | j g } d | j k rp| j | ƒ q!d | j k r| j | ƒ q!d | j k r®| j | ƒ q!d | j k r!| j | ƒ q!q!WxA|
 D]9} t | j ƒ j d d ƒ } | d k rD| j | t | j ƒ |	 j ƒ  t | j ƒ |	 j ƒ  g ƒ n  | d k r| j | t | j ƒ |	 j ƒ  t | j ƒ |	 j ƒ  g ƒ n  | d k rÚ| j | t | j ƒ |	 j ƒ  t | j ƒ |	 j ƒ  g ƒ n  | d k rØ| j | t | j  ƒ t | j! ƒ g ƒ qØqØWg  } | d k rÜi	 d d 6d d 6d |	 j" ƒ  d |	 j# ƒ  d d 6| d 6| d 6d d g d  6d |	 j" ƒ  d! |	 j$ d" d |	 j# ƒ  d! |	 j% d" g d# 6d  d  g d$ 6t' d% 6} | j | ƒ n  | d k ri	 d& d 6d' d 6d |	 j( ƒ  d |	 j) ƒ  d d 6| d 6| d 6d( d) g d  6d |	 j( ƒ  d! |	 j* d" d |	 j) ƒ  d! |	 j+ d" g d# 6d  d  g d$ 6t' d% 6} | j | ƒ n  | d k r^i	 d* d 6d+ d 6d |	 j, ƒ  d |	 j- ƒ  d d 6| d 6| d 6d, d- g d  6d |	 j, ƒ  d! |	 j. d" d |	 j- ƒ  d! |	 j/ d" g d# 6d  d  g d$ 6t0 d% 6} | j | ƒ n  | d k rçi	 d. d 6d/ d 6d0 d 6| d 6| d 6d1 d2 g d  6d3 |	 j1 d" d3 |	 j2 d" g d# 6d  d  g d$ 6t' d% 6} | j | ƒ n  | S(4   NR   t   startDateInputs   %Y-%m-%d %H:%M:%St   endDateInputt   analogt   pulse_frequencyt   pulse_totalt   digitalt   timestamp__gtet   timestamp__ltet   lldevicelistt	   timestampt   Analogt   Pulset   Totalt   Digitalt   -t   /t   1s   Analog inputst   names   Analogni ulazit   imet   [s   ] & [t   ]t   unitt   measure_datat   annotation_datas
   Analog CH1s
   Analog CH2t
   label_datas   ] (t   )t   label_data_extrat   equation_datat   show_total_panels   Pulse frequencys   Frekvencija impulsas   Pulse frequency CH1s   Pulse frequency CH2s   Pulse totals   Ukupni impulsis   Pulse total CH1s   Pulse total CH2s   Digital inputs   Digitalni ulazs   [0/1]s   Digital CH1s   Digital CH2s   [0/1] ((3   R    R!   R    t   strptimeR   t   get_device_infot   measure_get_measure_dataR	   t   objectst   filtert   order_byR9   t   channelt	   shorttextt   textt   icont   appendt   strt   replacet   plot_check_is_nonet   ch1_pressuret   get_ch1_voltage_factort   ch2_pressuret   get_ch2_voltage_factort   ch1_flowt   get_ch1_pulse_frequency_factort   ch2_flowt   get_ch2_pulse_frequency_factort   ch1_total_flowt   get_ch1_pulse_total_factort   ch2_total_flowt   get_ch2_pulse_total_factort   digital_ch1t   digital_ch2t   get_ch1_voltage_unitt   get_ch2_voltage_unitt   ch1voltagelabelt   ch2voltagelabelR"   t   Falset   get_ch1_pulse_frequency_unitt   get_ch2_pulse_frequency_unitt   ch1pulsefrequencylabelt   ch2pulsefrequencylabelt   get_ch1_pulse_total_unitt   get_ch2_pulse_total_unitt   ch1pulsetotallabelt   ch2pulsetotallabelt   Truet   ch1digitallabelt   ch2digitallabel(   R,   R   t   plot_start_datet   plot_end_datet   checkbox_analogt   checkbox_pulse_frequencyt   checkbox_pulse_totalt   checkbox_digitalR-   t   device_infot   measurement_listt   annotation_listt   analog_annotation_arrayt   pulse_annotation_arrayt   total_annotation_arrayt   digital_annotation_arrayt   analog_measure_arrayt   pulse_measure_arrayt   total_measure_arrayt   digital_measure_arrayt
   annotationt   timeRG   t   measureR   t   pressure_datat	   flow_datat   total_flow_datat   digital_data(    (    s@   var/www/html/leakless-monitor/Applications/Measure/Plot/views.pyR%   ;   sÈ    	!	 	 	 	#?
#?
#?
#
c         C   s·  |  j  j d ƒ } t j |  j  j d ƒ d ƒ } t j |  j  j d ƒ d ƒ } |  j  j d ƒ } |  j  j d ƒ } |  j  j d ƒ } |  j  j d ƒ } t | ƒ } | j ƒ  }	 t | | | ƒ }
 t j j	 d	 | d
 | d | ƒ j
 d ƒ } g  } g  } g  } g  } g  } g  } g  } g  } x´ | D]¬ } | j } | | j | j | j | j g } d | j k rp| j | ƒ q!d | j k r| j | ƒ q!d | j k r®| j | ƒ q!d | j k r!| j | ƒ q!q!Wx…|
 D]}} t | j ƒ j d d ƒ } | d k rp| j | t | j ƒ |	 j ƒ  t | j ƒ |	 j ƒ  t | j ƒ |	 j ƒ  t | j ƒ |	 j ƒ  g ƒ n  | d k r»| j | t | j ƒ |	 j ƒ  t | j ƒ |	 j ƒ  g ƒ n  | d k r| j | t | j  ƒ |	 j! ƒ  t | j" ƒ |	 j# ƒ  g ƒ n  | d k rØ| j | t | j$ ƒ t | j% ƒ t | j& ƒ t | j' ƒ g ƒ qØqØWg  } | d k r€i	 d d 6d d 6d |	 j( ƒ  d |	 j) ƒ  d |	 j* ƒ  d |	 j+ ƒ  d d 6| d 6| d 6d d d  d! g d" 6d |	 j( ƒ  d# |	 j, d$ d |	 j) ƒ  d# |	 j- d$ d |	 j* ƒ  d# |	 j. d$ d |	 j+ ƒ  d# |	 j/ d$ g d% 6d  d  d  d  g d& 6t1 d' 6} | j | ƒ n  | d k rAi	 d( d 6d) d 6d |	 j2 ƒ  d |	 j3 ƒ  d d 6| d 6| d 6d* d+ g d" 6d |	 j2 ƒ  d# |	 j4 d$ d |	 j3 ƒ  d# |	 j5 d$ g d% 6d  d  g d& 6t1 d' 6} | j | ƒ n  | d k ri	 d, d 6d- d 6d |	 j6 ƒ  d |	 j7 ƒ  d d 6| d 6| d 6d. d/ g d" 6d |	 j6 ƒ  d# |	 j8 d$ d |	 j7 ƒ  d# |	 j9 d$ g d% 6d  d  g d& 6t: d' 6} | j | ƒ n  | d k r³i	 d0 d 6d1 d 6d2 d 6| d 6| d 6d3 d4 d5 d6 g d" 6d7 |	 j; d$ d7 |	 j< d$ d7 |	 j= d$ d7 |	 j> d$ g d% 6d  d  d  d  g d& 6t1 d' 6} | j | ƒ n  | S(8   NR   R0   s   %Y-%m-%d %H:%M:%SR1   R2   R3   R4   R5   R6   R7   R8   R9   R:   R;   R<   R=   R>   R?   R@   s   Analog inputsRA   s   Analogni ulaziRB   RC   s   ] & [RD   RE   RF   RG   s   Analog voltage CH1s   Analog voltage CH2s   Analog current CH1s   Analog current CH2RH   s   ] (RI   RJ   RK   RL   s   Pulse frequencys   Frekvencija impulsas   Pulse frequency CH1s   Pulse frequency CH2s   Pulse totals   Ukupni impulsis   Pulse total CH1s   Pulse total CH2s   Digital inputs   Digitalni ulazs   [0/1]s	   Pulse CH1s	   Pulse CH2s   Digital CH1s   Digital CH2s   [0/1] ((?   R    R!   R    RM   R   RN   RO   R	   RP   RQ   RR   R9   RS   RT   RU   RV   RW   RX   RY   RZ   t
   analogvch1R\   t
   analogvch2R^   t
   analogcch1t   get_ch1_current_factort
   analogcch2t   get_ch2_current_factort	   pulsefch1R`   t	   pulsefch2Rb   t	   pulsetch1Rd   t	   pulsetch2Rf   t	   pulse_ch1t	   pulse_ch2Rg   Rh   Ri   Rj   t   get_ch1_current_unitt   get_ch2_current_unitRk   Rl   t   ch1currentlabelt   ch2currentlabelR"   Rm   Rn   Ro   Rp   Rq   Rr   Rs   Rt   Ru   Rv   t   ch1pulsedigitallabelt   ch2pulsedigitallabelRw   Rx   (   R,   R   Ry   Rz   R{   R|   R}   R~   R-   R   R€   R   R‚   t    pulse_frequency_annotation_arrayt   pulse_total_annotation_arrayR…   R†   t   pulse_frequency_measure_arrayt   pulse_total_measure_arrayR‰   RŠ   R‹   RG   RŒ   R   t   analog_datat   pulse_frequency_datat   pulse_total_dataR   (    (    s@   var/www/html/leakless-monitor/Applications/Measure/Plot/views.pyR&   ®   sÐ    	!	 	 	 	?w
#?
#?
?
c         C   sÝ  |  j  j d ƒ } t j |  j  j d ƒ d ƒ } t j |  j  j d ƒ d ƒ } |  j  j d ƒ } |  j  j d ƒ } |  j  j d ƒ } t | ƒ } | j ƒ  } t | | | ƒ }	 t j j	 d | d	 | d
 | ƒ j
 d ƒ }
 g  } g  } g  } g  } g  } g  } x• |
 D] } | j } | | j | j | j | j g } d | j k rR| j | ƒ qd | j k rq| j | ƒ qd | j k r| j | ƒ qqWxÒ |	 D]Ê } t | j ƒ j d d ƒ } | d k ró| j | t | j ƒ t | j ƒ g ƒ n  | d k r"| j | t | j ƒ d g ƒ n  | d k r›| j | t | j ƒ t | j ƒ t | j ƒ g ƒ q›q›Wt |	 ƒ d k rˆ|	 d } n  g  } | d k r[i	 d d 6d d 6d | j ƒ  d | j ƒ  d d 6| d 6| d 6d d g d 6d | j ƒ  d  | j d! d | j ƒ  d  | j d! g d" 6| j ƒ  | j  ƒ  g d# 6t! d$ 6} | j | ƒ n  | d k rèi	 d d 6d% d 6d | j" ƒ  d d 6| d 6| d 6d g d 6d | j" ƒ  d  | j# g d" 6d  g d# 6t! d$ 6} | j | ƒ n  | d k rÙi	 d& d 6d' d 6d | j% ƒ  d | j& ƒ  d | j' ƒ  d d 6| d 6| d 6d( d) d* g d 6d | j% ƒ  d  | j( d! d | j& ƒ  d  | j) d! d | j' ƒ  d  | j* d! g d" 6d  d  d  g d# 6t+ d$ 6} | j | ƒ n  | S(+   NR   R0   s   %Y-%m-%d %H:%M:%SR1   R2   t   flowt
   total_flowR6   R7   R8   R9   R:   t   Flows
   Total flowR>   R?   R@   g»ÕsÒûÆÑ?i    RA   t   AnalogniRB   RC   s   ] & [RD   RE   RF   RG   s   Analog currents   Analog voltageRH   s   ] (RI   RJ   RK   RL   t   Protoks
   Total Flows   Ukupni Protoks   Total flow CH1s   Total flow CH2s   Total flow CH3(,   R    R!   R    RM   R   RN   RO   R	   RP   RQ   RR   R9   RS   RT   RU   RV   RW   RX   RY   RZ   t   analog_currentt   analog_voltaget
   flow_valuet   total_flow1t   total_flow2t   total_flow3t   lent   get_analog_current_unitt   get_analog_voltage_unitt   analogcurrentlabelt   analogvoltagelabelt   get_analog_current_equationt   get_analog_voltage_equationRm   t   get_flow_unitt	   flowlabelR"   t   get_total_1_unitt   get_total_2_unitt   get_total_3_unitt   totalflow1labelt   totalflow2labelt   totalflow3labelRv   (   R,   R   Ry   Rz   R{   t   checkbox_flowt   checkbox_total_flowR-   R   R€   R   R‚   t   flow_annotation_arrayt   total_flow_annotation_arrayR†   t   flow_measure_arrayt   total_flow_measure_arrayRŠ   R‹   RG   RŒ   t   measurement_lineR   R§   RŽ   R   (    (    s@   var/www/html/leakless-monitor/Applications/Measure/Plot/views.pyR'   &  s¨    	!			##



1#
c         C   sœ  |  j  j d ƒ } t j |  j  j d ƒ d ƒ } t j |  j  j d ƒ d ƒ } |  j  j d ƒ } |  j  j d ƒ } t | ƒ } | j ƒ  } t | | | ƒ } t j j	 d | d | d	 | ƒ j
 d
 ƒ }	 g  }
 g  } g  } g  } xv |	 D]n } | j } | | j | j | j | j g } d | j k r4|
 j | ƒ qå d | j k rå | j | ƒ qå qå Wx— | D] } t | j ƒ j d d ƒ } | d k r¶| j | t | j ƒ t | j ƒ g ƒ n  | d k r^| j | t | j ƒ t | j ƒ g ƒ q^q^Wt | ƒ d k r| d } n  g  } | d k r×i	 d d 6d d 6d | j ƒ  d | j ƒ  d d 6| d 6|
 d 6d d g d 6d | j ƒ  d | j d d | j ƒ  d | j d g d 6d  d  g d  6t d! 6} | j | ƒ n  | d k r˜i	 d" d 6d# d 6d | j ƒ  d | j  ƒ  d d 6| d 6| d 6d$ d% g d 6d | j ƒ  d | j! d d | j  ƒ  d | j" d g d 6d  d  g d  6t# d! 6} | j | ƒ n  | S(&   NR   R0   s   %Y-%m-%d %H:%M:%SR1   Rª   R«   R6   R7   R8   R9   R¬   s
   Total flowR>   R?   R@   i    RA   R®   RB   RC   s   ] & [RD   RE   RF   RG   s   Flow CH1s   Flow CH2RH   s   ] (RI   RJ   RK   RL   s
   Total Flows   Ukupni Protoks   Total flow CH1s   Total flow CH2($   R    R!   R    RM   R   RN   RO   R	   RP   RQ   RR   R9   RS   RT   RU   RV   RW   RX   RY   RZ   t   flow_1t   flow_2t   total_flow_1t   total_flow_2Rµ   t   get_flow_1_unitt   get_flow_2_unitt
   flow1labelt
   flow2labelR"   Rm   R¾   R¿   RÁ   RÂ   Rv   (   R,   R   Ry   Rz   RÄ   RÅ   R-   R   R€   R   RÆ   RÇ   RÈ   RÉ   RŠ   R‹   RG   RŒ   RÊ   R   RŽ   R   (    (    s@   var/www/html/leakless-monitor/Applications/Measure/Plot/views.pyR(     st    	!	"	&#?
#?
c         C   s  |  j  j d ƒ } t j |  j  j d ƒ d ƒ } t j |  j  j d ƒ d ƒ } t | ƒ } | j ƒ  } t | | | ƒ } t j j	 d | d | d | ƒ j
 d ƒ } g  } g  }	 xE | D]= }
 |
 j } | |
 j |
 j |
 j |
 j g } | j | ƒ qµ Wx± | D]© } t | j ƒ j d	 d
 ƒ } |	 j | t | j ƒ t | j ƒ t | j ƒ t | j ƒ t | j ƒ t | j ƒ t | j ƒ t | j ƒ t | j ƒ t | j ƒ g ƒ qý Wt | ƒ d k rÉ| d } n  g  } i	 d d 6d d 6d | j ƒ  d | j  ƒ  d | j! ƒ  d | j" ƒ  d | j# ƒ  d | j$ ƒ  d | j% ƒ  d | j& ƒ  d | j' ƒ  d | j( ƒ  d d 6|	 d 6| d 6d d d d d d d d d d g
 d  6d | j ƒ  d! | j) d" d | j  ƒ  d! | j* d" d | j! ƒ  d! | j+ d" d | j" ƒ  d! | j, d" d | j# ƒ  d! | j- d" d | j$ ƒ  d! | j. d" d | j% ƒ  d! | j/ d" d | j& ƒ  d! | j0 d" d | j' ƒ  d! | j1 d" d | j( ƒ  d! | j2 d" g
 d# 6d  d  d  d  d  d  d  d  d  d  g
 d$ 6t4 d% 6} | j | ƒ | S(&   NR   R0   s   %Y-%m-%d %H:%M:%SR1   R6   R7   R8   R9   R>   R?   i    t   MeasurementsRA   t   MjerenjaRB   RC   s   ] & [RD   RE   RF   RG   s   Measurement 1s   Measurement 2s   Measurement 3s   Measurement 4s   Measurement 5s   Measurement 6s   Measurement 7s   Measurement 8s   Measurement 9s   Measurement 10RH   s   ] (RI   RJ   RK   RL   (5   R    R!   R    RM   R   RN   RO   R	   RP   RQ   RR   R9   RS   RT   RU   RV   RW   RX   RY   RZ   t   measurement_1t   measurement_2t   measurement_3t   measurement_4t   measurement_5t   measurement_6t   measurement_7t   measurement_8t   measurement_9t   measurement_10Rµ   t   get_measurement_1_unitt   get_measurement_2_unitt   get_measurement_3_unitt   get_measurement_4_unitt   get_measurement_5_unitt   get_measurement_6_unitt   get_measurement_7_unitt   get_measurement_8_unitt   get_measurement_9_unitt   get_measurement_10_unitt   measurement1labelt   measurement2labelt   measurement3labelt   measurement4labelt   measurement5labelt   measurement6labelt   measurement7labelt   measurement8labelt   measurement9labelt   measurement10labelR"   Rm   (   R,   R   Ry   Rz   R-   R   R€   R   t   annotation_arrayt   measure_arrayRŠ   R‹   RG   RŒ   RÊ   R   RF   (    (    s@   var/www/html/leakless-monitor/Applications/Measure/Plot/views.pyR)   à  sl    	!	“		#%
c         C   s·   |  j  j ƒ  r© |  j d k rœ |  j j d ƒ } t | ƒ } t |  ƒ } d | } d | } t d i |  j  d 6| d 6| d 6| d	 6| d 6t |  ƒ d
 6ƒ St	 d ƒ Sn
 t	 d ƒ Sd  S(   NR    R   s   Identifikator: s   ID: s   maps/plot_status.htmlR   R   R   R   R   s   /leakless-monitor(
   R   R   t   methodR    R!   R   R   t   render_to_responseR+   t   redirect(   R,   R   t   device_identifierR   R   R   (    (    s@   var/www/html/leakless-monitor/Applications/Measure/Plot/views.pyt   plot_get_status_page,  s    

c         C   s˜  |  j  j ƒ  r„i  } |  j d k rft j |  j ƒ } | d } t j | d d ƒ } t j | d d ƒ } t | ƒ } | j	 d k rt
 j j d | d | d	 | ƒ j d
 ƒ } g  } xE | D]= }	 t |	 j ƒ j d d ƒ }
 | j |
 |	 j |	 j g ƒ q¾ Wd | d <| | d <qz| j	 d k r´t j j d | d | d	 | ƒ j d
 ƒ } g  } xE | D]= }	 t |	 j ƒ j d d ƒ }
 | j |
 |	 j |	 j g ƒ q\Wd | d <| | d <qz| j	 d k rOt j j d | d | d	 | ƒ j d
 ƒ } g  } xB | D]: }	 t |	 j ƒ j d d ƒ }
 | j |
 d |	 j g ƒ qúWd | d <| | d <qzd | d <d  | d <n d | d <d  | d <t | ƒ St t d ƒ ƒ Sd  S(   Nt   POSTR   t
   start_times   %Y-%m-%d %H:%M:%St   end_times   PDL-AGR6   R7   R8   R9   R>   R?   t   OkRU   R.   s   PDL-HGR   i    s   Unsupported device types   Unsported methodt
   login_page(   R   R   Rõ   t   jsont   loadst   bodyR    RM   R   R$   R
   RP   RQ   RR   RX   R9   RY   RW   t   signalt   batteryR   t   LldeviceMAG8000StatusR"   R   R÷   t   reverse(   R,   t   responset   return_dataR   Rû   Rü   R-   t   status_listt
   data_arrayt   statusR‹   (    (    s@   var/www/html/leakless-monitor/Applications/Measure/Plot/views.pyt   plot_get_status_dataA  sd    
	
	
	




c         C   s   |  d  k r d }  n  |  S(   Ni    (   R"   (   t   value(    (    s@   var/www/html/leakless-monitor/Applications/Measure/Plot/views.pyRZ   ‰  s    	(%   R    R   R   Rÿ   t   copyt   astt   django.httpR   t   django.shortcutsR   t   django.template.loaderR   t+   Applications.Measure.Plot.Annotations.viewsR   t   Applications.Measure.modelsR   R   R	   R
   R   R   R   t   Applications.Measure.viewst   Applications.Users.viewsR   t   Applications.Devices.viewsR   R   R/   R%   R&   R'   R(   R)   Rù   R  RZ   (    (    (    s@   var/www/html/leakless-monitor/Applications/Measure/Plot/views.pyt   <module>   s(   $"
	(	s	x	j	P	L		H