multiuser/subscriptions/notifications
This commit is contained in:
@@ -1,11 +1,53 @@
|
||||
from django.views import View
|
||||
from django.shortcuts import render, redirect
|
||||
from django.views import View
|
||||
from django.contrib import messages
|
||||
from .forms import ArrSettingsForm, MailSettingsForm, AccountForm
|
||||
from django.utils.decorators import method_decorator
|
||||
from .forms import ArrSettingsForm, MailSettingsForm, AccountForm, FirstRunSetupForm, JellyfinSettingsForm
|
||||
from .models import AppSettings
|
||||
from django.http import JsonResponse
|
||||
from accounts.utils import jellyfin_admin_required
|
||||
from django.contrib.auth import get_user_model
|
||||
import requests
|
||||
|
||||
def needs_setup():
|
||||
"""Check if the app needs first-run setup"""
|
||||
settings = AppSettings.current()
|
||||
return not bool(settings.jellyfin_server_url)
|
||||
|
||||
def first_run(request):
|
||||
"""Handle first-run setup"""
|
||||
if not needs_setup():
|
||||
return redirect('arr_api:index')
|
||||
|
||||
if request.method == 'POST':
|
||||
form = FirstRunSetupForm(request.POST)
|
||||
if form.is_valid():
|
||||
# Save settings
|
||||
settings = AppSettings.current()
|
||||
settings.jellyfin_server_url = form.cleaned_data['jellyfin_server_url']
|
||||
settings.jellyfin_api_key = form.cleaned_data['jellyfin_api_key']
|
||||
settings.sonarr_url = form.cleaned_data['sonarr_url']
|
||||
settings.sonarr_api_key = form.cleaned_data['sonarr_api_key']
|
||||
settings.radarr_url = form.cleaned_data['radarr_url']
|
||||
settings.radarr_api_key = form.cleaned_data['radarr_api_key']
|
||||
settings.save()
|
||||
|
||||
messages.success(request, 'Setup erfolgreich abgeschlossen!')
|
||||
return redirect('accounts:login')
|
||||
else:
|
||||
form = FirstRunSetupForm()
|
||||
|
||||
return render(request, 'settingspanel/first_run.html', {'form': form})
|
||||
from django.shortcuts import render, redirect
|
||||
from django.contrib import messages
|
||||
from django.utils.decorators import method_decorator
|
||||
from .forms import ArrSettingsForm, MailSettingsForm, AccountForm, JellyfinSettingsForm
|
||||
from .models import AppSettings
|
||||
from django.http import JsonResponse
|
||||
from accounts.utils import jellyfin_admin_required
|
||||
import requests
|
||||
|
||||
@jellyfin_admin_required
|
||||
def test_connection(request):
|
||||
kind = request.GET.get("kind") # "sonarr" | "radarr"
|
||||
url = (request.GET.get("url") or "").strip()
|
||||
@@ -27,12 +69,17 @@ def test_connection(request):
|
||||
except requests.RequestException as e:
|
||||
return JsonResponse({"ok": False, "error": str(e)})
|
||||
|
||||
@method_decorator(jellyfin_admin_required, name='dispatch')
|
||||
class SettingsView(View):
|
||||
template_name = "settingspanel/settings.html"
|
||||
|
||||
def get(self, request):
|
||||
cfg = AppSettings.current()
|
||||
return render(request, self.template_name, {
|
||||
"jellyfin_form": JellyfinSettingsForm(initial={
|
||||
"jellyfin_server_url": cfg.jellyfin_server_url or "",
|
||||
"jellyfin_api_key": cfg.jellyfin_api_key or "",
|
||||
}),
|
||||
"arr_form": ArrSettingsForm(initial={
|
||||
"sonarr_url": cfg.sonarr_url or "",
|
||||
"sonarr_api_key": cfg.sonarr_api_key or "",
|
||||
@@ -54,15 +101,24 @@ class SettingsView(View):
|
||||
})
|
||||
|
||||
def post(self, request):
|
||||
arr_form = ArrSettingsForm(request.POST)
|
||||
jellyfin_form = JellyfinSettingsForm(request.POST)
|
||||
arr_form = ArrSettingsForm(request.POST)
|
||||
mail_form = MailSettingsForm(request.POST)
|
||||
acc_form = AccountForm(request.POST)
|
||||
if not (arr_form.is_valid() and mail_form.is_valid() and acc_form.is_valid()):
|
||||
acc_form = AccountForm(request.POST)
|
||||
|
||||
if not (jellyfin_form.is_valid() and arr_form.is_valid() and mail_form.is_valid() and acc_form.is_valid()):
|
||||
return render(request, self.template_name, {
|
||||
"arr_form": arr_form, "mail_form": mail_form, "account_form": acc_form
|
||||
"jellyfin_form": jellyfin_form,
|
||||
"arr_form": arr_form,
|
||||
"mail_form": mail_form,
|
||||
"account_form": acc_form
|
||||
})
|
||||
|
||||
cfg = AppSettings.current()
|
||||
|
||||
# Update Jellyfin settings
|
||||
cfg.jellyfin_server_url = jellyfin_form.cleaned_data["jellyfin_server_url"] or None
|
||||
cfg.jellyfin_api_key = jellyfin_form.cleaned_data["jellyfin_api_key"] or None
|
||||
cfg.sonarr_url = arr_form.cleaned_data["sonarr_url"] or None
|
||||
cfg.sonarr_api_key = arr_form.cleaned_data["sonarr_api_key"] or None
|
||||
cfg.radarr_url = arr_form.cleaned_data["radarr_url"] or None
|
||||
|
Reference in New Issue
Block a user