mirror of
https://github.com/tubearchivist/tubearchivist
synced 2024-11-02 09:41:07 +00:00
frontend implementation for snapshot integration
This commit is contained in:
parent
749f61aba6
commit
1fbd603374
@ -37,7 +37,8 @@
|
|||||||
"cache_dir": "/cache",
|
"cache_dir": "/cache",
|
||||||
"videos": "/youtube",
|
"videos": "/youtube",
|
||||||
"colors": "dark",
|
"colors": "dark",
|
||||||
"enable_cast": false
|
"enable_cast": false,
|
||||||
|
"enable_snapshot": false
|
||||||
},
|
},
|
||||||
"scheduler": {
|
"scheduler": {
|
||||||
"update_subscribed": false,
|
"update_subscribed": false,
|
||||||
|
@ -34,6 +34,7 @@ class ElasticSnapshot:
|
|||||||
|
|
||||||
def setup(self):
|
def setup(self):
|
||||||
"""setup the snapshot in ES, create or update if needed"""
|
"""setup the snapshot in ES, create or update if needed"""
|
||||||
|
print("snapshot: run setup")
|
||||||
repo_exists = self._check_repo_exists()
|
repo_exists = self._check_repo_exists()
|
||||||
if not repo_exists:
|
if not repo_exists:
|
||||||
self.create_repo()
|
self.create_repo()
|
||||||
|
@ -74,6 +74,12 @@ class ApplicationSettingsForm(forms.Form):
|
|||||||
("1", "enable Cast"),
|
("1", "enable Cast"),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
SNAPSHOT_CHOICES = [
|
||||||
|
("", "-- change snapshot settings --"),
|
||||||
|
("0", "disable system snapshots"),
|
||||||
|
("1", "enable system snapshots"),
|
||||||
|
]
|
||||||
|
|
||||||
SUBTITLE_SOURCE_CHOICES = [
|
SUBTITLE_SOURCE_CHOICES = [
|
||||||
("", "-- change subtitle source settings"),
|
("", "-- change subtitle source settings"),
|
||||||
("user", "only download user created"),
|
("user", "only download user created"),
|
||||||
@ -124,6 +130,9 @@ class ApplicationSettingsForm(forms.Form):
|
|||||||
application_enable_cast = forms.ChoiceField(
|
application_enable_cast = forms.ChoiceField(
|
||||||
widget=forms.Select, choices=CAST_CHOICES, required=False
|
widget=forms.Select, choices=CAST_CHOICES, required=False
|
||||||
)
|
)
|
||||||
|
application_enable_snapshot = forms.ChoiceField(
|
||||||
|
widget=forms.Select, choices=SNAPSHOT_CHOICES, required=False
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class SchedulerSettingsForm(forms.Form):
|
class SchedulerSettingsForm(forms.Form):
|
||||||
|
@ -153,6 +153,23 @@
|
|||||||
{{ app_form.application_enable_cast }}
|
{{ app_form.application_enable_cast }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="settings-group">
|
||||||
|
<h2 id="snapshots">Snapshots</h2>
|
||||||
|
<div class="settings-item">
|
||||||
|
<p>Current system snapshot: <span class="settings-current">{{ config.application.enable_snapshot }}</span></p>
|
||||||
|
<i>Automatically create daily deduplicated snapshots of the index, stored in Elasticsearch. Read first before activating: Wiki.</i><br>
|
||||||
|
{{ app_form.application_enable_snapshot }}
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
{% if snapshots %}
|
||||||
|
<p>Create next snapshot: <span class="settings-current">{{ snapshots.next_exec_str }}</span>, snapshots expire after <span class="settings-current">{{ snapshots.expire_after }}</span></p>
|
||||||
|
<br>
|
||||||
|
{% for snapshot in snapshots.snapshots %}
|
||||||
|
<p><button data-id="{{ snapshot.id }}">Restore</button> Snapshot created on: <span class="settings-current">{{ snapshot.start_date }}</span>, took <span class="settings-current">{{ snapshot.duration_s }}s</span> to create</p>
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<button type="submit" name="application-settings">Update Application Configurations</button>
|
<button type="submit" name="application-settings">Update Application Configurations</button>
|
||||||
</form>
|
</form>
|
||||||
<div class="title-bar">
|
<div class="title-bar">
|
||||||
|
@ -18,6 +18,7 @@ from django.views import View
|
|||||||
from home.src.download.yt_dlp_base import CookieHandler
|
from home.src.download.yt_dlp_base import CookieHandler
|
||||||
from home.src.es.connect import ElasticWrap
|
from home.src.es.connect import ElasticWrap
|
||||||
from home.src.es.index_setup import get_available_backups
|
from home.src.es.index_setup import get_available_backups
|
||||||
|
from home.src.es.snapshot import ElasticSnapshot
|
||||||
from home.src.frontend.api_calls import PostData
|
from home.src.frontend.api_calls import PostData
|
||||||
from home.src.frontend.forms import (
|
from home.src.frontend.forms import (
|
||||||
AddToQueueForm,
|
AddToQueueForm,
|
||||||
@ -942,6 +943,7 @@ class SettingsView(View):
|
|||||||
user_form = UserSettingsForm()
|
user_form = UserSettingsForm()
|
||||||
app_form = ApplicationSettingsForm()
|
app_form = ApplicationSettingsForm()
|
||||||
scheduler_form = SchedulerSettingsForm()
|
scheduler_form = SchedulerSettingsForm()
|
||||||
|
snapshots = ElasticSnapshot().get_snapshot_stats()
|
||||||
token = self.get_token(request)
|
token = self.get_token(request)
|
||||||
|
|
||||||
context = {
|
context = {
|
||||||
@ -953,6 +955,7 @@ class SettingsView(View):
|
|||||||
"user_form": user_form,
|
"user_form": user_form,
|
||||||
"app_form": app_form,
|
"app_form": app_form,
|
||||||
"scheduler_form": scheduler_form,
|
"scheduler_form": scheduler_form,
|
||||||
|
"snapshots": snapshots,
|
||||||
"version": settings.TA_VERSION,
|
"version": settings.TA_VERSION,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1000,6 +1003,8 @@ class SettingsView(View):
|
|||||||
for config_value, updated_value in updated:
|
for config_value, updated_value in updated:
|
||||||
if config_value == "cookie_import":
|
if config_value == "cookie_import":
|
||||||
self.process_cookie(config, updated_value)
|
self.process_cookie(config, updated_value)
|
||||||
|
if config_value == "enable_snapshot":
|
||||||
|
ElasticSnapshot().setup()
|
||||||
|
|
||||||
def process_cookie(self, config, updated_value):
|
def process_cookie(self, config, updated_value):
|
||||||
"""import and validate cookie"""
|
"""import and validate cookie"""
|
||||||
|
Loading…
Reference in New Issue
Block a user