background_job.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536
  1. from django.utils import timezone
  2. from gauth.models import Location
  3. from review.models import Review
  4. from .send_email import send_email
  5. from review.review_utils import get_bad_reviews
  6. def send_email_bad_reviews():
  7. locations = Location.objects.all()
  8. for location in locations:
  9. reviews = get_bad_reviews(location.location_id, hours=6)
  10. total_reviews = reviews.count()
  11. if total_reviews > 0:
  12. to = [location.recipient_email if location.recipient_email else 'bt@bytetrek.com.bd']
  13. subject = f"A bad review has been post in {location.care_name}."
  14. message =f'''
  15. <img src="https://ercare24.com/wp-content/uploads/2016/07/signature-care-resized-e1462918690585.png" alt="Avatar" class="image" width=20% >
  16. <h1>Bad Review has been posted.</h1>
  17. <p>Hi there, </p>
  18. <p>There is {total_reviews} bad reviews has been posted in {location.care_name}.
  19. Please, response them ASAP.</p>
  20. <h4>Links: </h4>
  21. '''
  22. for r in reviews:
  23. link = r.location.review_site_url + '?reviewId='+r.review_id
  24. text = str(r.star_rating) + ' star review'
  25. message += f'<a href="{link}">{text}</a><br>'
  26. message += '<p>Regards,</p><p>Byte Trek Limited</p>'
  27. send_email(to_list=to, subject=subject, message=message)
  28. def weekly_report(location_id):
  29. now = timezone.now()
  30. date = now - timezone.timedelta(days=7)
  31. reviews = Review.objects.filter(location_id=location_id, create_time__gte=date)