-
-
-
-
Hello {{ daycare.name }}
-
This is where you can manage your daycare.
-
You will be able:
-
# Manage your booking schedule
-
# Set filters of approved dogs and services you provide
-
# Read / write reviews of dog owners and their dogs
-
# Chat with dog owners
-
-
-
-
Have a look at your reviews
-
-
-
- # |
- Name |
- Date |
- Review |
- Rating |
-
-
-
- {% for review in reviews %}
-
- {{ forloop.counter }} |
- {{ review.dogowner_id }} |
- {{ review.creation_date }} |
- {{ review.review }} |
- {{ review.rating }} |
-
- {% endfor %}
-
-
+
+
+
+
+
+
Hello {{ daycare.name }}
+
This is where you can manage your daycare.
+
You will be able:
+
# Manage your booking schedule
+
# Set filters of approved dogs and services you provide
+
# Read / write reviews of dog owners and their dogs
+
# Chat with dog owners
+
+
+
+
Have a look at your reviews
+
+
+
+ # |
+ Name |
+ Date |
+ Review |
+ Rating |
+
+
+
+ {% for review in reviews %}
+
+ {{ forloop.counter }} |
+ {{ review.dogowner_id }} |
+ {{ review.creation_date }} |
+ {{ review.review }} |
+ {{ review.rating }} |
+
+ {% endfor %}
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
- {% for image in images %}
- {% if forloop.counter == 1 %}
-
- {% else %}
-
- {% endif %}
- {% endfor%}
-
+
+
+
+ {% for image in images %}
+ {% if forloop.counter == 1 %}
+
+ {% else %}
+
+ {% endif %}
+ {% endfor %}
+
-
-
- {% for image in images %}
- {% if forloop.counter == 1 %}
-
-

-
- {% else %}
-
-

-
- {% endif %}
- {% endfor %}
-
+
+
+ {% for image in images %}
+ {% if forloop.counter == 1 %}
+
+

+
+ {% else %}
+
+

+
+ {% endif %}
+ {% endfor %}
+
-
-
-
-
-
-
-
-
-
-
{{daycare.address}}, {{daycare.city}}
-
-
Capacity: {{daycare.capacity}}
-
-
- Price: {{daycare.price_per_day}}
-
-
-
About
-
{{daycare.description}}
-
+
+
+
+
+
+
+
+
+
+
{{ daycare.address }}, {{ daycare.city }}
+
+
+ Capacity: {{ daycare.capacity }}
+
+
+ Price: {{ daycare.price_per_day }}
+
+
+ Rating: {{ rating }}
+
+
+
About
+
{{ daycare.description }}
+
+
+
+
-
-
-
-
+
- {% endblock %}
\ No newline at end of file
+{% endblock %}
diff --git a/daycare/test_daycare.py b/daycare/test_daycare.py
index 9c23cd9..54a3b87 100644
--- a/daycare/test_daycare.py
+++ b/daycare/test_daycare.py
@@ -71,7 +71,7 @@ def test_daycare_redirected_homepage_after_login(self, client, create_daycare_us
assert response.status_code == 302
assert response['Location'] == '/homepage/'
- def test_relevant_daycare_homepage_with_static_data(self, client, create_daycare_user):
+ def test_relevant_daycare_homepage_with_static_data(self, client):
dayCare = random.choice([daycare for daycare in DayCare.objects.all() if 'static' in daycare.user.username])
client.force_login(user=dayCare.user)
@@ -87,3 +87,7 @@ def test_relevant_daycare_homepage_with_static_data(self, client, create_daycare
reviews_shown_in_homepage = set(response.context['reviews'])
daycare_reviews = set(Review.get_review_by_daycare_id(daycare_id=dayCare.id))
assert reviews_shown_in_homepage == daycare_reviews
+
+ average_rating_in_homepage = response.context['rating']
+ average_rating = Review.get_average_rating_by_daycare_id(daycare_id=dayCare.id)
+ assert average_rating_in_homepage == average_rating
diff --git a/daycare/views.py b/daycare/views.py
index 1e79271..c50b6c1 100644
--- a/daycare/views.py
+++ b/daycare/views.py
@@ -9,7 +9,7 @@ def daycare_home(request):
context = {
'daycare': request.user.daycare,
'reviews': Review.get_review_by_daycare_id(request.user.daycare.id),
- 'images': Image.get_images_by_daycare_id(request.user.daycare.id)
+ 'images': Image.get_images_by_daycare_id(request.user.daycare.id),
+ 'rating': Review.get_average_rating_by_daycare_id(request.user.daycare.id)
}
-
return render(request, 'daycare/daycare-homepage.html', context)
diff --git a/review/models.py b/review/models.py
index 52a38e3..21aa081 100644
--- a/review/models.py
+++ b/review/models.py
@@ -27,3 +27,10 @@ def get_review_by_daycare_id(daycare_id):
return Review.objects.filter(daycare_id=daycare_id)
except ObjectDoesNotExist:
return None
+
+ @staticmethod
+ def get_average_rating_by_daycare_id(daycare_id):
+ reviews = Review.get_review_by_daycare_id(daycare_id)
+ if reviews.exists():
+ return float("{:.2f}".format(reviews.aggregate(models.Avg('rating'))['rating__avg']))
+ return 0
diff --git a/review/tests.py b/review/tests.py
index 1984deb..ab2986d 100644
--- a/review/tests.py
+++ b/review/tests.py
@@ -46,3 +46,25 @@ def test_get_review_by_daycare_id(self, number_of_reviews, create_dog_owner_user
assert len(reviews_by_id_list) == number_of_reviews
for position, review in enumerate(reviews_by_id_list):
assert review == review_list[position]
+
+ @pytest.mark.parametrize('daycare_id, expected_rating', [(1, 2), (2, 4.67)])
+ def test_get_average_rating_for_test_data(self, daycare_id, expected_rating):
+ average_rating = Review.get_average_rating_by_daycare_id(daycare_id)
+
+ assert expected_rating == average_rating
+
+ def test_get_average_rating_for_invalid_daycare(self):
+ average_rating = Review.get_average_rating_by_daycare_id(-1)
+
+ assert 0 == average_rating
+
+ @pytest.mark.parametrize('number_of_reviews, rating', [(100, 1), (50, 2), (500, 3), (7, 4), (10, 5)])
+ def test_get_average_rating_by_daycare_id(self, number_of_reviews, rating, create_dog_owner_user,
+ create_daycare_user):
+ [Review.create(review='review', rating=rating, daycare_id=create_daycare_user.id,
+ dogowner_id=create_dog_owner_user.id)
+ for _ in range(number_of_reviews)]
+
+ average_rating = Review.get_average_rating_by_daycare_id(create_daycare_user.id)
+
+ assert rating == average_rating