delete.py 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  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. serializer.is_valid(raise_exception=True)
  22. for thread in serializer.validated_data['threads']:
  23. with transaction.atomic():
  24. delete_thread(request, thread)
  25. return Response([])
  26. def hydrate_error_details(errors):
  27. for error in errors:
  28. error['thread']['id'] = int(error['thread']['id'])
  29. return errors