Prechádzať zdrojové kódy

remove a field from location table and add a function to mail bad reviews to the care staff

Mohidul Islam 5 rokov pred
rodič
commit
c60fb9d166

+ 6 - 4
dashboard/views.py

@@ -55,13 +55,15 @@ class UnRepliedReviewList(View):
         review = Review.objects.filter(pk=review_id).first()
         now = timezone.now()
         if review:
+            review_reply = Reply(replied_text=reply, create_time=now)
+            review_reply.save()
+            review.reply = review_reply
+            review.save()
             response = reply_review(review=review, replied_text=reply)
             if response.status_code == 200:
-                review_reply = Reply(replied_text=reply, create_time=now)
-                review_reply.save()
-                review.reply = review_reply
-                review.save()
                 messages.success(request, f'Your reply has been posted!')
+            else:
+                messages.warning(request, f'User might remove this review. Reply has been saved in database!')
         return redirect('un-replied-review')
 
     def get(self, request, *args, **kwargs):

+ 2 - 1
gauth/admin.py

@@ -8,7 +8,8 @@ class UserModelAdmin(admin.ModelAdmin):
 
 
 class LocationsAdmin(admin.ModelAdmin):
-    list_display = ['location_id', 'care_name', 'location_name', 'website_url', 'display_name']
+    list_display = ['location_id', 'care_name', 'location_name', 'website_url',
+                    'review_site_url', 'average_rating', 'total_review', 'recipient_email']
 
 
 admin.site.register(Location, LocationsAdmin)

+ 1 - 2
gauth/location_utils.py

@@ -37,6 +37,5 @@ def populate_locations():
             continue
         loc_name = loc['address']['locality']
         loc_website = loc['websiteUrl']
-        loc_display = loc['primaryCategory']['displayName']
-        location = Location.objects.create(location_id=loc_id, location_name=loc_name, website_url=loc_website, display_name=loc_display, owner=user)
+        location = Location.objects.create(location_id=loc_id, location_name=loc_name, website_url=loc_website, owner=user)
         location.save()

+ 18 - 0
gauth/migrations/0009_location_review_site_url.py

@@ -0,0 +1,18 @@
+# Generated by Django 3.0 on 2020-03-04 09:44
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('gauth', '0008_location_total_review_db'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='location',
+            name='review_site_url',
+            field=models.URLField(blank=True, null=True),
+        ),
+    ]

+ 22 - 0
gauth/migrations/0010_auto_20200304_1616.py

@@ -0,0 +1,22 @@
+# Generated by Django 3.0 on 2020-03-04 10:16
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('gauth', '0009_location_review_site_url'),
+    ]
+
+    operations = [
+        migrations.RemoveField(
+            model_name='location',
+            name='display_name',
+        ),
+        migrations.AddField(
+            model_name='location',
+            name='recipient_email',
+            field=models.URLField(blank=True, null=True),
+        ),
+    ]

+ 18 - 0
gauth/migrations/0011_auto_20200304_1707.py

@@ -0,0 +1,18 @@
+# Generated by Django 3.0 on 2020-03-04 11:07
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('gauth', '0010_auto_20200304_1616'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='location',
+            name='care_name',
+            field=models.CharField(blank=True, max_length=50, null=True),
+        ),
+    ]

+ 3 - 2
gauth/models.py

@@ -13,13 +13,14 @@ class UserModel(models.Model):
 
 class Location(models.Model):
     location_id = models.CharField(max_length=50, primary_key=True)
-    care_name = models.CharField(max_length=50, null=True)
+    care_name = models.CharField(max_length=50, null=True, blank=True)
     location_name = models.CharField(max_length=120)
     website_url = models.URLField()
-    display_name = models.CharField(max_length=120)
     average_rating = models.FloatField(null=True, blank=True)
     total_review = models.IntegerField(null=True, blank=True)
     total_review_DB = models.IntegerField(null=True, blank=True)
+    review_site_url = models.URLField(null=True, blank=True)
+    recipient_email = models.URLField(null=True, blank=True)
     owner = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
 
     def __str__(self):

+ 15 - 1
review/background_job.py

@@ -1,10 +1,12 @@
 import random
 from time import sleep
 from django.utils import timezone
+from gauth.models import Location
 from .models import Review, CustomReply, Reply
 from nlu_job.nlu_utils import is_a_name
 from review.review_utils import reply_review
-from review.review_utils import populate_reviews
+from review.review_utils import populate_reviews, get_bad_reviews
+from analytics.send_email import send_email
 
 from nameparser import HumanName
 
@@ -56,6 +58,18 @@ def reply_uncommented_reviews():
     sleep(60*random.randint(2, 5))
 
 
+def send_email_bad_reviews():
+    locations = Location.objects.all()
+    for location in locations:
+        reviews = get_bad_reviews(location.location_id, hours=6)
+        total_reviews = reviews.count()
+        if total_reviews > 0:
+            to = [location.recipient_email if location.recipient_email else 'bt@bytetrek.com.bd']
+            subject = "A bad review has been post."
+            message = f"hi there is {total_reviews} bad review in {location.care_name} please response to reviewer ASAP"
+            send_email(to_list=to, subject=subject, message=message)
+
+
 def background_task():
     populate_reviews()
     sleep(60 * random.randint(2, 5))