posts.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. from django.db.transaction import atomic
  2. from django.utils import timezone
  3. from django.utils.translation import ugettext as _
  4. from misago.threads.moderation.exceptions import ModerationError
  5. @atomic
  6. def unhide_post(user, post):
  7. if post.pk == post.thread.first_post_id:
  8. raise ModerationError(_("You can't make original post "
  9. " visible without revealing thread."))
  10. if post.is_hidden:
  11. post.is_hidden = False
  12. post.save(update_fields=['is_hidden'])
  13. return True
  14. else:
  15. return False
  16. @atomic
  17. def hide_post(user, post):
  18. if post.pk == post.thread.first_post_id:
  19. raise ModerationError(_("You can't hide original "
  20. "post without hiding thread."))
  21. if not post.is_hidden:
  22. post.is_hidden = True
  23. post.hidden_by = user
  24. post.hidden_by_name = user.username
  25. post.hidden_by_slug = user.slug
  26. post.hidden_on = timezone.now()
  27. post.save(update_fields=[
  28. 'is_hidden',
  29. 'hidden_by',
  30. 'hidden_by_name',
  31. 'hidden_by_slug',
  32. 'hidden_on',
  33. ])
  34. return True
  35. else:
  36. return False
  37. @atomic
  38. def delete_post(user, post):
  39. if post.pk == post.thread.first_post_id:
  40. raise ModerationError(_("You can't delete original "
  41. "post without deleting thread."))
  42. post.delete()
  43. return True