o E¶ˆdLã@s$ddlZddlmZmZmZmZmZmZmZm Z ddl Z ddl Z ddl m Z ddl Z ddlmZddlmZddlmZddlZddlZddlmZddlZddlmZejZd d „ZGd d „d ejƒZed edd�Ze e dƒ¡Z!dd„Z"dd„Z#ej$ddgd�dd„ƒZ%ej$dddgd�e"dd„ƒƒZ&ej$dddgd�dd „ƒZ'e $d!¡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 $d0¡d1d2„ƒZ-ej$d3dgd�d4d5„ƒZ.e $d6¡d7d8„ƒZ/ej$d9dgd�d:d;„ƒZ0ej$d„ƒZ1e $d?¡d@dA„ƒZ2dS)BéN)ÚFlaskÚ BlueprintÚjsonifyÚrender_templateÚredirectÚurl_forÚsessionÚg)Údatetime)Úrequest)Úk2)ÚMigrate)Ú current_app©Úwrapscs6t ¡jdd…‰d ‡fdd„tdtˆƒdƒDƒ¡S)Né Úcsg|] }ˆ||d…‘qS)é©)Ú.0Úi©Z generated_idrú;C:\Users\sv-work\PycharmProjects\k2root\k2root\k2\k2inst.pyÚ szgenerate_id..rr)ÚuuidÚuuid4ÚhexÚjoinÚrangeÚlenrrrrÚ generate_ids$r c@sÀeZdZdZdZddiZeje d¡de d�Z eje d¡dd �Z e e d ¡¡Z e e d ¡¡Z e e d ¡¡Ze ej¡Zejejejd �Zejejdd �Zd d„Zdd„Zedd„ƒZdS)Ú ComponentÚdb2Ú componentÚextend_existingTé$)Ú primary_keyÚdefaultédF)ÚnullableéÈé)r'cCs(||_||_||_||_||_||_dS©N©ÚnameÚ descriptionÚversionÚgit_linkÚ dependenciesÚ installed)Úselfr.r/r0r1r2r3rrrÚ__init__"s  zComponent.__init__cCsd|j›d|j›d�S)Nz Component('z', 'ú'))r.r0)r4rrrÚ__repr__)szComponent.__repr__cCs tj t¡ tj|k¡ ¡}|Sr,)ÚdbrÚqueryr!ÚfilterÚidÚfirst)r4Zrep_idr#rrrÚget_repository_by_id+szComponent.get_repository_by_idN)Ú__name__Ú __module__Ú __qualname__Ú __bind_key__Ú __tablename__Ú__table_args__r8ÚColumnÚStringr r;r.r/r0r1r2ÚDateTimer ÚutcnowZdate_installedÚBooleanr3r5r7Ú classmethodr=rrrrr!s  r!Ú componentsÚ templates)Útemplate_folderzdb/first-login.ymlcstˆƒ‡fdd„ƒ}|S)Ncs"dtvr ttdƒƒSˆ|i|¤ŽS©NÚusernamezcomponents.first_login)rrr)ÚargsÚkwargs©Ú view_funcrrÚdecorated_view3s z,first_login_required..decorated_viewr)rRrSrrQrÚfirst_login_required2srTcCsÀt|dƒ�}t |¡p g}Wdƒn1swY|s!d}n tdd„|Dƒƒd}t||d�D] \}}||d<| |¡q2t|dƒ�}tj||dd �WdƒdS1sYwYdS) NÚrécss�|] }| dd¡VqdS)r;rN)Úget©rÚitemrrrÚ As€z&append_to_yaml_file..)Ústartr;ÚwF)Údefault_flow_style)ÚopenÚyamlÚ safe_loadÚmaxÚ enumerateÚappendÚdump)Ú file_pathÚdataÚfZ existing_dataZstart_idrrYrrrÚappend_to_yaml_file:s ÿ  "ÿrhz/api/languagesÚGET)ÚmethodscCsZtj ¡}g}| d¡|D]}d|jd|jd}| |¡qd |¡}t|ƒ|S)NÚ languagesú components/ú/z /languagesú;)r!r9Úallrcr.rÚprint)rJZlanguages_pathsr#Zcomponent_languages_directoryÚresultrrrÚ find_languageJs    rrrmÚPOSTcCstdƒS)Nú /dashboard)rrrrrÚhomeXsruz/logincCsltjdkr2tj d¡}tj d¡}tdD]}|d|kr/|d|kr/|td<ttdƒƒSqdStdƒS)NrsrNÚpasswordZusersúcomponents.dashboarduBÐ�евірне ім'Ñ� кориÑ�тувача або пароль.zfirst-login.html) r ÚmethodÚformrWÚconfigrrrr)rNrvÚuserrrrÚ first_login]s    €r|z/logoutcCst dd¡ttdƒƒSrM)rÚpoprrrrrrÚlogoutis  r~z/change_language/cCs|td<|t_ttdƒƒS)NÚlangrw)rr Úcurrent_languagerr)rrrrÚchange_languagens r�rtcs’zt d¡}| ¡}dd„|Dƒ}Wnd}Ytj ¡}dd„|Dƒ}tj d¡‰g}ˆr9‡fdd„|Dƒ}n|}tj }t d|||ˆtj d�S) Nú$http://127.0.0.1:8001/api/componentscSsg|]}|‘qSrrrXrrrr~szdashboard..cSsg|]}|j‘qSr©r.©rr#rrrr„sÚ search_querycsRg|]%}|drˆ ¡|d ¡vs%n |dr#ˆ ¡|d ¡vrn q|‘qS)r.Fr/)Úlowerr„©r…rrrŠsÿÿÿÿþzdashboard.html)rJÚcomponents_namesÚcomponent_serverr…Úlanguage) ÚrequestsrWÚjsonr!r9ror rOr r€rÚmenu)ÚresponseÚ json_datar‰rJrˆZfiltered_componentsr€rr‡rÚ dashboardts$   þr�z&/show_components/cs6t d¡}| ¡}t‡fdd„|Dƒdƒ}td|d�S)Nr‚c3ó �|] }|dˆkr|VqdS©r;Nrr„©Ú component_idrrrZšó€z"show_components..zcomponent-info.html)Úselected_component)r‹rWrŒÚnextr)r”rŽr�r–rr“rÚshow_components–s  r˜z-/install_components_git/c s”d}t d¡}| ¡}t‡fdd„|Dƒdƒ}|d}tj ||¡}|d}zŠtj |¡s2t |¡tj |d¡}tj |¡sFt |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)NrJr‚c3r‘r’rr„r“rrrZ¤r•z)install_components_git..r.r1z __init__.pyÚazvenv/Scripts/python.exez-mZpipÚinstallz --use-pep517zgit+z --target=ú routes.pyr2Ú rƒr/r0Tr-zOInstalled successfully zError installing : )r‹rWrŒr—ÚosÚpathrÚexistsÚmakedirsr^ÚcloseÚ subprocessÚ check_callÚwriter!r9Ú filter_byr<r8rÚaddÚcommitÚCalledProcessErrorÚstr)r”Úproject_folderrŽr�r–Úrepository_nameÚrepository_folderZ git_repo_urlZ init_fileÚcommandreÚcodeÚfiler#Z new_componentÚerr“rÚinstall_components_git�sN         üú €ÿr±z)/install_components/c sød}t d¡}| ¡}t‡fdd„|Dƒdƒ}|durdS|d}|d}�z;tj |¡}tj|dd �tj|dd �}| ¡tj ||d ›d �¡}t |d ƒ�} |j dd�D]} |   | ¡qWWdƒn1siwYt   |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 ¡d|d ›d�}tj |¡�r4t |dd d!�� } t | ¡}Wdƒn 1�s.wYnd d"id"|d ›d#�d"d$œ}d%} t| |ƒt  !¡d&|d ›d'|›d(t j"›d)|d ›d*� WSt#�y{}z d+t$|ƒ›�WYd}~Sd}~ww),NrJr‚c3r‘r’rr„r“rrrZår•z1install_component_from_archive..zComponent not foundZlatest_component_dataZlatest_versionT)Úexist_ok)Ústreamr.z.zipÚwbi )Ú chunk_sizerUr›zfrom components.Ú.z.views import z app.register_blueprint(z, url_prefix='/r6r™rœrƒr/r1r-rlz/menu_items.ymlzutf-8)ÚencodingÚerrorz--error)ÚurlZiconÚtitleÚcategoryzcomponents/menu.ymlz"Component installed successfully: z vÚ z�, please wait installing requirments... zError installing component: )%r‹rWrŒr—r�ržrr Úraise_for_statusr^Ú iter_contentr¤ÚzipfileÚZipFileÚ extractallÚremover!r9r¥r<r8rr¦r0r1r2r3r§rŸr_r`rhr Ú$search_babel_translation_directoriesÚbabel_translation_directoriesÚ Exceptionr©)r”rªrŽr�r–Z archive_urlr0Zcomponent_folderZ archive_pathr¯ÚchunkZzip_refrer®r#Zfile_path_inputrfr°rr“rÚinstall_component_from_archiveÞs†    ÿÿ ÿ 8    üú   ÿ€ ü  þ€ÿrÇz5/install-requirments/cCs@tj d|d¡}tj |¡rtj›d|›�}tj|ddd�dS)NrJzrequirements.txtz/python -m pip install -r T)ÚshellÚcheckzµRequirements installed successfully please wait installing requirments components... )r�ržrÚ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.txtrUz/install_components/ziRequirements components installed successfully z8)r�ržrÊr^ÚreadÚ splitlinesr‹rW)rÍZ component_idsr¯r”rŽrrrÚinstall_requirements_componentsFs  ÿÿrÑz*/remove_dependencies/cs¤tj |¡‰ˆs dSd}t|dƒ� }| ¡}Wdƒn1s wY‡fdd„|Dƒ}t|dƒ� }| |¡Wdƒn1sCwYdˆ_tj  ¡dS) NúLComponent not found r›rUcsg|] }| ¡ˆjvr|‘qSr)Ústripr2)rÚline©r#rrrhsz'remove_dependencies..r\FzXComponent successfully turn off ) r!r9rWr^Ú readlinesÚ writelinesr3r8rr§)r”rer¯ÚlinesZ updated_linesrrÕrÚremove_dependenciesYs   ÿ  ÿ rÙz'/add_dependencies/cCsftj |¡}|s dSd}|j}t|dƒ� }| |¡Wdƒn1s$wYd|_tj  ¡dS)NrÒr›r™TzXDependencies added successfully ) r!r9rWr2r^r¤r3r8rr§)r”r#rer®r¯rrrÚadd_dependenciests   þ rÚz'/remove-component/c CsŒd}tj |¡}|j}tj ||¡}ztj |¡rt  |¡|r+t j   |¡t j   ¡WdStyE}z dt|ƒWYd}~Sd}~ww)NrJzWComponent removed successfully zError removing component: )r!r9rWr.r�ržrrŸÚshutilÚrmtreer8rÚdeleter§rÅr©)r”rªr#r«r¬r°rrrÚremove_component‰s     €þrÞ)3r¿Úflaskrrrrrrrr r�rÛr rr Úk2.k2cfgr Z flask_migrater r‹r¢rr_Ú functoolsrr8r ÚModelr!r>Ú components_bpr`r^rzrTrhÚrouterrrur|r~r�r�r˜r±rÇrÎrÑrÙrÚrÞrrrrÚsf(               @ \