
Wc           @   s!  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 Z d  d l Z d  d l m Z m Z m Z m Z m Z m Z m Z d  d l m Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d	   Z d
   Z d   Z d   Z  d   Z! d   Z" d   Z# d   Z$ d   Z% d   Z& d   Z' d   Z( d   Z) d   Z* d   Z+ d   Z, d   Z- d   Z. d   Z/ d   Z0 d   Z1 d   Z2 d   Z3 d    Z4 d!   Z5 d"   Z6 d#   Z7 d$   Z8 d%   Z9 d&   Z: d'   Z; d(   Z< d)   Z= d S(*   i(   t   render_to_responset   rendert   redirect(   t   HttpResponse(   t   JsonResponse(   t   render_to_string(   t	   detect_tsN(   t   LldevicePdlagMeasuret   LldevicePdlagAlarmt   LldevicePdlagParameterst   LldevicePdlagParameterinfot   UserActionst   Lldevicelistt   Lldeviceannotations(   t   getlanguagec         C   s/   |  j  j d  |  j d <t |  j j d   S(   Nt   langt   HTTP_REFERER(   t   GETt   gett   sessiont   HttpResponseRedirectt   META(   t   request(    (    sT   D:\SMTech Code\LeakLess Software\LeakLess Monitor\_THWeb2_17_7_2016\Measure\views.pyt   setlanguage   s    c         C   s   t  d i |  j d 6 S(   Ns   graphs.htmlt   user_object(   R    t   user(   R   (    (    sT   D:\SMTech Code\LeakLess Software\LeakLess Monitor\_THWeb2_17_7_2016\Measure\views.pyt   plot   s    c         C   s
  |  j  j d d  d k re|  j j   rXt j j d t j j |  j	 d d  d t j j |  j	 d d  d	 |  j	 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' d d d d d |  j	 d
 d |  j	 d d |  j	 d d |  j	 d |  t | j( d  _) d8 | j( d  _* t j   }	 t j j |	 _ t j j d |	 _  t j!   }
 t j"   } t | _# | |
 _$ | |
 _% | |
 _& |	 |
 _ t | j( d  _) d9 | j( d  _* | j+ d d d |
  | j, d  } d: | _- | j+ d d d t. |  j	 d
  d |
  | j+ d d d t/ |  j	 d
  d  |
  | j+ d d d! t/ |  j	 d
  d |
  | j+ d d d" t. |  j	 d
  d |
  | j+ d d# d$ t/ |  j	 d
  d  |
  | j+ d d d% t/ |  j	 d
  d |
  t j   } t j j | _ t j j | _ t j j | _ t j j | _ t j!   } | | _$ d } x | D] } | j+ | d | j0 j1 d  |  | j+ | d | j2 |  | j+ | d | j3 |  | j+ | d | j4 |  | j+ | d | j5 |  | j+ | d# | j6 |  | j+ | d | j7 |  | d 7} q3Wt j j8   j1 d&  d' |  j	 d
 d( } t9 d) d*  } d+ | | d, <| j: |  | St9 d-  SnG|  j j   r
