ó
0;Xc           @   sº   d  d l  Z  d  d l m Z d  d l m Z d  d l m Z m Z d  d l m Z d  d l	 m
 Z
 d  d l m Z m Z d  d l m Z d  d	 l Td
 „  Z d „  Z d „  Z d „  Z d S(   iÿÿÿÿN(   t   datetime(   t   HttpResponse(   t   render_to_responset   redirect(   t   reverse(   t   ObjectDoesNotExist(   t   LldevicePdlagMeasuret   LldevicePdlagRealtime(   t   user_get_language(   t   *c         C   sl  |  j  j ƒ  r^|  j d } |  j d } |  j d } t j | d ƒ } |  j d } t j | d ƒ } t j j d | d | d | ƒ j d	 ƒ } t	 j
 ƒ  } | j d
 ƒ }	 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  ƒ  } t | _! | | _" | | _# |
 | _$ | | _ |  j% j& d d ƒ d k rê|	 j' d d d d d | d | d | d | | ƒ n8 |	 j' d d d d d | d | d | d | | ƒ t |	 j( d ƒ _) d7 |	 j( d ƒ _* t	 j ƒ  } t	 j j | _ t	 j j d | _ t	 j ƒ  } t	 j  ƒ  } t | _! | | _" | | _# |
 | _$ | | _ t |	 j( d ƒ _) d8 |	 j( d ƒ _* |	 j+ d d d | ƒ |	 j, d ƒ } d9 | _- |  j% j& d d ƒ d k r|	 j+ d d d t. | ƒ d  | ƒ |	 j+ d d! d" t/ | ƒ d# | ƒ |	 j+ d d d$ t0 | ƒ d  | ƒ |	 j+ d d d% t. | ƒ d  | ƒ |	 j+ d d& d' t/ | ƒ d# | ƒ |	 j+ d d d( t0 | ƒ d  | ƒ nØ |	 j+ d d d) t. | ƒ d  | ƒ |	 j+ d d! d* t/ | ƒ d# | ƒ |	 j+ d d d+ t0 | ƒ d  | ƒ |	 j+ d d d, t. | ƒ d  | ƒ |	 j+ d d& d- t/ | ƒ d# | ƒ |	 j+ d d d. t0 | ƒ d  | ƒ t	 j ƒ  } t	 j j | _ t	 j j | _ t	 j j | _ t	 j j | _ t	 j ƒ  } | | _" d! } xÐ | D]È } |	 j+ | d | j1 j2 d ƒ | ƒ |	 j+ | d | j3 | ƒ |	 j+ | d! | j4 | ƒ |	 j+ | d | j5 | ƒ |	 j+ | d | j6 | ƒ |	 j+ | d& | j7 | ƒ |	 j+ | d | j8 | ƒ | d 7} qCWt j9 ƒ  j2 d/ ƒ d0 | d1 } t: d2 d3 ƒ } d4 | | d5 <| j; | ƒ | St: d6 ƒ Sd  S(:   Nt	   device_idt   device_identifiert   startDateInputs   %Y-%m-%d %H:%M:%St   endDateInputt   timestamp__gtet   timestamp__ltet   lldevicelistt	   timestampt   Sheet1t   yellowt   langs   en-gbt   hri    i   s   Uredaj: s    [s   ]
Vrijeme od: s    do s   Device: s   ]
Time from: s    to i   i   t
   light_bluei   i   t   Vrijemei   s
   CH1 Tlak [t   ]i   s   CH1 Protok [s   /s]s   CH1 Ukupni protok [s
   CH2 Tlak [i   s   CH2 Protok [s   CH2 Ukupni protok [s   CH1 Pressure [s
   CH1 Flow [s   CH1 Total Flow [s   CH2 Pressure [s
   CH2 Flow [s   CH2 Total Flow [s   %Y-%m-%d_%H-%M-%St   _s   .xlst   content_types   application/vnd.ms-excels   attachment; filename=%ss   Content-Dispositions   Invalid useri   i   i   (<   t   usert   is_authenticatedt   POSTR    t   strptimeR   t   objectst   filtert   order_byt   xlwtt   Workbookt	   add_sheett	   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   XFStylet   Fontt   boldt   borderst   fontt	   alignmentt   sessiont   gett   write_merget   rowt   height_mismatcht   heightt   writet   colt   widtht#   measure_return_pressure_unit_stringt   measure_return_flow_unit_stringt%   measure_return_total_flow_unit_stringR   t   strftimet   ch1_pressuret   ch1_flowt   ch1_total_flowt   ch2_pressuret   ch2_flowt   ch2_total_flowt   nowR   t   save(   t   requestR
   R   t   excel_start_date_strt   excel_start_datet   excel_end_date_strt   excel_end_datet   measurementst   workbookt   sheett   alignR;   t   color0t   style0R<   t   colort   style2t   columnt   style1t   xls_row_countert   measuret   download_namet   response(    (    s<   /var/www/html/leakless-monitor/Applications/Measure/views.pyt   measure_generate_excel   s°    						;8						$$$$$'$$$$$$	"!c         C   sš   |  j  j ƒ  r† g  } |  j  j ƒ  } x( | D]  } | j | j d ƒ d ƒ q+ Wt | ƒ } t d i |  j  d 6| d 6t |  ƒ d 6ƒ St t	 d ƒ ƒ Sd  S(   Nt   .i   s   deviceInfoTable.htmlt   user_objectt   device_realtime_infoR   t
   login_page(
   R   R   t   get_all_permissionst   appendt   splitt"   get_device_realtime_info_data_fastR   R   R   R   (   RS   t	   permfieldt   permissionst   permRi   (    (    s<   /var/www/html/leakless-monitor/Applications/Measure/views.pyt!   measure_show_device_realtime_info‚   s    +c            sð  g  } t  j j d |  ƒ } t j j d |  ƒ } x¹| D]±‰  t ‡  f d †  | Dƒ d  ƒ j } | d  k rt d } n  i ˆ  j d 6| d 6ˆ  j d 6} t	 ˆ  j ƒ } t
 ˆ  j ƒ } t ˆ  j ƒ } t ˆ  j ƒ }	 t ˆ  j ƒ }
 t ˆ  j ƒ } ˆ  j d  k	 reˆ  j | d <t j ƒ  ˆ  j } t | j d ƒ \ } } t | d	 ƒ \ } } d
 | | | f | d <n d | d <d | d <ˆ  j d  k	 rªt ˆ  j | ƒ d | | d <n
 d | d <ˆ  j d  k	 råt ˆ  j | ƒ d | | d <n
 d | d <ˆ  j d  k	 r t ˆ  j |	 ƒ d | | d <n
 d | d <ˆ  j d  k	 r[t ˆ  j |	 ƒ d | | d <n
 d | d <ˆ  j d  k	 r–t ˆ  j | ƒ d |
 | d <n
 d | d <ˆ  j d  k	 rÑt ˆ  j | ƒ d |
 | d <n
 d | d <| j | ƒ q7 W| S(   Nt   id__int   lldevicelist__inc         3   s'   |  ] } | j  ˆ  j k r | Vq d  S(   N(   t   idt   lldevicelist_id(   t   .0t   x(   Rc   (    s<   /var/www/html/leakless-monitor/Applications/Measure/views.pys	   <genexpr>•   s    t   Unknownt   IDt
   Identifiert	   Timestampi  i<   s   %02d:%02d:%02dt   ElapsedTimet    t    t   PressureCH1t   PressureCH2t   FlowCH1t   FlowCH2t   TotalFlowCH1t   TotalFlowCH2(   t   LldevicelistR   R    R   t   nextt   Nonet   rem_identifierRv   R   t/   measure_return_recalculate_pressure_unit_stringt   measure_return_pressure_factort+   measure_return_recalculate_flow_unit_stringt   measure_return_flow_factort1   measure_return_recalculate_total_flow_unit_stringt    measure_return_total_flow_factorR    RQ   t   divmodt   secondsRK   t   strRN   RL   RO   RM   RP   Rl   (   t   device_id_listt   devices_infot   device_listt   device_realtime_measuret
   identifiert   device_dictt   pressure_unitt   pressure_factort	   flow_unitt   flow_factort   total_flow_unitt   total_flow_factort   time_differencet   hourst	   remaindert   minutesR‘   (    (   Rc   s<   /var/www/html/leakless-monitor/Applications/Measure/views.pyt   get_device_realtime_info_dataŽ   sZ    "	


"
"
"
"
"
"
c         C   s#  g  } t  j j d |  ƒ } t j j d |  ƒ } t j j d |  ƒ } x×| D]Ï} | j } y( | j d | ƒ } | j d | ƒ } Wn t k
 r™ qL n X| j }	 t	 t
 | j ƒ |	 ƒ }
 | j } t t | j ƒ d | ƒ } | j } t t | j ƒ | ƒ } i | j d 6| d 6| j d 6} | j d  k	 r˜| j | d <t j ƒ  | j } t | j d ƒ \ } } t | d	 ƒ \ } } d
 | | | f | d <n d | d <d | d <| j d  k	 rÝt | j |
 ƒ d |	 | d <n
 d | d <| j d  k	 rt | j |
 ƒ d |	 | d <n
 d | d <| j d  k	 rSt | j | ƒ d | | d <n
 d | d <| j d  k	 rŽt | j | ƒ d | | d <n
 d | d <| j d  k	 rÉt | j | ƒ d | | d <n
 d | d <| j d  k	 rt | j | ƒ d | | d <n
 d | d <| j  | ƒ qL W| S(   NRs   Rt   R   s   /sRz   R{   R|   i  i<   s   %02d:%02d:%02dR}   R~   R   R€   R   R‚   Rƒ   R„   R…   (!   R†   R   R    R   t   LldevicePdlagParametersR‰   R?   R   t   loc_pressurerecalculateunitt    measure_return_pressure_factor_st%   measure_return_pressure_unit_string_st   pmut   loc_flowrecalculateunitt   measure_return_flow_factor_st'   measure_return_total_flow_unit_string_st   fmut   loc_totalflowrecalculateunitt"   measure_return_total_flow_factor_sRv   R   Rˆ   R    RQ   R   R‘   RK   R’   RN   RL   RO   RM   RP   Rl   (   R“   R”   R•   t   device_realtime_listt   device_parameter_listt   deviceR—   t   measure_datat   parameter_datat   pressure_recalculate_unitRš   t   flow_recalculate_unitRœ   t   total_flow_recalculate_unitRž   R˜   RŸ   R    R¡   R¢   R‘   (    (    s<   /var/www/html/leakless-monitor/Applications/Measure/views.pyRn   Ò   sb    				


"
"
"
"
"
"
(   R"   R    t   django.httpR   t   django.shortcutsR   R   t   django.core.urlresolversR   t   django.core.exceptionsR   t   Applications.Measure.modelsR   R   t   Applications.Users.viewsR   t"   Applications.Measure.support_unitsRf   Rr   R£   Rn   (    (    (    s<   /var/www/html/leakless-monitor/Applications/Measure/views.pyt   <module>   s   
	r		D