""" 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 # 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, "preferences/blocks.html") def post(self, request, user_id): """block a user""" to_block = get_object_or_404(models.User, id=user_id) models.UserBlocks.objects.create( user_subject=request.user, user_object=to_block ) return redirect("/preferences/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() block.delete() return redirect("/preferences/block")