12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- from django.conf import settings
- from django.db.models import Count
- from django.utils import timezone
- from .models import FacebookReview
- from gauth.models import Location
- from analytics.send_email import send_email
- def get_facebook_weekly_summary(location_id):
- date = timezone.now() - timezone.timedelta(days=7)
- reviews = FacebookReview.objects.filter(page__location_id=location_id, create_time__gte=date)
- rating = reviews.values('recommendation_type')\
- .annotate(total=Count('recommendation_type'))\
- .order_by('-recommendation_type')
- return reviews, rating
- def send_email_bad_reviews():
- locations = Location.objects.all()
- for location in locations:
- to = settings.ADMIN_MAINTEINER_EMAILS
- # date = timezone.now() - timezone.timedelta(hours=12)
- date = timezone.now() - timezone.timedelta(days=20)
- reviews = FacebookReview.objects.filter(
- page__location_id=location.location_id,
- create_time__gte=date,
- recommendation_type=False
- )
- total_reviews = reviews.count()
- if total_reviews > 0:
- # Add location maintainer email if it has an email
- to.append(location.recipient_email) if location.recipient_email else None
- subject = f"A negative Facebook review has been post in {location.care_name}."
- message = f'''
- <p>Hi there, </p>
- <p>'''
- if total_reviews > 1:
- tt = f'{total_reviews} negative Facebook reviews have'
- else:
- tt = f'A negative Facebook review has '
- message += tt + f'been posted in {location.care_name}.</p>'
- for r in reviews:
- link = f'<p>Link: https://facebook.com/{r.id}</p>'
- comment = f'<p><b>Comment: </b>{r.review_text if r.review_text else "No comment"}</p>'
- message += comment + link
- message += '<p>Regards,</p><p>Byte Trek Ltd.</p>'
- send_email(to_list=to, subject=subject, message=message)
- if location.recipient_email in to:
- to.remove(location.recipient_email)
|