o kF�d;Oã@s`ddlZddlmZmZmZmZmZmZmZmZddl Z ddl Z ddlm Z ddl m Z ddlmZddlmZddlZddlZddlmZddlZdd lmZddl Z ddlZed ed d �Ze ed ƒ¡Ze jZdd„Zdd„Z ej!ddgd�dd„ƒZ"ej!dddgd�edd„ƒƒZ#ej!dddgd�dd„ƒZ$e !d¡dd „ƒZ%e !d!¡ed"d#„ƒƒZ&e !d$¡d%d&„ƒZ'e !d'¡d(d)„ƒZ(e !d*¡d+d,„ƒZ)ej!d-dgd�d.d/„ƒZ*e !d0¡d1d2„ƒZ+ej!d3dgd�d4d5„ƒZ,ej!d6dgd�d7d8„ƒZ-e !d9¡d:d;„ƒZ.e !d<¡d=d>„ƒZ/e !d?¡d@dA„ƒZ0ej!dBdgd�dCdD„ƒZ1e !dE¡dFdG„ƒZ2e !dH¡dIdJ„ƒZ3dS)KéN)ÚFlaskÚ BlueprintÚjsonifyÚrender_templateÚredirectÚurl_forÚsessionr)Ú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©ú.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ÚitemrrrÚ 9óz)remove_from_yaml_file..ÚwF)Údefault_flow_style)ÚopenÚyamlÚ safe_loadÚdump)Ú file_pathrÚfZ existing_dataZ updated_datarrrÚremove_from_yaml_file5s ÿ "ÿr.z/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_language?s    r<z/homeÚPOSTcCstdƒS)Nú /dashboard)rrrrrÚhomeNsr?z /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)rr@ÚuserrrrÚ first_loginTs    €rFz/change_language/cCs|td<|t_ttdƒƒS)NÚlangrA)rr Úcurrent_languagerr)rGrrrÚchange_languageas rIr>csš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$qszdashboard..cSóg|]}|j‘qSr©r7©r"r:rrrr$wóÚ search_querycsRg|]%}|drˆ ¡|d ¡vs%n |dr#ˆ ¡|d ¡vrn q|‘qS)r7FÚ description)ÚlowerrM©rOrrr$}sÿÿÿÿþzdashboard.html)rÚcomponents_namesÚcomponent_serverrOÚlanguage) Úrequestsr r Ú update_domainÚjsonr r4r5r rrHrÚmenu)ÚresponseÚ json_datarTrrSZfiltered_componentsrHrrRrÚ dashboardhs$  þr\z&/show_components/cs>t tj›d�¡}| ¡}t‡fdd„|Dƒdƒ}td|d�S)NrJc3ó �|] }|dˆkr|VqdS©ÚidNrrM©Ú component_idrrÚ Žó€z"show_components..zcomponent-info.html)Úselected_component)rVr r rWrXÚnextr)rarZr[rdrr`rÚshow_componentsŠs rfz-/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)NrrJc3r]r^rrMr`rrrb™rcz)install_components_git..r7Úgit_linkz __init__.pyÚazvenv/Scripts/python.exez-mZpipÚinstallz --use-pep517zgit+z --target=ú routes.pyÚ dependenciesÚ rLrPÚversionT©r7rPrmrgrkÚ installedzOInstalled successfully zError installing : )rVr r rWrXreÚosÚpathr8ÚexistsÚmakedirsr(ÚcloseÚ subprocessÚ check_callÚwriter r4Ú filter_byÚfirstÚdbrÚaddÚcommitÚCalledProcessErrorÚstr)raÚproject_folderrZr[rdÚrepository_nameÚrepository_folderZ git_repo_urlZ init_fileÚcommandr,ÚcodeÚfiler:Z new_componentÚerr`rÚinstall_components_git’sR   ÿ     üú €ÿ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)$NrrJc3r]r^rrMr`rrrbÜrcz1install_component_from_archive..zComponent not foundZlatest_component_dataZlatest_versionT)Úexist_ok)Ústreamr7z.zipÚwbi )Ú chunk_sizerrjzfrom components.Ú.z.views import z app.register_blueprint(z, url_prefix='/z')rhrlrLrPrgrnz"Component installed successfully: z vÚ z�, please wait installing requirments... zError installing component: )"rVr r rWrXrerprqr8rsÚraise_for_statusr(Ú iter_contentrwÚzipfileÚZipFileÚ extractallÚremover r4rxryrzrr{rmrgrkror|Ú$search_babel_translation_directoriesÚbabel_translation_directoriesÚ Exceptionr~)rarrZr[rdZ archive_urlrmZcomponent_folderZ archive_pathr„ÚchunkZzip_refr,rƒr:r…rr`rÚinstall_component_from_archiveÕsl   ÿÿ ÿ 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_menurprqr8Úisfiler Ú venv_bin_pathruÚ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)rprqr›r(ÚreadÚ splitlinesrVr )ržZ component_idsr„rarZrrrÚinstall_requirements_components2s  ÿÿ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-menurjrcsg|] }| ¡ˆjvr|‘qSr)Ústriprk)r"Úline©r:rrr$Ur%z'remove_dependencies..r&FzXComponent successfully turn off )r r4r r7rVr Údomainr(Ú readlinesÚ writelinesrorzrr|)rarr,r„ÚlinesZ updated_linesrr¨rÚremove_dependenciesEs   ÿ  ÿ r­z'/add_dependencies/cCsftj |¡}|s dSd}|j}t|dƒ� }| |¡Wdƒn1s$wYd|_tj  ¡dS)Nr¤rjrhTzXDependencies added successfully ) r r4r rkr(rwrorzrr|)rar:r,rƒr„rrrÚ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 r4r r7rprqr8rrÚshutilÚrmtreerzrÚdeleter|r•r~)rarr:r€r�r…rrrÚremove_componentss     €þr²z/component/addcCs\z#t tj›d�¡}| ¡}|D]}tj›d|d›�|d<qWt|ƒSd}Yt|ƒS)NrJr r_Zbutton)rVr r rWrXr©r)rZr[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) Nr7r_rPrmz/remove_dependencies/Z button_offz/add_dependencies/Z button_onz/remove-component/Z button_del) r r4r5r7r_rPrmr r©r6r)Úcomponent_listrr:Zcomponent_dictrrrr´žs      r´z/api/add-to-menucCs¨g}t tj›d�¡}| | ¡d¡tj ¡}dd„|Dƒ}|D]+}t tj›|›d�¡}t |ƒ|j dkrB| | ¡d¡n||D]}||d<qFq"|t_ tj S)Nú/menu-admin-itemsrcSrKrrLrMrrrr$¶rNzadd_to_menu..éÈr) rVr r r©r6rXr r4r5r9Ú status_coderY)ÚdatarZrrSr#rrrÚ add_to_menu°s    ÿr¹z/api/main-menu/cCst tj›d�¡tjS)Nr¥)rVr r r©rYrrrrršÅsršrµcCs&dddidddœdddœgd œg}|S) NzAdd componentsÚiconzmdi-account-circle-outlinezInstall componentsz component-add)ÚtitleÚtozInstalled componentszcomponent-list)r»rºÚchildrenr)rYrrrÚ menu_itemsËsþýÿ r¾)4r�Úflaskrrrrrrrrpr¯r Úk2cfgr Zk2compr Z flask_migrater rVrurr)Ú functoolsrÚsysÚ__name__Ú components_bpr*r(rDrzrr.Úrouter<r?rFrIr\rfr†r—rŸr£r­r®r²r³r´r¹ršr¾rrrrÚst(             B M