
    AIgk                     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           
      
  	 t                      }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 )Nc                 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)rK   s   r   r   z0BaseViewMeta._create_jinja_env.<locals>.<lambda>T   s\    
 {{<(( u||DKKI,,..        r   )rH   rI   configrJ   rK   rL   rN   r?   )dictjinja2FileSystemLoaderrR   Environmentflask.helpersrH   rI   flask.globalsrJ   rK   rL   globalsupdater)   r(   rV   filters)
clsr7   optionsjinja_loaderrvrH   rI   rJ   rL   rK   s
            @r   r'   zBaseViewMeta._create_jinja_env3   sJ   && ..
 
 *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  )rJ   environr0   valuesr   r+   getattrlower)selfr   r   rl   s       r   r   zBaseView.dispatchb   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)rs   tempalte_namecontexttemplates       r   render_with_paramszBaseView.render_with_paramss   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   )rx      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   rs   	view_selfr   	view_argsr   view_kwargs)r1   inspectstackframer^   	f_globalsf_localsrz   )rs   rw   r   r   
view_framer   r   s         @r   rv   zBaseView.renderw   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)rd   r	   re   r   rz   rv   r?   r   r   rh   rh   a   sF          "* * *<J <J <J <J <Jr   rh   )	metaclassc                     d| _         | S )NT)r    )fs    r   rm   rm      s    AOHr   c                        fd}|S )Nc                       fd}|S )Nc                  R    rt           j        vrt          d            | i |S )Ni  )rJ   rl   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.includerP   r   r   uuid	tracebacktyper   objectrh   rm   r   r?   r   r   <module>r      s        ! ! ! ! ! ! ! !     W W W W W4 W W WtRJ RJ RJ RJ RJv RJ RJ RJ RJv  
	 	 	 	 	r   