forked from mirrors/bookwyrm
58 lines
1.8 KiB
Python
58 lines
1.8 KiB
Python
''' views for actions you can take in the application '''
|
|
from django.contrib.auth.decorators import login_required
|
|
from django.http import HttpResponseNotFound
|
|
from django.shortcuts import get_object_or_404, redirect
|
|
from django.template.response import TemplateResponse
|
|
from django.utils.decorators import method_decorator
|
|
from django.views import View
|
|
from django.views.decorators.http import require_POST
|
|
|
|
from bookwyrm import models
|
|
from bookwyrm.broadcast import broadcast
|
|
|
|
# pylint: disable= no-self-use
|
|
@method_decorator(login_required, name='dispatch')
|
|
class Block(View):
|
|
''' blocking users '''
|
|
def get(self, request):
|
|
''' list of blocked users? '''
|
|
return TemplateResponse(
|
|
request, 'blocks.html', {'title': 'Blocked Users'})
|
|
|
|
def post(self, request, user_id):
|
|
''' block a user '''
|
|
to_block = get_object_or_404(models.User, id=user_id)
|
|
block = models.UserBlocks.objects.create(
|
|
user_subject=request.user, user_object=to_block)
|
|
if not to_block.local:
|
|
broadcast(
|
|
request.user,
|
|
block.to_activity(),
|
|
privacy='direct',
|
|
direct_recipients=[to_block]
|
|
)
|
|
return redirect('/block')
|
|
|
|
|
|
@require_POST
|
|
@login_required
|
|
def unblock(request, user_id):
|
|
''' undo a block '''
|
|
to_unblock = get_object_or_404(models.User, id=user_id)
|
|
try:
|
|
block = models.UserBlocks.objects.get(
|
|
user_subject=request.user,
|
|
user_object=to_unblock,
|
|
)
|
|
except models.UserBlocks.DoesNotExist:
|
|
return HttpResponseNotFound()
|
|
|
|
if not to_unblock.local:
|
|
broadcast(
|
|
request.user,
|
|
block.to_undo_activity(request.user),
|
|
privacy='direct',
|
|
direct_recipients=[to_unblock]
|
|
)
|
|
block.delete()
|
|
return redirect('/block')
|