testutils.py 2.4 KB

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