lib.itmens/users/views.py

145 lines
3.8 KiB
Python
Raw Normal View History

from django.shortcuts import redirect, render, get_object_or_404
from django.urls import reverse
from django.http import HttpResponseBadRequest
2020-05-05 23:50:48 +08:00
from django.contrib.auth.decorators import login_required
from django.utils.translation import gettext_lazy as _
2021-02-17 15:08:16 +01:00
from .models import User, Report, Preference
2020-05-05 23:50:48 +08:00
from .forms import ReportForm
2020-10-22 21:45:05 +02:00
from mastodon.api import *
from mastodon import mastodon_request_included
2021-02-25 19:43:43 +01:00
from common.config import *
from .account import *
from .data import *
2021-12-15 21:54:24 -05:00
import json
2020-05-01 22:46:15 +08:00
2022-05-12 08:14:05 -04:00
def render_user_not_found(request):
msg = _("😖哎呀这位用户还没有加入本站快去联邦宇宙呼唤TA来注册吧")
sec_msg = _("")
return render(
request,
"common/error.html",
2022-05-12 08:14:05 -04:00
{
"msg": msg,
"secondary_msg": sec_msg,
},
2022-05-12 08:14:05 -04:00
)
2022-12-27 14:52:03 -05:00
def render_user_blocked(request):
msg = _("你没有访问TA主页的权限😥")
return render(
request,
"common/error.html",
2022-12-27 14:52:03 -05:00
{
"msg": msg,
},
2022-12-27 14:52:03 -05:00
)
2020-05-05 23:50:48 +08:00
@login_required
2021-12-16 08:59:06 -05:00
def followers(request, id):
if request.method == "GET":
2022-05-13 00:11:59 -04:00
user = User.get(id)
2022-07-31 20:54:30 -04:00
if user is None or user != request.user:
2022-05-12 08:14:05 -04:00
return render_user_not_found(request)
2020-05-05 23:50:48 +08:00
return render(
request,
"users/relation_list.html",
2020-05-05 23:50:48 +08:00
{
"user": user,
"is_followers_page": True,
},
2020-05-05 23:50:48 +08:00
)
else:
return HttpResponseBadRequest()
@login_required
def following(request, id):
if request.method == "GET":
2022-05-13 00:11:59 -04:00
user = User.get(id)
2022-07-31 20:54:30 -04:00
if user is None or user != request.user:
2022-05-12 08:14:05 -04:00
return render_user_not_found(request)
2020-05-05 23:50:48 +08:00
return render(
request,
"users/relation_list.html",
2020-05-05 23:50:48 +08:00
{
"user": user,
"page_type": "followers",
},
2021-02-15 21:27:50 +01:00
)
else:
return HttpResponseBadRequest()
2021-02-17 15:08:16 +01:00
@login_required
def set_layout(request):
if request.method == "POST":
layout = json.loads(request.POST.get("layout"))
request.user.preference.profile_layout = layout
2021-02-17 15:08:16 +01:00
request.user.preference.save()
return redirect(
reverse("journal:user_profile", args=[request.user.mastodon_username])
)
2021-02-17 15:08:16 +01:00
else:
return HttpResponseBadRequest()
2021-02-15 21:27:50 +01:00
2020-05-05 23:50:48 +08:00
@login_required
def report(request):
if request.method == "GET":
user_id = request.GET.get("user_id")
2020-05-07 18:00:39 +08:00
if user_id:
user = get_object_or_404(User, pk=user_id)
form = ReportForm(initial={"reported_user": user})
2020-05-07 18:00:39 +08:00
else:
form = ReportForm()
2020-05-05 23:50:48 +08:00
return render(
request,
"users/report.html",
2020-05-05 23:50:48 +08:00
{
"form": form,
},
2020-05-05 23:50:48 +08:00
)
elif request.method == "POST":
2020-05-05 23:50:48 +08:00
form = ReportForm(request.POST)
if form.is_valid():
form.instance.is_read = False
form.instance.submit_user = request.user
form.save()
return redirect(
reverse(
"journal:user_profile",
args=[form.instance.reported_user.mastodon_username],
)
)
2020-05-05 23:50:48 +08:00
else:
return render(
request,
"users/report.html",
2020-05-05 23:50:48 +08:00
{
"form": form,
},
2020-05-05 23:50:48 +08:00
)
else:
return HttpResponseBadRequest()
@login_required
def manage_report(request):
if request.method == "GET":
2020-05-05 23:50:48 +08:00
reports = Report.objects.all()
for r in reports.filter(is_read=False):
2020-07-03 15:36:23 +08:00
r.is_read = True
2020-05-05 23:50:48 +08:00
r.save()
return render(
request,
"users/manage_report.html",
2020-05-05 23:50:48 +08:00
{
"reports": reports,
},
2020-05-05 23:50:48 +08:00
)
else:
return HttpResponseBadRequest()