o ¯ÊŠdOOã@sNddlZddlmZmZmZmZmZmZmZm 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$dd„Z%ej&ddgd�dd„ƒZ'ej&dddgd�e#dd„ƒƒZ(ej&d ddgd�d!d"„ƒZ)e &d#¡d$d%„ƒZ*e &d&¡d'd(„ƒZ+e &d)¡e#d*d+„ƒƒZ,e &d,¡d-d.„ƒZ-e &d/¡d0d1„ƒZ.e &d2¡d3d4„ƒZ/ej&d5dgd�d6d7„ƒZ0e &d8¡d9d:„ƒZ1ej&d;dgd�ddgd�d?d@„ƒZ3e &dA¡dBdC„ƒZ4e &dD¡dEdF„ƒZ5dS)Gé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©Ú generated_idrú%/home/yana/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„ƒZedd„ƒZdS)Ú ComponentÚdb2Ú componentÚextend_existingTé$)Ú primary_keyÚdefaultédF)ÚnullableéÈé)r(cCs(||_||_||_||_||_||_dS©N©ÚnameÚ descriptionÚversionÚgit_linkÚ dependenciesÚ installed)Úselfr/r0r1r2r3r4rrrÚ__init__'s  zComponent.__init__cCsd|j›d|j›d�S)Nz Component('z', 'ú'))r/r1)r5rrrÚ__repr__.szComponent.__repr__cCó tj t¡ tj|k¡ ¡}|Sr-©ÚdbrÚqueryr"ÚfilterÚidÚfirst©r5Úrep_idr$rrrÚget_repository_by_id0ózComponent.get_repository_by_idcCr9r-r:r@rrrrB4rCN)Ú__name__Ú __module__Ú __qualname__Ú __bind_key__Ú __tablename__Ú__table_args__r;ÚColumnÚStringr!r>r/r0r1r2r3ÚDateTimer ÚutcnowÚdate_installedÚBooleanr4r6r8Ú classmethodrBrrrrr"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_view<s z,first_login_required..decorated_viewr)rYrZrrXrÚfirst_login_required;sr[cCsÀ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Ú Js€z&append_to_yaml_file..)Ústartr>ÚwF©Údefault_flow_style)ÚopenÚyamlÚ safe_loadÚmaxÚ enumerateÚappendÚdump)Ú file_pathÚdataÚfÚ existing_dataÚstart_idrrarrrÚappend_to_yaml_fileCs ÿ  "ÿrscsŠt|dƒ�}t |¡p g}Wdƒn1swY‡fdd„|Dƒ}t|dƒ�}tj||dd�WdƒdS1s>wYdS)Nr\csg|] }| d¡ˆkr|‘qS©Úcomponent_namer^r`rtrrrXóz)remove_from_yaml_file..rdFre)rgrhrirm)rnrurprqÚ updated_datarrtrÚremove_from_yaml_fileTs ÿ "ÿrxz/api/languagesÚGET)ÚmethodscCsZtj ¡}g}| d¡|D]}d|jd|jd}| |¡qd |¡}t|ƒ|S)NÚ languagesz components/ú/z /languagesú;)r"r<Úallrlr/rÚprint)rQÚlanguages_pathsr$Úcomponent_languages_directoryÚresultrrrÚ find_language]s    rƒr|ÚPOSTcCstdƒS)Nú /dashboard)rrrrrÚhomeksr†z/logincCsltjdkr2tj d¡}tj d¡}tdD]}|d|kr/|d|kr/|td<ttdƒƒSqdStdƒS)Nr„rUÚpasswordÚusersúcomponents.dashboarduBÐ�евірне ім'Ñ� кориÑ�тувача або пароль.zfirst-login.html) r ÚmethodÚformr_Úconfigrrrr)rUr‡ÚuserrrrÚ first_loginps    €rŽz/logoutcCst dd¡ttdƒƒSrT)rÚpoprrrrrrÚlogout|s  r�z/change_language/cCs|td<|t_ttdƒƒS)NÚlangr‰)rr Úcurrent_languagerr)r‘rrrÚchange_language�s r“r…csš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..cSsg|]}|j‘qSr©r/©rr$rrrr—sÚ search_querycsTg|]&}|drˆ ¡|d ¡vs&n  |dr$ˆ ¡|d ¡vrn q|‘qS)r/Fr0)Úlowerr–©r—rrr�sÿÿÿÿþþ ýzdashboard.html)rQÚcomponents_namesÚcomponent_serverr—Úlanguage) Úrequestsr_r Ú update_domainÚjsonr"r<r~r rVr’rÚmenu)ÚresponseÚ json_datar›rQršÚfiltered_componentsr’rr™rÚ dashboard‡s$  þr¤z&/show_components/cs>t tj›d�¡}| ¡}t‡fdd„|Dƒdƒ}td|d�S)Nr”c3ó �|] }|dˆkr|VqdS©r>Nrr–©Ú component_idrrrb­ó€z"show_components..zcomponent-info.html)Úselected_component)r�r_r 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)NrQr”c3r¥r¦rr–r§rrrb·r©z)install_components_git..r/r2z __init__.pyÚazvenv/Scripts/python.exez-mÚpipÚinstallz --use-pep517zgit+z --target=ú routes.pyr3Ú r•r0r1Tr.zOInstalled successfully zError installing : )r�r_r ržrŸr«ÚosÚpathrÚexistsÚmakedirsrgÚcloseÚ subprocessÚ check_callÚwriter"r<Ú filter_byr?r;rÚaddÚcommitÚCalledProcessErrorÚstr)r¨Úproject_folderr¡r¢rªÚrepository_nameÚrepository_folderÚ git_repo_urlÚ init_fileÚcommandrnÚcodeÚfiler$Ú new_componentÚerr§rÚinstall_components_git°sN        üú €ÿ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]} |   | ¡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 ¡ttj ƒd|d ›d|›d tj!›d!|d ›d"� WSt"�yA}z d#t#|ƒ›�WYd}~Sd}~ww)$NrQr”c3r¥r¦rr–r§rrrbør©z1install_component_from_archive..zComponent not foundÚlatest_component_dataÚlatest_versionT)Úexist_ok)Ústreamr/z.zipÚwbi )Ú chunk_sizer\r°zfrom components.Ú.z.views import z app.register_blueprint(z, url_prefix='/r7r­r±r•r0r2r.z"Component installed successfully: z vÚ z�, please wait installing requirments... zError installing component: )$r�r_r ržrŸr«r²r³rrµÚraise_for_statusrgÚ iter_contentr¹ÚzipfileÚZipFileÚ extractallÚremover"r<rºr?r;rr»r1r2r3r4r¼Ú$search_babel_translation_directoriesrÚdomainÚbabel_translation_directoriesÚ Exceptionr¾)r¨r¿r¡r¢rªÚ archive_urlr1Úcomponent_folderÚ archive_pathrÆÚchunkÚzip_refrnrÅr$rÈrr§rÚinstall_component_from_archiveñsn   ÿÿ ÿ 8    üú    þ€ÿráz5/install-requirments/cCs´t tj›|›d�¡}|jdkr| ¡}t|ƒn ddid|›d�ddœg}|D]}||d<q(d}t||ƒt ¡t j   d |d ¡}t j   |¡rXtj ›d |›�}tj|d d d �dS)Nz /menu-itemsr+r/Úerrorz--error)ÚurlÚiconÚtitleÚcategoryruúcomponents/menu.ymlrQzrequirements.txtz/python -m pip install -r T)ÚshellÚcheckzµRequirements installed successfully please wait installing requirments components... )r�r_r rÙÚ status_coderŸrrsÚget_menu_elenentsr²r³rÚisfileÚ venv_bin_pathr·Úrun)Úselected_component_namer¡rorarnÚrequirements_fileÚ pip_commandrrrÚinstall_requirmentsNs&  ü   ròz/install-requirments-componentscCspd}d}tj |¡r%tddƒ�}| ¡ ¡}Wdƒn1s wY|r6|D] }t d|›�¡}q)dSdS)Nzrequirements_components.txtr\z/install_components/ziRequirements components installed successfully z8)r²r³rìrgÚreadÚ splitlinesr�r_)rðÚ component_idsrÆr¨r¡rrrÚinstall_requirements_componentsls  ÿÿröz*/remove_dependencies/cs¸tj |¡‰ˆs dSˆj}d}t||ƒd}t|dƒ� }| ¡}Wdƒn1s*wY‡fdd„|Dƒ}t|dƒ� }| |¡Wdƒn1sMwYdˆ_t j   ¡d S) NúLComponent not found rçr°r\csg|] }| ¡ˆjvr|‘qSr)Ústripr3)rÚline©r$rrr�rvz'remove_dependencies..rdFzXComponent successfully turn off ) r"r<r_r/rxrgÚ readlinesÚ writelinesr4r;rr¼)r¨rurnrÆÚlinesÚ updated_linesrrúrÚremove_dependenciess"    ÿ  ÿ rÿz'/add_dependencies/cCsftj |¡}|s dSd}|j}t|dƒ� }| |¡Wdƒn1s$wYd|_tj  ¡dS)Nr÷r°r­TzXDependencies added successfully ) r"r<r_r3rgr¹r4r;rr¼)r¨r$rnrÅrÆrrrÚadd_dependencies˜s   þ rz'/remove-component/c CsŒd}tj |¡}|j}tj ||¡}ztj |¡rt  |¡|r+t j   |¡t j   ¡WdStyE}z dt|ƒWYd}~Sd}~ww)NrQzWComponent removed successfully zError removing component: )r"r<r_r/r²r³rr´ÚshutilÚrmtreer;rÚdeleter¼rÛr¾)r¨r¿r$rÀrÁrÈrrrÚremove_component­s     €þrz/api/main-menu/cCstjSr-)r r rrrrÚ project_menuÆsr)6rÔÚflaskrrrrrrrr r²rr rr Úk2.k2cfgr Ú flask_migrater r�r·rrhÚ functoolsrÚsysr;r!ÚModelr"rDÚ components_bprirgrŒr[rsrxÚrouterƒr†rŽr�r“r¤r¬rÉráròrörÿrrrrrrrÚsp(               @ \