From 23d373a9039cadca899ece7d400f1cbd9069ef1e Mon Sep 17 00:00:00 2001 From: dsk-minchulahn Date: Wed, 16 Aug 2023 15:55:17 +0900 Subject: [PATCH] Add git config --- dashboard/settings.py | 10 ++++++-- dashboard/sidebar.py | 58 ++++++++++++++++++++++++++++--------------- 2 files changed, 46 insertions(+), 22 deletions(-) diff --git a/dashboard/settings.py b/dashboard/settings.py index 6cca01d..baa944e 100644 --- a/dashboard/settings.py +++ b/dashboard/settings.py @@ -3,8 +3,6 @@ from git import Repo repo = Repo('.') file_path = './version.json' -repo.config_writer().set_value('user', 'name', 'dsk-minchulahn').release() -repo.config_writer().set_value('user', 'email', 'minchulahn@ex-em.com').release() api_url = 'https://api.github.com/repos/cloudmoa/sample-app/releases' github_token = os.environ.get('GITHUB_TOKEN') @@ -25,6 +23,14 @@ def get_github_releases(): releases = requests.get(api_url, headers=headers).json() return releases +def get_user_name_list(): + users = ['', 'dsk-minchulahn', 'Ose-Exem', 'deukjin', 'pparkssi3'] + return users + +def set_git_config(username): + repo.config_writer().set_value('user', 'name', username).release() + repo.config_writer().set_value('user', 'email', 'minchulahn@ex-em.com').release() + def diff(): if len(repo.index.diff(repo.head.commit)) > 0: return True diff --git a/dashboard/sidebar.py b/dashboard/sidebar.py index 6ddd350..33ae467 100644 --- a/dashboard/sidebar.py +++ b/dashboard/sidebar.py @@ -4,6 +4,11 @@ from streamlit_js_eval import streamlit_js_eval from settings import * from logger import logger +if 'push_button_disabled' not in st.session_state: + st.session_state.push_button_disabled = True +if 'release_button_disabled' not in st.session_state: + st.session_state.release_button_disabled = True + def set_extended_description(edited_df): json_edited_df = json.loads(edited_df.to_json(orient='records')) extended_description_value = [] @@ -30,24 +35,31 @@ def show_sidebar(df, edited_df): with st.sidebar: st.subheader('Git Push') with st.expander('Git Push'): + selected_user_name = st.selectbox('User Name', get_user_name_list()) commit_message = st.text_input('Commit Message', value='Update version.json') extended_description = st.text_area('Extended description', value=set_extended_description(edited_df), height=200) - - if st.button(key='push', label='Commit changes'): - if commit_message: + + if selected_user_name and commit_message: + st.session_state.push_button_disabled = False + else: + st.session_state.push_button_disabled = True + + if st.button(key='push', label='Commit changes', disabled=st.session_state.push_button_disabled): + if selected_user_name and commit_message: if diff_remote_head(): if df.equals(edited_df): - logger.warning('Git Push - No changes have been made') + logger.warning(f'Git Push - No changes have been made | {selected_user_name}') st.warning('No changes have been made', icon='⚠️') else: + set_git_config(selected_user_name) set_version_json(edited_df) git_push(commit_message, extended_description) - logger.info('Git Push - Success') + logger.info(f'Git Push - Success | {selected_user_name}') st.success('Success', icon='✅') time.sleep(1) streamlit_js_eval(js_expressions='parent.window.location.reload()') else: - logger.error('Git Push - Updates were rejected because the tip of your current branch is behind') + logger.error(f'Git Push - Updates were rejected because the tip of your current branch is behind | {selected_user_name}') st.error('Updates were rejected because the tip of your current branch is behind', icon='🚨') st.divider() @@ -55,7 +67,7 @@ def show_sidebar(df, edited_df): st.subheader('Draft a new release') with st.expander('Draft a new release'): tags = [tag.name for tag in get_tags()] - tags.insert(0, "") + tags.insert(0, '') new_tag = st.text_input('Create a new tag') if new_tag: @@ -68,17 +80,23 @@ def show_sidebar(df, edited_df): release_title = st.text_input('Release title', value=selected_tag) release_describe = st.text_area('Describe this release', value='## Production에 변경된 Version') - if st.button(key='release', label='Publish release'): - response = publish_release(selected_tag, release_title, release_describe) - - if response.status_code == 201: - logger.info('Publish Release - Release created successfully') - st.success('Release created successfully', icon='✅') - git_pull() - streamlit_js_eval(js_expressions='parent.window.location.reload()') - else: - logger.error(f'Publish Release - Failed to create release. Status code: {response.status_code}') - logger.error(f'Response: {response.text}') - st.error(f'Failed to create release. Status code: {response.status_code}\n\n Response: {response.text}', icon='🚨') + if selected_tag and release_title and release_describe: + st.session_state.release_button_disabled = False + else: + st.session_state.release_button_disabled = True + + if st.button(key='release', label='Publish release', disabled=st.session_state.release_button_disabled): + if selected_tag and release_title and release_describe: + response = publish_release(selected_tag, release_title, release_describe) + + if response.status_code == 201: + logger.info(f'Publish Release - Release created successfully | {selected_user_name}') + st.success('Release created successfully', icon='✅') + git_pull() + streamlit_js_eval(js_expressions='parent.window.location.reload()') + else: + logger.error(f'Publish Release - Failed to create release. Status code: {response.status_code}') + logger.error(f'Response: {response.text} | {selected_user_name}') + st.error(f'Failed to create release. Status code: {response.status_code}\n\n Response: {response.text}', icon='🚨') - st.divider() + st.divider() \ No newline at end of file