t j j d t j j |  j	 d d  d t j j |  j	 d d  d	 |  j	 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' d d d d d. |  j	 d
 d |  j	 d d/ |  j	 d d0 |  j	 d |  t | j( d  _) d; | j( d  _* t j   }	 t j j |	 _ t j j d |	 _  t j!   }
 t j"   } t | _# | |
 _$ | |
 _% | |
 _& |	 |
 _ t | j( d  _) d< | j( d  _* | j+ d d d1 |
  | j, d  } d= | _- | j+ d d d2 t. |  j	 d
  d |
  | j+ d d d3 t/ |  j	 d
  d  |
  | j+ d d d4 t/ |  j	 d
  d |
  | j+ d d d5 t. |  j	 d
  d |
  | j+ d d# d6 t/ |  j	 d
  d  |
  | j+ d d d7 t/ |  j	 d
  d |
  t j   } t j j | _ t j j | _ t j j | _ t j j | _ t j!   } | | _$ d } x | D] } | j+ | d | j0 j1 d  |  | j+ | d | j2 |  | j+ | d | j3 |  | j+ | d | j4 |  | j+ | d | j5 |  | j+ | d# | j6 |  | j+ | d | j7 |  | d 7} q}	Wt j j8   j1 d&  d' |  j	 d
 d( } t9 d) d*  } d+ | | d, <| j: |  | St9 d-  Sd  S(>   NR   s   en-gbt   hrt   timestamp__gtet   startDateInputs   %Y-%m-%d %H:%M:%St   timestamp__ltet   EndDateInputt   lldevicelistt	   device_idt	   timestampt   Sheet1t   yellowi    i   s   Uredaj: s    [t   device_local_ids   ]
Vrijeme od: s    do 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   %Y-%m-%d_%H-%M-%St   _s   .xlst   content_types   application/vnd.ms-excels   attachment; filename=%ss   Content-Dispositions   Invalid users   Device: s   ]
Time from: s    to t   Times   CH1 Pressure [s
   CH1 Flow [s   CH1 Total Flow [s   CH2 Pressure [s
   CH2 Flow [s   CH2 Total Flow [i   i   i   i   i   i   (;   R   R   R   t   is_authenticatedR   t   objectst   filtert   datetimet   strptimet   POSTt   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   write_merget   rowt   height_mismatcht   heightt   writet   colt   widtht   returnPressureUnitStringt   returnTotalFlowUnitStringR"   t   strftimet   ch1_pressuret   ch1_flowt   ch1_total_flowt   ch2_pressuret   ch2_flowt   ch2_total_flowt   nowR   t   save(   R   t   Measurementst   workbookt   sheett   alignRL   t   color0t   style0RM   t   colort   style2t   columnt   style1t   xlsRowCountert   measuret   download_name2t   response(    (    sT   D:\SMTech Code\LeakLess Software\LeakLess Monitor\_THWeb2_17_7_2016\Measure\views.pyt   generateExcel   s   ]						T						++++++	"+]						T						++++++	"+c         C   s   |  d  k r d }  n  |  S(   Ni    (   t   None(   t   value(    (    sT   D:\SMTech Code\LeakLess Software\LeakLess Monitor\_THWeb2_17_7_2016\Measure\views.pyt	   checkNone   s    	c         C   sm   t  j j d |   } d } x | D] } | j } q" W| d k rE d S| d k rU d S| d k re d Sd Sd  S(   NR    i    t   Bari   t   Pai   t   Psi(   R	   R-   R.   t   rem_pmu(   t   DeviceIDt   PMUt   Jedinicat   line(    (    sT   D:\SMTech Code\LeakLess Software\LeakLess Monitor\_THWeb2_17_7_2016\Measure\views.pyRV      s    c         C   sQ   t  j j d |   } t |  d k r+ d S| d j d  k rB d S| d j Sd  S(   Nt   idi   Rs   i    t   ?(   R   R-   R.   t   lent   loc_pressurerecalculateunitRp   (   Rw   t   Info(    (    sT   D:\SMTech Code\LeakLess Software\LeakLess Monitor\_THWeb2_17_7_2016\Measure\views.pyt#   returnRecalculatePressureUnitString   s    c         C   s  t  |   } t |   } | | k r( d S| d k rk | d k rD d S| d k rT d S| d k rd d Sd Sn | d k r | d k r d d S| d k r d	 S| d k r d
 Sd SnK | d k r | d k r d d S| d k r d d	 S| d k r d Sd Sn  d S(   Ni   Rs   t   PSIg      -@Rt   i t   mg/d$@g@g"~?gU$b?(   RV   R   (   Rw   t   PressureUnitt   PressureRecalculateUnit(    (    sT   D:\SMTech Code\LeakLess Software\LeakLess Monitor\_THWeb2_17_7_2016\Measure\views.pyt   returnPressureFactor   s:    c          C   s1   g  }  |  j  d  |  j  d  |  j  d  |  S(   NRs   R   R   (   t   append(   t   Return(    (    sT   D:\SMTech Code\LeakLess Software\LeakLess Monitor\_THWeb2_17_7_2016\Measure\views.pyt$   returnRecalculatePressureUnitOptions  s
    c         C   s   t  |   d S(   Ns   /s(   RW   (   Rw   (    (    sT   D:\SMTech Code\LeakLess Software\LeakLess Monitor\_THWeb2_17_7_2016\Measure\views.pyt   returnFlowUnitString  s    c         C   sQ   t  j j d |   } t |  d k r+ d S| d j d  k rB d S| d j Sd  S(   NR{   i   t   li    R|   (   R   R-   R.   R}   t   loc_flowrecalculateunitRp   (   Rw   R   (    (    sT   D:\SMTech Code\LeakLess Software\LeakLess Monitor\_THWeb2_17_7_2016\Measure\views.pyt   returnRecalculateFlowUnitString  s    c         C   sU  t  |   } t |   } | | k r( d S| d k r | d k rD d S| d k rT d S| d k rd d S| d	 k rt d
 S| d k r d Sd Sn | d k r | d k r d S| d k r d S| d k r d S| d	 k r d S| d k r d Sd Snc | d k rQ| d k r
d S| d k rd S| d k r*d S| d	 k r:d S| d k rJd Sd Sn  d S(   Ni   s   l/ss   m3/sgMbP?s   gal/sg1?s   l/hi  s   m3/hg@s   gal/hgF@i  g,p@i6 gkw*(Agɰ72/@gr?gʡE@gN1]0@(   R   R   (   Rw   t   FlowUnitt   FlowRecalculateUnit(    (    sT   D:\SMTech Code\LeakLess Software\LeakLess Monitor\_THWeb2_17_7_2016\Measure\views.pyt   returnFlowFactor#  sR    c          C   sX   g  }  |  j  d  |  j  d  |  j  d  |  j  d  |  j  d  |  j  d  |  S(   Ns   l/ss   m3/ss   gal/ss   l/hs   m3/hs   gal/h(   R   (   R   (    (    sT   D:\SMTech Code\LeakLess Software\LeakLess Monitor\_THWeb2_17_7_2016\Measure\views.pyt    returnRecalculateFlowUnitOptionsS  s    c         C   sm   t  j j d |   } d } x | D] } | j } q" W| d k rE d S| d k rU d S| d k re d Sd Sd  S(   NR    i    R   i   t   m3i   t   gal(   R	   R-   R.   t   rem_fmu(   Rw   t   FMURy   Rz   (    (    sT   D:\SMTech Code\LeakLess Software\LeakLess Monitor\_THWeb2_17_7_2016\Measure\views.pyRW   ^  s    c         C   sQ   t  j j d |   } t |  d k r+ d S| d j d  k rB d S| d j Sd  S(   NR{   i   R   i    R|   (   R   R-   R.   R}   t   loc_totalflowrecalculateunitRp   (   Rw   R   (    (    sT   D:\SMTech Code\LeakLess Software\LeakLess Monitor\_THWeb2_17_7_2016\Measure\views.pyt$   returnRecalculateTotalFlowUnitStringn  s    c         C   s   t  |   } t |   } | | k r( d S| d k r[ | d k rD d S| d k rT d Sd Snf | d k r | d k rw d S| d k r d Sd Sn3 | d k r | d k r d	 S| d k r d
 Sd Sn  d S(   Ni   R   R   gMbP?R   g1?i  g,p@gɰ72/@gr?(   RW   R   (   Rw   t   TotalFlowUnitt   TotalFlowRecalculateUnit(    (    sT   D:\SMTech Code\LeakLess Software\LeakLess Monitor\_THWeb2_17_7_2016\Measure\views.pyt   returnTotalFlowFactory  s.    c          C   s1   g  }  |  j  d  |  j  d  |  j  d  |  S(   NR   R   R   (   R   (   R   (    (    sT   D:\SMTech Code\LeakLess Software\LeakLess Monitor\_THWeb2_17_7_2016\Measure\views.pyt%   returnRecalculateTotalFlowUnitOptions  s
    c         C   sp  |  j  j   rbg  } t |  j j d   } t |  j j d   } t |  j j d   } t |  j j d   } t |  j j d   } t	 |  j j d   } t
 j j d t j j |  j j d  d  d t j j |  j j d  d  d |  j j d   j d  } t j j d t j j |  j j d  d  d t j j |  j j d  d  d |  j j d   j d  }	 d }
 i  } |  j j d	  d
 k ri  } d | d <d | d <d | d | d <n  |  j j d  d
 k ri  } d | d <d | d <d | d | d <n  |  j j d  d
 k r^i  } d | d <d | d <d | d | d <n  |  j j d  d
 k ri  } d | d <d | d <d | d <n  d } g  } g  } g  } g  } g  } g  } g  } g  } t |  j j d   } | j   } x |	 D] } | j } d | j k rG| j | | j | j | j | j g  qd | j k r| j | | j | j | j | j g  qd | j k r| j | | j | j | j | j g  qd | j k r| j | | j | j | j | j g  qqWxR| D]J} | j } | j |  |  j j d	  d
 k rg| j | t | j  | t | j  | g  n  |  j j d  d
 k r| j | t | j  | t | j  | g  n  |  j j d  d
 k r| j | t | j  | t | j  | g  n  |  j j d  d
 k r@| j | t | j   t | j!  g  n  | d  7} q W| | d! <g  } |  j j d	  d
 k r| | d" <| | d# <| j |  n  |  j j d  d
 k r| | d" <| | d# <| j |  n  |  j j d  d
 k r| | d" <| | d# <| j |  n  |  j j d  d
 k rN| | d" <| | d# <| j |  n  | | d$ <t" |  St# d%  Sd  S(&   NR!   R   R   s   %Y-%m-%d %H:%M:%SR   R   R    R"   t   CHPt   1t   Pressuret   namet   Tlakt   imet   [R(   t   unitt   CHFt   Flowt   Protokt   CHTs
   Total Flows   Ukupni protokt   CHDIGs   Digital inputs   Digitalni ulazs   [0/1]i    t   samplers
   Total flowt   Digitali   t   xDatat   datat
   annotationt   datasetss   Invalid user($   R   R,   R   R   R   R   R   R   R   R   R   R-   R.   R/   R0   R2   R   t   intt   countR"   t   channelR   t	   shorttextt   textt   iconRr   RY   R\   RZ   R]   R[   R^   t   digital_ch1t   digital_ch2R   R   (   R   t   xdataR   t   PressureFactorR   t
   FlowFactorR   t   TotalFlowFactorRa   t   Annotationst   fmtR   t   CHP_datat   CHF_datat   CHT_datat   CHD_datat   countert	   CHP_arrayt	   CHF_arrayt	   CHT_arrayt	   CHD_arrayt   CHP_annotation_arrayt   CHF_annotation_arrayt   CHT_annotation_arrayt   CHD_annotation_arrayt   numOfseamplet	   numOfRowsR   t   timeRl   R   (    (    sT   D:\SMTech Code\LeakLess Software\LeakLess Monitor\_THWeb2_17_7_2016\Measure\views.pyt   generateGraph  s    !!!!







      	+++/	333+










c         C   s  t  j j d t j j |  j j d  d  d t j j |  j j d  d  d |  j j d   } d } d } | d	 7} x | D]~ } | j d  k r | d
 | j	 j
 |  d 7} | d | j d 7} q | d
 | j	 j
 |  d 7} | d | j d 7} q W| d 7} t |  S(   NR   R   s   %Y-%m-%d %H:%M:%SR   R   R    R!   sO   <div style="margin-top: 50px;"><table class="table table-striped" id="tblGrid">s   <thead id="tblHead"><tr><th><font color="#444444">Timestamp</font></th><th><font color="#444444">Alarm</font></th></tr></thead><tbody>s   <tr><td><font color="#444444">s   </font></td>s   <td><font color="#444444">s   </font</td></tr>s   </tbody></table></div>(   R   R-   R.   R/   R0   R   R   t   checkedRp   R"   RX   t   alarmR   (   R   t   AlarmsR   t   htmlt   alarm1(    (    sT   D:\SMTech Code\LeakLess Software\LeakLess Monitor\_THWeb2_17_7_2016\Measure\views.pyR     s    c

c   	      C   sx  |  j  j   rjg  } |  j  j   } x( | D]  } | j | j d  d  q+ Wt j j d | d t  j	 d  } d } d } d } x | D] } | d	 k r Pn  | d 7} | d
 t
 | j  d t
 | j  d | j j |  d t
 | j  d t j | j  j d d  d d 7} q W| d 7} | d k rVd t
 |  d | } n
 d | } t |  St d  Sd  S(   Nt   .i   t   lldevicelist__int   checked__isnulls
   -timestamps   %Y-%m-%d %H:%M:%Si    sl   <ul id="notifDropDown" class="dropdown-menu scrollable-menu" style="background-color: #3399cc;" role="menu">i
   s   <li id="alarms    "><a><div><font color="#ffffff">s	   , &#160; s:   &#160; &#160; <button type="button" onclick="confirmAlarm(sC   )" class="btn btn-default">Confirm</button><br><div align="center">t   ,s   <br>s   </div>&#160;s   </font></div></a></li>s   </ul>sE   <span id="redNotifier" value="fire_Alarm" class="badge badge-notify">s   </span>s9   <span id="redNotifier" class="badge badge-notify"></span>t    (   R   R,   t   get_all_permissionsR   t   splitR   R-   R.   R7   R2   t   strt   idlldevicepdlag_alarmR    R"   RX   t   cgit   escapeR   t   replaceR   (	   R   t	   permfieldt   permissionst   permR   R   R   R   R   (    (    sT   D:\SMTech Code\LeakLess Software\LeakLess Monitor\_THWeb2_17_7_2016\Measure\views.pyt   NotificationAlarms  s(    $
y


c         C   s{   |  j  j   rm y; t j j d |  j j d   j d d  } t d  SWqw t	 k
 ri } t | j
  SXn
 t d  Sd  S(   NR   t   AlarmIDR   i   s   Alarm confirmeds   invalid User(   R   R,   R   R-   R.   R   R   t   updateR   t	   Exceptiont   message(   R   t
   AlarmsDatat   e(    (    sT   D:\SMTech Code\LeakLess Software\LeakLess Monitor\_THWeb2_17_7_2016\Measure\views.pyt   confirmAlarm7  s    -c         C   s   |  j  j   r g  } |  j  j   } x( | D]  } | j | j d  d  q+ Wt j j d |  } t d i |  j  d 6| d 6t	 |   d 6 St
 d  Sd  S(	   NR   i   R   s   alarms.htmlR   t   alarmsR   t   /(   R   R,   R   R   R   R   R-   R.   R    R   R   (   R   R   R   R   R   (    (    sT   D:\SMTech Code\LeakLess Software\LeakLess Monitor\_THWeb2_17_7_2016\Measure\views.pyt
   AlarmTableB  s    +c   	      C   s  d } | d 7} | d |  j  d 7} |  j d k rt t | d |  j j     } t t | d |  j j     } | d | d	 7} | d
 7} | | k r | d |  j d | d | d t |  j  d 7} q	| d |  j d | d | d t |  j  d 7} n|  j d k r!t t | d |  j j     } t t | d |  j j     } | d | d	 7} | d
 7} | | k r| d |  j d | d | d t |  j  d t |  j  d 7} q	| d |  j d | d | d t |  j  d t |  j  d 7} n|  j d k r0t t | d |  j j     } t t | d |  j j     } | d | d	 7} | d
 7} | | k r| d |  j d | d | d t |  j  d t |  j  d 7} q	| d |  j d | d | d t |  j  d t |  j  d 7} n|  j d k rd } t | d |  j j    } | d  k rvd } n  t | d |  j j    } | d  k rd } n  |  j	 j
 d  } t |  t |  d k r| d 7} | d
 7} | d  7} q	| d t | t |   d	 7} | d
 7} | | k rT| d! |  j d" t |  d# 7} n# | d$ |  j d" t |  d# 7} xm | D]e } | t |  k r| d% t |  d& | d' 7} n  | d% t |  d( | d' 7} | d 7} q~W| d) 7} n|  j d* k r	t | d |  j j    } t | d |  j j    } | d t |  d	 7} | d
 7} | d+ 7} | d, t |  d- 7} | | k r| d. |  j d/ t |  d0 7} n# | d. |  j d1 t |  d0 7} | d2 7} | d3 7} | d 7} | d4 7} | d4 7} n  | d5 7} | d6 |  j j   d7 |  j j   d 7} | d8 7} | d9 7} | d 7} | d4 7} | d4 7} | d: |  j j   d 7} | d; 7} | j j d< d=  d> k r| |  j 7} n | |  j 7} | d4 7} | d4 7} | S(?   Ns   <div class="row">s8   <div class="input-group input-group-sm" id="ParamsList">sV   <span class="input-group-addon" style="width: 100%; max-width:500px; min-width:200px">s   </span>t   STRINGt   rem_t   loc_sH   <input type="text" style="min-width: 250px" class="form-control" value="s   " readonly>s'   <span class="input-group-addon"></span>s   <input name="param_input" id="s?   " type="text" style="width: 200px" class="form-control" value="s#   " oninput="formEvaluatorText(this,'s   ');" maxlength="s   ">sX   " type="text" style="background-color:#ddffdd;width: 200px" class="form-control" value="t   INTEGERsJ   <input type="number" style="min-width: 250px" class="form-control" value="sG   " type="text" style="width: 200px" step="1" class="form-control" value=s%    oninput="formEvaluatorInteger(this,'s
   ');" min="s   " max="s`   " type="text" style="background-color:#ddffdd;width: 200px" step="1" class="form-control" value=s	   ')" min="t   DOUBLEs$    oninput="formEvaluatorDouble(this,'t   ENUMi    R   i   sw   <input type="text" style="background-color:#ff0000;min-width: 250px" class="form-control" value="UNAVAILABLE" readonly>ss   <input type="text" style="background-color:#ff0000;width: 200px" class="form-control" value="UNAVAILABLE" readonly>sI   <select name="param_input" class="form-control" style="width: 200px" id="s$   " onchange="formEvaluatorEnum(this,'s   ')">sb   <select name="param_input" class="form-control" style="background-color:#ddffdd;width: 200px" id="s   <option value="s   " selected>s	   </option>s   " >s	   </select>t   TIMEsA   <div class="form-group" style="margin-bottom: 0px; width: 200px">s5   <div class="input-group date" id="timePicker" title="s   " ">s   <input id="s(   " name="param_input" type="text" value="s-   " class="form-control" style="height: 30px"/>sI   " name="param_input" style="background-color:#ddffdd" type="text" value="s    <span class="input-group-addon">s.   <span class="glyphicon glyphicon-time"></span>s   </div>s   <span class="input-group-btn">sM   <button class="btn btn-primary" role="button" data-toggle="collapse" href="\#s'   " aria-expanded="false" aria-controls="s3   <span class="glyphicon glyphicon-menu-down"></span>s	   </button>s   <div class="collapse" id="s   <div class="well">R   s   en-gbR   (   t
   publicnamet   typeR   t   getattrR   t   lowert   maxt   minRp   t   enumtextR   R   R}   R   R   t   infotext_crot   infotext_eng(	   t   paramIt   ParamsR   R   t   tmp_remt   tmp_loct	   enumCountt   listOfEnumst   enum(    (    sT   D:\SMTech Code\LeakLess Software\LeakLess Monitor\_THWeb2_17_7_2016\Measure\views.pyt   generateTypeDependHTMLN  s    
""
99""
JJ""
JJ		

"
&## 

&#




,







c         C   s  t  j j d |  j j d  d d  j d  } d } t |  d k rv |  j j d d	  d
 k rl d } n d } | Sd } | d 7} | d 7} |  j j d d	  d
 k r | d 7} | d 7} | d 7} n | d 7} | d 7} | d 7} | d 7} | d 7} | d 7} x | D] } | d 7} | d t | j	  d 7} | d | j
 d 7} | d | j d | j d 7} | d 7} | d 8} | d k rPqqW| d 7} | d 7} | S(    Nt   lldevice_idR!   t
   actiontypet
   PARAM_SAVEs
   -timestampi   i    R   s   en-gbR   s   Log akcija je prazans   Action log emptys9   <table class="table table-striped" style="font-size: 12">s   <thead>s   <tr>s   <th>Vrijeme</th>s   <th>Korisnik</th>s   <th>Akcija</th>s   <th>Timestamp</th>s   <th>Username</th>s   <th>Action</th>s   </tr>s   </thead>s   <tbody>s   <td>s   </td>s   <td data-original-title="sb   " data-container="body" data-toggle="tooltip" data-placement="bottom" style="text-align: center;">i   s   </tbody>s   </table>(   R   R-   R.   R   R   R2   R}   R   R   R"   t   usernamet   useraction_longt   useraction_short(   R   t   ActionsR   Rn   t   action(    (    sT   D:\SMTech Code\LeakLess Software\LeakLess Monitor\_THWeb2_17_7_2016\Measure\views.pyt   generateParameterUserActionList  s@    0	










 



c   	      C   s  t  |  j j d   } t |  j j d   } t |  j j d   } t |  j j d   } t |  j j d   } t |  j j d   } d } | d 7} | d 7} |  j j d d  d k r | d 7} | d	 7} | d
 7} n | d 7} | d 7} | d 7} | d 7} | d 7} | d 7} | d 7} | d 7} | d 7} | d 7} | d 7} | d t	 |  d 7} | d 7} | d 7} | d 7} x` t
   D]U } | | k r| d t	 |  d | d 7} q| d t	 |  d | d 7} qW| d 7} | d 7} | d 7} | d 7} | d 7} | d 7} | d 7} | d 7} | d t	 |  d 7} | d 7} | d 7} | d 7} x` t   D]U } | | k r| d t	 |  d | d 7} q}| d t	 |  d | d 7} q}W| d 7} | d 7} | d 7} | d 7} | d 7} | d 7} | d 7} | d 7} | d t	 |  d 7} | d 7} | d 7} | d 7} x` t   D]U } | | k r| d t	 |  d | d 7} qf| d t	 |  d | d 7} qfW| d 7} | d 7} | d 7} | d  7} | d! 7} | d" 7} | S(#   NR!   s9   <table class="table table-striped" style="font-size: 12">s   <thead>s   <tr>R   s   en-gbR   s   <th>Mjerenje</th>s   <th>Iz</th>s
   <th>U</th>s   <th>Measurement</th>s   <th>From</th>s   <th>To</th>s   </tr>s   </thead>s   <tbody>s   <td>R   s   </td>s8   <input type="text" style="" class="form-control" value="s   " readonly>sQ   <select name="unit_input" class="form-control" style="" id="PressureRecalculate">s   <option value="s   " selected>s	   </option>s   " >s	   </select>R   sM   <select name="unit_input" class="form-control" style="" id="FlowRecalculate">s
   Total flowsR   <select name="unit_input" class="form-control" style="" id="TotalFlowRecalculate">s   </tbody>s   </table>s   <button type="button" style="margin-top:20px;" class="btn btn-primary btn-block" onclick="saveRecalculateUnitParameters();">Save</button>(   RV   R   R   R   RW   R   R   R   R   R   R   R   R   (	   R   R   R   R   t   RecalculatePressureUnitt   RecalculateFlowUnitt   RecalculateTotalFlowUnitRn   R  (    (    sT   D:\SMTech Code\LeakLess Software\LeakLess Monitor\_THWeb2_17_7_2016\Measure\views.pyt   generateUnitRecalculationWindow  s    

















#$










#$










#$





c         C   s	  |  j  j   r	|  j j d  } |  j j d  } t j j d |  j j d   } d } d } | d 7} d | d | } | d	 | d
 7} | d 7} | d 7} | d 7} | d 7} t |  d k r t d  S| d j	 } t
 j j d d d d  j   j d d  } |  j j d d  d k r4| d 7} n
 | d 7} d }	 xP | D]H }
 |
 j } | |	 k rs| d 7} n  | }	 | t |
 | d |   7} qKWt
 j j d d d d  j d d  } |  j j d d  d k r| d 7} n
 | d 7} d }	 xP | D]H }
 |
 j } | |	 k r%| d 7} n  | }	 | t |
 | d |   7} qWt
 j j d d d d  j d d  } |  j j d d  d k r| d  7} n
 | d! 7} d }	 xP | D]H }
 |
 j } | |	 k r| d 7} n  | }	 | t |
 | d |   7} qWt
 j j d d d d"  j d d  } |  j j d d  d k rJ| d# 7} n
 | d$ 7} d }	 xP | D]H }
 |
 j } | |	 k r| d 7} n  | }	 | t |
 | d |   7} qaW| d% 7} | d 7} | d& 7} |  j j d d  d k r| d' 7} n
 | d( 7} | d) 7} | d* 7} | d+ 7} |  j j d d  d k rM| d, t |  7} n | d- t |  7} | d 7} | d 7} | d. 7} | d) 7} |  j j d d  d k r| d/ 7} n
 | d0 7} | d+ 7} | t |   7} | d 7} | d 7} | d. 7} | d) 7} |  j j d d  d k r%| d1 7} n
 | d2 7} | d+ 7} | t |   7} | d 7} | d 7} | d. 7} | d) 7} |  j j d d  d k r| d3 7} n
 | d4 7} | d+ 7} | d5 7} | d6 7} | d7 7} | d8 7} | d9 7} | d 7} | d: 7} | d; 7} |  j j d d  d k r%| d< 7} n
 | d= 7} | d 7} | d 7} | d5 7} | d6 7} | d7 7} | d> 7} | d9 7} | d 7} | d: 7} |  j j d d  d k r| d? 7} | d@ 7} n | dA 7} | dB 7} | d 7} | d 7} | d5 7} | d6 7} | d7 7} | dC 7} | d9 7} | d 7} | d: 7} |  j j d d  d k r[| dD 7} | dE 7} n | dF 7} | dG 7} | d 7} | d 7} | d5 7} | d6 7} | d7 7} | dH 7} | d9 7} | d 7} | d: 7} |  j j d d  d k r| dI 7} | dJ 7} n | dK 7} | dL 7} | d 7} | d 7} | d 7} | d 7} | d. 7} | d) 7} |  j j d d  d k rs| dM 7} n
 | dN 7} | d+ 7} | dO 7} |  j j d d  d k rdP } n dQ } | dR | d 7} | d 7} | dO 7} |  j j d d  d k r	dS } n dT } | dU | d 7} | d 7} | dO 7} |  j j d d  d k rU	dV } n dW } | dX | d 7} | d 7} | dO 7} |  j j d d  d k r	dY } n dZ } | d[ | d 7} | d 7} | d 7} | d 7} t |  St d\  Sd  S(]   NR!   t   device_identifierR    i    s   <button style="margin-right: 20px; margin-top:-40px; color: #000000; font-size: 30" type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>sP   <h3 style="margin-top: 60px; margin-bottom: 20px" align="center">Parameters</h3>s   Identifikator:s   <br> ID:sa   <h3 class="modal-title" align="center" style="margin-top:40px;font-size:16px;margin-bottom:40px">s   </h3>s&   <div class="row" style="margin: 0px;">s   <div class="col-sm-1">s   </div>s1   <div class="col-sm-7" style="text-align: center">i   s   Parameters not fetched!t   visible__gtet   groupt   GENERALt   idlldevice_pdlag_parameterinfot   subgroupR   s   en-gbR   s   <h4>Opcenito</h4>s   <h4>General</h4>s#   <div style="margin-top:20px"></div>t   ALARMs   <h4>Alarmi</h4>s   <h4>Alarms</h4>t   MEASUREs   <h4>Mjerenje</h4>s   <h4>Measure</h4>t   SETTINGSs   <h4>Postavke</h4>s   <h4>Settings</h4>s   <button type="button" style="margin-top:20px;margin-bottom:40px" class="btn btn-primary btn-block" onclick="startSaveParameters();">Save</button>s   <div class="col-sm-4">s   <h4>Informacije</h4>s   <h4>Information</h4>s!   <div class="panel panel-primary">s'   <div class="panel-heading">Status</div>s   <div class="panel-body">s   Zadnja promjena prametara: s   Last parameter change: s   <br>s+   <div class="panel-heading">Log akcija</div>s+   <div class="panel-heading">Action log</div>s;   <div class="panel-heading">Pretvorba mjernih jedinica</div>s?   <div class="panel-heading">Measurement unit recalculation</div>s&   <div class="panel-heading">Pomoc</div>s%   <div class="panel-heading">Help</div>s   <div class="media">s   <div class="media-left">s   <a href="#">sB   <img class="media-object" src="/static/img/info-64.png" alt="...">s   </a>s   <div class="media-body">s&   <h4 class="media-heading">General</h4>s   Opcenite informacije o uredajus%   General information about the device.sI   <img class="media-object" src="/static/img/alarm_clock-64.png" alt="...">s%   <h4 class="media-heading">Alarmi</h4>sY   Postavke alarma za sve kanale. Podesite granice alarma i promjenite nacin njihove dojave.s%   <h4 class="media-heading">Alarms</h4>sn   Alarm settings for all channels. Adjust the limits of each alarm and change the reporting option of the alarm.sJ   <img class="media-object" src="/static/img/scatter_plot-64.png" alt="...">s'   <h4 class="media-heading">Mjerenje</h4>s}   Razlicite postavke vezane uz mjerenje, kao sto su mjerne jedinice, interval slanja podataka te faktori skaliranja za senzore.s&   <h4 class="media-heading">Measure</h4>su   Various settings related to measurements such as measurement units, GPRS reporting options or sensor scaling factors.sF   <img class="media-object" src="/static/img/settings-64.png" alt="...">s'   <h4 class="media-heading">Postavke</h4>s   Postavke vezane uz mrezu ili vezu sa serverom. Upozoravamo korisnika da ne mijenja ove postavke bez prethodnih konzultacija sa tehnickom podrskom.s'   <h4 class="media-heading">Settings</h4>s   Settings related to network and server connection. We advise the user not to change these settings without prior consultation with the technical support.s(   <div class="panel-heading">Legenda</div>s'   <div class="panel-heading">Legend</div>s   <div class="row">s$   Parametar odgovara stanju na uredajus   No parameter change is requireds   <div class="box" style="height: 35px; text-align: center;line-height: 30px;border-style: solid;border-width: 1px; margin: 10px;background-color:#ffffff">s'   Promjene za koje se ceka upis na uredajs'   Changes waiting to be written to devices   <div class="box" style="height: 35px; text-align: center;line-height: 30px; border-style: solid;border-width: 1px; margin: 10px; background-color:#ddffdd">s   Greska upisa parametras   Parameter input errors   <div class="box" style="height: 35px; text-align: center;line-height: 30px;border-style: solid;border-width: 1px; margin: 10px;background-color:#ffbbbb">s   Promjena koja nije spremljenas   Non-saved changess   <div class="box" style="height: 35px; text-align: center;line-height: 30px;border-style: solid;border-width: 1px; margin: 10px;background-color:#ffffbb">s   invalid User(   R   R,   R   R   R	   R-   R.   R}   R   t   lastparameterchangeR
   R2   R   R  R  R   R  R  (   R   t	   device_IDt   device_IdentifierR   R   R   t   string_to_showt   lastParameterChanget	   ParamInfot   lastSubgroupR   t   currentSubgroupR   (    (    sT   D:\SMTech Code\LeakLess Software\LeakLess Monitor\_THWeb2_17_7_2016\Measure\views.pyt   generateParamsList/  sz   !





-
	'
	'
	'
	














































































	

	

	

	



c         C   s  |  j  j   rd } d } |  j  j } d } d } yt j j   } i  } g  } x | D] }	 |  j j |	 j  }
 |
 d  k	 rd |	 j j
   } t |	 j j   |
 |	  t k r | d 7} | j d |	 j j    qX n  i |
 | 6} | j |  | d 7} qX | d 7} | j d |	 j j    qX Wt j j d |  j j d   j |   } | d k r*d	 t |  d
 } d t |  d t |  d d j |  } t d t j j   d d d | d | d t |  d |  j j d   } | j   t d t |  d t |  d d j |   Sd } d t |  d t |  d d j |  } t d t j j   d d d | d | d t |  d |  j j d   } | j   t d  SWqt k
 r} t | j  SXn
 t d  Sd  S(   Ni    R   R   i   s   1-s   0-R    R!   s   New data save with s    errorss	   Success: s    Fail: s	    Params: R   R"   R  R  R	  R  R  R  s   New data savet   OKs   invalid User(   R   R,   R  R
   R-   t   allR   R   R   Rp   R   t
   checkValuet   uppert   FalseR   R   R	   R.   R   t   joinR   R/   R_   R`   R   R   R   (   R   t	   failCountt   successCountt   userUsernamet   userActionDataLongt   userActionDataShortR  t   dictt   errorParamListt   Paramt   Valuet	   FieldNamet   dt   tmpt   UserActionDataR   (    (    sT   D:\SMTech Code\LeakLess Software\LeakLess Monitor\_THWeb2_17_7_2016\Measure\views.pyt   writeParamsChanges#  sL    !

*/H
3/H
c         C   s  |  j  j   r
d } d } |  j  j } d } d } g  } yi  } d } |  j j d  }	 |	 t   k r | d 7} i |	 | 6}
 | j |
  n
 | d 7} d } |  j j d  } | t   k r | d 7} i | | 6}
 | j |
  n
 | d 7} d } |  j j d	  } | t   k r@| d 7} i | | 6}
 | j |
  n | d 7} | j	 d
  t
 j j d |  j j d   j |   } | d k rUd t |  d } d t |  d t |  d d j |  } t d t j j   d d d | d | d t |  d |  j j d   } | j   t d t |  d t |  d d j |   Sd } d t |  d t |  d d j |  } t d t j j   d d d | d | d t |  d |  j j d   } | j   t d  SWqt k
 r} t | j  SXn
 t d  Sd  S(   Ni    R   R~   t   PressureRecalculatei   R   t   FlowRecalculateR   t   TotalFlowRecalculates   1-R{   R!   s   New unit save with s    errorss	   Success: s    Fail: s	    Params: R   R"   R  R  R	  R  R  R  s   New unit savet	   UNIT_SAVER#  s   invalid User(   R   R,   R  R   R   R   R   R   R   R   R   R-   R.   R   R(  R   R/   R_   R`   R   R   R   (   R   R)  R*  R+  R,  R-  R/  R.  t   FieldNamePressuret   PressureValueR3  t   FieldNameFlowt	   FlowValuet   FieldNameTotalFlowt   TotalFlowValueR4  R5  R   (    (    sT   D:\SMTech Code\LeakLess Software\LeakLess Monitor\_THWeb2_17_7_2016\Measure\views.pyt   writeRecalculateUnitChangesT  sh    





*/!
%/!
c         C   sl  | j  d k r5 | j } t |  | k r. t St Sn3| j  d k r | j } | j } t |  | k sz t |  | k  r~ t St Sn | j  d k r | j } | j } t |  | k s t |  | k  r t St Sn | j  d k r%| j } | j } t |  | k st |  | k  rt St SnC | j  d k rdy t j	 | d  t SWqht
 k
 r`t SXn t Sd  S(   NR   R   R   R   R   s   %H:%M:%S(   R   R   R}   R'  R7   R   R   t   floatR   R0   t
   ValueError(   t	   paramnamet
   paramvalueR   t   MaxLent   Maxt   Min(    (    sT   D:\SMTech Code\LeakLess Software\LeakLess Monitor\_THWeb2_17_7_2016\Measure\views.pyR%    s<    			$		$		$c         C   s6  |  j  j   r(yi  } |  j j d  } |  j j d  } |  j j d  } |  j j d  } t j j d t j j |  j j d  d  d t j j |  j j d	  d  d
 |  j j d   j	 d  } g  } g  } g  }	 d }
 xE | D]= } |
 d }
 | j
 |
  | j
 | j  |	 j
 | j  q Wi | d 6|	 d 6} t j d | d |  } t | d d d d } | d j d  d   d f j } g  } xR t d t |   D]; } t j t | |   } | j d  } | j
 |  qW| GH| | d <t |  SWq2t k
 r$} t | j  SXn
 t d  Sd  S(   Nt   Filtert	   GraphNamet   GraphNumbert   ChannelR   R   s   %Y-%m-%d %H:%M:%SR   R   R    R!   R"   i    i   t   col1t   col2R   t   indext	   max_anomsg{Gz?t	   directiont   botht   anomst	   anomaliess   Invalid user(   R   R,   R   R   R   R-   R.   R/   R0   R2   R   R"   RY   t   pdt	   DataFrameR   t   iloct   valuest   rangeR}   t   to_datetimeR   RX   R   R   R   R   (   R   t   JSONDatat   FilterValueRJ  RK  RL  Ra   t   counterVectort
   timeVectort
   dataVectorR   Rl   R3  R   t   resultst   bt   stringArrayt   it   tsR   (    (    sT   D:\SMTech Code\LeakLess Software\LeakLess Monitor\_THWeb2_17_7_2016\Measure\views.pyt   identifyAnomalies  s@    l
 
c          C   sK   g  }  |  j  d  |  j  d  |  j  d  |  j  d  |  j  d  |  S(   Ns   thumb/chance_of_storm-26.pngs   thumb/settings2-26.pngs   thumb/spade-26.pngs   thumb/thumbs_down-26.pngs   thumb/thumbs_up-26.png(   R   (   R   (    (    sT   D:\SMTech Code\LeakLess Software\LeakLess Monitor\_THWeb2_17_7_2016\Measure\views.pyt   getIconList  s    c   
      C   s1  |  j  j   r#y |  j j d  } |  j j d  } t j j |  j j d  d  } |  j j d  } |  j j d  } |  j j d  } t j j d |  } | t   k r t	 d	  St
 d
 | d | d | d | d | d d d |  } | j   t	 d  SWq-t k
 r}	 t	 d	  SXn
 t	 d  Sd  S(   NR!   t
   identifierR   s   %d/%m/%Y %H:%M:%St   chartR   R   R{   t   ErrorR"   R   R   R   R    t   Oks   Invalid user(   R   R,   R   R   R/   R0   R   R-   Rf  R   R   R`   R   (
   R   Rw   t
   IdentifierR+   t   Chartt   Textt   Icont   DevicesDatat   AnnotationDataR   (    (    sT   D:\SMTech Code\LeakLess Software\LeakLess Monitor\_THWeb2_17_7_2016\Measure\views.pyt   saveAnnotation  s&    !

c   
      C   s'  |  j  j   ry |  j j d  } |  j j d  } t j j |  j j d  d  } |  j j d  } |  j j d  } |  j j d  } t j j d |  } | t   k r t	 d	  St
 j j d
 | d | d |  j d | d |  } t	 d  SWq#t k
 r}	 t	 d	  SXn
 t	 d  Sd  S(   NR!   Rg  R   s   %d/%m/%Y %H:%M:%SRh  R   R   R{   Ri  R"   R   R    Rj  s   Invalid user(   R   R,   R   R   R/   R0   R   R-   Rf  R   R   R.   R   R   (
   R   Rw   Rk  R+   Rl  Rm  Rn  Ro  Rp  R   (    (    sT   D:\SMTech Code\LeakLess Software\LeakLess Monitor\_THWeb2_17_7_2016\Measure\views.pyt   editAnnotation  s     !
3c         C   s   |  j  j   r y |  j j d  } t j j |  j j d  d  } |  j j d  } t j j d |  } t j j	 d | d | d |  j
   } t d	  SWq t k
 r } t d
  SXn
 t d  Sd  S(   NR!   R   s   %d/%m/%Y %H:%M:%SRh  R{   R"   R   R    Rj  Ri  s   Invalid user(   R   R,   R   R   R/   R0   R   R-   R   R.   t   deleteR   R   (   R   Rw   R+   Rl  Ro  Rp  R   (    (    sT   D:\SMTech Code\LeakLess Software\LeakLess Monitor\_THWeb2_17_7_2016\Measure\views.pyt   deleteAnnotation0  s    !'(>   t   django.shortcutsR    R   R   t   django.httpR   R   t   django.template.loaderR   t   pyculiarityR   R3   t   pandasRU  t   Measure.modelsR   R   R	   R
   R   R   R   t
   main.viewsR   R/   t   jsont   reR   R   R   R   Ro   Rr   RV   R   R   R   R   R   R   R   RW   R   R   R   R   R   R   R   R   R  R  R  R"  R6  RA  R%  Re  Rf  Rq  Rr  Rt  (    (    (    sT   D:\SMTech Code\LeakLess Software\LeakLess Monitor\_THWeb2_17_7_2016\Measure\views.pyt   <module>   s\   4							$				0							f		 			a	*	V		1	F	-	*	
		