84 lines
2.6 KiB
Python
84 lines
2.6 KiB
Python
from datetime import timedelta
|
|
from typing import Any, Dict
|
|
from urllib.parse import quote
|
|
|
|
import django_rq
|
|
from django import forms
|
|
from django.conf import settings
|
|
from django.contrib import auth, messages
|
|
from django.contrib.auth import authenticate
|
|
from django.contrib.auth.decorators import login_required
|
|
from django.core.cache import cache
|
|
from django.core.exceptions import BadRequest, ObjectDoesNotExist
|
|
from django.core.mail import send_mail
|
|
from django.core.signing import TimestampSigner
|
|
from django.core.validators import EmailValidator
|
|
from django.db.models import Count, Q
|
|
from django.http import HttpResponse, HttpResponseRedirect
|
|
from django.shortcuts import get_object_or_404, redirect, render
|
|
from django.urls import reverse
|
|
from django.utils import timezone
|
|
from django.utils.translation import gettext_lazy as _
|
|
from loguru import logger
|
|
|
|
from common.config import *
|
|
from common.utils import AuthedHttpRequest
|
|
from journal.exporters.doufen import export_marks_task
|
|
from journal.importers.douban import DoubanImporter
|
|
from journal.importers.goodreads import GoodreadsImporter
|
|
from journal.importers.opml import OPMLImporter
|
|
from journal.models import remove_data_by_user, reset_journal_visibility_for_user
|
|
from mastodon import mastodon_request_included
|
|
from mastodon.api import *
|
|
from mastodon.api import verify_account
|
|
from social.models import reset_social_visibility_for_user
|
|
from takahe.models import Identity as TakaheIdentity
|
|
from takahe.utils import Takahe
|
|
|
|
from .models import Preference, User
|
|
from .tasks import *
|
|
|
|
|
|
class ProfileForm(forms.ModelForm):
|
|
class Meta:
|
|
model = TakaheIdentity
|
|
fields = [
|
|
"name",
|
|
"summary",
|
|
"manually_approves_followers",
|
|
"discoverable",
|
|
"icon",
|
|
]
|
|
|
|
def clean_summary(self):
|
|
return Takahe.txt2html(self.cleaned_data["summary"])
|
|
|
|
|
|
@login_required
|
|
def account_info(request):
|
|
profile_form = ProfileForm(
|
|
instance=request.user.identity.takahe_identity,
|
|
initial={
|
|
"summary": Takahe.html2txt(request.user.identity.summary),
|
|
},
|
|
)
|
|
return render(
|
|
request,
|
|
"users/account.html",
|
|
{
|
|
"allow_any_site": settings.MASTODON_ALLOW_ANY_SITE,
|
|
"profile_form": profile_form,
|
|
},
|
|
)
|
|
|
|
|
|
@login_required
|
|
def account_profile(request):
|
|
if request.method == "POST":
|
|
form = ProfileForm(
|
|
request.POST, request.FILES, instance=request.user.identity.takahe_identity
|
|
)
|
|
if form.is_valid():
|
|
i = form.save()
|
|
Takahe.update_state(i, "edited")
|
|
return HttpResponseRedirect(reverse("users:info"))
|