From 55018afc26b6b0e4dcd7a69500717e14065059ea Mon Sep 17 00:00:00 2001 From: Barunes Padhy Date: Tue, 18 Jun 2024 21:31:54 +0300 Subject: [PATCH] set icon, update github deployment --- ...a_dark_theme_alter_userdata_light_theme.py | 23 +++++++ backend/apimanager/publish_methods.py | 60 ++++++++++++++++-- backend/backend/settings.py | 1 + backend/icons/128x128.png | Bin 0 -> 11407 bytes backend/icons/256x256.png | Bin 0 -> 19784 bytes backend/icons/64x64.png | Bin 0 -> 7660 bytes frontend/editable-ui/index.html | 2 +- frontend/editable-ui/public/rangolio.png | Bin 0 -> 7660 bytes frontend/editable-ui/public/vite.svg | 1 - .../editable-ui/src/components/blog-list.jsx | 2 + .../components/shared/card-list-viewer.jsx | 2 +- 11 files changed, 83 insertions(+), 8 deletions(-) create mode 100644 backend/apimanager/migrations/0015_alter_userdata_dark_theme_alter_userdata_light_theme.py create mode 100644 backend/icons/128x128.png create mode 100644 backend/icons/256x256.png create mode 100644 backend/icons/64x64.png create mode 100644 frontend/editable-ui/public/rangolio.png delete mode 100755 frontend/editable-ui/public/vite.svg diff --git a/backend/apimanager/migrations/0015_alter_userdata_dark_theme_alter_userdata_light_theme.py b/backend/apimanager/migrations/0015_alter_userdata_dark_theme_alter_userdata_light_theme.py new file mode 100644 index 0000000..4c4a4c3 --- /dev/null +++ b/backend/apimanager/migrations/0015_alter_userdata_dark_theme_alter_userdata_light_theme.py @@ -0,0 +1,23 @@ +# Generated by Django 5.0.6 on 2024-06-18 15:19 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('apimanager', '0014_alter_userdata_name'), + ] + + operations = [ + migrations.AlterField( + model_name='userdata', + name='dark_theme', + field=models.CharField(default='{"theme": "Dark Mode","background": "bg-dark","textColor": "text-white","linkBackground": "bg-light","linkTextColor": "text-black","captionColor": "#8a8a8a","fontAwesomeIcon": "faSun","borderColor": "border-light","buttonColor": "light","navBar": {"navBarTheme": "navbar-dark","background": "bg-secondary","buttonColor": "light"},"footer": {"background": "bg-secondary","text": "text-white"}}', max_length=1500), + ), + migrations.AlterField( + model_name='userdata', + name='light_theme', + field=models.CharField(default='{"theme": "Light Mode","background": "bg-light","textColor": "text-black","linkBackground": "bg-dark","linkTextColor": "text-white","captionColor": "#605f5f","fontAwesomeIcon": "faMoon","borderColor": "border-secondary","buttonColor": "dark","navBar": {"navBarTheme": "navbar-light","background": "bg-secondary","buttonColor": "light"},"footer": {"background": "bg-secondary","text": "text-black"}}', max_length=1500), + ), + ] diff --git a/backend/apimanager/publish_methods.py b/backend/apimanager/publish_methods.py index daac69e..36bf484 100644 --- a/backend/apimanager/publish_methods.py +++ b/backend/apimanager/publish_methods.py @@ -26,6 +26,8 @@ def invokeDialogueBox(title, message, type): input_data = simpledialog.askstring(title, message) if type == 'password': input_data = simpledialog.askstring(title, message, show='*') + if type == 'yesno': + input_data = messagebox.askyesno(title, message) if type == 'message': messagebox.showinfo(title, message) @@ -69,6 +71,7 @@ def github_deploy(): git_commands["git_set_origin_url"] = ['git', 'remote', 'set-url', 'origin'] git_commands["git_add_url"] = ['git', 'remote', 'add', 'origin'] git_commands["git_push"] = ['git', 'push', '-u', 'origin', 'main'] + git_commands["git_clone"] = ['git', 'clone'] data_location = f'{settings.BASE_DIR}/deploy/' deploy_location = settings.DEPLOY_CONFIG["DEPLOY_LOCATION"]+'/ghpages' @@ -78,7 +81,12 @@ def github_deploy(): if not os.path.exists(f'{deploy_location}/.git'): try: - github_init(deploy_location, git_commands) + + existingRepo = invokeDialogueBox('Github Deploy', 'Do you have an existing repository with Rangolio on github?', 'yesno') + if (existingRepo): + git_existing_repo_setup(deploy_location, git_commands) + else: + github_init(deploy_location, git_commands) gh_pages_deploy(deploy_location, git_commands) return {'message': 'Github deployment successful', 'status': status.HTTP_200_OK} except Exception as e: @@ -95,33 +103,75 @@ def github_deploy(): def github_init(deploy_location, git_commands): - email = invokeDialogueBox('Github Deploy', 'Enter your github email', 'text') - name = invokeDialogueBox('Github Deploy', 'Enter your name', 'text') + user_details_defined = git_check_user_details(deploy_location, git_commands) + if not user_details_defined: + git_set_user_details(deploy_location, git_commands) username = invokeDialogueBox('Github Deploy', 'Enter your username', 'text') password = invokeDialogueBox('Github Deploy', 'Enter your github token', 'password') remote_url = f'https://{username}:{password}@github.com/{username}/{username}.github.io.git' subprocess.run(git_commands["git_init"], cwd=deploy_location, check=True, text=True, capture_output=True) - subprocess.run((git_commands["git_config_email"]).append(email), cwd=deploy_location, check=True, text=True, capture_output=True) - subprocess.run((git_commands["git_config_name"]).append(name), cwd=deploy_location, check=True, text=True, capture_output=True) subprocess.run(git_commands["git_add"], cwd=deploy_location, check=True, text=True, capture_output=True) subprocess.run(git_commands["git_commit"], cwd=deploy_location, check=True, text=True, capture_output=True) subprocess.run(git_commands["git_branch"], cwd=deploy_location, check=True, text=True, capture_output=True) subprocess.run((git_commands["git_add_url"]).append(remote_url), cwd=deploy_location, check=True, text=True, capture_output=True) subprocess.run(git_commands["git_push"], cwd=deploy_location, check=True, text=True, capture_output=True) +def git_set_user_details(deploy_location, git_commands): + email = invokeDialogueBox('Github Deploy', 'Enter your github email', 'text') + name = invokeDialogueBox('Github Deploy', 'Enter your name', 'text') + subprocess.run(git_commands["git_config_email"] + [email], cwd=deploy_location, check=True, text=True, capture_output=True) + subprocess.run(git_commands["git_config_name"]+ [name], cwd=deploy_location, check=True, text=True, capture_output=True) + +def git_existing_repo_setup(deploy_location, git_commands): + + repo_url = invokeDialogueBox('Github Deploy', 'Enter Repository URL', 'text') + if not repo_url.endswith('.git'): + repo_url = repo_url + '.git' + + dist_folder_name = ((repo_url.split('/')).pop()).removesuffix('.git') + subprocess.run(git_commands["git_clone"] + [repo_url], cwd=settings.DEPLOY_CONFIG["DEPLOY_LOCATION"], check=True, text=True, capture_output=True) + git_update_viewable_ui(deploy_location, dist_folder_name) + +def git_check_user_details( deploy_location, git_commands): + try: + subprocess.run(git_commands["git_config_name"], cwd=deploy_location, check=True, text=True, capture_output=True) + subprocess.run(git_commands["git_config_email"], cwd=deploy_location, check=True, text=True, capture_output=True) + return True + except Exception as e: + return False + + +def git_update_viewable_ui(deploy_location, dist_folder_name, build_frontend=False): + shutil.move(deploy_location, f'{deploy_location}.temp') + if build_frontend: + subprocess.run(["npm", 'run', 'build:ghpages'], cwd=settings.DEPLOY_CONFIG["VIEWABLE_UI_LOCATION"], check=True, text=True, capture_output=True) + shutil.move(f'{settings.DEPLOY_CONFIG["DEPLOY_LOCATION"]}/{dist_folder_name}', f'{deploy_location}') + shutil.copy(f'{deploy_location}.temp/index.html', deploy_location) + shutil.copy(f'{deploy_location}.temp/404.html', deploy_location) + shutil.copytree(f'{deploy_location}.temp/assets', f'{deploy_location}/assets', dirs_exist_ok=True) + if os.path.exists(f'{deploy_location}.temp/data'): + shutil.copytree(f'{deploy_location}.temp/data', f'{deploy_location}/data', dirs_exist_ok=True) + shutil.rmtree(f'{deploy_location}.temp') def gh_pages_deploy(deploy_location, git_commands): + user_details_defined = git_check_user_details(deploy_location, git_commands) + if not user_details_defined: + git_set_user_details(deploy_location, git_commands) subprocess.run(git_commands["git_pull"], cwd=deploy_location, check=True, text=True, capture_output=True) + print("completed git pull") origin_url_subprocess = subprocess.run(git_commands["git_get_origin_url"], cwd=deploy_location, check=True, text=True, capture_output=True) origin_url = origin_url_subprocess.stdout.strip() + print("Got origin as "+str(origin_url)) parsed_url = urllib.parse.urlparse(origin_url) + print(parsed_url) if not '@' in parsed_url.netloc: username = invokeDialogueBox('Github Deploy', 'Enter your username', 'text') password = invokeDialogueBox('Github Deploy', 'Enter your github token', 'password') netloc = f"{username}:{password}@{parsed_url.hostname}" new_url = urllib.parse.urlunparse(parsed_url._replace(netloc=netloc)) subprocess.run(git_commands["git_set_origin_url"] + [new_url], cwd=deploy_location, check=True, text=True, capture_output=True) + print("Origin URL changed") subprocess.run(git_commands["git_add"], cwd=deploy_location, check=True, text=True, capture_output=True) subprocess.run(git_commands["git_commit"], cwd=deploy_location, check=True, text=True, capture_output=True) subprocess.run(git_commands["git_push"], cwd=deploy_location, check=True, text=True, capture_output=True) diff --git a/backend/backend/settings.py b/backend/backend/settings.py index 2faa78d..4da9fe9 100644 --- a/backend/backend/settings.py +++ b/backend/backend/settings.py @@ -42,6 +42,7 @@ INSTALLED_APPS = [ ] DEPLOY_CONFIG = { + "VIEWABLE_UI_LOCATION": os.path.join(BASE_DIR, '../frontend/viewable-ui'), "DEPLOY_LOCATION": os.path.join(BASE_DIR, '../frontend/viewable-ui/dist') } diff --git a/backend/icons/128x128.png b/backend/icons/128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..2f6b1eb29b6623cfe2551a9603d110b671cc843c GIT binary patch literal 11407 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 literal 0 HcmV?d00001 diff --git a/backend/icons/256x256.png b/backend/icons/256x256.png new file mode 100644 index 0000000000000000000000000000000000000000..76438cd2c73e390a62c1bdcceec9fe26d654f283 GIT binary patch literal 19784 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 GFy%jK*gmfS literal 0 HcmV?d00001 diff --git a/backend/icons/64x64.png b/backend/icons/64x64.png new file mode 100644 index 0000000000000000000000000000000000000000..abda4b58564e17b2e4bafe8311b47e960d09bb04 GIT binary patch literal 7660 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 R&40-jpe(N;S1Dr=`aiY*j1>R? literal 0 HcmV?d00001 diff --git a/frontend/editable-ui/index.html b/frontend/editable-ui/index.html index fb0b53b..3dd4fed 100644 --- a/frontend/editable-ui/index.html +++ b/frontend/editable-ui/index.html @@ -2,7 +2,7 @@ - + Rangolio diff --git a/frontend/editable-ui/public/rangolio.png b/frontend/editable-ui/public/rangolio.png new file mode 100644 index 0000000000000000000000000000000000000000..abda4b58564e17b2e4bafe8311b47e960d09bb04 GIT binary patch literal 7660 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 R&40-jpe(N;S1Dr=`aiY*j1>R? literal 0 HcmV?d00001 diff --git a/frontend/editable-ui/public/vite.svg b/frontend/editable-ui/public/vite.svg deleted file mode 100755 index e7b8dfb..0000000 --- a/frontend/editable-ui/public/vite.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/frontend/editable-ui/src/components/blog-list.jsx b/frontend/editable-ui/src/components/blog-list.jsx index 87a3731..a32d701 100755 --- a/frontend/editable-ui/src/components/blog-list.jsx +++ b/frontend/editable-ui/src/components/blog-list.jsx @@ -111,6 +111,7 @@ function BlogList(props) { totalItems={featuredBlogData === 'nodata' ? 0 : 1} cardType={'longCard'} resourceType={'blog'} + showSetFeaturedBlog={false} textColor={ThemeConfig[GlobalTheme].textColor} bgColor={ThemeConfig[GlobalTheme].background} borderColor={ThemeConfig[GlobalTheme].borderColor} @@ -125,6 +126,7 @@ function BlogList(props) { { - itemObject.id === props.featuredBlog ? + props.showSetFeaturedBlog ?