o c_‰dïNã@s4ddlZddlmZmZmZmZmZmZmZm Z ddl Z ddl Z ddl m Z ddl Z ddlmZddlmZddlmZddlZddlZddlmZddlZddlmZddl Z ddlZejZd 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„ƒZ0ej%d9dgd�d:d;„ƒZ1ej%d„ƒZ2e %d?¡d@dA„ƒZ3dS)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_id0szComponent.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_view8s z,first_login_required..decorated_viewr)rRrSrrQrÚfirst_login_required7srTcCsÀ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Ú Fs€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Ú languagesz components/ú/z /languagesú;)r!r9Úallrcr.rÚprint)rJZlanguages_pathsr#Zcomponent_languages_directoryÚresultrrrÚ find_languageOs    rqrlÚPOSTcCstdƒS)Nú /dashboard)rrrrrÚhome]srtz/logincCsltjdkr2tj d¡}tj d¡}tdD]}|d|kr/|d|kr/|td<ttdƒƒSqdStdƒS)NrrrNÚpasswordZusersúcomponents.dashboarduBÐ�евірне ім'Ñ� кориÑ�тувача або пароль.zfirst-login.html) r ÚmethodÚformrWÚconfigrrrr)rNruÚuserrrrÚ first_loginbs    €r{z/logoutcCst dd¡ttdƒƒSrM)rÚpoprrrrrrÚlogoutns  r}z/change_language/cCs|td<|t_ttdƒƒS)NÚlangrv)rr Úcurrent_languagerr)r~rrrÚchange_languagess r€rscsš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|]}|‘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) ÚrequestsrWr Ú update_domainÚjsonr!r9rnr rOrrÚmenu)ÚresponseÚ json_datarˆrJr‡Zfiltered_componentsrrr†rÚ dashboardys$  þr�z&/show_components/cs>t tj›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 r‹rŒÚnextr)r”rŽr�r–rr“rÚshow_components›s r˜z-/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)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‹rŒ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 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)$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-z"Component installed successfully: z vÚ z�, please wait installing requirments... zError installing component: )"rŠrWr r‹rŒr—r�ržrr Úraise_for_statusr^Ú iter_contentr¤ÚzipfileÚZipFileÚ extractallÚremover!r9r¥r<r8rr¦r0r1r2r3r§Ú$search_babel_translation_directoriesÚbabel_translation_directoriesÚ Exceptionr©)r”rªrŽr�r–Z archive_urlr0Zcomponent_folderZ archive_pathr¯ÚchunkZzip_refrer®r#r°rr“rÚinstall_component_from_archiveãsl   ÿÿ ÿ 8    üú   þ€ÿrÂz5/install-requirments/cCs¢t tj›|›d�¡}|jdkr| ¡}t|ƒn ddid|›d�ddœg}d}t||ƒt ¡t j   d|d ¡}t j   |¡rOtj ›d |›�}tj|d d d �d S)Nz /menu-itemsr*r.Úerrorz--error)ÚurlZiconÚtitleÚcategoryzcomponents/menu.ymlrJzrequirements.txtz/python -m pip install -r T)ÚshellÚcheckzµRequirements installed successfully please wait installing requirments components... )rŠrWr ÚdomainÚ status_coderŒrorhÚget_menu_elenentsr�ržrÚisfileÚ venv_bin_pathr¢Úrun)Zselected_component_namerŽrfreÚ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_components\s  ÿÿ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#rrr~sz'remove_dependencies..r\FzXComponent successfully turn off ) r!r9rWr^Ú readlinesÚ writelinesr3r8rr§)r”rer¯ÚlinesZ updated_linesrr×rÚremove_dependenciesos   ÿ  ÿ 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_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)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à)4rºÚflaskrrrrrrrr r�rÝr rr Úk2.k2cfgr Z flask_migrater rŠr¢rr_Ú functoolsrÚsysr8r ÚModelr!r>Ú components_bpr`r^ryrTrhÚrouterqrtr{r}r€r�r˜r±rÂrÐrÓrÛrÜràrrrrÚsj(               @ \