background_job.py 982 B

123456789101112131415161718192021222324252627282930313233343536
  1. from threading import Thread
  2. from time import sleep
  3. from django.utils import timezone
  4. from random import choice
  5. from .models import Review, CustomReply
  6. from nlu_job.nlu_utils import is_a_name
  7. def un_replied_reviews_with_no_comment():
  8. now = timezone.now()
  9. date = now - timezone.timedelta(days=30)
  10. reviews = Review.objects.filter(comment=None, reply=None, star_rating=5, update_time__gte=date).order_by('update_time')
  11. return reviews
  12. def generate_reply(review):
  13. replies = CustomReply.objects.filter(reply_category='no_comment')
  14. reply = choice(replies)
  15. name = review.reviewer_name
  16. if is_a_name(name):
  17. parsable_name = ', '+name.title()
  18. else:
  19. parsable_name = ''
  20. replied_text = reply.reply %parsable_name
  21. return replied_text
  22. def task():
  23. while True:
  24. reviews = un_replied_reviews_with_no_comment()
  25. # TODO: reply reviews in background
  26. sleep(60*60*6)
  27. thread = Thread(target=task)
  28. # thread.start()