83 lines
2.4 KiB
Python
83 lines
2.4 KiB
Python
from django.contrib import messages
|
|
from django.shortcuts import redirect, render
|
|
from django.urls import reverse
|
|
from django.contrib.auth.decorators import login_required
|
|
from .api import api
|
|
from oauthlib.common import generate_token
|
|
from oauth2_provider.models import AccessToken, Application
|
|
from django.utils import timezone
|
|
from dateutil.relativedelta import relativedelta
|
|
from oauth2_provider.models import RefreshToken
|
|
from django.conf import settings
|
|
|
|
|
|
@login_required
|
|
def me(request):
|
|
return redirect(
|
|
reverse("journal:user_profile", args=[request.user.mastodon_username])
|
|
)
|
|
|
|
|
|
def home(request):
|
|
if request.user.is_authenticated:
|
|
home = request.user.get_preference().classic_homepage
|
|
if home == 1:
|
|
return redirect(
|
|
reverse("journal:user_profile", args=[request.user.mastodon_username])
|
|
)
|
|
elif home == 2:
|
|
return redirect(reverse("social:feed"))
|
|
else:
|
|
return redirect(reverse("catalog:discover"))
|
|
else:
|
|
return redirect(reverse("catalog:discover"))
|
|
|
|
|
|
def error_400(request, exception=None):
|
|
return render(
|
|
request,
|
|
"400.html",
|
|
{"exception": exception},
|
|
status=400,
|
|
)
|
|
|
|
|
|
def error_403(request, exception=None):
|
|
return render(request, "403.html", status=403)
|
|
|
|
|
|
def error_404(request, exception=None):
|
|
return render(request, "404.html", status=404)
|
|
|
|
|
|
def error_500(request, exception=None):
|
|
return render(request, "500.html", status=500)
|
|
|
|
|
|
@login_required
|
|
def developer(request):
|
|
token = None
|
|
if request.method == "POST":
|
|
user = request.user
|
|
app = Application.objects.filter(
|
|
client_id=settings.DEVELOPER_CONSOLE_APPLICATION_CLIENT_ID
|
|
).first()
|
|
if app:
|
|
for token in AccessToken.objects.filter(user=user, application=app):
|
|
token.revoke()
|
|
token = generate_token()
|
|
AccessToken.objects.create(
|
|
user=user,
|
|
application=app,
|
|
scope="read write",
|
|
expires=timezone.now() + relativedelta(days=365),
|
|
token=token,
|
|
)
|
|
else:
|
|
token = "Configuration error, contact admin"
|
|
context = {
|
|
"api": api,
|
|
"token": token,
|
|
"openapi_json_url": reverse(f"{api.urls_namespace}:openapi-json"),
|
|
}
|
|
return render(request, "developer.html", context)
|