testutils.py 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. from datetime import timedelta
  2. from django.utils import timezone
  3. from misago.core.utils import slugify
  4. from misago.threads.models import Thread, Post
  5. def post_thread(forum, title='Test thread', weight=0, poster='Tester',
  6. is_moderated=False, is_hidden=False, is_closed=False,
  7. started_on=None):
  8. started_on = started_on or timezone.now()
  9. kwargs = {
  10. 'forum': forum,
  11. 'weight': weight,
  12. 'title': title,
  13. 'slug': slugify(title),
  14. 'started_on': started_on,
  15. 'last_post_on': started_on,
  16. 'is_moderated': is_moderated,
  17. 'is_hidden': is_hidden,
  18. 'is_closed': is_closed,
  19. }
  20. try:
  21. kwargs.update({
  22. 'starter': poster,
  23. 'starter_name': poster.username,
  24. 'starter_slug': poster.slug,
  25. 'last_poster': poster,
  26. 'last_poster_name': poster.username,
  27. 'last_poster_slug': poster.slug,
  28. })
  29. except AttributeError:
  30. kwargs.update({
  31. 'starter_name': poster,
  32. 'starter_slug': slugify(poster),
  33. 'last_poster_name': poster,
  34. 'last_poster_slug': slugify(poster),
  35. })
  36. thread = Thread.objects.create(**kwargs)
  37. forum.synchronize()
  38. forum.save()
  39. return thread
  40. def reply_thread(thread, poster="Tester", message='I am test message',
  41. is_moderated=False, is_hidden=False, is_reported=False,
  42. posted_on=None, poster_ip='127.0.0.1'):
  43. posted_on = posted_on or thread.last_post_on + timedelta(minutes=5)
  44. kwargs = {
  45. 'forum': thread.forum,
  46. 'thread': thread,
  47. 'original': message,
  48. 'parsed': message,
  49. 'checksum': 'nope',
  50. 'poster_ip': poster_ip,
  51. 'posted_on': posted_on,
  52. 'updated_on': posted_on,
  53. 'is_moderated': is_moderated,
  54. 'is_hidden': is_hidden,
  55. 'is_reported': is_reported,
  56. }
  57. try:
  58. kwargs.update({'poster': poster, 'poster_name': poster.username})
  59. except AttributeError:
  60. kwargs.update({'poster_name': poster})
  61. post = Post.objects.create(**kwargs)
  62. thread.synchronize()
  63. thread.save()
  64. thread.forum.synchronize()
  65. thread.forum.save()
  66. return post