delete user data

This commit is contained in:
Your Name 2021-12-21 23:34:36 -05:00
parent 54d923d092
commit 9d3a28e5c1
3 changed files with 60 additions and 4 deletions

View file

@ -209,6 +209,25 @@
</div>
</div>
</div>
<div class="main-section-wrapper">
<div class="tools-section-wrapper">
<div class="import-panel">
<h5 class="import-panel__label">{% trans '删除数据和帐号信息' %}</h5>
<div class="import-panel__body">
<form action="{% url 'users:clear_data' %}" method="POST" >
{% csrf_token %}
<input type="submit" class="import-panel__button" value="{% trans '永久删除' %}" id="uploadBtn" />
<div class="import-panel__checkbox">输入完整的 用户名@实例名 以确认删除
<input type="input" name="verification" value="" placeholder="user@mastodon.social">
删除将无法撤销
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<div class="grid__aside grid__aside--reverse-order grid__aside--tablet-column">

View file

@ -11,6 +11,7 @@ urlpatterns = [
path('data/export_marks', export_marks, name='export_marks'),
path('data/sync_mastodon', sync_mastodon, name='sync_mastodon'),
path('data/reset_visibility', reset_visibility, name='reset_visibility'),
path('data/clear_data', clear_data, name='clear_data'),
path('preferences/', preferences, name='preferences'),
path('logout/', logout, name='logout'),
path('delete/', delete, name='delete'),

View file

@ -33,10 +33,10 @@ from datetime import timedelta
from django.utils import timezone
import json
from django.contrib import messages
from books.models import BookMark
from movies.models import MovieMark
from games.models import GameMark
from music.models import AlbumMark, SongMark
from books.models import BookMark, BookReview
from movies.models import MovieMark, MovieReview
from games.models import GameMark, GameReview
from music.models import AlbumMark, SongMark, AlbumReview, SongReview
# Views
@ -992,3 +992,39 @@ def reset_visibility(request):
SongMark.objects.filter(owner=request.user).update(visibility=visibility)
messages.add_message(request, messages.INFO, _('已重置。'))
return redirect(reverse("users:data"))
@login_required
def clear_data(request):
if request.method == 'POST':
if request.POST.get('verification') == request.user.mastodon_username:
BookMark.objects.filter(owner=request.user).delete()
MovieMark.objects.filter(owner=request.user).delete()
GameMark.objects.filter(owner=request.user).delete()
AlbumMark.objects.filter(owner=request.user).delete()
SongMark.objects.filter(owner=request.user).delete()
BookReview.objects.filter(owner=request.user).delete()
MovieReview.objects.filter(owner=request.user).delete()
GameReview.objects.filter(owner=request.user).delete()
AlbumReview.objects.filter(owner=request.user).delete()
SongReview.objects.filter(owner=request.user).delete()
request.user.first_name = request.user.username
request.user.last_name = request.user.mastodon_site
request.user.is_active = False
request.user.username = 'removed_' + str(request.user.id)
request.user.mastodon_id = 0
request.user.mastodon_site = 'removed'
request.user.mastodon_token = ''
request.user.mastodon_locked = False
request.user.mastodon_followers = []
request.user.mastodon_following = []
request.user.mastodon_mutes = []
request.user.mastodon_blocks = []
request.user.mastodon_domain_blocks = []
request.user.mastodon_account = {}
request.user.save()
auth_logout(request)
return redirect(reverse("users:login"))
else:
messages.add_message(request, messages.ERROR, _('验证信息不符。'))
return redirect(reverse("users:data"))