
    k(i                     v    d dl T d dlmZmZ d dlZd dlZ G d de          Z G d dee          Z	d	 Z
d
 ZdS )    )*)abortResponseNc                   $     e Zd Z fdZd Z xZS )BaseViewMetac                 @  
 t          t          |                               | |||          
|d         }|                    dd           s
S |                    d          s+|                    d          s|                    d          r|                    d          d         }|dvr*|d                             d	          sd
|z   |d         z   }n|d         }|
_        |dz   |z   }|                     | |          
_        t          
                    ||
fdg d           g 
_        
j                                        D ]A\  }}	t          |	d          r,
j                            |                                           Bnt#          d          
S )N
__module____url__zcmf.modulesmodulescustom.)index
confluencejiraz/pub//c                  .                  j         | i |S N)dispatch)argskwargs	new_classs     ./cmf/views/base_view.py<lambda>z&BaseViewMeta.__new__.<locals>.<lambda>$   s     (<		(<d(Mf(M(M     )GETPOSTPUT)methodscmf_is_actionuq   Вьюхи можем определять только в modules и переопределять их в custom)superr   __new__get
startswithsplitreal_url_create_jinja_env	jinja_envAPPadd_url_rulecmf_action_list__dict__itemshasattrappendupper	Exception)mclnamebasesnmspcmodule_pathmodule_nameurlendpointaction_nameaction_methodr   	__class__s             @r   r"   zBaseViewMeta.__new__   s   ,,,44S$uMM	L) yyD)) 	 ""=11	%%i00	 %%h//	
 &++C004K"AAA%PYJZJeJefmJnJnAK'%	*::I&!$I"S(4/H"%"7"7["I"IIMMMM...	     )+I%.7.@.F.F.H.H J J*]=/:: J-44[5F5F5H5HIIIJ  D   r   c           
      
  	 dt           j        i}t                              d d                    |          d                    |          dd                    |          ddfD                       }||d	<   t          j        di |}d
dlm}m} d
dl	m
}m	m} |j                            t           j        j                   |j                            ||t           |	|	fd           t           j        j        |_        |S )N
autoescapec                 X    g | ]'}t           j                            t          |          (S  )ospathjoinPROJECT_DIR).0dirs     r   
<listcomp>z2BaseViewMeta._create_jinja_env.<locals>.<listcomp>>   s8     
 
 
 [#..
 
 
r   zcustom/{}/templateszmodules/{}/templateszcommon/templateszcmf/modules/{}/templateszcmf/templatesz./loaderr   )url_forget_flashed_messages)requestsessiongc                                            d          rIt                              d                    t          j                                                            ndS )N
csrf_tokenz2<input name="csrf_token" type="hidden" value={} /> )r#   flaskMarkupformatcmfviewsget_csrf_token)rL   s   r   r   z0BaseViewMeta._create_jinja_env.<locals>.<lambda>W   s\    
 {{<(( u||DKKI,,..        r   )rI   rJ   configrK   rL   rM   rO   r@   )r)   select_jinja_autoescapejinja2FileSystemLoaderrS   Environmentflask.helpersrI   rJ   flask.globalsrK   rL   rM   globalsupdater(   rW   filters)
clsr7   optionsjinja_loaderrvrI   rJ   rK   rM   rL   s
            @r   r'   zBaseViewMeta._create_jinja_env3   sR    #5
 ..
 
 *00==*11+>>&.55kBB#
 
 

 
 )**'**????????5555555555

#-/000

!5    	 	
 	
 	
  ]*
	r   )__name__r	   __qualname__r"   r'   __classcell__)r<   s   @r   r   r      sH        ) ) ) ) )V. . . . . . .r   r   c                        e Zd Zd Zd Zd ZdS )BaseViewc                 p   t           j        d                                         }dt           j        v r$t           j        d                                         }dt           j        v r$t           j        d                                         }dt           j        v r$t           j        d                                         }|dv r7|t           j        d                                         k    rt	          d           || j        v r( t          | |                                          |i |S t	          d           d S )NREQUEST_METHOD_methodmethodaction)r   r   r   HEADi  )rK   environr0   valuesr   r+   getattrlower)selfr   r   rm   s       r   r   zBaseView.dispatche   s   !1288::&&^I.4466Fw~%%^H-3355Fw~%%^H-3355F333'/RbBcBiBiBkBk8k8k #JJJT)))07400$A&AAAc




r   c                 P    | j                             |          } |j        di |S )Nr@   )r(   get_templaterender)rt   tempalte_namecontexttemplates       r   render_with_paramszBaseView.render_with_paramsv   s/    >..}==x)))))r   c                 R   |s|rt          d          	 i t                              d          d         j        }                    |j                                       |j                   fd} |dd            |dd	            |d
d            | j        |fi S )Nu@  
Функция self.render() берет окружение из текущего view
Не используйте"

self.render("example.html", qwe="qwe")

Используйте:

qwe="qwe"
self.render("example.html")

Пример:

=== view ===

@cmf.views.action
def get(self):
    qwe="qwe"
    return self.render("example.html")

=== example.html ===

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    {{ qwe }}
</body>
</html>

 r   )ry      c                 0    | v r|          |<   | = d S d S r   r@   )oldnewnamespace_paramss     r   
rename_keyz#BaseView.render.<locals>.rename_key   s5    &&&(8(= %$S))) '&r   rt   	view_selfr   	view_argsr   view_kwargs)r1   inspectstackframer_   	f_globalsf_localsr{   )rt   rx   r   r   
view_framer   r   s         @r   rw   zBaseView.renderz   s     %	6 %	"$ $ $J 	^
  ]]1]--a06

 4555
 3444	* 	* 	* 	* 	* 	
6;'''
6;'''
8]+++&t&}II8HIIIr   N)re   r	   rf   r   r{   rw   r@   r   r   ri   ri   d   sF          "* * *<J <J <J <J <Jr   ri   )	metaclassc                     d| _         | S )NT)r    )fs    r   rn   rn      s    AOHr   c                        fd}|S )Nc                       fd}|S )Nc                  R    rt           j        vrt          d            | i |S )Ni  )rK   rm   r   )r   r   r   r   s     r   wrapperz-methods.<locals>.real_action.<locals>.wrapper   s7     7>88c


1d%f%%%r   r@   )r   r   r   s   ` r   real_actionzmethods.<locals>.real_action   s)    	& 	& 	& 	& 	& 	&
 r   r@   )r   r   s   ` r   r   r      s$         r   )cmf.includerQ   r   r   uuid	tracebacktyper   objectri   rn   r   r@   r   r   <module>r      s        ! ! ! ! ! ! ! !     Z Z Z Z Z4 Z Z ZzRJ RJ RJ RJ RJv RJ RJ RJ RJv  
	 	 	 	 	r   