1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- from django.db import models
- from django.utils import timezone
- from django.contrib.auth.models import User
- class UserModel(models.Model):
- user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='token_of')
- refresh_token = models.CharField(max_length=120, null=True, blank=True)
- gmb_account_id = models.CharField(max_length=30, null=True, blank=True)
- access_token = models.CharField(max_length=255, null=True, blank=True)
- expiry = models.DateTimeField(null=True, blank=True)
- def __str__(self):
- return self.user.username
- class Location(models.Model):
- location_id = models.CharField(max_length=50, primary_key=True)
- care_name = models.CharField(max_length=50, null=True, blank=True)
- location_name = models.CharField(max_length=120)
- website_url = models.URLField()
- review_site_url = models.URLField(null=True, blank=True)
- owner = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
- def __str__(self):
- return self.care_name if self.care_name else self.location_name
- @property
- def managers(self):
- return self.locationmanager_set.all()
- @property
- def all_facebook_review(self):
- return self.facebookpage.facebookreview_set.all()
- @property
- def all_google_review(self):
- return self.review_set.all()
- @property
- def last_week_pos_google_review_count(self):
- end_date = timezone.now() - timezone.timedelta(days=7)
- return self.review_set.filter(create_time__gte=end_date, star_rating__gte=4).count()
- @property
- def last_week_pos_facebook_review_count(self):
- end_date = timezone.now() - timezone.timedelta(days=7)
- return self.facebookpage.facebookreview_set.filter(create_time__gte=end_date, recommendation_type=True).count()
- @property
- def last_week_pos_yelp_review_count(self):
- end_date = timezone.now() - timezone.timedelta(days=7)
- return self.yelplocation.yelpreview_set.filter(date_posted__gte=end_date, rating__gte=4).count()
- @property
- def last_week_neg_google_review_count(self):
- end_date = timezone.now() - timezone.timedelta(days=7)
- return self.review_set.filter(create_time__gte=end_date, star_rating__lte=3).count()
- @property
- def last_week_neg_facebook_review_count(self):
- end_date = timezone.now() - timezone.timedelta(days=7)
- return self.facebookpage.facebookreview_set.filter(create_time__gte=end_date, recommendation_type=False).count()
- @property
- def last_week_neg_yelp_review_count(self):
- end_date = timezone.now() - timezone.timedelta(days=7)
- return self.yelplocation.yelpreview_set.filter(date_posted__gte=end_date, rating__lte=3).count()
- class LocationManager(models.Model):
- name = models.CharField(max_length=255)
- email = models.EmailField()
- location = models.ForeignKey(Location, on_delete=models.CASCADE)
- def __str__(self):
- return f"{self.name} - {self.location.care_name}"
|