Implemented user settings page.
This commit is contained in:
@ -1,103 +0,0 @@
|
||||
from django.shortcuts import render
|
||||
from django.http import HttpResponse, HttpRequest, JsonResponse
|
||||
from YtManagerApp.models import SubscriptionFolder, Subscription
|
||||
from YtManagerApp.management.management import FolderManager, SubscriptionManager
|
||||
|
||||
|
||||
def get_children_recurse(parent_id):
|
||||
children = []
|
||||
|
||||
for folder in SubscriptionFolder.objects.filter(parent_id=parent_id).order_by('name'):
|
||||
children.append({
|
||||
"id": "folder" + str(folder.id),
|
||||
"text": folder.name,
|
||||
"type": "folder",
|
||||
"state": {"opened": True},
|
||||
"children": get_children_recurse(folder.id)
|
||||
})
|
||||
|
||||
for sub in Subscription.objects.filter(parent_folder_id=parent_id).order_by('name'):
|
||||
children.append({
|
||||
"id": "sub" + str(sub.id),
|
||||
"type": "sub",
|
||||
"text": sub.name,
|
||||
"icon": sub.icon_default
|
||||
})
|
||||
|
||||
return children
|
||||
|
||||
|
||||
def get_folders(parent_id, path=""):
|
||||
folders = []
|
||||
prefix = path + "/"
|
||||
if len(path) == 0:
|
||||
prefix = ""
|
||||
|
||||
for folder in SubscriptionFolder.objects.filter(parent_id=parent_id).order_by('name'):
|
||||
folder_path = prefix + folder.name
|
||||
folders.append({
|
||||
"id": folder.id,
|
||||
"text": folder_path
|
||||
})
|
||||
folders.extend(get_folders(folder.id, folder_path))
|
||||
|
||||
return folders
|
||||
|
||||
|
||||
def ajax_get_children(request: HttpRequest):
|
||||
return JsonResponse(get_children_recurse(None), safe=False)
|
||||
|
||||
|
||||
def ajax_get_folders(request: HttpRequest):
|
||||
return JsonResponse(get_folders(None), safe=False)
|
||||
|
||||
|
||||
def ajax_edit_folder(request: HttpRequest):
|
||||
if request.method == 'POST':
|
||||
fid = request.POST['id']
|
||||
name = request.POST['name']
|
||||
parent_id = request.POST['parent']
|
||||
FolderManager.create_or_edit(fid, name, parent_id)
|
||||
|
||||
return HttpResponse()
|
||||
|
||||
|
||||
def ajax_delete_folder(request: HttpRequest, fid):
|
||||
FolderManager.delete(fid)
|
||||
return HttpResponse()
|
||||
|
||||
|
||||
def ajax_edit_subscription(request: HttpRequest):
|
||||
if request.method == 'POST':
|
||||
sid = request.POST['id']
|
||||
name = request.POST['name']
|
||||
url = request.POST['url']
|
||||
parent_id = request.POST['parent']
|
||||
SubscriptionManager.create_or_edit(sid, url, name, parent_id)
|
||||
|
||||
return HttpResponse()
|
||||
|
||||
|
||||
def ajax_delete_subscription(request: HttpRequest, sid):
|
||||
SubscriptionManager.delete(sid)
|
||||
return HttpResponse()
|
||||
|
||||
|
||||
def ajax_list_videos(request: HttpRequest):
|
||||
if request.method == 'POST':
|
||||
type = request.POST['type']
|
||||
id = request.POST['id']
|
||||
context = {}
|
||||
|
||||
if type == 'sub':
|
||||
context['videos'] = SubscriptionManager.list_videos(int(id))
|
||||
else:
|
||||
context['videos'] = FolderManager.list_videos(int(id))
|
||||
|
||||
return render(request, 'YtManagerApp/index_videos.html', context)
|
||||
|
||||
|
||||
def index(request: HttpRequest):
|
||||
context = {}
|
||||
return render(request, 'YtManagerApp/index.html', context)
|
||||
|
50
YtManagerApp/views/settings.py
Normal file
50
YtManagerApp/views/settings.py
Normal file
@ -0,0 +1,50 @@
|
||||
from crispy_forms.helper import FormHelper
|
||||
from crispy_forms.layout import Layout, HTML, Submit
|
||||
from django import forms
|
||||
from django.views.generic import UpdateView
|
||||
from django.urls import reverse_lazy
|
||||
|
||||
from YtManagerApp.models import UserSettings
|
||||
|
||||
|
||||
class SettingsForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = UserSettings
|
||||
exclude = ['user']
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
self.helper = FormHelper()
|
||||
self.helper.form_class = 'form-horizontal'
|
||||
self.helper.label_class = 'col-lg-3'
|
||||
self.helper.field_class = 'col-lg-9'
|
||||
self.helper.layout = Layout(
|
||||
'mark_deleted_as_watched',
|
||||
'delete_watched',
|
||||
HTML('<h2>Download settings</h2>'),
|
||||
'auto_download',
|
||||
'download_path',
|
||||
'download_file_pattern',
|
||||
'download_format',
|
||||
'download_order',
|
||||
'download_global_limit',
|
||||
'download_subscription_limit',
|
||||
HTML('<h2>Subtitles download settings</h2>'),
|
||||
'download_subtitles',
|
||||
'download_subtitles_langs',
|
||||
'download_subtitles_all',
|
||||
'download_autogenerated_subtitles',
|
||||
'download_subtitles_format',
|
||||
Submit('submit', value='Save')
|
||||
)
|
||||
|
||||
|
||||
class SettingsView(UpdateView):
|
||||
form_class = SettingsForm
|
||||
model = UserSettings
|
||||
template_name = 'YtManagerApp/settings.html'
|
||||
success_url = reverse_lazy('home')
|
||||
|
||||
def get_object(self, queryset=None):
|
||||
obj, _ = self.model.objects.get_or_create(user=self.request.user)
|
||||
return obj
|
Reference in New Issue
Block a user