o ö’dQ[ã@s�ddlZddlmZmZmZmZmZmZmZmZddl Z ddl Z ddlm Z ddl m Z ddlmZddlmZddlZddlZddlmZddlZdd lmZddl Z ddlZdd lmZmZdd lmZdd lmZed e dd�Z!e "e#dƒ¡Z$e j%Z%dd„Z&dd„Z'e!j(ddgd�dd„ƒZ)e!j(dddgd�e&dd„ƒƒZ*e!j(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/„ƒZ0e!j(d0dgd�d1d2„ƒZ1e! (d3¡d4d5„ƒZ2e!j(d6dgd�d7d8„ƒZ3e!j(d9dgd�d:d;„ƒZ4e! (d<¡d=d>„ƒZ5e! (d?¡d@dA„ƒZ6e! (dB¡dCdD„ƒZ7e!j(dEdgd�dFdG„ƒZ8e! (dH¡dIdJ„ƒZ9dKdL„Z:e! (dM¡dNdO„ƒZ;dS)PéN)ÚFlaskÚ BlueprintÚjsonifyÚrender_templateÚredirectÚurl_forÚsessionr)Úrequesté)Úk2)Ú Component)ÚMigrate)Ú current_app©Úwraps)Ú K2admin_menusÚK2admin_Menus_Prava)Útext)Úget_jwt_identityÚ 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_new\k2root\k2\k2rout.pyÚdecorated_view s z,first_login_required..decorated_viewr)rrrrrÚfirst_login_requiredsr csŠ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 ÿ "ÿr2z/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ÚhomeQsrCz /first-logincCsltjdkr2tj d¡}tj d¡}tdD]}|d|kr/|d|kr/|td<ttdƒƒSqdStdƒS)NrArÚpasswordZusersúcomponents.dashboarduBÐ�евірне ім'Ñ� кориÑ�тувача або пароль.zfirst-login.html) r ÚmethodÚformr$Úconfigrrrr)rrDÚuserrrrÚ first_loginWs    €rJz/change_language/cCs|td<|t_ttdƒƒS)NÚlangrE)rr Úcurrent_languagerr)rKrrrÚchange_languageds rMrBcsš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)ÚlowerrQ©rSrrr(€sÿÿÿÿþzdashboard.html)rÚcomponents_namesÚcomponent_serverrSÚlanguage) Úrequestsr$r Ú update_domainÚjsonr r8r9r rrLrÚmenu)ÚresponseÚ json_datarXrrWZfiltered_componentsrLrrVrÚ dashboardks$  þr`z&/show_components/cs>t tj›d�¡}| ¡}t‡fdd„|Dƒdƒ}td|d�S)NrNc3ó �|] }|dˆkr|VqdS©ÚidNrrQ©Ú component_idrrÚ ‘ó€z"show_components..zcomponent-info.html)Úselected_component)rZr$r r[r\Únextr)rer^r_rhrrdrÚshow_components�s rjz-/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)NrrNc3rarbrrQrdrrrfœrgz)install_components_git..r;Úgit_linkz __init__.pyÚazvenv/Scripts/python.exez-mZpipÚinstallz --use-pep517zgit+z --target=ú routes.pyÚ dependenciesÚ rPrTÚversionT©r;rTrqrkroÚ installedzOInstalled successfully zError installing : )rZr$r r[r\riÚosÚpathr<ÚexistsÚmakedirsr,ÚcloseÚ subprocessÚ check_callÚwriter r8Ú filter_byÚfirstÚdbrÚaddÚcommitÚCalledProcessErrorÚstr)reÚproject_folderr^r_rhÚrepository_nameÚrepository_folderZ git_repo_urlZ init_fileÚcommandr0ÚcodeÚfiler>Z new_componentÚerrdrÚ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)%NrrNc3rarbrrQrdrrrfßrgz1install_component_from_archive..zComponent not foundZlatest_component_dataZlatest_versionT)Úexist_ok)Ústreamr;z.zipÚwbi )Ú chunk_sizer!z.gitrnzfrom components.Ú.z.views import z app.register_blueprint(z, url_prefix='/z')rlrprPrTrkrrz"Component installed successfully: z vÚ z�, please wait installing requirments... zError installing component: )%rZr$r r[r\rirtrur<rwÚraise_for_statusr,Ú iter_contentr{ÚzipfileÚZipFileÚ extractallÚremovervÚisdirÚrenamer r8r|r}r~rrrqrkrorsr€Ú$search_babel_translation_directoriesÚbabel_translation_directoriesÚ Exceptionr‚)rerƒr^r_rhZ archive_urlrqZcomponent_folderZ archive_pathrˆÚchunkZzip_refr#Zold_folder_pathZnew_folder_pathr0r‡r>r‰rrdrÚ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_menurtrur<Úisfiler Ú venv_bin_pathryÚ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)rtrur¡r,ÚreadÚ splitlinesrZr$)r¤Z component_idsrˆrer^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-menurnr!csg|] }| ¡ˆjvr|‘qSr)Ústripro)r&Úline©r>rrr(_r)z'remove_dependencies..r*FzXComponent successfully turn off )r r8r$r;rZr Údomainr,Ú readlinesÚ writelinesrsr~rr€)rer#r0rˆÚlinesZ updated_linesrr®rÚremove_dependenciesOs   ÿ  ÿ r³z'/add_dependencies/cCsftj |¡}|s dSd}|j}t|dƒ� }| |¡Wdƒn1s$wYd|_tj  ¡dS)NrªrnrlTzXDependencies added successfully ) r r8r$ror,r{rsr~rr€)rer>r0r‡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 r8r$r;rtrur<rvÚshutilÚrmtreer~rÚdeleter€r›r‚)rerƒ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)NrNr¦rcZbutton)rZr$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) Nr;rcrTrqz/remove_dependencies/Z button_offz/add_dependencies/Z button_onz/remove-component/Z button_del) r r8r9r;rcrTrqr r¯r:r)Ú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ÚtocSrOrrPrQrrrr(ÄrRzadd_to_menu..éÈr#) rZr$r r¯r:r\Úadd_menu_with_permissions_dbr r8r9Ú status_coder])Údatar^Ú prev_menur'Ú name_menuÚ caption_menurrWrrrÚ add_to_menu¹s4  ý ÿrÆz/api/main-menu/cCs˜tƒ}t|ƒ|d}g}t tj›d�¡}t |¡}| ¡D](}g}|dD] }|d|vr4|  |¡q'|rG||d<|  |¡|  ddi¡qt |ƒS)NZ user_roler«r½r¾Úheadingz APPS & PAGES) rr=rZr$r r¯rZget_menu_items_by_rolesr\r:r)Ú current_userZrole_idZ filter_menur^Zmenu_items_listr'Zfiltered_childrenZimrrrr Øs$     € €r 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_nameéÿÿÿÿ) Úmenuidrr!r*ÚiÚdÚcÚexpÚimpÚsettableÚcutpastÚenableZroleid) rr~rÚexecuteÚfetchonerrr€rrË)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Ø)s|(               B S         %