o ›´’dÈXã@s„ddlZddlmZmZmZmZmZmZmZmZddl Z ddl Z ddlm Z ddl m Z ddlmZddlmZddlZddlZddlmZddlZdd lmZddl Z ddlZdd lmZmZdd lmZed ed d�Ze  e!dƒ¡Z"e j#Z#dd„Z$dd„Z%ej&ddgd�dd„ƒZ'ej&dddgd�e$dd„ƒƒZ(ej&dddgd�dd„ƒZ)e &d ¡d!d"„ƒZ*e &d#¡e$d$d%„ƒƒZ+e &d&¡d'd(„ƒZ,e &d)¡d*d+„ƒZ-e &d,¡d-d.„ƒZ.ej&d/dgd�d0d1„ƒZ/e &d2¡d3d4„ƒZ0ej&d5dgd�d6d7„ƒZ1ej&d8dgd�d9d:„ƒZ2e &d;¡d¡d?d@„ƒZ4e &dA¡dBdC„ƒZ5ej&dDdgd�dEdF„ƒZ6e &dG¡dHdI„ƒZ7dJdK„Z8e &dL¡dMdN„ƒZ9dS)OéN)ÚFlaskÚ BlueprintÚjsonifyÚrender_templateÚredirectÚurl_forÚsessionr)Úrequesté)Úk2)Ú Component)ÚMigrate)Ú current_app©Úwraps)Ú K2admin_menusÚK2admin_Menus_Prava)ÚtextÚ componentsÚ templates)Útemplate_folderzdb/first-login.ymlcstˆƒ‡fdd„ƒ}|S)Ncs"dtvr ttdƒƒSˆ|i|¤ŽS)NÚusernamezcomponents.first_login)rrr)ÚargsÚkwargs©Ú view_func©úFC:\Users\sv-work\PycharmProjects\test-delete-today\k2root\k2\k2rout.pyÚdecorated_view s z,first_login_required..decorated_viewr)rrrrrÚfirst_login_requiredsrcsŠ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!rrÚ <óz)remove_from_yaml_file..ÚwF)Údefault_flow_style)ÚopenÚyamlÚ safe_loadÚdump)Ú file_pathr"ÚfZ existing_dataZ updated_datarr!rÚremove_from_yaml_file8s ÿ "ÿr1z/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ÚresultrrrÚ find_languageBs    r?z/homeÚPOSTcCstdƒS)Nú /dashboard)rrrrrÚhomeQsrBz /first-logincCsltjdkr2tj d¡}tj d¡}tdD]}|d|kr/|d|kr/|td<ttdƒƒSqdStdƒS)Nr@rÚpasswordZusersúcomponents.dashboarduBÐ�евірне ім'Ñ� кориÑ�тувача або пароль.zfirst-login.html) r ÚmethodÚformr#Úconfigrrrr)rrCÚuserrrrÚ first_loginWs    €rIz/change_language/cCs|td<|t_ttdƒƒS)NÚlangrD)rr Úcurrent_languagerr)rJrrrÚchange_languageds rLrAcsšzt tj›d�¡}| ¡}dd„|Dƒ}Wnd}Ytj ¡}dd„|Dƒ}tj  d¡‰g}ˆr=‡fdd„|Dƒ}n|}tj }t d|||ˆtj d�S) Núapi/componentscSsg|]}|‘qSrrr$rrrr'tszdashboard..cSóg|]}|j‘qSr©r:©r%r=rrrr'zóÚ search_querycsRg|]%}|drˆ ¡|d ¡vs%n |dr#ˆ ¡|d ¡vrn q|‘qS)r:FÚ description)ÚlowerrP©rRrrr'€sÿÿÿÿþzdashboard.html)rÚcomponents_namesÚcomponent_serverrRÚlanguage) Úrequestsr#r Ú update_domainÚjsonr r7r8r rrKrÚmenu)ÚresponseÚ json_datarWrrVZfiltered_componentsrKrrUrÚ dashboardks$  þr_z&/show_components/cs>t tj›d�¡}| ¡}t‡fdd„|Dƒdƒ}td|d�S)NrMc3ó �|] }|dˆkr|VqdS©ÚidNrrP©Ú component_idrrÚ ‘ó€z"show_components..zcomponent-info.html)Úselected_component)rYr#r rZr[Únextr)rdr]r^rgrrcrÚshow_components�s riz-/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)NrrMc3r`rarrPrcrrreœrfz)install_components_git..r:Úgit_linkz __init__.pyÚazvenv/Scripts/python.exez-mZpipÚinstallz --use-pep517zgit+z --target=ú routes.pyÚ dependenciesÚ rOrSÚversionT©r:rSrprjrnÚ installedzOInstalled successfully zError installing : )rYr#r rZr[rhÚosÚpathr;ÚexistsÚmakedirsr+ÚcloseÚ subprocessÚ check_callÚwriter r7Ú filter_byÚfirstÚdbrÚaddÚcommitÚCalledProcessErrorÚstr)rdÚproject_folderr]r^rgÚrepository_nameÚrepository_folderZ git_repo_urlZ init_fileÚcommandr/ÚcodeÚfiler=Z new_componentÚerrcrÚinstall_components_git•sR   ÿ     üú €ÿr‰z)/install_components/c sÊd}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}d|d ›d|d ›d|d ›d|d ›d|d ›d� }t |dƒ�} |   d¡|   |¡|   d¡Wdƒn1sõwYtjj|d d� ¡}|�st|d |d||d|dd�}tj |¡n||_|d|_||_d|_tj  ¡t !¡d|d ›d |›d!tj"›d"|d ›d#� WSt#�yd}z d$t$|ƒ›�WYd}~Sd}~ww)%NrrMc3r`rarrPrcrrreßrfz1install_component_from_archive..zComponent not foundZlatest_component_dataZlatest_versionT)Úexist_ok)Ústreamr:z.zipÚwbi )Ú chunk_sizer z.gitrmzfrom components.Ú.z.views import z app.register_blueprint(z, url_prefix='/z')rkrorOrSrjrqz"Component installed successfully: z vÚ z�, please wait installing requirments... zError installing component: )%rYr#r rZr[rhrsrtr;rvÚraise_for_statusr+Ú iter_contentrzÚzipfileÚZipFileÚ extractallÚremoveruÚisdirÚrenamer r7r{r|r}rr~rprjrnrrrÚ$search_babel_translation_directoriesÚbabel_translation_directoriesÚ Exceptionr�)rdr‚r]r^rgZ archive_urlrpZcomponent_folderZ archive_pathr‡ÚchunkZzip_refr"Zold_folder_pathZnew_folder_pathr/r†r=rˆrrcrÚinstall_component_from_archiveØsv   ÿÿ ÿ  8    üú   þ€ÿrœz5/install-requirments/cCsFtƒtj d|d¡}tj |¡r!tj›d|›�}tj|ddd�dS)Nrzrequirements.txtz/python -m pip install -r T)ÚshellÚcheckzµRequirements installed successfully please wait installing requirments components... ) Úget_admin_menursrtr;Úisfiler Ú venv_bin_pathrxÚrun)Zselected_component_nameÚrequirements_fileZ pip_commandrrrÚinstall_requirments,s  r¤z/install-requirments-componentscCspd}d}tj |¡r%tddƒ�}| ¡ ¡}Wdƒn1s wY|r6|D] }t d|›�¡}q)dSdS)Nzrequirements_components.txtr ú/install_components/ziRequirements components installed successfully z8)rsrtr r+ÚreadÚ splitlinesrYr#)r£Z component_idsr‡rdr]rrrÚ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-menurmr csg|] }| ¡ˆjvr|‘qSr)Ústriprn)r%Úline©r=rrr'_r(z'remove_dependencies..r)FzXComponent successfully turn off )r r7r#r:rYr Údomainr+Ú readlinesÚ writelinesrrr}rr)rdr"r/r‡ÚlinesZ updated_linesrr­rÚremove_dependenciesOs   ÿ  ÿ r²z'/add_dependencies/cCsftj |¡}|s dSd}|j}t|dƒ� }| |¡Wdƒn1s$wYd|_tj  ¡dS)Nr©rmrkTzXDependencies added successfully ) r r7r#rnr+rzrrr}rr)rdr=r/r†r‡rrrÚadd_dependenciesis   þ 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 r7r#r:rsrtr;ruÚshutilÚrmtreer}rÚdeleterršr�)rdr‚r=rƒr„rˆrrrÚremove_component}s     €þr·z/component/addcCs\z#t tj›d�¡}| ¡}|D]}tj›d|d›�|d<qWt|ƒSd}Yt|ƒS)NrMr¥rbZbutton)rYr#r rZr[r®r)r]r^r&rrrÚ component_add—sÿþr¸z/component/listcCs˜g}tj ¡}|D]>}i}|j|d<|j|d<|j|d<|j|d<tj›d|j›�|d<tj›d|j›�|d<tj›d |j›�|d <|  |¡q t |ƒS) Nr:rbrSrpz/remove_dependencies/Z button_offz/add_dependencies/Z button_onz/remove-component/Z button_del) r r7r8r:rbrSrpr r®r9r)Úcomponent_listrr=Zcomponent_dictrrrr¹¦s      r¹z/api/add-to-menucCs$g}t tj›d�¡}| | ¡d¡| ¡dd}| ¡ddD]}|d}|d}t|||ƒq$tj  ¡}dd„|Dƒ}|D]H}t tj›|›d�¡}|j dkr€| | ¡d¡| ¡dd}| ¡ddD]}|d}|d}t|||ƒqnn||D]}||d <q„qC|t_ tj S) Nú/menu-admin-itemsrÚtitleÚchildrenÚtocSrNrrOrPrrrr'ÄrQzadd_to_menu..éÈr") rYr#r r®r9r[Úadd_menu_with_permissions_dbr r7r8Ú status_coder\)Údatar]Ú prev_menur&Ú name_menuÚ caption_menurrVrrrÚ add_to_menu¹s4  ý ÿrÅz/api/main-menu/cCst tj›d�¡tjS)Nrª)rYr#r r®r\rrrrrŸØsrŸ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_namer ) Úmenuidrr r)ÚiÚdÚcÚexpÚimpÚsettableÚcutpastÚenableZroleid) rr}rÚexecuteÚfetchonerr~rrrÇ)rÃrÂrÄr\r>ÚcountZnew_menu_elementZ new_pravarrrr¿Þs<ü  ó är¿rºcCs&dddidddœdddœgd œg}|S) NzAdd componentsÚiconzmdi-account-circle-outlinezInstall componentsz component-add)r»r½zInstalled componentszcomponent-list)r»rÓr¼r)r\rrrÚ menu_itemssþýÿ rÔ):r’Úflaskrrrrrrrrsr´r Úk2cfgr Zk2compr Z flask_migrater rYrxrr,Ú functoolsrÚsysZ k2admmenurrÚ sqlalchemyrÚ__name__Ú components_bpr-r+rGr}rr1Úrouter?rBrIrLr_rir‰rœr¤r¨r²r³r·r¸r¹rÅrŸr¿rÔrrrrÚsz(              B S         %