posts.py 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. import random
  2. from django.utils import timezone
  3. from ..threads.checksums import update_post_checksum
  4. from ..threads.models import Post
  5. from .englishcorpus import EnglishCorpus
  6. from .users import get_fake_username
  7. PLACEKITTEN_URL = "https://placekitten.com/g/%s/%s"
  8. corpus = EnglishCorpus()
  9. def get_fake_post(fake, thread, poster=None):
  10. original, parsed = get_fake_post_content(fake)
  11. posted_on = timezone.now()
  12. post = Post.objects.create(
  13. category=thread.category,
  14. thread=thread,
  15. poster=poster,
  16. poster_name=poster.username if poster else get_fake_username(fake),
  17. original=original,
  18. parsed=parsed,
  19. posted_on=posted_on,
  20. updated_on=posted_on,
  21. )
  22. update_post_checksum(post)
  23. post.save(update_fields=["checksum"])
  24. return post
  25. def get_fake_unapproved_post(fake, thread, poster=None):
  26. post = get_fake_post(fake, thread, poster)
  27. post.is_unapproved = True
  28. post.save(update_fields=["is_unapproved"])
  29. return post
  30. def get_fake_hidden_post(fake, thread, poster=None, hidden_by=None):
  31. post = get_fake_post(fake, thread, poster)
  32. post.is_hidden = True
  33. if hidden_by:
  34. post.hidden_by = hidden_by
  35. post.hidden_by_name = hidden_by.username
  36. post.hidden_by_slug = hidden_by.slug
  37. else:
  38. post.hidden_by_name = fake.first_name()
  39. post.hidden_by_slug = post.hidden_by_name.lower()
  40. post.save(
  41. update_fields=["is_unapproved", "hidden_by", "hidden_by_name", "hidden_by_slug"]
  42. )
  43. return post
  44. def get_fake_post_content(fake):
  45. raw = []
  46. parsed = []
  47. if random.randint(0, 100) > 90:
  48. paragraphs_to_make = random.randint(1, 20)
  49. else:
  50. paragraphs_to_make = random.randint(1, 5)
  51. for _ in range(paragraphs_to_make):
  52. if random.randint(0, 100) > 95:
  53. cat_width = random.randint(1, 16) * random.choice([100, 90, 80])
  54. cat_height = random.randint(1, 12) * random.choice([100, 90, 80])
  55. cat_url = PLACEKITTEN_URL % (cat_width, cat_height)
  56. raw.append("!(%s)" % cat_url)
  57. parsed.append('<p><img src="%s" alt=""/></p>' % cat_url)
  58. else:
  59. if random.randint(0, 100) > 95:
  60. sentences_to_make = random.randint(1, 20)
  61. else:
  62. sentences_to_make = random.randint(1, 7)
  63. raw.append(" ".join(corpus.random_sentences(sentences_to_make)))
  64. parsed.append("<p>%s</p>" % raw[-1])
  65. return "\n\n".join(raw), "\n".join(parsed)