فهرست منبع

added yelp data to weekly analytics mail body

Mohidul Islam 4 سال پیش
والد
کامیت
b051cf4c26
4فایلهای تغییر یافته به همراه46 افزوده شده و 4 حذف شده
  1. 24 1
      analytics/templates/weekly_report.html
  2. 17 1
      analytics/utils.py
  3. 4 1
      analytics/views.py
  4. 1 1
      yelp/analytics.py

+ 24 - 1
analytics/templates/weekly_report.html

@@ -148,6 +148,27 @@
           {% endif %}
         </td>
       </tr>
+
+        <!--       Yelp Reviews Summary-->
+      <tr>
+        <td style="padding: 1rem">
+          <span>Yelp</span> <br>
+          <span style="display: inline-block; margin-top:.5rem">Page Link: <a href="{{ location.yelplocation.url }}" target="_blank">Click here</a></span>
+        </td>
+        <td>
+          {% if yelp_ratings %}
+            {% for r in yelp_ratings %}
+              {% if r.rating > 3 %}
+                <p style="color: green; font-weight: green;">Positive: {{ r.total }}</p>
+              {% else %}
+                <p style="color: red; font-weight: red;">Negative: {{ r.total }}</p> </br>
+              {% endif %}
+            {% endfor %}
+          {% else %}
+            <span style="color: red; font-weight: bold;">No Ratings!</span>
+          {% endif %}
+        </td>
+      </tr>
     </table>
 
       {% if google_pos_reviews %}
@@ -164,8 +185,10 @@
           <div class="in-cont">
           {% if review.platform == "Google" %}
             <div style="text-align: left; padding: 0rem 1rem 0rem 1rem"><b style="font-size: 1rem;"> {{ review.reviewer_name }}</b><span> on {{ review.platform }}</span> <span style="float: right;"> {{ review.create_time }}</span></div>
-          {% else %}
+          {% elif review.platform == "Facebook" %}
             <div style="text-align: left; padding: 0rem 1rem 0rem 1rem"><b style="font-size: 1rem;"> <a href="https://facebook.com/{{ review.reviewer_name }}" target="_blank">Click here...</a></b><span> on {{ review.platform }}</span> <span style="float: right;"> {{ review.create_time }}</span></div>
+          {% else %}
+            <div style="text-align: left; padding: 0rem 1rem 0rem 1rem"><b style="font-size: 1rem;"> {{ review.reviewer_name }}</b><span> on {{ review.platform }}</span> <span style="float: right;"> {{ review.create_time }}</span></div>
           {% endif %}
           <hr>
           <div><p>{{ review.comment | safe }}</p></div>

+ 17 - 1
analytics/utils.py

@@ -130,11 +130,14 @@ def get_review_count_by_month(location_id):
     return response
 
 
-def get_list_of_reviews(google_reviews, facebook_reviews, max_pos_rev):
+def get_list_of_reviews(google_reviews, facebook_reviews, yelp_reviews):
     google_review_list = list(google_reviews.exclude(star_rating__range=(3, 4)).
                               values('comment', 'star_rating', 'create_time', 'reviewer_name'))
     facebook_review_list = list(facebook_reviews.
                                 values('id', 'recommendation_type', 'review_text', 'create_time'))
+
+    yelp_review_list = list(yelp_reviews.exclude(rating__range=(3, 4)).
+                            values('comment', 'reviewer_name', 'rating', 'date_posted'))
     all_revs = []
 
     for rev in google_review_list:
@@ -166,4 +169,17 @@ def get_list_of_reviews(google_reviews, facebook_reviews, max_pos_rev):
         rev['comment'] = comment
         rev['reviewer_name'] = reviewer
         all_revs.append(rev)
+
+    # Adding the yelp reviews
+    for rev in yelp_review_list:
+        if not rev['comment']:
+            continue
+        rev['platform'] = 'Yelp'
+        date_posted = rev.pop('date_posted')
+        rev['create_time'] = str(date_posted).split()[0]
+        if rev['rating'] < 3:
+            rev['positive'] = False
+        else:
+            rev['positive'] = True
+        all_revs.append(rev)
     return all_revs

+ 4 - 1
analytics/views.py

@@ -11,6 +11,7 @@ from django.contrib.auth.mixins import LoginRequiredMixin
 from gauth.models import Location
 from name_extractor.models import Staff
 from facebook_app.analytics import get_facebook_weekly_summary
+from yelp.analytics import get_yelp_weekly_summary
 from .utils import get_list_of_reviews
 
 from .utils import (
@@ -60,8 +61,9 @@ def weekly_report(requests, location_id):
     end_date = start_date - timezone.timedelta(days=7)
     g_reviews, g_ratings = weekly_reviews_summary(location_id=location_id)
     f_reviews, f_ratings = get_facebook_weekly_summary(location_id=location_id)
+    y_reviews, y_rating = get_yelp_weekly_summary(location_id=location_id)
 
-    all_revs = get_list_of_reviews(g_reviews, f_reviews, 5)
+    all_revs = get_list_of_reviews(g_reviews, f_reviews, y_reviews)
 
     payload = {
         'reviews': all_revs,
@@ -85,6 +87,7 @@ def weekly_report(requests, location_id):
         'location': location,
         'google_ratings': g_ratings,
         'facebook_ratings': f_ratings,
+        'yelp_ratings': y_rating,
         'google_pos_reviews': all_reviews,
         'date': {
             'start': start_date,

+ 1 - 1
yelp/analytics.py

@@ -45,7 +45,7 @@ def send_email_bad_reviews():
                 message += name + rating + comment + link
             message += '<p>Regards,</p><p>Byte Trek Ltd.</p>'
 
-            send_email(to_list=to, subject=subject, message=message)
+            send_email(to_list=to, subject=subject, message_body=message)
             if location.recipient_email in to:
                 to.remove(location.recipient_email)