o ïòŽdñIã@s2ddlZddlmZmZmZmZmZmZmZm Z ddl Z ddl Z ddlm Z ddl mZddlmZddlmZddlZddlZddlmZddlZdd lmZddl Z ddlZed ed d �Ze ed ƒ¡ZejZdd„Z dd„Z!dd„Z"ej#ddgd�dd„ƒZ$ej#ddgd�dd„ƒZ%ej#dddgd�e dd„ƒƒZ&ej#d ddgd�d!d"„ƒZ'e #d#¡d$d%„ƒZ(e #d&¡e d'd(„ƒƒZ)e #d)¡d*d+„ƒZ*e #d,¡d-d.„ƒZ+e #d/¡d0d1„ƒZ,ej#d2dgd�d3d4„ƒZ-e #d5¡d6d7„ƒZ.ej#d8dgd�d9d:„ƒZ/ej#d;dgd�d¡d?d@„ƒZ1e #dA¡dBdC„ƒZ2dS)DéN)ÚFlaskÚ BlueprintÚjsonifyÚrender_templateÚredirectÚurl_forÚsessionÚg)Úrequesté)Úk2)Ú Component)ÚMigrate)Ú current_app©ÚwrapsÚ componentsÚ templates)Útemplate_folderzdb/first-login.ymlcstˆƒ‡fdd„ƒ}|S)Ncs"dtvr ttdƒƒSˆ|i|¤ŽS)NÚusernamezcomponents.first_login)rrr)ÚargsÚkwargs©Ú view_func©ú;C:\Users\sv-work\PycharmProjects\k2root\k2root\k2\k2rout.pyÚdecorated_views z,first_login_required..decorated_viewr)rrrrrÚfirst_login_requiredsrcCsÀt|dƒ�}t |¡p g}Wdƒn1swY|s!d}n tdd„|Dƒƒd}t||d�D] \}}||d<| |¡q2t|dƒ�}tj||dd �WdƒdS1sYwYdS) NÚrr css�|] }| dd¡VqdS)ÚidrN©Úget©Ú.0ÚitemrrrÚ *s€z&append_to_yaml_file..)ÚstartrÚwF©Údefault_flow_style)ÚopenÚyamlÚ safe_loadÚmaxÚ enumerateÚappendÚdump)Ú file_pathÚdataÚfÚ existing_dataZstart_idÚir$rrrÚappend_to_yaml_file#s ÿ  "ÿr6csŠt|dƒ�}t |¡p g}Wdƒn1swY‡fdd„|Dƒ}t|dƒ�}tj||dd�WdƒdS1s>wYdS)Nrcsg|] }| d¡ˆkr|‘qS©Úcomponent_namer r"r7rrÚ 8óz)remove_from_yaml_file..r'Fr()r*r+r,r0)r1r8r3r4Z updated_datarr7rÚremove_from_yaml_file4s ÿ "ÿr;z/api/languagesÚGET)ÚmethodscCsZtj ¡}g}| d¡|D]}d|jd|jd}| |¡qd |¡}t|ƒ|S)NÚ languagesz components/ú/z /languagesú;)r ÚqueryÚallr/ÚnameÚjoinÚprint)rZlanguages_pathsÚ componentZcomponent_languages_directoryÚresultrrrÚ find_language=s    rHz/api/add-to-menucCs„g}tj ¡}dd„|Dƒ}|D]+}t tj›|›d�¡}t|ƒ|jdkr0|  |  ¡d¡n||D]}||d<q4q|t_ tj S)NcSóg|]}|j‘qSr©rC©r#rFrrrr9Oózadd_to_menu..z/menu-admin-itemséÈrr8) r rArBÚrequestsr!r ÚdomainrEÚ status_coder/ÚjsonÚmenu)r2rÚcomponents_namesÚresponser$rrrÚ add_to_menuKs   ÿrUz/homeÚPOSTcCstdƒS)Nú /dashboard)rrrrrÚhome]srXz /first-logincCsltjdkr2tj d¡}tj d¡}tdD]}|d|kr/|d|kr/|td<ttdƒƒSqdStdƒS)NrVrÚpasswordZusersúcomponents.dashboarduBÐ�евірне ім'Ñ� кориÑ�тувача або пароль.zfirst-login.html) r ÚmethodÚformr!Úconfigrrrr)rrYÚuserrrrÚ first_loginbs    €r_z/change_language/cCs|td<|t_ttdƒƒS)NÚlangrZ)rr Úcurrent_languagerr)r`rrrÚchange_languageos rbrWcsš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"rrrr9~szdashboard..cSrIrrJrKrrrr9„rLÚ search_querycsRg|]%}|drˆ ¡|d ¡vs%n |dr#ˆ ¡|d ¡vrn q|‘qS)rCFÚ description)ÚlowerrK©rdrrr9Šsÿÿÿÿþzdashboard.html)rrSÚcomponent_serverrdÚlanguage) rNr!r Ú update_domainrQr rArBr rrarrR)rTÚ json_datarhrrSZfiltered_componentsrarrgrÚ dashboardus$  þrlz&/show_components/cs>t tj›d�¡}| ¡}t‡fdd„|Dƒdƒ}td|d�S)Nrcc3ó �|] }|dˆkr|VqdS©rNrrK©Ú component_idrrr%šó€z"show_components..zcomponent-info.html)Úselected_component)rNr!r rjrQÚnextr)rprTrkrrrrorÚshow_components–s rtz-/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)Nrrcc3rmrnrrKrorrr%¤rqz)install_components_git..rCÚgit_linkz __init__.pyÚazvenv/Scripts/python.exez-mZpipÚinstallz --use-pep517zgit+z --target=ú routes.pyÚ dependenciesÚ rJreÚversionT©rCrer{ruryÚ installedzOInstalled successfully zError installing : )rNr!r rjrQrsÚosÚpathrDÚexistsÚmakedirsr*ÚcloseÚ subprocessÚ check_callÚwriter rAÚ filter_byÚfirstÚdbrÚaddÚcommitÚCalledProcessErrorÚstr)rpÚproject_folderrTrkrrÚrepository_nameÚrepository_folderZ git_repo_urlZ init_fileÚcommandr1ÚcodeÚfilerFZ new_componentÚerrorÚinstall_components_git�sN        üú €ÿr”z)/install_components/c szd}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]} |   | ¡qZWdƒn1slwYt |d¡� } |  |¡Wdƒn1s‡wYt |¡d} d|d ›d|d ›d|d ›d|d ›d|d ›d� } t | dƒ�} |   d¡|   | ¡|   d¡Wdƒn1sÎwYtjj|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)$Nrrcc3rmrnrrKrorrr%årqz1install_component_from_archive..zComponent not foundZlatest_component_dataZlatest_versionT)Úexist_ok)ÚstreamrCz.zipÚwbi )Ú chunk_sizerrxzfrom components.Ú.z.views import z app.register_blueprint(z, url_prefix='/z')rvrzrJrerur|z"Component installed successfully: z vÚ z�, please wait installing requirments... zError installing component: )"rNr!r rjrQrsr~rrDr�Úraise_for_statusr*Ú iter_contentr…ÚzipfileÚZipFileÚ extractallÚremover rAr†r‡rˆrr‰r{ruryr}rŠÚ$search_babel_translation_directoriesÚbabel_translation_directoriesÚ ExceptionrŒ)rpr�rTrkrrZ archive_urlr{Zcomponent_folderZ archive_pathr’ÚchunkZzip_refr1r‘rFr“rrorÚinstall_component_from_archiveÞsl   ÿÿ ÿ 8    üú   þ€ÿr¥z5/install-requirments/cCs”t tj›|›d�¡}|jdkr| ¡}ng}|D]}||d<qd}t||ƒtƒtj   d|d¡}tj   |¡rHtj ›d|›�}t j|ddd �d S) Nz /menu-itemsrMr8úcomponents/menu.ymlrzrequirements.txtz/python -m pip install -r T)ÚshellÚcheckzµRequirements installed successfully please wait installing requirments components... )rNr!r rOrPrQr6Úget_admin_menur~rrDÚisfileÚ venv_bin_pathrƒÚrun)Zselected_component_namerTr2r$r1Ú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.txtrz/install_components/ziRequirements components installed successfully z8)r~rrªr*ÚreadÚ splitlinesrNr!)r­Z component_idsr’rprTrrrÚinstall_requirements_componentsDs  ÿÿr±z*/remove_dependencies/cs¸tj |¡‰ˆs dSˆj}d}t||ƒd}t|dƒ� }| ¡}Wdƒn1s*wY‡fdd„|Dƒ}t|dƒ� }| |¡Wdƒn1sMwYdˆ_t j   ¡d S) NúLComponent not found r¦rxrcsg|] }| ¡ˆjvr|‘qSr)Ústripry)r#Úline©rFrrr9fr:z'remove_dependencies..r'FzXComponent successfully turn off ) r rAr!rCr;r*Ú readlinesÚ writelinesr}rˆrrŠ)rpr8r1r’ÚlinesZ updated_linesrrµrÚremove_dependenciesVs"    ÿ  ÿ r¹z'/add_dependencies/cCsftj |¡}|s dSd}|j}t|dƒ� }| |¡Wdƒn1s$wYd|_tj  ¡dS)Nr²rxrvTzXDependencies added successfully ) r rAr!ryr*r…r}rˆrrŠ)rprFr1r‘r’rrrÚadd_dependenciesos   þ 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 rAr!rCr~rrDr€ÚshutilÚrmtreerˆrÚdeleterŠr£rŒ)rpr�rFrŽr�r“rrrÚremove_component„s     €þr¾z/api/main-menu/cCst tj›d�¡tjS)Nzapi/add-to-menu)rNr!r rOrRrrrrr©�sr©)3r�Úflaskrrrrrrrr r~r»r Úk2cfgr Zk2compr Z flask_migraterrNrƒrr+Ú functoolsrÚsysÚ__name__Ú components_bpr,r*r]rˆrr6r;ÚrouterHrUrXr_rbrlrtr”r¥r®r±r¹rºr¾r©rrrrÚsj(              @ L