diff --git a/Hotails/settings.py b/Hotails/settings.py
index c993bec..4e1232c 100644
--- a/Hotails/settings.py
+++ b/Hotails/settings.py
@@ -67,6 +67,7 @@
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
+ 'main.context_processors.navbar_extras'
],
},
},
diff --git a/conftest.py b/conftest.py
index 39d2db9..2f5dd62 100644
--- a/conftest.py
+++ b/conftest.py
@@ -8,6 +8,11 @@
from review.models import Review
+DOG_OWNER_FIXTURE_PROFILE_PICTURE_URL = "https://www.akc.org/wp-content/uploads/2019/06/Bohemian-Shepherd.1.jpg"
+DAYCARE_FIXTURE_PROFILE_PICTURE_URL_1 = "../../static/images/daycare_image_test_01.jpeg"
+DAYCARE_FIXTURE_PROFILE_PICTURE_URL_2 = "../../static/images/daycare_image_test_02.jpeg"
+
+
@pytest.fixture
def create_order():
return Order.create(dog_owner_id=DogOwner.objects.get(id=1),
@@ -60,7 +65,7 @@ def create_dog_owner_user():
last_name='USER',
phone_number=1234567890,
dog_race='lavrador',
- dog_picture_url="https://www.akc.org/wp-content/uploads/2019/06/Bohemian-Shepherd.1.jpg",
+ dog_picture_url=DOG_OWNER_FIXTURE_PROFILE_PICTURE_URL,
dog_age=10,
dog_weight=6,
dog_gender='M'
@@ -90,12 +95,12 @@ def create_daycare_user(daycare_data):
@pytest.fixture
def create_image1(create_daycare_user):
- return Image.create(url="../../static/images/daycare_image_test_01.jpeg", daycare_id=create_daycare_user)
+ return Image.create(url=DAYCARE_FIXTURE_PROFILE_PICTURE_URL_1, daycare_id=create_daycare_user)
@pytest.fixture
def create_image2(create_daycare_user):
- return Image.create(url="../../static/images/daycare_image_test_02.jpeg", daycare_id=create_daycare_user)
+ return Image.create(url=DAYCARE_FIXTURE_PROFILE_PICTURE_URL_2, daycare_id=create_daycare_user)
@pytest.fixture
diff --git a/daycare/models.py b/daycare/models.py
index 54aa6ea..b544674 100644
--- a/daycare/models.py
+++ b/daycare/models.py
@@ -10,6 +10,9 @@
from django.core.exceptions import ObjectDoesNotExist
+DAYCARE_DEFAULT_PICTURE_URL = "../../static/images/daycare-default-profile-image.jpeg"
+
+
class DayCare(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, default=None, blank=True, null=False, editable=True)
name = models.CharField(max_length=20, blank=True, unique=True, validators=[MaxLengthValidator])
@@ -53,7 +56,7 @@ def get_daycare_primary_image_url(self):
daycare_images = Image.get_images_by_daycare_id(daycare_id=self.id)
if daycare_images is not None and daycare_images.first() is not None:
return daycare_images.first().url
- return "../../static/images/daycare-default-profile-image.jpeg"
+ return DAYCARE_DEFAULT_PICTURE_URL
class Image(models.Model):
diff --git a/daycare/test_image.py b/daycare/test_image.py
index 742e95f..20e0c7b 100644
--- a/daycare/test_image.py
+++ b/daycare/test_image.py
@@ -1,9 +1,8 @@
import pytest
-from .models import DayCare
-from .models import Image
-from django.core.exceptions import ValidationError
-DEFAULT_DAYCARE_PROFILE_URL = "../../static/images/daycare-default-profile-image.jpeg"
+from conftest import DAYCARE_FIXTURE_PROFILE_PICTURE_URL_1
+from .models import DayCare, Image, DAYCARE_DEFAULT_PICTURE_URL
+from django.core.exceptions import ValidationError
@pytest.mark.django_db()
@@ -25,9 +24,9 @@ def test_image_creation_with_invalid_image_url(self, create_daycare_user):
def test_daycare_has_customized_profile_image(self, create_image1, create_image2, create_daycare_user):
daycare_profile_image = create_daycare_user.get_daycare_primary_image_url()
- assert daycare_profile_image != DEFAULT_DAYCARE_PROFILE_URL
- assert daycare_profile_image is not None
+ assert daycare_profile_image != DAYCARE_DEFAULT_PICTURE_URL
+ assert daycare_profile_image == DAYCARE_FIXTURE_PROFILE_PICTURE_URL_1
def test_daycare_has_default_profile_image_when_no_customized_picture_was_found(self, create_daycare_user):
daycare_profile_image = create_daycare_user.get_daycare_primary_image_url()
- assert daycare_profile_image == DEFAULT_DAYCARE_PROFILE_URL
+ assert daycare_profile_image == DAYCARE_DEFAULT_PICTURE_URL
diff --git a/dogowner/models.py b/dogowner/models.py
index 562fbe0..1911b25 100644
--- a/dogowner/models.py
+++ b/dogowner/models.py
@@ -3,6 +3,9 @@
from .validators import ValidateDogOwner, MaxLength
+DOG_OWNER_DEFAULT_PROFILE_PICTURE_URL = "../../static/images/dog-owner-default-profile-picture.jpeg"
+
+
class Gender(models.TextChoices):
Male = 'M', 'Male'
Female = 'F', 'Female'
@@ -32,7 +35,6 @@ def create(email, username, password, dog_name,
first_name, last_name, phone_number,
dog_race, dog_picture_url, dog_age,
dog_weight, dog_gender):
-
ValidateDogOwner(email, username, password, dog_name,
first_name, last_name, phone_number,
dog_race, dog_picture_url, dog_age,
@@ -56,3 +58,6 @@ def create(email, username, password, dog_name,
new_dog_owner.user.save()
new_dog_owner.save()
return new_dog_owner
+
+ def get_dog_owner_profile_image_url(self):
+ return self.dog_picture_url if self.dog_picture_url else DOG_OWNER_DEFAULT_PROFILE_PICTURE_URL
diff --git a/dogowner/test_dog_owner.py b/dogowner/test_dog_owner.py
index 97dba7d..590beb5 100644
--- a/dogowner/test_dog_owner.py
+++ b/dogowner/test_dog_owner.py
@@ -1,4 +1,5 @@
-from .models import DogOwner
+from conftest import DOG_OWNER_FIXTURE_PROFILE_PICTURE_URL
+from .models import DogOwner, DOG_OWNER_DEFAULT_PROFILE_PICTURE_URL
from django.contrib.auth.models import User
from django.core.exceptions import ValidationError
from .validators import MaxLength
@@ -163,3 +164,12 @@ def test_dog_owner_user_creation_with_url_not_an_image(self):
dog_picture_url="https://www.not/an/image.com",
dog_age=10, dog_weight=6, dog_gender='M'
)
+
+ def test_dogowner_has_customized_profile_image(self, create_dog_owner_user):
+ dogowner_profile_image = create_dog_owner_user.get_dog_owner_profile_image_url()
+ assert dogowner_profile_image == DOG_OWNER_FIXTURE_PROFILE_PICTURE_URL
+
+ def test_dogowner_has_default_profile_image(self, create_dog_owner_user):
+ create_dog_owner_user.dog_picture_url = None
+ dogowner_profile_image = create_dog_owner_user.get_dog_owner_profile_image_url()
+ assert dogowner_profile_image == DOG_OWNER_DEFAULT_PROFILE_PICTURE_URL
diff --git a/main/context_processors.py b/main/context_processors.py
new file mode 100644
index 0000000..6d40ef4
--- /dev/null
+++ b/main/context_processors.py
@@ -0,0 +1,21 @@
+from daycare.models import DayCare
+from dogowner.models import DogOwner
+
+
+def navbar_extras(request):
+ navbar_picture_url = navbar_name = None
+ if request.user.is_authenticated:
+ if DogOwner.objects.filter(user=request.user).exists():
+ dog_owner = DogOwner.objects.filter(user=request.user).first()
+ navbar_name = dog_owner.__str__()
+ navbar_picture_url = dog_owner.get_dog_owner_profile_image_url()
+ else:
+ daycare = DayCare.objects.filter(user=request.user).first()
+ navbar_name = daycare.name
+ navbar_picture_url = daycare.get_daycare_primary_image_url()
+
+ context = {
+ 'navbar_picture_url': navbar_picture_url,
+ 'navbar_name': navbar_name,
+ }
+ return context
diff --git a/main/templates/main/base_template.html b/main/templates/main/base_template.html
index b045033..a0a0b48 100644
--- a/main/templates/main/base_template.html
+++ b/main/templates/main/base_template.html
@@ -12,36 +12,43 @@
+
{% block stylesheets %}
{% endblock %}