testutils.py 2.6 KB

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