o á�dlã@sÊddlZddlmZmZmZmZmZmZmZmZddl Z ddl Z ddlm Z ddl m Z ddlmZddlmZddlZddlZddlmZddlZdd lmZddl Z ddlZdd lmZmZdd lmZdd lmZm Z dd l!m"Z"m#Z#m$Z$m%Z%ddl&Z&ede'dd�Z(e )e*dƒ¡Z+e j,Z,dd„Z-dd„Z.e(j/ddgd�dd„ƒZ0e(j/dddgd�dd„ƒZ1e(j/dddgd�d d!„ƒZ2e( /d"¡d#d$„ƒZ3e( /d%¡d&d'„ƒZ4e( /d(¡d)d*„ƒZ5e( /d+¡d,d-„ƒZ6e( /d.¡d/d0„ƒZ7e( /d1¡d2d3„ƒZ8e(j/d4dgd�d5d6„ƒZ9e( /d7¡d8d9„ƒZ:e(j/d:dgd�d;d<„ƒZ;e(j/d=dgd�d>d?„ƒZe( /dF¡e%dGdH„ƒƒZ?dIdJ„Z@e( /dK¡e%dLdM„ƒƒZAe( /dN¡e%dOdP„ƒƒZBe( /dQ¡dRdS„ƒZCdS)TéN)ÚFlaskÚ BlueprintÚjsonifyÚrender_templateÚredirectÚurl_forÚsessionr)Úrequesté)Úk2)Ú Component)ÚMigrate)Ú current_app©Úwraps)Ú K2admin_menusÚK2admin_Menus_Prava)Útext)Úget_jwt_identityÚ jwt_required)Ú login_userÚ current_userÚ logout_userÚlogin_requiredÚ componentsÚ templates)Útemplate_folderzdb/first-login.ymlcstˆƒ‡fdd„ƒ}|S)Ncs"dtvr ttdƒƒSˆ|i|¤ŽS)NÚusernamezcomponents.first_login)rrr)ÚargsÚkwargs©Ú view_func©úAC:\Users\sv-work\PycharmProjects\k2root_clean\k2root\k2\k2rout.pyÚdecorated_view!s z,first_login_required..decorated_viewr)r!r$r"r r#Úfirst_login_required sr%csŠt|dƒ�}t |¡p g}Wdƒn1swY‡fdd„|Dƒ}t|dƒ�}tj||dd�WdƒdS1s>wYdS)NÚrcsg|] }| d¡ˆkr|‘qS©Úcomponent_name)Úget©Ú.0Úitemr'r"r#Ú =óz)remove_from_yaml_file..ÚwF)Údefault_flow_style)ÚopenÚyamlÚ safe_loadÚdump)Ú file_pathr(ÚfZ existing_dataZ updated_datar"r'r#Úremove_from_yaml_file9s ÿ "ÿr7z/api/languagesÚGET)ÚmethodscCsZtj ¡}g}| d¡|D]}d|jd|jd}| |¡qd |¡}t|ƒ|S)NÚ languagesz components/ú/z /languagesú;)r ÚqueryÚallÚappendÚnameÚjoinÚprint)rZlanguages_pathsÚ componentZcomponent_languages_directoryÚresultr"r"r#Ú find_languageCs    rEr;ÚPOSTcCs4tj ¡}dd„|Dƒ}d|vrttdƒƒStdƒS)NcSóg|]}|j‘qSr"©r@©r+rCr"r"r#r-Uózhome..Úk2sitezcomponents.component_add_dasbú /dashboard)r r=r>rr)rÚcomponents_namesr"r"r#ÚhomeRs  rNz /first-logincCsltjdkr2tj d¡}tj d¡}tdD]}|d|kr/|d|kr/|td<ttdƒƒSqdStdƒS)NrFrÚpasswordZuserszcomponents.dashboarduBÐ�евірне ім'Ñ� кориÑ�тувача або пароль.zfirst-login.html) r ÚmethodÚformr)Úconfigrrrr)rrOÚuserr"r"r#Ú first_login]s    €rTz/change_language/cCs|td<|t_ttjƒS)NÚlang)rr Úcurrent_languagerr Úreferrer)rUr"r"r#Úchange_languagejs rXrLcsÈtj ¡}g}dd„|Dƒ}d|vrttdƒƒSzt tj›d�¡}|  ¡}dd„|Dƒ}Wnd}Ytj ¡}dd„|Dƒ}t j  d¡‰g}ˆrU‡fd d„|Dƒ}n|}tj }t d |||ˆ|d �S) NcSrGr"rHrIr"r"r#r-urJzdashboard..rKzcomponents.homeúapi/componentscSóg|]}|‘qSr"r"r*r"r"r#r-ócSrGr"rHrIr"r"r#r-…rJÚ search_querycsRg|]%}|drˆ ¡|d ¡vs%n |dr#ˆ ¡|d ¡vrn q|‘qS©r@FÚ description©ÚlowerrI©r\r"r#r-‹sÿÿÿÿþzdashboard.html)rrMÚcomponent_serverr\Úlanguage)r r=r>rrÚrequestsr)r Ú update_domainÚjsonr rrVr)rrMÚresponseÚ json_datarbÚfiltered_componentsrVr"rar#Ú dashboardqs.    þrjz&/show_components/có>t tj›d�¡}| ¡}t‡fdd„|Dƒdƒ}td|d�S)NrYc3ó �|] }|dˆkr|VqdS©ÚidNr"rI©Ú component_idr"r#Ú œó€z"show_components..zcomponent-info.html©Úselected_component©rdr)r rerfÚnextr©rprgrhrtr"ror#Úshow_components˜ó rxz+/show_components-site/crk)NrYc3rlrmr"rIror"r#rq¤rrz'show_components_site..zcomponent-info-site.htmlrsrurwr"ror#Úshow_components_site ryrzz-/install_components_git/c sœd}t tj›d�¡}| ¡}t‡fdd„|Dƒdƒ}|d}tj ||¡}|d}zŠtj  |¡s6t  |¡tj |d¡}tj  |¡sJt |dƒ  ¡d d d d d d|d|g} t  | ¡d} |d} t | dƒ�} |  d¡|  | ¡|  d¡Wdƒn1s�wYtjj|dd� ¡} | s²t|d|d|d|d|ddd�}tj |¡tj ¡dWSt jyÍ}z dt|ƒWYd}~Sd}~ww)NrrYc3rlrmr"rIror"r#rq¯rrz)install_components_git..r@Úgit_linkz __init__.pyÚazvenv/Scripts/python.exez-mZpipÚinstallz --use-pep517zgit+z --target=ú routes.pyÚ dependenciesÚ rHr^ÚversionT©r@r^r�r{rÚ installedzOInstalled successfully zError installing : )rdr)r rerfrvÚosÚpathrAÚexistsÚmakedirsr1ÚcloseÚ subprocessÚ check_callÚwriter r=Ú filter_byÚfirstÚdbrÚaddÚcommitÚCalledProcessErrorÚstr)rpÚproject_folderrgrhrtÚrepository_nameÚrepository_folderZ git_repo_urlZ init_fileÚcommandr5ÚcodeÚfilerCZ new_componentÚer"ror#Úinstall_components_git¨sR   ÿ     üú €ÿršz)/install_components/c sFd}t tj›d�¡}| ¡}t‡fdd„|Dƒdƒ}|dur!dS|d}|d}�z^tj |¡}tj |dd �tj|dd �}|  ¡tj ||d ›d �¡}t |d ƒ�} |j dd�D]} |   | ¡q[Wdƒn1smwYt |d¡� } |  |¡Wdƒn1sˆwYt |¡|d } tj || d¡} tj || ¡}tj | ¡r¸tj | ¡r¸t | |¡d}| dkrÖd|d ›d|d ›d|d ›d|d ›d� }n=| dkr÷d|d ›d|d ›d|d ›d|d ›d|d ›d� }nd|d ›d|d ›d|d ›d|d ›d|d ›d� }t |dƒ�} |   d¡|   |¡|   d¡Wdƒn 1�s3wYtjj|d d� ¡}|�s]t|d |d ||d!|dd"�}tj |¡n||_|d!|_||_d|_tj  ¡t !¡d#|d ›d$|›d%tj"›d&|d ›d'� WSt#�y¢}z d(t$|ƒ›�WYd}~Sd}~ww))NrrYc3rlrmr"rIror"r#rqòrrz1install_component_from_archive..zComponent not foundZlatest_component_dataZlatest_versionT)Úexist_ok)Ústreamr@z.zipÚwbi )Ú chunk_sizer&z.gitr~Z k2grid_basezfrom components.Ú.z.views import z app.register_blueprint(z, url_prefix='/')rKz2login_manager = k2().init_lm(app) from components.z, url_prefix='/z')r|r€rHr^r{r‚z"Component installed successfully: z vÚ z�, please wait installing requirments... zError installing component: )%rdr)r rerfrvr„r…rAr‡Úraise_for_statusr1Ú iter_contentr‹ÚzipfileÚZipFileÚ extractallÚremover†ÚisdirÚrenamer r=rŒr�rŽrr�r�r{rrƒr�Ú$search_babel_translation_directoriesÚbabel_translation_directoriesÚ Exceptionr’)rpr“rgrhrtZ archive_urlr�Zcomponent_folderZ archive_pathr˜ÚchunkZzip_refr(Zold_folder_pathZnew_folder_pathr5r—rCr™r"ror#Úinstall_component_from_archiveës~   ÿÿ ÿ  0:8    üú   þ€ÿr­z5/install-requirments/c Csøzbtjdkr2tj tj tj¡d¡}tj d|d¡}tj |¡r/|›d|›�}t j |ddd�d WStjdkr`tj tj tj¡d ¡}tj d|d¡}tj |¡r`|›d |›�}t j |ddd�d WSt y{}z d t |ƒ›�WYd}~Sd}~ww) NÚWindowsz venv/Scriptsrzrequirements.txtz/python -m pip install -r T)ÚshellÚcheckÚLinuxzvenv/binz/python3 -m pip install -r z½Requirements installed successfully please wait installing requirments components... zError installing requirmets: ) r Úplatformr„r…rAÚdirnameÚsysÚprefixÚisfiler‰Úrunr«r’)Zselected_component_nameÚ venv_bin_pathÚrequirements_fileZ pip_commandr™r"r"r#Úinstall_requirmentsDs&   ø €ÿrºz/install-requirments-componentscCspd}d}tj |¡r%tddƒ�}| ¡ ¡}Wdƒn1s wY|r6|D] }t d|›�¡}q)dSdS)Nzrequirements_components.txtr&z/install_components/ziRequirements components installed successfully z8)r„r…r¶r1ÚreadÚ splitlinesrdr))r¹Z component_idsr˜rprgr"r"r#Úinstall_requirements_components]s  ÿÿr½z*/remove_dependencies/cs¼tj |¡‰ˆs dSˆj}t tj›d�¡d}t|dƒ� }| ¡}Wdƒn1s,wY‡fdd„|Dƒ}t|dƒ� }|  |¡Wdƒn1sOwYdˆ_ t j   ¡d S) NúLComponent not found úapi/add-to-menur~r&csg|] }| ¡ˆjvr|‘qSr")Ústripr)r+Úline©rCr"r#r-€r.z'remove_dependencies..r/FzXComponent successfully turn off )r r=r)r@rdr Údomainr1Ú readlinesÚ writelinesrƒrŽrr�)rpr(r5r˜ÚlinesZ updated_linesr"rÂr#Úremove_dependenciesps   ÿ  ÿ rÇz'/add_dependencies/cCsftj |¡}|s dSd}|j}t|dƒ� }| |¡Wdƒn1s$wYd|_tj  ¡dS)Nr¾r~r|TzYDependencies added successfully ) r r=r)rr1r‹rƒrŽrr�)rprCr5r—r˜r"r"r#Úadd_dependenciesŠs   þ rÈz'/remove-component/c CsŒd}tj |¡}|j}tj ||¡}ztj |¡rt  |¡|r+t j   |¡t j   ¡WdStyE}z dt|ƒWYd}~Sd}~ww)NrzWComponent removed successfully zError removing component: )r r=r)r@r„r…rAr†ÚshutilÚrmtreerŽrÚdeleter�r«r’)rpr“rCr”r•r™r"r"r#Úremove_componentŸs     €þrÌz/api/add-to-menucCsg}t tj›d�¡}| | ¡d¡| ¡dd}| ¡ddD]}d|d dd¡}|d}t|||ƒq$tj   ¡}d d „|Dƒ}|D]C}t tj›|›d�¡}|j d krŒ| | ¡d¡| ¡dd}| ¡ddD]}d|d dd¡}|d}t|||ƒqtqIqI|S) Nú/menu-admin-itemsrÚtitleÚchildrenÚk2itmÚtor;Ú-cSrGr"rHrIr"r"r#r-çrJzadd_to_menu..éÈ) rdr)r rÃr?rfÚreplaceÚadd_menu_with_permissions_dbr r=r>Ú status_code)ÚdatargÚ prev_menur,Ú name_menuÚ caption_menurrMr"r"r#Ú add_to_menuÜs,  ýrÛz/api/main-menu/c Cs¨tj ¡}dd„|Dƒ}d|vrt ¡}g}t tj›d�¡}t   |¡}|  ¡D]'}g}|dD]}d|d  dd ¡|vrC|  |¡q0|rO||d<|  |¡q(t|ƒS) NcSrGr"rHrIr"r"r#r-rJz"get_admin_menu..rKr¿rÏrÐrÑr;rÒ)r r=r>rZ get_role_idrdr)r rÃrZget_menu_items_by_rolesrfrÔr?r) rrMZrole_idZ filter_menurgZmenu_items_listr,Zfiltered_childrenZimr"r"r#Úget_admin_menuýs$     € €rÜcCs–tdƒ}tj |d|i¡ ¡}|d}|dkrIt||||d�}tj |¡tj ¡t|j ddddddddddddd� }tj |¡tj ¡dSdS)Nz>SELECT COUNT(*) FROM k2admin_menus WHERE namemenu = :name_menurÙr)ZnamemenuZprevmenuZcaptionÚ module_nameéÿÿÿÿ) Úmenuidrr&r/ÚiÚdÚcÚexpÚimpÚsettableÚcutpastÚenableZroleid) rrŽrÚexecuteÚfetchonerr�r�rrß)rÙrØrÚÚmenurDÚcountZnew_menu_elementZ new_pravar"r"r#rÕs<ü  ó årÕú/component-addcsžzt tj›d�¡}| ¡}dd„|Dƒ}Wnd}Ytj d¡‰g}ˆr1‡fdd„|Dƒ}n|}tj  ¡}dd„|Dƒ}dd„|Dƒ}t d|ˆ||d �S) NrYcSrZr"r"r*r"r"r#r-=r[z&component_add_dasb..r\csTg|]&}|drˆ ¡|d ¡vs&n  |dr$ˆ ¡|d ¡vrn q|‘qSr]r_rIrar"r#r-Es"ÿÿÿÿþÿýcSrGr"rHrIr"r"r#r-MrJcSsg|]}|j|ji‘qSr")r@r�rIr"r"r#r-Nszdashboard-add.html)rbr\rMÚcomponents_version) rdr)r rerfr rr r=r>r)rgrhrbrirrMrír"rar#Úcomponent_add_dasb6s"  ÿrîú/component-listcCstj ¡}td|d�S)Nzdashboard-list.html©r)r r=r>rrðr"r"r#Úcomponent_list_dasbUs  rñrÍcCs&dddidddœdddœgd œg}|S) NzAdd componentsÚiconzmdi-account-circle-outlinezInstall new componentsrì)rÎrÑzInstalled componentsrï)rÎròrÏr")rêr"r"r#Ú menu_items_sþýÿ ró)Dr£Úflaskrrrrrrrr„rÉr Úk2cfgr Zk2compr Z flask_migrater rdr‰rr2Ú functoolsrr´Z k2admmenurrÚ sqlalchemyrÚflask_jwt_extendedrrÚ flask_loginrrrrr²Ú__name__Ú components_bpr3r1rRrŽr%r7ÚrouterErNrTrXrjrxrzršr­rºr½rÇrÈrÌrÛrÜrÕrîrñrór"r"r"r#Ús†(            &   B X     <   #