testutils.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  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', poster='Tester', is_pinned=False,
  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. 'title': title,
  12. 'slug': slugify(title),
  13. 'started_on': started_on,
  14. 'last_post_on': started_on,
  15. 'is_pinned': is_pinned,
  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. reply_thread(thread,
  38. poster=poster,
  39. posted_on=thread.last_post_on,
  40. is_moderated=is_moderated)
  41. return thread
  42. def reply_thread(thread, poster="Tester", message='I am test message',
  43. is_moderated=False, is_hidden=False, has_reports=False,
  44. has_open_reports=False,posted_on=None, poster_ip='127.0.0.1'):
  45. posted_on = posted_on or thread.last_post_on + timedelta(minutes=5)
  46. kwargs = {
  47. 'forum': thread.forum,
  48. 'thread': thread,
  49. 'original': message,
  50. 'parsed': message,
  51. 'checksum': 'nope',
  52. 'poster_ip': poster_ip,
  53. 'posted_on': posted_on,
  54. 'updated_on': posted_on,
  55. 'is_moderated': is_moderated,
  56. 'is_hidden': is_hidden,
  57. 'has_reports': has_reports,
  58. 'has_open_reports': has_open_reports,
  59. }
  60. try:
  61. kwargs.update({'poster': poster, 'poster_name': poster.username})
  62. except AttributeError:
  63. kwargs.update({'poster_name': poster})
  64. post = Post.objects.create(**kwargs)
  65. thread.synchronize()
  66. thread.save()
  67. thread.forum.synchronize()
  68. thread.forum.save()
  69. return post