- {% for daycare in daycares %}
-
-

-
-
-
{{ daycare.name }}
+
+
+
+
+
Found {{ day_care_queryset.count }} results for your dog!
+
+ {% for daycare in day_care_queryset %}
+
+

+
+
+
{{ daycare.name }}
+
+
{{ daycare.area | truncatechars:20 }}
+
{{ daycare.city | truncatechars:20 }}
+
{{ daycare.price_per_day | truncatechars:20 }}
+
{{ daycare.description | truncatechars:35}}
+
Daycare Profile
+
+
+ {% endfor %}
+
-
{{ daycare.description | truncatechars:250 }}
-
Daycare Profile
-
- {% endfor %}
-
-
{% endblock %}
diff --git a/dogowner/views.py b/dogowner/views.py
index 53333ed..d9f751f 100644
--- a/dogowner/views.py
+++ b/dogowner/views.py
@@ -1,11 +1,28 @@
from django.contrib.auth.decorators import login_required
from django.shortcuts import render
from daycare.models import DayCare
+from daycare.forms import DayCareSearchForm
@login_required()
def dog_owner_home(request):
+ title = 'Search for day-cares'
+ form = DayCareSearchForm(request.POST or None)
+ day_care_queryset = DayCare.objects.all()
context = {
- 'daycares': DayCare.objects.all(),
+ 'day_care_queryset': day_care_queryset,
+ 'form': form
}
+ if request.method == 'POST':
+ if form.is_valid():
+ day_care_queryset = DayCare.objects.filter(area__startswith=form['area'].value(),
+ city__icontains=form['city'].value(),
+ name__icontains=form['name'].value(),
+ price_per_day__lte=form['price_per_day'].value())
+ context = {
+ 'title': title,
+ 'day_care_queryset': day_care_queryset,
+ 'form': form
+ }
+
return render(request, 'dogowner/dog_owner_homepage.html', context)
diff --git a/main/templates/main/base_template.html b/main/templates/main/base_template.html
index 63c7685..baebe70 100644
--- a/main/templates/main/base_template.html
+++ b/main/templates/main/base_template.html
@@ -26,7 +26,6 @@
{% if request.user.is_authenticated %}
Profile
Orders
-
Search
Chats
{% endif %}
About
diff --git a/main/tests.py b/main/tests.py
index 0d5eee9..69771ef 100644
--- a/main/tests.py
+++ b/main/tests.py
@@ -1,5 +1,6 @@
import pytest
from dogowner.models import DogOwner
+from daycare.models import DayCare
@pytest.fixture
@@ -87,3 +88,26 @@ def test_unlogged_user_access_to_homepage(self, client):
response = client.get("/homepage/")
assert response.status_code == 302
assert response['Location'] == '/login/?next=/homepage/'
+
+
+@pytest.mark.django_db
+class TestDogOwnerHomePageView:
+ def test_dog_owner_present_all_day_cares_at_entrypoint(self, client, create_dog_owner_user):
+ client.force_login(user=create_dog_owner_user.user)
+ response = client.get("/homepage/")
+ day_care_queryset = response.context['day_care_queryset']
+ assert day_care_queryset.count() == DayCare.objects.all().count()
+
+ def test_successful_dog_owner_search_for_day_care(self, client, create_dog_owner_user):
+ client.force_login(user=create_dog_owner_user.user)
+ search_form = {'area': "center",
+ 'city': "tel aviv",
+ 'price_per_day': 800,
+ 'name': "",
+ }
+ response = client.post('/homepage/', search_form, follow=True)
+ day_care_queryset = response.context['day_care_queryset']
+ for day_care in DayCare.objects.all():
+ if day_care.price_per_day <= 800 and day_care.area.lower() == 'center'\
+ and day_care.city.lower() == 'tel aviv':
+ assert day_care in day_care_queryset
diff --git a/static/CSS/dog_owner_homepage.css b/static/CSS/dog_owner_homepage.css
index ef9ed9c..c2b6c4e 100644
--- a/static/CSS/dog_owner_homepage.css
+++ b/static/CSS/dog_owner_homepage.css
@@ -1,32 +1,24 @@
.cards
{
- display: flex;
- flex-direction: row;
- flex-wrap: wrap;
- margin-left: 50px;
- justify-content: center;
- align-items: center;
+ float:left;
+ margin: 0 0 0 5em;
+ position:relative;
+ width:100%;
}
-.row
-{
- height: 30rem;
- width: 120rem;
- margin-left: 200px;
+#searchResult {
+ font-weight:bold;
+ position: relative;
+ left: 6.3em;
+ top:30px;
}
.card
{
- width: 18.5%;
+ width: 330px;
height: 30rem;
- margin: 60px 60px 0 60px;
- max-width: 100%;
-}
-
-.card-body
-{
- display: flex;
- flex-direction: column;
+ float:left;
+ margin: 60px 20px 0 20px;
}
.card-body .btn
@@ -39,3 +31,30 @@
{
height: 200px;
}
+
+#searchBoxArea {
+ background-color:#dcdcdc;
+ left:5em;
+ top: 5.2em;
+ max-width:100%;
+ padding: 2em 2em 2em 2em;
+}
+
+#searchBoxArea span {
+ font-weight:bold;
+ font-size:18px;
+ color:#3e3e3e;
+ padding: 5px 0 1em 0;
+ float:left;
+}
+
+#searchBoxArea input[type="submit"] {
+ background-color:#3e3e3e;
+ border: 0;
+ border-radius:12px;
+ color:#FFF;
+}
+
+#searchBoxArea input[type="submit"]:hover {
+ background-color:#1e1e1e;
+}
\ No newline at end of file