mirror of
https://github.com/tubearchivist/tubearchivist-frontend.git
synced 2024-11-22 20:00:15 +00:00
change backup and restore to tag files
This commit is contained in:
parent
6ad1c8e73b
commit
f7c73f7eba
@ -268,11 +268,11 @@ class PostData:
|
|||||||
run_backup.delay("manual")
|
run_backup.delay("manual")
|
||||||
return {"success": True}
|
return {"success": True}
|
||||||
|
|
||||||
@staticmethod
|
def _db_restore(self):
|
||||||
def _db_restore():
|
|
||||||
"""restore es zip from settings page"""
|
"""restore es zip from settings page"""
|
||||||
print("restoring index from backup zip")
|
print("restoring index from backup zip")
|
||||||
run_restore_backup.delay()
|
filename = self.exec_val
|
||||||
|
run_restore_backup.delay(filename)
|
||||||
return {"success": True}
|
return {"success": True}
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
@ -492,8 +492,8 @@ class ElasticBackup:
|
|||||||
if not request.ok:
|
if not request.ok:
|
||||||
print(request.text)
|
print(request.text)
|
||||||
|
|
||||||
def unpack_zip_backup(self):
|
def get_all_backup_files(self):
|
||||||
"""extract backup zip and return filelist"""
|
"""build all available backup files for view"""
|
||||||
cache_dir = self.config["application"]["cache_dir"]
|
cache_dir = self.config["application"]["cache_dir"]
|
||||||
backup_dir = os.path.join(cache_dir, "backup")
|
backup_dir = os.path.join(cache_dir, "backup")
|
||||||
backup_files = os.listdir(backup_dir)
|
backup_files = os.listdir(backup_dir)
|
||||||
@ -503,9 +503,32 @@ class ElasticBackup:
|
|||||||
for i in all_backup_files
|
for i in all_backup_files
|
||||||
if i.startswith("ta_") and i.endswith(".zip")
|
if i.startswith("ta_") and i.endswith(".zip")
|
||||||
]
|
]
|
||||||
all_available_backups.sort()
|
all_available_backups.sort(reverse=True)
|
||||||
newest_backup = all_available_backups[-1]
|
|
||||||
file_path = os.path.join(backup_dir, newest_backup)
|
backup_dicts = []
|
||||||
|
for backup_file in all_available_backups:
|
||||||
|
file_split = backup_file.split("-")
|
||||||
|
if len(file_split) == 2:
|
||||||
|
timestamp = file_split[1].strip(".zip")
|
||||||
|
reason = False
|
||||||
|
elif len(file_split) == 3:
|
||||||
|
timestamp = file_split[1]
|
||||||
|
reason = file_split[2].strip(".zip")
|
||||||
|
|
||||||
|
to_add = {
|
||||||
|
"filename": backup_file,
|
||||||
|
"timestamp": timestamp,
|
||||||
|
"reason": reason,
|
||||||
|
}
|
||||||
|
backup_dicts.append(to_add)
|
||||||
|
|
||||||
|
return backup_dicts
|
||||||
|
|
||||||
|
def unpack_zip_backup(self, filename):
|
||||||
|
"""extract backup zip and return filelist"""
|
||||||
|
cache_dir = self.config["application"]["cache_dir"]
|
||||||
|
backup_dir = os.path.join(cache_dir, "backup")
|
||||||
|
file_path = os.path.join(backup_dir, filename)
|
||||||
|
|
||||||
with zipfile.ZipFile(file_path, "r") as z:
|
with zipfile.ZipFile(file_path, "r") as z:
|
||||||
zip_content = z.namelist()
|
zip_content = z.namelist()
|
||||||
@ -541,6 +564,13 @@ class ElasticBackup:
|
|||||||
return response.ok
|
return response.ok
|
||||||
|
|
||||||
|
|
||||||
|
def get_available_backups():
|
||||||
|
"""return dict of available backups for settings view"""
|
||||||
|
backup_handler = ElasticBackup(INDEX_CONFIG, reason=False)
|
||||||
|
all_backup_files = backup_handler.get_all_backup_files()
|
||||||
|
return all_backup_files
|
||||||
|
|
||||||
|
|
||||||
def backup_all_indexes(reason):
|
def backup_all_indexes(reason):
|
||||||
"""backup all es indexes to disk"""
|
"""backup all es indexes to disk"""
|
||||||
backup_handler = ElasticBackup(INDEX_CONFIG, reason)
|
backup_handler = ElasticBackup(INDEX_CONFIG, reason)
|
||||||
@ -557,13 +587,13 @@ def backup_all_indexes(reason):
|
|||||||
backup_handler.zip_it()
|
backup_handler.zip_it()
|
||||||
|
|
||||||
|
|
||||||
def restore_from_backup():
|
def restore_from_backup(filename):
|
||||||
"""restore indexes from backup file"""
|
"""restore indexes from backup file"""
|
||||||
# delete
|
# delete
|
||||||
index_check(force_restore=True)
|
index_check(force_restore=True)
|
||||||
# recreate
|
# recreate
|
||||||
backup_handler = ElasticBackup(INDEX_CONFIG, reason=False)
|
backup_handler = ElasticBackup(INDEX_CONFIG, reason=False)
|
||||||
zip_content = backup_handler.unpack_zip_backup()
|
zip_content = backup_handler.unpack_zip_backup(filename)
|
||||||
backup_handler.restore_json_files(zip_content)
|
backup_handler.restore_json_files(zip_content)
|
||||||
|
|
||||||
|
|
||||||
|
@ -169,9 +169,9 @@ def run_backup(reason="auto"):
|
|||||||
|
|
||||||
|
|
||||||
@shared_task
|
@shared_task
|
||||||
def run_restore_backup():
|
def run_restore_backup(filename):
|
||||||
"""called from settings page, dump backup to zip file"""
|
"""called from settings page, dump backup to zip file"""
|
||||||
restore_from_backup()
|
restore_from_backup(filename)
|
||||||
print("index restore finished")
|
print("index restore finished")
|
||||||
|
|
||||||
|
|
||||||
|
@ -31,6 +31,7 @@ from home.src.config import AppConfig, ScheduleBuilder
|
|||||||
from home.src.frontend import PostData
|
from home.src.frontend import PostData
|
||||||
from home.src.helper import RedisArchivist, UrlListParser
|
from home.src.helper import RedisArchivist, UrlListParser
|
||||||
from home.src.index import YoutubePlaylist
|
from home.src.index import YoutubePlaylist
|
||||||
|
from home.src.index_management import get_available_backups
|
||||||
from home.src.searching import Pagination, SearchHandler
|
from home.src.searching import Pagination, SearchHandler
|
||||||
from home.tasks import extrac_dl, subscribe_to
|
from home.tasks import extrac_dl, subscribe_to
|
||||||
|
|
||||||
@ -898,6 +899,7 @@ class SettingsView(View):
|
|||||||
config_handler = AppConfig(request.user.id)
|
config_handler = AppConfig(request.user.id)
|
||||||
colors = config_handler.colors
|
colors = config_handler.colors
|
||||||
|
|
||||||
|
available_backups = get_available_backups()
|
||||||
user_form = UserSettingsForm()
|
user_form = UserSettingsForm()
|
||||||
app_form = ApplicationSettingsForm()
|
app_form = ApplicationSettingsForm()
|
||||||
scheduler_form = SchedulerSettingsForm()
|
scheduler_form = SchedulerSettingsForm()
|
||||||
@ -906,6 +908,7 @@ class SettingsView(View):
|
|||||||
"title": "Settings",
|
"title": "Settings",
|
||||||
"config": config_handler.config,
|
"config": config_handler.config,
|
||||||
"colors": colors,
|
"colors": colors,
|
||||||
|
"available_backups": available_backups,
|
||||||
"user_form": user_form,
|
"user_form": user_form,
|
||||||
"app_form": app_form,
|
"app_form": app_form,
|
||||||
"scheduler_form": scheduler_form,
|
"scheduler_form": scheduler_form,
|
||||||
|
Loading…
Reference in New Issue
Block a user