
lQTc           @@  sL  d  d l  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  d l	 m
 Z
 d  d l Z d  d l Z d  d l m Z m Z m Z d  d l m Z 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 m Z m Z e Z  d   Z! d   Z" d   Z# d e j$ f d     YZ% d S(   i    (   t   absolute_import(   t   urlopenN(   t   gethostname(   t   HTTPUnauthorizedt   HTTPNotFoundt	   HTTPFound(   t
   conversiont	   structuret   cache(   t   benchmarking(   t   customi   (   t   utilR
   (   t   urlt   unurlt   edit_urlc         c@  sa   t  |   } g  } x2 | D]* } | j d  s6 | Vq | j |  q Wx | D] } | VqN Wd  S(   Nt   set_(   t   itert
   startswitht   append(   t   objt   it   qt   s(    (    sS   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazki/edit.pyt	   metafirst   s    c   	      C@  s`  |  j  d  s |  d 7}  n  | j  d  s8 | d 7} n  | j  d  sT | d 7} n  t j   } t j   } t j   } | j |   | j   | j |  | j   | j |  | j   t j d d d d d d d d | j | j | j g d t j d	 t j } | j	   \ } } | j
 d k r>t | j
 |   n  | j   | j   | j   | S(   Ns   
t   merges   -ps   -Ls   Current Versiont   Originals   Your Versiont   stdoutt   stderri    i   (   i    i   (   t   endswitht   tempfilet   NamedTemporaryFilet   writet   flusht
   subprocesst   Popent   namet   PIPEt   communicatet
   returncodet   EnvironmentErrort   close(	   t   origt   headt   minet   orig_ft   head_ft   mine_ft   pt   outt   err(    (    sS   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazki/edit.pyR       s8    





c   	      C@  s  t  j t j d } | j   } |  j d  } | j d  } | sK t  x | r | j d  } yT t | | d  r t	 | | d  } wN n$ t | |  r t	 | |  } wN n  Wn t
 k
 r n X| j d |  PqN Wt j j } d  t j _ y t j j d } Wn t k
 r%d  } n Xd  t j j d <t | d  rW| j |   } n | |   } t j j d d  k	 st  t j j d } | t j _ | d  k	 r| t j j d <n t j j d =| | f S(   Nt   application_root_modulet   /i    t   _s   Content-typet   _default(   t   syst   modulest   tgt   configt   RootControllert   splitt   popt   AssertionErrort   hasattrt   getattrt   UnicodeEncodeErrort   insertt   pylonst   requestt   response_extt   Nonet   responset   headerst   KeyErrorR5   (	   R   t   roott   contrt   bitst   bRD   t   content_typet   rest   res_type(    (    sS   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazki/edit.pyt   data_for_urlD   sF    	

t   Editc           B@  sg  e  Z d    Z d   Z e j d d  d d d e d d   Z e j   d    Z	 e j d d  d d d d d d d   Z
 e j   d	    Z e j d d
  d    Z e j   d    Z e j   d    Z e j d d d d  d    Z d   Z e j   d    Z e j   d    Z e j d d  d d   Z e j   d    Z RS(   c         C@  s  d } d } ydd d  l  } d d l m } m } | j   t j |  } | d  k r] d  S| j   | j	   } | j
   }	 |	 d  k	 r | g  | j
   j   D] }
 |
 | k r |
 ^ q 7} n  t |  | k r | j | |  } n  x] | D]U } | j   } t |  | k r*| j | |  } n  | j | j | d d d q WWd  QXt j d  k	 rot j j   n  Wn t j   \ } } } d d  l } d j | j | | |   } d	 t j k rt j | d
 d t j d	 | f d t j d d t j d q  n Xd  S(   Ni   i   i    (   t   renderert   dbu   htmlt   priorityit    t   error_subject_prefixt   subjects   Precache %s%st	   from_addrt   error_email_fromt   to_addrt   email_to(   t   randomt   bazbaseRR   RS   t   begin_transactionR   t   get_elementRE   t   get_ancestorst   get_descendantst
   get_parentt   get_childrent   lent   samplet
   list_propst   start_rendert   enamet   basecustt   version_control_hookt   prefetch_checkoutR6   t   exc_infot	   tracebackt   joint   format_exceptionR8   R9   R   t
   send_email(   t   selfRh   t   ELEMENTSt   PROPVALS_PERR\   RR   RS   t   elmt   targt   parentt   et   tt	   propnamest   typet   valuet   tbRm   t   msg(    (    sS   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazki/edit.pyt   precache_stuffm   sD    c         C@  s5   d d  l  } | j d |  j d | j f  j   d  S(   Ni    t   targett   args(   t	   threadingt   ThreadR~   Rh   t   start(   Rq   Rt   R   (    (    sS   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazki/edit.pyt   start_precache_thread   s    t   templates!   mako:bazki.templates.edit.elementRU   c         K@  s  t  d  y t j j d k } Wn t k
 r< t } n X| d  k	 rY t j |  n  t	 | d  j
   pq d } | r t j j j d  r t j j j d  d d }	 n d }	 t |	 | j d   }
 | d  k	 s t |  d k rt j   rt j t j j  t j |
  n  | d  k	 rt j |  } | d  k rut j d	 | | f  t j t j d
   qt j |  } | d  k r| j |  } q| j |  nh t j |  } | d  k rt j j d k rt j |
  qt j j d t d |  d d d d  Sn  | d  k	 rd d l m } t j j r[| } t j j d } n0 d | k rv| } d } n | j d  \ } } | j  | | | |  Si  } xt! |  D]} | j" d  rTt	 | t d  d  } t	 | | j# d  } | d | j$ d d  } | rJ| j
   | j
   k rJ| | d  | f | | <qB| | =q| d k r| j% d  k rt j d  qB| j&   rt j d  qB| j% } | j'   t j d  t j t j |	 | j( j d    q| d k rF| j  d d
  j
   } | r6| | _( t j |	 | j d   }
 qBt j d  q| d  k rx| j) | | k rB| | | _) qBq| j" d!  rt	 | t d!  d  } d | k r| j d d  \ } } t j |  } n | } | } d | | k rBd | | k r7| d | j$ d d  } t	 | j* |  d  } n | | k sIt+  d  } | | } t, | t  r~t- j. | d"  } n^ t/ | d#  r| j# } nC t, | t0  r| d } n  | j$ d d  j$ d$ d  j d  } | r,| d  k	 r,| j
   | j
   k r,| | | t1 | | |  f | | <q?| j2 | |  qBqqW| rt |  d k r| s| s| | k s| d  k	 st |  d k rt3 d% |
   n3| st |  d k ri | d& 6t4 d' 6| d( 6| d) 6} | r| | d( d* <n  t j5   t |  d k r| | d+ <xR | D]J } | | d, d  k rR| d( d | =q&| d( d | =| d( d! | =q&Wt j j d | d d d d-  S| SnA t6 s|  j7 |  n  i | d& 6t d' 6i  d( 6d. | d) 6t6 d/ 6SWd  QXd  S(0   Ns   edit controllert   POSTs   utf-8u   DocumentationHomeR3   is   ./i    s8   You can't make %s a child of the nonexistant element %s!RU   t   template_varsRh   t   template_enginet   makot   template_names   bazki.templates.edit.noelementi   (   t   gettingt   .t   defaultt   remove_t   orig_s   
s   
t   deletes"   You can't delete the root element!s*   You can't delete an element with children!s   Successfully deleted.t   renamet   newnames   Invalid rename!t   orgmodeR   t   b64t   files   t   locationt   elementt   previewR   t   commit_messageRv   t	   conflictsi   s   bazki.templates.edit.merges   %s: t	   nothreads(8   R	   RB   RC   t   methodRH   t   FalseRE   R   t   set_commit_messaget   unicodet   stripR   R   R;   t   encodeRd   R
   t	   is_editorR8   t   flasht   EDITOR_PREDt   messaget   redirectR   R_   t   create_childt
   set_parentt   rendert   dictRU   R   RD   t   getR   R   R{   t   replaceRv   t   hasChildrenR   Rh   R   t   get_propR=   t
   isinstancet   base64t	   b64decodeR>   t   listR   t   set_propR   t   Truet   make_previewR   R   (   Rq   Rh   t	   getattachRv   R   R   t   kwt   is_postt   menamet   cprefixt   canont   pelmRw   R   t   propt   extR   t   keyt   pnameR*   R)   t   stt   newnt   setet   setpnamet   valt   ret(    (    sS   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazki/edit.pyR5      s    
 +
	
	
)	
		

c         C@  s,   |  j  | j d  d | d d | | f S(   Ns   utf-8Rv   R   s   Added new %s '%s'.(   R5   R   (   Rq   Rh   Rv   (    (    sS   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazki/edit.pyt   new;  s    s"   mako:bazki.templates.edit.propertyc   	      C@  s$  t  | d  } t j |  } | d  k r? t j | |  } n | d  k	 r[ | j |  n  t j d |  | d  k	 r | j |  n  | d  k	 r | j	 | d k  n  | d  k	 r | j
 |  n  | r | j |  n  t j j d k s | rt j t j | j j d    n  i | d 6S(   Ns   utf-8s   Edited prop %s.R   R   R   (   R   R   R   RE   t   create_propt
   set_flavorR   R   t   set_defaultt   set_visiblet   set_commentt   set_nameRB   RC   R   R8   R   R   R#   R   (	   Rq   t   propnamet   flavorR   t   visiblet   commentR   R   R   (    (    sS   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazki/edit.pyt   propertyB  s$    %c         C@  sY   t  j d  } d } d | k r@ | d j   | k r@ d } n  |  j d d | d d S(	   Nu	   MergeTests   The flag should be Maroon!u   tests   The flag should be Magenta!t	   MergeTestt	   orig_testt   set_testt   Blue(   R   R_   R   R5   (   Rq   t   testR)   (    (    sS   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazki/edit.pyt	   mergetest]  s
    "	s   mako:bazki.templates.edit.testc         C@  s   i  S(   N(    (   Rq   (    (    sS   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazki/edit.pyR   e  s    c         C@  s   t  d   d  S(   Ns   /edit/error visited(   t	   Exception(   Rq   (    (    sS   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazki/edit.pyt   errori  s    c         C@  sF   d d  l  } | j d  t j d j t j j j d  d    d  S(   Ni    s   /edit/warning visitedR3   i(	   t   warningst   warnR8   R   Rn   RB   RC   R   R;   (   Rq   R   (    (    sS   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazki/edit.pyt   warningm  s    s"   mako:bazki.templates.edit.propvalsRM   s   text/javascriptc      	   K@  s   d d l  m } g  | D] } t | d  ^ q } | j t | d  | |  } g  | D] } | | k rW | ^ qW } t d | d | d | d |  S(   Ni    (   RR   s   utf-8t
   result_mapRh   t   formatt	   remainder(   R]   RR   R   t   wait_for_renderR   (   Rq   Rh   R   Ry   RR   t   pnR   R   (    (    sS   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazki/edit.pyt   propvalss  s    "	%c         C@  s   t  j j r! t t  j j  } n d  } t t  j j j d d  d  } | d  k sw | j | d  sw | j d  r t j	 |  n t j	 |  d  S(   NR3   i   i    s   /clear_caches   /login(
   RB   RC   t   referrerR   RE   R   t   rsplitR   R8   R   (   Rq   t   destt   edit(    (    sS   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazki/edit.pyt   go_back  s    "c         C@  so   t  j j t j j  s7 t j t  j j  t	    n  t
 j   t j d t j   t   f  |  j   d  S(   Ns.   All cache entries invalidated (from %s on %s).(   R
   R   t   is_metRB   RC   t   environR8   R   R   R   R   t   invalidate_cacheR   t	   cache_dirR   R   (   Rq   (    (    sS   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazki/edit.pyt   clear_cache  s    
		c         C@  s   t  j j t j j  s7 t j t  j j  t	    n  t
 j d  xT t j   D]F } | j   } x1 | D]) } | | k rj | | j | | _ qj qj WqQ Wt j d  |  j   d  S(   Ns   Automated yaml cleaning.s   All .yaml files cleaned up.(   R
   R   R   RB   RC   R   R8   R   R   R   R   R   R   t   list_all_elementst   get_final_mapR{   R   (   Rq   Rw   t	   final_mapR/   (    (    sS   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazki/edit.pyt   lintify  s    s   mako:bazki.templates.edit.evalc         C@  sE   d  } | j d d  } | r3 t j | d  } n  i | d 6| d 6S(   Ns   
s   
t   htmlt   resultt   wikitext(   RE   R   R   t   convert_markup(   Rq   R   R   (    (    sS   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazki/edit.pyt   eval  s
    c         C@  s"  d d l  m } d } d } xx | D]p \ } } | d | j   7} xM | D]E \ } } } | d | | f 7} | d | 7} | | 7} | d 7} qJ Wq# W| d	 7} t j j d
 k r d t j j d <| Sd d l m	 }	 m
 }
 |
   } | j | d
  |	 d d
 |  d t j j d <| j   S(   Ni   (   t   FONTS_BY_CATEGORYs  Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.sB   \documentclass{article}

\usepackage{fontspec}

\begin{document}

s   \section{%s}

s   {\fontspec[%s]{%s}
s   \subsection{%s}
s   
}

s   \end{document}
s   .texs
   text/plains   Content-typei    (   t   TRANSLATORSt   Intermeds   .pdfs   application/pdf(   t   fontsR   t
   capitalizeRB   RC   RD   RF   RG   t   bazbase.translatorsR   R   t   setDatat   asData(   Rq   R   t   TEXTt   latext   catR   t   fR#   R   R   R   t   im(    (    sS   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazki/edit.pyt   lipsum  s(    

	N(   t   __name__t
   __module__R~   R   R8   t   exposeRE   R   R5   R   R   R   R   R   R   R   R   R   R   R   R  (    (    (    sS   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazki/edit.pyRQ   k   s,   	)		(&   t
   __future__R    t   urllibR   R   R6   t   osR   R!   t   socketR   RB   R8   t	   webob.excR   R   R   R]   R   R   R   t   bazbase.benchmarkR	   R
   Ri   RU   R   t   translatorsR   R   R   R   R   R   R   RP   t   TGControllerRQ   (    (    (    sS   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/bazki/edit.pyt   <module>   s    $		$	'