o à�dcMã@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©ú#/home/yana/1906/k2root/k2/k2rout.pyÚdecorated_views 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ÚitemrrrÚ 9óz)remove_from_yaml_file..ÚwF)Údefault_flow_style)ÚopenÚyamlÚ safe_loadÚdump)Ú file_pathrÚfÚ existing_dataÚ updated_datarrrÚremove_from_yaml_file5s ÿ "ÿr0z/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)rÚlanguages_pathsÚ componentÚcomponent_languages_directoryÚresultrrrÚ find_language?s    r@z/homeÚPOSTcCstdƒS)Nú /dashboard)rrrrrÚhomeNsrCz /first-logincCsltjdkr2tj d¡}tj d¡}tdD]}|d|kr/|d|kr/|td<ttdƒƒSqdStdƒS)NrArÚpasswordÚusersúcomponents.dashboarduBÐ�евірне ім'Ñ� кориÑ�тувача або пароль.zfirst-login.html) r ÚmethodÚformr Úconfigrrrr)rrDÚuserrrrÚ first_loginTs    €rKz/change_language/cCs|td<|t_ttdƒƒS)NÚlangrF)rr Úcurrent_languagerr)rLrrrÚchange_languageas rNrBcsš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©r9©r"r=rrrr$wóÚ search_querycsTg|]&}|drˆ ¡|d ¡vs&n  |dr$ˆ ¡|d ¡vrn q|‘qS)r9FÚ description)ÚlowerrR©rTrrr$}sÿÿÿÿþþ ýzdashboard.html)rÚcomponents_namesÚcomponent_serverrTÚlanguage) Úrequestsr r Ú update_domainÚjsonr r6r7r rrMrÚmenu)ÚresponseÚ json_datarYrrXÚfiltered_componentsrMrrWrÚ dashboardhs$  þrbz&/show_components/cs>t tj›d�¡}| ¡}t‡fdd„|Dƒdƒ}td|d�S)NrOc3ó �|] }|dˆkr|VqdS©ÚidNrrR©Ú component_idrrÚ Žó€z"show_components..zcomponent-info.html)Úselected_component)r[r r r\r]Únextr)rgr_r`rjrrfrÚshow_componentsŠs rlz-/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)NrrOc3rcrdrrRrfrrrh™riz)install_components_git..r9Úgit_linkz __init__.pyÚazvenv/Scripts/python.exez-mÚpipÚinstallz --use-pep517zgit+z --target=ú routes.pyÚ dependenciesÚ rQrUÚversionT©r9rUrtrmrrÚ installedzOInstalled successfully zError installing : )r[r r r\r]rkÚosÚpathr:ÚexistsÚmakedirsr(ÚcloseÚ subprocessÚ check_callÚwriter r6Ú filter_byÚfirstÚdbrÚaddÚcommitÚCalledProcessErrorÚstr)rgÚproject_folderr_r`rjÚrepository_nameÚrepository_folderÚ git_repo_urlÚ init_fileÚcommandr,ÚcodeÚfiler=Ú new_componentÚerrfrÚ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)$NrrOc3rcrdrrRrfrrrhÜriz1install_component_from_archive..zComponent not foundÚlatest_component_dataÚlatest_versionT)Úexist_ok)Ústreamr9z.zipÚwbi )Ú chunk_sizerrqzfrom components.Ú.z.views import z app.register_blueprint(z, url_prefix='/z')rnrsrQrUrmruz"Component installed successfully: z vÚ z�, please wait installing requirments... zError installing component: )"r[r r r\r]rkrwrxr:rzÚraise_for_statusr(Ú iter_contentr~ÚzipfileÚZipFileÚ extractallÚremover r6rr€r�rr‚rtrmrrrvrƒÚ$search_babel_translation_directoriesÚbabel_translation_directoriesÚ Exceptionr…)rgr†r_r`rjÚ archive_urlrtÚcomponent_folderÚ archive_pathr�ÚchunkÚzip_refr,rŒr=r�rrfrÚ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_menurwrxr:Úisfiler Ú venv_bin_pathr|Úrun)Úselected_component_nameÚrequirements_fileÚ 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)rwrxr«r(ÚreadÚ splitlinesr[r )r¯Ú component_idsr�rgr_rrrÚ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-menurqrcsg|] }| ¡ˆjvr|‘qSr)Ústriprr)r"Úline©r=rrr$Ur%z'remove_dependencies..r&FzXComponent successfully turn off )r r6r r9r[r Údomainr(Ú readlinesÚ writelinesrvr�rrƒ)rgrr,r�ÚlinesÚ updated_linesrr»rÚremove_dependenciesEs   ÿ  ÿ rÁz'/add_dependencies/cCsftj |¡}|s dSd}|j}t|dƒ� }| |¡Wdƒn1s$wYd|_tj  ¡dS)Nr·rqrnTzXDependencies added successfully ) r r6r rrr(r~rvr�rrƒ)rgr=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 r6r r9rwrxr:ryÚshutilÚrmtreer�rÚdeleterƒr¡r…)rgr†r=r‡rˆr�rrrÚremove_componentss     €þrÆz/component/addcCs\z#t tj›d�¡}| ¡}|D]}tj›d|d›�|d<qWt|ƒSd}Yt|ƒS)NrOr²reÚbutton)r[r r r\r]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) Nr9rerUrtz/remove_dependencies/Ú button_offz/add_dependencies/Ú button_onz/remove-component/Ú button_del) r r6r7r9rerUrtr r¼r8r)Úcomponent_listrr=Úcomponent_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-itemsrcSrPrrQrRrrrr$¶rSzadd_to_menu..éÈr) r[r r r¼r8r]r r6r7r;Ú status_coder^)Údatar_rrXr#rrrÚ add_to_menu°s    ÿrÒz/api/main-menu/cCst tj›d�¡tjS)Nr¸)r[r r r¼r^rrrrrªÅsrªrÎcCs&dddidddœdddœgd œg}|S) NzAdd componentsÚiconzmdi-account-circle-outlinezInstall componentsz component-add)ÚtitleÚtozInstalled componentszcomponent-list)rÔrÓÚchildrenr)r^rrrÚ menu_itemsËsþýÿ r×)4r›ÚflaskrrrrrrrrwrÃr Úk2cfgr Úk2compr Ú flask_migrater r[r|rr)Ú functoolsrÚsysÚ__name__Ú components_bpr*r(rIr�rr0Úrouter@rCrKrNrbrlr�r§r±r¶rÁrÂrÆrÈrÌrÒrªr×rrrrÚst(             B M