mirror of
https://github.com/tubearchivist/tubearchivist-frontend.git
synced 2024-11-22 20:00:15 +00:00
userspace color
This commit is contained in:
parent
a4397b5204
commit
a8ded25b35
@ -14,8 +14,10 @@ from home.src.helper import RedisArchivist
|
|||||||
class AppConfig:
|
class AppConfig:
|
||||||
"""handle user settings and application variables"""
|
"""handle user settings and application variables"""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self, user_id=False):
|
||||||
|
self.user_id = user_id
|
||||||
self.config = self.get_config()
|
self.config = self.get_config()
|
||||||
|
self.colors = self.get_colors()
|
||||||
|
|
||||||
def get_config(self):
|
def get_config(self):
|
||||||
"""get config from default file or redis if changed"""
|
"""get config from default file or redis if changed"""
|
||||||
@ -23,6 +25,12 @@ class AppConfig:
|
|||||||
if not config:
|
if not config:
|
||||||
config = self.get_config_file()
|
config = self.get_config_file()
|
||||||
|
|
||||||
|
if self.user_id:
|
||||||
|
key = f"{self.user_id}:page_size"
|
||||||
|
page_size = RedisArchivist().get_message(key)["status"]
|
||||||
|
if page_size:
|
||||||
|
config["archive"]["page_size"] = page_size
|
||||||
|
|
||||||
config["application"].update(self.get_config_env())
|
config["application"].update(self.get_config_env())
|
||||||
return config
|
return config
|
||||||
|
|
||||||
@ -103,6 +111,19 @@ class AppConfig:
|
|||||||
redis_key = f"{user_id}:{key}"
|
redis_key = f"{user_id}:{key}"
|
||||||
RedisArchivist().set_message(redis_key, message, expire=False)
|
RedisArchivist().set_message(redis_key, message, expire=False)
|
||||||
|
|
||||||
|
def get_colors(self):
|
||||||
|
"""overwrite config if user has set custom values"""
|
||||||
|
colors = False
|
||||||
|
if self.user_id:
|
||||||
|
col_dict = RedisArchivist().get_message(f"{self.user_id}:colors")
|
||||||
|
colors = col_dict["status"]
|
||||||
|
|
||||||
|
if not colors:
|
||||||
|
colors = self.config["application"]["colors"]
|
||||||
|
|
||||||
|
self.config["application"]["colors"] = colors
|
||||||
|
return colors
|
||||||
|
|
||||||
def load_new_defaults(self):
|
def load_new_defaults(self):
|
||||||
"""check config.json for missing defaults"""
|
"""check config.json for missing defaults"""
|
||||||
default_config = self.get_config_file()
|
default_config = self.get_config_file()
|
||||||
|
@ -15,16 +15,16 @@ from django.http import JsonResponse
|
|||||||
from django.shortcuts import redirect, render
|
from django.shortcuts import redirect, render
|
||||||
from django.utils.http import urlencode
|
from django.utils.http import urlencode
|
||||||
from django.views import View
|
from django.views import View
|
||||||
|
from home.forms import (
|
||||||
|
ApplicationSettingsForm,
|
||||||
|
CustomAuthForm,
|
||||||
|
UserSettingsForm,
|
||||||
|
)
|
||||||
from home.src.config import AppConfig
|
from home.src.config import AppConfig
|
||||||
from home.src.download import ChannelSubscription, PendingList
|
from home.src.download import ChannelSubscription, PendingList
|
||||||
from home.src.helper import RedisArchivist, RedisQueue, process_url_list
|
from home.src.helper import RedisArchivist, RedisQueue, process_url_list
|
||||||
from home.src.index import WatchState, YoutubeChannel, YoutubeVideo
|
from home.src.index import WatchState, YoutubeChannel, YoutubeVideo
|
||||||
from home.src.searching import Pagination, SearchForm, SearchHandler
|
from home.src.searching import Pagination, SearchForm, SearchHandler
|
||||||
from home.forms import (
|
|
||||||
ApplicationSettingsForm,
|
|
||||||
CustomAuthForm,
|
|
||||||
UserSettingsForm
|
|
||||||
)
|
|
||||||
from home.tasks import (
|
from home.tasks import (
|
||||||
download_pending,
|
download_pending,
|
||||||
download_single,
|
download_single,
|
||||||
@ -127,27 +127,26 @@ class HomeView(View):
|
|||||||
@staticmethod
|
@staticmethod
|
||||||
def read_config(user_id):
|
def read_config(user_id):
|
||||||
"""read needed values from redis"""
|
"""read needed values from redis"""
|
||||||
config_handler = AppConfig().config
|
config_handler = AppConfig(user_id)
|
||||||
colors = config_handler["application"]["colors"]
|
|
||||||
|
|
||||||
view_key = f"{user_id}:view:home"
|
view_key = f"{user_id}:view:home"
|
||||||
view_style = RedisArchivist().get_message(view_key)["status"]
|
view_style = RedisArchivist().get_message(view_key)["status"]
|
||||||
if not view_style:
|
if not view_style:
|
||||||
view_style = config_handler["default_view"]["home"]
|
view_style = config_handler.config["default_view"]["home"]
|
||||||
|
|
||||||
sort_by = RedisArchivist().get_message(f"{user_id}:sort_by")["status"]
|
sort_by = RedisArchivist().get_message(f"{user_id}:sort_by")["status"]
|
||||||
if not sort_by:
|
if not sort_by:
|
||||||
sort_by = config_handler["archive"]["sort_by"]
|
sort_by = config_handler.config["archive"]["sort_by"]
|
||||||
|
|
||||||
sort_order_key = f"{user_id}:sort_order"
|
sort_order_key = f"{user_id}:sort_order"
|
||||||
sort_order = RedisArchivist().get_message(sort_order_key)["status"]
|
sort_order = RedisArchivist().get_message(sort_order_key)["status"]
|
||||||
if not sort_order:
|
if not sort_order:
|
||||||
sort_order = config_handler["archive"]["sort_order"]
|
sort_order = config_handler.config["archive"]["sort_order"]
|
||||||
|
|
||||||
hide_watched_key = f"{user_id}:hide_watched"
|
hide_watched_key = f"{user_id}:hide_watched"
|
||||||
hide_watched = RedisArchivist().get_message(hide_watched_key)["status"]
|
hide_watched = RedisArchivist().get_message(hide_watched_key)["status"]
|
||||||
view_config = {
|
view_config = {
|
||||||
"colors": colors,
|
"colors": config_handler.colors,
|
||||||
"view_style": view_style,
|
"view_style": view_style,
|
||||||
"sort_by": sort_by,
|
"sort_by": sort_by,
|
||||||
"sort_order": sort_order,
|
"sort_order": sort_order,
|
||||||
@ -169,10 +168,11 @@ class LoginView(View):
|
|||||||
Greeting and login page
|
Greeting and login page
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def get(self, request):
|
@staticmethod
|
||||||
|
def get(request):
|
||||||
"""handle get requests"""
|
"""handle get requests"""
|
||||||
failed = bool(request.GET.get("failed"))
|
failed = bool(request.GET.get("failed"))
|
||||||
colors = self.read_config()
|
colors = AppConfig(request.user.id).colors
|
||||||
form = CustomAuthForm()
|
form = CustomAuthForm()
|
||||||
context = {"colors": colors, "form": form, "form_error": failed}
|
context = {"colors": colors, "form": form, "form_error": failed}
|
||||||
return render(request, "home/login.html", context)
|
return render(request, "home/login.html", context)
|
||||||
@ -189,13 +189,6 @@ class LoginView(View):
|
|||||||
|
|
||||||
return redirect("/login?failed=true")
|
return redirect("/login?failed=true")
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def read_config():
|
|
||||||
"""read needed values from redis"""
|
|
||||||
config_handler = AppConfig().config
|
|
||||||
colors = config_handler["application"]["colors"]
|
|
||||||
return colors
|
|
||||||
|
|
||||||
|
|
||||||
class AboutView(View):
|
class AboutView(View):
|
||||||
"""resolves to /about/
|
"""resolves to /about/
|
||||||
@ -205,8 +198,7 @@ class AboutView(View):
|
|||||||
@staticmethod
|
@staticmethod
|
||||||
def get(request):
|
def get(request):
|
||||||
"""handle http get"""
|
"""handle http get"""
|
||||||
config = AppConfig().config
|
colors = AppConfig(request.user.id).colors
|
||||||
colors = config["application"]["colors"]
|
|
||||||
context = {"title": "About", "colors": colors}
|
context = {"title": "About", "colors": colors}
|
||||||
return render(request, "home/about.html", context)
|
return render(request, "home/about.html", context)
|
||||||
|
|
||||||
@ -255,22 +247,20 @@ class DownloadView(View):
|
|||||||
@staticmethod
|
@staticmethod
|
||||||
def read_config(user_id):
|
def read_config(user_id):
|
||||||
"""read config vars"""
|
"""read config vars"""
|
||||||
config = AppConfig().config
|
config_handler = AppConfig(user_id)
|
||||||
colors = config["application"]["colors"]
|
|
||||||
|
|
||||||
view_key = f"{user_id}:view:downloads"
|
view_key = f"{user_id}:view:downloads"
|
||||||
view_style = RedisArchivist().get_message(view_key)["status"]
|
view_style = RedisArchivist().get_message(view_key)["status"]
|
||||||
if not view_style:
|
if not view_style:
|
||||||
view_style = config["default_view"]["downloads"]
|
view_style = config_handler.config["default_view"]["downloads"]
|
||||||
|
|
||||||
ignored = RedisArchivist().get_message(f"{user_id}:show_ignored_only")
|
ignored = RedisArchivist().get_message(f"{user_id}:show_ignored_only")
|
||||||
show_ignored_only = ignored["status"]
|
show_ignored_only = ignored["status"]
|
||||||
|
|
||||||
es_url = config["application"]["es_url"]
|
es_url = config_handler.config["application"]["es_url"]
|
||||||
|
|
||||||
view_config = {
|
view_config = {
|
||||||
"es_url": es_url,
|
"es_url": es_url,
|
||||||
"colors": colors,
|
"colors": config_handler.colors,
|
||||||
"view_style": view_style,
|
"view_style": view_style,
|
||||||
"show_ignored_only": show_ignored_only,
|
"show_ignored_only": show_ignored_only,
|
||||||
}
|
}
|
||||||
@ -339,7 +329,8 @@ class ChannelIdView(View):
|
|||||||
@staticmethod
|
@staticmethod
|
||||||
def read_config(user_id):
|
def read_config(user_id):
|
||||||
"""read config file"""
|
"""read config file"""
|
||||||
config = AppConfig().config
|
config_handler = AppConfig(user_id)
|
||||||
|
config = config_handler.config
|
||||||
|
|
||||||
sort_by = RedisArchivist().get_message(f"{user_id}:sort_by")["status"]
|
sort_by = RedisArchivist().get_message(f"{user_id}:sort_by")["status"]
|
||||||
if not sort_by:
|
if not sort_by:
|
||||||
@ -354,14 +345,13 @@ class ChannelIdView(View):
|
|||||||
hide_watched = RedisArchivist().get_message(hide_watched_key)["status"]
|
hide_watched = RedisArchivist().get_message(hide_watched_key)["status"]
|
||||||
|
|
||||||
view_config = {
|
view_config = {
|
||||||
"colors": config["application"]["colors"],
|
"colors": config_handler.colors,
|
||||||
"es_url": config["application"]["es_url"],
|
"es_url": config["application"]["es_url"],
|
||||||
"view_style": config["default_view"]["home"],
|
"view_style": config["default_view"]["home"],
|
||||||
"sort_by": sort_by,
|
"sort_by": sort_by,
|
||||||
"sort_order": sort_order,
|
"sort_order": sort_order,
|
||||||
"hide_watched": hide_watched,
|
"hide_watched": hide_watched,
|
||||||
}
|
}
|
||||||
# return es_url, colors, view_style
|
|
||||||
return view_config
|
return view_config
|
||||||
|
|
||||||
def get_channel_videos(self, request, channel_id_detail, view_config):
|
def get_channel_videos(self, request, channel_id_detail, view_config):
|
||||||
@ -493,22 +483,20 @@ class ChannelView(View):
|
|||||||
@staticmethod
|
@staticmethod
|
||||||
def read_config(user_id):
|
def read_config(user_id):
|
||||||
"""read config file"""
|
"""read config file"""
|
||||||
config = AppConfig().config
|
config_handler = AppConfig(user_id)
|
||||||
colors = config["application"]["colors"]
|
|
||||||
|
|
||||||
view_key = f"{user_id}:view:channel"
|
view_key = f"{user_id}:view:channel"
|
||||||
view_style = RedisArchivist().get_message(view_key)["status"]
|
view_style = RedisArchivist().get_message(view_key)["status"]
|
||||||
if not view_style:
|
if not view_style:
|
||||||
view_style = config["default_view"]["channel"]
|
view_style = config_handler.config["default_view"]["channel"]
|
||||||
|
|
||||||
sub_only_key = f"{user_id}:show_subed_only"
|
sub_only_key = f"{user_id}:show_subed_only"
|
||||||
show_subed_only = RedisArchivist().get_message(sub_only_key)["status"]
|
show_subed_only = RedisArchivist().get_message(sub_only_key)["status"]
|
||||||
|
|
||||||
view_config = {
|
view_config = {
|
||||||
"es_url": config["application"]["es_url"],
|
"es_url": config_handler.config["application"]["es_url"],
|
||||||
"view_style": view_style,
|
"view_style": view_style,
|
||||||
"show_subed_only": show_subed_only,
|
"show_subed_only": show_subed_only,
|
||||||
"colors": colors,
|
"colors": config_handler.colors,
|
||||||
}
|
}
|
||||||
|
|
||||||
return view_config
|
return view_config
|
||||||
@ -556,7 +544,7 @@ class VideoView(View):
|
|||||||
|
|
||||||
def get(self, request, video_id):
|
def get(self, request, video_id):
|
||||||
"""get single video"""
|
"""get single video"""
|
||||||
es_url, colors = self.read_config()
|
es_url, colors = self.read_config(user_id=request.user.id)
|
||||||
url = f"{es_url}/ta_video/_doc/{video_id}"
|
url = f"{es_url}/ta_video/_doc/{video_id}"
|
||||||
data = None
|
data = None
|
||||||
look_up = SearchHandler(url, data)
|
look_up = SearchHandler(url, data)
|
||||||
@ -573,11 +561,11 @@ class VideoView(View):
|
|||||||
return render(request, "home/video.html", context)
|
return render(request, "home/video.html", context)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def read_config():
|
def read_config(user_id):
|
||||||
"""read config file"""
|
"""read config file"""
|
||||||
config = AppConfig().config
|
config_handler = AppConfig(user_id)
|
||||||
es_url = config["application"]["es_url"]
|
es_url = config_handler.config["application"]["es_url"]
|
||||||
colors = config["application"]["colors"]
|
colors = config_handler.colors
|
||||||
return es_url, colors
|
return es_url, colors
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@ -604,15 +592,15 @@ class SettingsView(View):
|
|||||||
@staticmethod
|
@staticmethod
|
||||||
def get(request):
|
def get(request):
|
||||||
"""read and display current settings"""
|
"""read and display current settings"""
|
||||||
config = AppConfig().config
|
config_handler = AppConfig(request.user.id)
|
||||||
colors = config["application"]["colors"]
|
colors = config_handler.colors
|
||||||
|
|
||||||
user_form = UserSettingsForm()
|
user_form = UserSettingsForm()
|
||||||
app_form = ApplicationSettingsForm()
|
app_form = ApplicationSettingsForm()
|
||||||
|
|
||||||
context = {
|
context = {
|
||||||
"title": "Settings",
|
"title": "Settings",
|
||||||
"config": config,
|
"config": config_handler.config,
|
||||||
"colors": colors,
|
"colors": colors,
|
||||||
"user_form": user_form,
|
"user_form": user_form,
|
||||||
"app_form": app_form,
|
"app_form": app_form,
|
||||||
|
Loading…
Reference in New Issue
Block a user