
    Ib
                         d Z ddlZddlmZ ddlZddlmZ ddlmZ ddl	m
Z
  G d d	e      Z G d
 de      Z G d de      Z G d de
eej                        Zy)z+Tornado handlers for the terminal emulator.    N)web)utcnow   )IPythonHandler)WebSocketMixinc                   4    e Zd ZdZej
                  d        Zy)TerminalHandlerzRender the terminal interface.c                 N    | j                  | j                  dd|              y )Nzterminal.htmlzterminals/websocket/)ws_path)writerender_template)self	term_names     </usr/lib/python3/dist-packages/notebook/terminal/handlers.pygetzTerminalHandler.get   s.    

  .yk: ! 	
    N__name__
__module____qualname____doc__r   authenticatedr    r   r   r	   r	      s    (
 
r   r	   c                   4    e Zd ZdZej
                  d        Zy)NamedTerminalHandlerz/Creates and renders a named terminal interface.c                     | j                   j                         }|d   }| j                  j                  j	                  dd|z         }| j                  |       y )Nnamezterminals/newz
terminals/)terminal_managercreaterequestpathreplaceredirect)r   modelr   new_paths       r   r   zNamedTerminalHandler.get   sL    %%,,.&M	<<$$,,_lY>VWhr   Nr   r   r   r   r   r      s    9   r   r   c                   4    e Zd ZdZej
                  d        Zy)NewTerminalHandlerzBCreates and renders a terminal interface using the named argument.c                    |dk(  rt        j                  dd      | j                  j                  j	                  d| |      }|| j
                  j                  v ra| j                  d|       | j                  d       | j                  t        j                  | j
                  j                  |                   y | j
                  j                  |       | j                  |       y )Nnewi  z Terminal name 'new' is reserved.znew/Locationi.  )r   	HTTPErrorr    r!   r"   r   	terminals
set_header
set_statusfinishjsondumpsget_terminal_modelcreate_with_namer#   )r   r   r%   s      r   r   zNewTerminalHandler.get&   s    --%GHH<<$$,,tI;-?K--777OOJ1OOC KK

4#8#8#K#KI#VWX..y9hr   Nr   r   r   r   r'   r'   $   s    L   r   r'   c                   @     e Zd Zd Z fdZ fdZd fd	Zd Z xZS )
TermSocketc                      y)zvTerminado adds redundant origin_check

        Tornado already calls check_origin, so don't do anything here.
        Tr   r   s    r   origin_checkzTermSocket.origin_check7   s    
 r   c                     | j                         st        j                  d      |d   | j                  j                  vrt        j                  d      t        |   |i |S )Ni  r   i  )get_current_userr   r+   term_managerr,   superr   )r   argskwargs	__class__s      r   r   zTermSocket.get>   sY    $$&--$$Aw$++555--$$w{D+F++r   c                 D    t         |   |       | j                          y )N)r<   
on_message_update_activity)r   messager?   s     r   rA   zTermSocket.on_messageE   s    7#r   c                 H    t         |   ||       | j                          y )N)binary)r<   write_messagerB   )r   rC   rE   r?   s      r   rF   zTermSocket.write_messageI   s!    gf5r   c                     t               | j                  j                  d<   | j                  | j                  j
                  v r1t               | j                  j
                  | j                     _        y y )Nterminal_last_activity)r   applicationsettingsr   r   r,   last_activityr7   s    r   rB   zTermSocket._update_activityM   sW    >Dh!!":;>>T22<<<LRHD!!++DNN;I =r   )F)	r   r   r   r8   r   rA   rF   rB   __classcell__)r?   s   @r   r5   r5   5   s    ,  Ur   r5   )r   r0   tornador   	terminadonotebook._tzr   base.handlersr   base.zmqhandlersr   r	   r   r'   r5   r   r   r   <module>rR      sX    1
     * -	
n 	
 >     "U1E1E Ur   