ó
ŐXăZc           @   s!  d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l m Z m Z m Z m Z m	 Z	 m
 Z
 d  d l m Z m Z d  d l m Z d  d l m Z e e  Z e e _ d e _ e  j j e  j j e   Z d e f d     YZ e e j j d	 <e j d
    Z e j d    Z  e j! d  d    Z" e j! d  d    Z# e j! d  d    Z$ e j! d  e j! d  d d    Z& e j! d d d g d    Z' e j! d d d g d d   Z( e j! d d d g e j! d d d g d d d    Z) e j! d  d d g e j! d! d d g d d"    Z* e j! d# d d g d$    Z+ e j! d% d d g d&    Z, e j! d'  e j! d(  e j! d)  d* d d+     Z- d, e. f d-     YZ/ e/ e j0  e _0 e d. k re j1 d/ d0 d1 d2 d3 e  n  d S(4   i˙˙˙˙N(   t   Flaskt   requestt   redirectt   url_fort   make_responset   render_template(   t   send_from_directoryt   g(   t   secure_filename(   t   BaseConvertergń?t   RegexConverterc           B   s   e  Z d    Z RS(   c         G   s'   t  t |   j |  | d |  _ d  S(   Ni    (   t   superR
   t   __init__t   regex(   t   selft   url_mapt   items(    (    s   /var/www/nespro/nespro.pyR      s    (   t   __name__t
   __module__R   (    (    (    s   /var/www/nespro/nespro.pyR
      s   R   c           C   s   t  j    t _ d  S(   N(   t   timeR   t   start(    (    (    s   /var/www/nespro/nespro.pyt   before_request   s    c         C   s´   t  j    t j } d |  j d <d |  j d <d |  j d <t j j t j j t   |  j d <t j j t j	    |  j d <d	 |  j d
 <d | d |  j d <t
 j |  j d <|  S(   Ns.   max-age=0, no-cache, no-store, must-revalidates   Cache-Controls   Thu, 29 Nov 1984 19:40:00t   Expiress   no-cachet   Pragmas   Run-int   CWDs   4 8 15 16 23 42s   X-LOSTs   %1.1f msič  s	   X-Runtimes   X-App-Version(   R   R   R   t   headerst   ost   patht   dirnamet   abspatht   __file__t   getcwdt   appt   version(   t   responset   diff(    (    s   /var/www/nespro/nespro.pyt
   add_header   s    %s(   /<regex('(img|css|js)'):head>/<resource>c         C   s   t  t d d |  d |  S(   Nt   statict   filenamet   /(   R   R   (   t   headt   resource(    (    s   /var/www/nespro/nespro.pyt
   get_static'   s    s(   /<regex('(font|fonts)'):head>/<resource>c         C   s   t  t d d d |  S(   NR%   R&   s   fonts/(   R   R   (   R(   R)   (    (    s   /var/www/nespro/nespro.pyt
   get_images+   s    s   /pubkey/c           C   s   t  t j j t d  d d S(   NR%   R&   s   pubkey/key.pub(   R   R   R   t   joint   base(    (    (    s   /var/www/nespro/nespro.pyt   get_public_key/   s    s"   /<regex('([A-Z0-9]{4,11})'):hash>/sr   /<regex('([A-Z0-9]{4,11})'):hash>/<regex('overview|dates|report|statistics|notes|feedback|acknowledgment'):target>c         C   sP   d d  l  } t | j    j   } t t d d |  } | j d |  | S(   Ni˙˙˙˙s	   root.htmlt   uuidR   (   R/   t   strt   uuid4t   upperR   R   t
   set_cookie(   t   hasht   targetR/   t   my_uuidt   resp(    (    s   /var/www/nespro/nespro.pyt   root3   s
    s   /file/<uuid:uuid>t   methodst   GETc         C   s   |  GHt  d d d S(   Ns   /tmp/R&   s
   image.jpeg(   R   (   R/   (    (    s   /var/www/nespro/nespro.pyt   get_file=   s    s=   /intervention/<regex('([A-Z0-9]{4,11})'):hash>/<int:version>/t   POSTi    c         C   s!  d d  l  } | j t j  } | d } d d  l } d g d | |  f g } t j j t |  } t j j	 |  s t j
 |  n  d | |  | f } t t j j | |  d  }	 |	 j t j  |	 j   d d  l }
 d d  l } d t j j t d  |  f } |
 j | j |   d	 S(
   Ni˙˙˙˙t   numbert   interventionss   %s_%ss   %s_%s_%04d.jsont   wbs   %s -i -o -w %ss   xslt/json2sql.shs   Ahoy, capt'n(   t   jsont   loadsR   t   dataR   R   R   R,   R-   t   existst   makedirst   opent   writet   closet
   subprocesst   shlext   Popent   split(   R4   R!   R@   t   payloadR=   R   t   subdirt	   directoryR&   t   fileRH   RI   t   shell(    (    s   /var/www/nespro/nespro.pyt   post_interventionB   s     

sU   /intervention/<regex('([A-Z0-9]{4,11})'):hash>/<int:mode>/<int:clear>/<path:sections>sF   /intervention/<regex('([A-Z0-9]{4,11})'):hash>/<int:mode>/<int:clear>/c      	   C   s.  d d l  m } m } d d l m } d d l m } m } d d l m	 }	 m
 }
 m } | d  k } | r+d g } xľ g  |	 |
 j t |   D] } t j |  |  r | ^ q D]s } xj g  t |	 |
 j t | | g   d t d  D] } | ^ qę D]& } t |
 j t | | g  d	 | SWqą Wn  |
 j t d
 d  } |
 j t d
 d  } | d  k	 r}d d j | j d   n d  } d | d  k rd n | |  | d k r°d n d |  f } | GH| |  d | |  |  f } | |  | d k rĄd | |  |  f } | |  d d  l } t d# |   n } | j |  } t |  d k r_| d  n  | | j | d d t j d   } d | j d <| SWd  QXn  d d  l j j } | j d d |   j  d  } t |  d k rň| d  n  d  | d j!   g } | d! j |   } d" | j d <| S($   Ni˙˙˙˙(   t   callt   check_output(   RK   (   t   abortR   (   t   listdirR   t   systemR>   t   reversei   R&   s   xslt/s   sanitize.xslts   intv_xml2json.xslts   '%s't   ,R'   sË   mysql -u F5VksfQsYW -h 192.168.10.10 -pmWaq9FiGC6  --default-character-set=utf8  --skip-column-names  --raw  --execute="call npro_export_xml_intervention('GER', %s, '%s', %s)"  NESA > /tmp/intv_%s.xml
  t   NULLi    t   TRUEt   FALSEs9   xsltproc %s /tmp/intv_%s.xml > /tmp/intv_%s_sanitized.xmls:   xsltproc %s /tmp/intv_%s_sanitized.xml > /tmp/intv_%s.jsons   /tmp/s   intv_%s.jsoni  t   ensure_asciit   utf8s   application/jsons   Content-Types   intv_%s_sanitized.xmlt   interventions&   <?xml version="1.0" encoding="utf-8"?>s   
s   application/xmls   /tmp/intv_%s.json("   RH   RR   RS   RI   RK   t   flaskRT   R   R   RU   R   RV   t   NoneR,   R-   t   ret   searcht   sortedt   TrueR   R@   RE   t   loadt   lent   dumpst   Falset   encodeR   t   xml.dom.minidomt   domt   minidomt   parset   getElementsByTagNamet   toxml(   R4   t   modet   cleart   sectionsRR   RS   RK   RT   R   RU   R   RV   t   cachedRM   t   ft   folderRO   t   xslt1t   xslt2RP   R@   t	   json_datat   intvsR"   Rl   R>   t   xml(    (    s   /var/www/nespro/nespro.pyt   json_interventionY   sJ    	DI+.:


( s   /calendars/<regex('[0-9]{4}-[0-9]{2}-[0-9]{2}'):from_date>/<regex('[0-9]{4}-[0-9]{2}-[0-9]{2}'):until_date>/<int:active>/<int:mode>/s   /calendars/<regex('[0-9]{4}-[0-9]{2}-[0-9]{2}'):from_date>/<regex('[0-9]{4}-[0-9]{2}-[0-9]{2}'):until_date>/<int:active>/<int:mode>/<path:varargs>/c         C   s9  d d l  m } m } d d l m } d d l m } m }	 d d l m	 }
 m
 } m } | |  k  rq | d  n  | j t d d  } | j t d d	  } d
 |  | | d k rś d n d d j t |  j d   f } | |  d | } | |  | d k r)d | } | |  t d d d St d d d S(   Ni˙˙˙˙(   RR   RS   (   RK   (   RT   R   (   RU   R   RV   i  s   xslt/s   sanitize.xslts   intv_xml2json.xsltsŐ   mysql -u F5VksfQsYW -h 192.168.10.10 -pmWaq9FiGC6  --default-character-set=utf8  --skip-column-names  --raw  --execute="call npro_export_xml_calendars('GER', '%s', '%s', %d, '%s', 1)"  NESA > /tmp/calendars.xml
  i   i    RX   R'   s=   xsltproc %s /tmp/calendars.xml > /tmp/calendars_sanitized.xmls>   xsltproc %s /tmp/calendars_sanitized.xml > /tmp/calendars.jsons   /tmpR&   s   calendars.jsons   calendars_sanitized.xml(   RH   RR   RS   RI   RK   R_   RT   R   R   RU   R   RV   R,   R-   R0   R   (   t	   from_datet
   until_dateRp   t   activet   varargsRR   RS   RK   RT   R   RU   R   RV   Rv   Rw   RP   (    (    s   /var/www/nespro/nespro.pyt	   calendars   s"    @




s;   /intervention/<regex('([A-Z0-9]{4,11})'):hash>/pdf/originalc         C   s   d d l  m } m } d d l m } d d l m } d d l m } m	 } m
 } d |  } | | |   }	 | |	  }
 d |
 j d <d	 |  |
 j d
 <|
 S(   Ni˙˙˙˙(   RR   RS   (   RK   (   R   (   RU   R   RV   sĄ   mysql -u F5VksfQsYW -h 192.168.10.10 -pmWaq9FiGC6  --default-character-set=utf8  --skip-column-names  --raw  --execute="select npro_notify('%s', FALSE)"  NESA
  s   application/pdfs   Content-Types   inline; filename=%s.pdfs   Content-Disposition(   RH   RR   RS   RI   RK   R_   R   R   RU   R   RV   R   (   R4   RR   RS   RK   R   RU   R   RV   RP   t   pdfR"   (    (    s   /var/www/nespro/nespro.pyt   pdf_originalą   s    
s3   /intervention/<regex('([A-Z0-9]{4,11})'):hash>/pdf/c         C   s  d d l  m } m } d d l m } d d l m } d d l m } m	 } m
 } | j t d d  } | j t d d  }	 d	 |  d
 |  f }
 | |
  d | |  |  f }
 | |
  d |  }
 |
 GH| | |
   } | |  } d | j d <d |  | j d <| S(   Ni˙˙˙˙(   RR   RS   (   RK   (   R   (   RU   R   RV   s   xslt/s   intv_report.xslts   intv_xml2json.xsltsÍ   mysql -u F5VksfQsYW -h 192.168.10.10 -pmWaq9FiGC6  --default-character-set=utf8  --skip-column-names  --raw  --execute="call npro_export_xml_intervention('GER', NULL, '%s', %s)"  NESA > /tmp/intv_%s.xml
  RZ   s7   xsltproc %s /tmp/intv_%s.xml > /tmp/intv_%s_report.htmlsw   /usr/local/bin/./wkhtmltopdf.sh -q --title NESA -L 0 -R 0 -T 0 -B 0 --print-media-type -s A4 /tmp/intv_%s_report.html -s   application/pdfs   Content-Types   inline; filename=%s.pdfs   Content-Disposition(   RH   RR   RS   RI   RK   R_   R   R   RU   R   RV   R,   R-   R   (   R4   RR   RS   RK   R   RU   R   RV   Rv   Rw   RP   R   R"   (    (    s   /var/www/nespro/nespro.pyt   pdf_interventionČ   s"    


s
   /database/s   /database/<int:mode>/s$   /database/<int:mode>/<path:varargs>/i   c         C   sü   d d l  m } m } d d l m } d d l m } m } d d l m	 } m
 } | j t d d  }	 | j t d d  }
 d	 d
 j t |  j d   } | |  d |	 } | |  |  d k rŘ t d d d Sd |
 } | |  t d d d S(   Ni˙˙˙˙(   RR   RS   (   RK   (   RT   R   (   R   RV   s   xslt/s   sanitize.xslts   database.xsltsŔ   mysql -u F5VksfQsYW -h 192.168.10.10 -pmWaq9FiGC6  --default-character-set=utf8  --skip-column-names  --raw  --execute="call npro_export_xml_database('GER', '%s')"  NESA > /tmp/database.xml
  RX   R'   s;   xsltproc %s /tmp/database.xml > /tmp/database_sanitized.xmli    s   /tmpR&   s   database_sanitized.xmls<   xsltproc %s /tmp/database_sanitized.xml > /tmp/database.jsons   database.json(   RH   RR   RS   RI   RK   R_   RT   R   R   R   RV   R,   R-   R0   R   (   Rp   R   RR   RS   RK   RT   R   R   RV   Rv   Rw   RP   (    (    s   /var/www/nespro/nespro.pyt   databaseč   s    "




t   ReverseProxiedc           B   s   e  Z d    Z d   Z RS(   c         C   s   | |  _  d  S(   N(   R    (   R   R    (    (    s   /var/www/nespro/nespro.pyR     s    c         C   s   | j  d d  } | rU | | d <| d } | j |  rU | t |  | d <qU n  | j  d d  } | rz | | d <n  |  j | |  S(   Nt   HTTP_X_SCRIPT_NAMEt    t   SCRIPT_NAMEt	   PATH_INFOt   HTTP_X_SCHEMEs   wsgi.url_scheme(   t   gett
   startswithRf   R    (   R   t   environt   start_responset   script_namet	   path_infot   scheme(    (    s   /var/www/nespro/nespro.pyt   __call__  s    

(   R   R   R   R   (    (    (    s   /var/www/nespro/nespro.pyR     s   	t   __main__t   hosts   0.0.0.0t   portiX  t   debug(2   R   t   globRa   R   R_   R    R   R   R   R   R   R   R   t   werkzeugR   t   werkzeug.routingR	   R   R    Rd   R   R!   R   R   t   realpathR   R-   R
   R   t
   convertersR   t   after_requestR$   t   routeR*   R+   R.   R`   R8   R;   RQ   R{   R   R   R   R   t   objectR   t   wsgi_appt   run(    (    (    s   /var/www/nespro/nespro.pyt   <module>   sJ   0.		!4 !! #