o '�dBHã@s*ddlZddlmZmZmZmZmZmZmZm Z ddl Z ddl Z ddlm Z ddl mZddlmZddlmZddlZddlZddlmZddlZdd lmZddl Z ddlZed ed d �Ze ed ƒ¡ZejZdd„Z dd„Z!ej"ddgd�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"d0dgd�d1d2„ƒZ,e "d3¡d4d5„ƒZ-ej"d6dgd�d7d8„ƒZ.ej"d9dgd�d:d;„ƒZ/e "d<¡d=d>„ƒZ0e "d?¡d@dA„ƒZ1dS)Bé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©ú.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Ú 8óz)remove_from_yaml_file..ÚwF)Údefault_flow_style)ÚopenÚyamlÚ safe_loadÚdump)Ú file_pathr ÚfZ existing_dataZ updated_datarrrÚ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ÚallÚappendÚnameÚjoinÚprint)rZlanguages_pathsÚ componentZcomponent_languages_directoryÚresultrrrÚ find_language=s    r=z/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©r8©r#r;rrrr%Oózadd_to_menu..z/menu-admin-itemséÈrr ) r r5r6Úrequestsr!r Údomainr:Ú status_coder7ÚjsonÚmenu)ÚdatarÚcomponents_namesÚresponser$rrrÚ add_to_menuKs   ÿrKz/homeÚPOSTcCstdƒS)Nú /dashboard)rrrrrÚhome]srNz /first-logincCsltjdkr2tj d¡}tj d¡}tdD]}|d|kr/|d|kr/|td<ttdƒƒSqdStdƒS)NrLrÚpasswordZusersúcomponents.dashboarduBÐ�евірне ім'Ñ� кориÑ�тувача або пароль.zfirst-login.html) r ÚmethodÚformr!Úconfigrrrr)rrOÚuserrrrÚ first_loginbs    €rUz/change_language/cCs|td<|t_ttdƒƒS)NÚlangrP)rr Úcurrent_languagerr)rVrrrÚchange_languageos rXrMcsš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%~szdashboard..cSr>rr?r@rrrr%„rAÚ search_querycsRg|]%}|drˆ ¡|d ¡vs%n |dr#ˆ ¡|d ¡vrn q|‘qS)r8FÚ description)Úlowerr@©rZrrr%Šsÿÿÿÿþzdashboard.html)rrIÚcomponent_serverrZÚlanguage) rCr!r Ú update_domainrFr r5r6r rrWrrG)rJÚ json_datar^rrIZfiltered_componentsrWrr]rÚ dashboardus$  þrbz&/show_components/cs>t tj›d�¡}| ¡}t‡fdd„|Dƒdƒ}td|d�S)NrYc3ó �|] }|dˆkr|VqdS©ÚidNrr@©Ú component_idrrÚ šó€z"show_components..zcomponent-info.html)Úselected_component)rCr!r r`rFÚnextr)rgrJrarjrrfrÚ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)NrrYc3rcrdrr@rfrrrh¤riz)install_components_git..r8Úgit_linkz __init__.pyÚazvenv/Scripts/python.exez-mZpipÚinstallz --use-pep517zgit+z --target=ú routes.pyÚ dependenciesÚ r?r[ÚversionT©r8r[rsrmrqÚ installedzOInstalled successfully zError installing : )rCr!r r`rFrkÚosÚpathr9ÚexistsÚmakedirsr)ÚcloseÚ subprocessÚ check_callÚwriter r5Ú filter_byÚfirstÚdbrÚaddÚcommitÚCalledProcessErrorÚstr)rgÚproject_folderrJrarjÚrepository_nameÚrepository_folderZ git_repo_urlZ init_fileÚcommandr-ÚcodeÚfiler;Z new_componentÚerrfrÚ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)$NrrYc3rcrdrr@rfrrrhåriz1install_component_from_archive..zComponent not foundZlatest_component_dataZlatest_versionT)Úexist_ok)Ústreamr8z.zipÚwbi )Ú chunk_sizerrpzfrom components.Ú.z.views import z app.register_blueprint(z, url_prefix='/z')rnrrr?r[rmrtz"Component installed successfully: z vÚ z�, please wait installing requirments... zError installing component: )"rCr!r r`rFrkrvrwr9ryÚraise_for_statusr)Ú iter_contentr}ÚzipfileÚZipFileÚ extractallÚremover r5r~rr€rr�rsrmrqrur‚Ú$search_babel_translation_directoriesÚbabel_translation_directoriesÚ Exceptionr„)rgr…rJrarjZ archive_urlrsZcomponent_folderZ archive_pathrŠÚchunkZzip_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_menurvrwr9Úisfiler Ú venv_bin_pathr{Ú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.txtrz/install_components/ziRequirements components installed successfully z8)rvrwr¡r)ÚreadÚ splitlinesrCr!)r¤Z component_idsrŠrgrJrrrÚinstall_requirements_components9s  ÿÿ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-menurprcsg|] }| ¡ˆjvr|‘qSr)Ústriprq)r#Úline©r;rrr%[r&z'remove_dependencies..r'FzXComponent successfully turn off )r r5r!r8rCr rDr)Ú readlinesÚ writelinesrur€rr‚)rgr r-rŠÚlinesZ updated_linesrr­rÚremove_dependenciesKs   ÿ  ÿ r±z'/add_dependencies/cCsftj |¡}|s dSd}|j}t|dƒ� }| |¡Wdƒn1s$wYd|_tj  ¡dS)Nr©rprnTzXDependencies added successfully ) r r5r!rqr)r}rur€rr‚)rgr;r-r‰rŠrrrÚadd_dependenciesds   þ 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 r5r!r8rvrwr9rxÚshutilÚrmtreer€rÚdeleter‚r›r„)rgr…r;r†r‡r‹rrrÚremove_componentxs     €þr¶z/api/main-menu/cCst tj›d�¡tjS)Nrª)rCr!r rDrGrrrrr ‘sr )2r•Úflaskrrrrrrrr rvr³r Úk2cfgr Zk2compr Z flask_migraterrCr{rr*Ú functoolsrÚsysÚ__name__Ú components_bpr+r)rSr€rr/Úrouter=rKrNrUrXrbrlrŒr�r¥r¨r±r²r¶r rrrrÚsh(              @ L