delete.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. from rest_framework.response import Response
  2. from django.db import transaction
  3. from misago.threads.moderation import threads as moderation
  4. from misago.threads.permissions import allow_delete_thread
  5. from misago.threads.serializers import DeleteThreadsSerializer
  6. @transaction.atomic
  7. def delete_thread(request, thread):
  8. allow_delete_thread(request.user, thread)
  9. moderation.delete_thread(request.user, thread)
  10. return Response({})
  11. def delete_bulk(request, viewmodel):
  12. serializer = DeleteThreadsSerializer(
  13. data={
  14. 'threads': request.data,
  15. },
  16. context={
  17. 'request': request,
  18. 'viewmodel': viewmodel,
  19. },
  20. )
  21. if not serializer.is_valid():
  22. return Response(serializer.errors, status=400)
  23. for thread in serializer.validated_data['threads']:
  24. with transaction.atomic():
  25. delete_thread(request, thread)
  26. return Response([])
  27. def hydrate_error_details(errors):
  28. for error in errors:
  29. error['thread']['id'] = int(error['thread']['id'])
  30. return errors