Skip to content

Commit

Permalink
Adding user picture and username to navbar.
Browse files Browse the repository at this point in the history
When the user is logged into Hotails, they'll see their profile picture,
and their username in every page on Hotails on the navbar.

Signed-off-by: Ofir Matasas <[email protected]>
Signed-off-by: tamirmatok <[email protected]>
  • Loading branch information
tamirmatok authored and OfirMatasas committed Apr 21, 2022
1 parent b0145b1 commit ea77a1e
Show file tree
Hide file tree
Showing 10 changed files with 130 additions and 36,761 deletions.
1 change: 1 addition & 0 deletions Hotails/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -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'
],
},
},
Expand Down
2 changes: 1 addition & 1 deletion Hotails/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path
from django.urls import path, include
from main import views
from django.contrib.auth import views as auth_views

Expand Down
21 changes: 21 additions & 0 deletions main/context_processors.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
from daycare.models import DayCare, Image
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_picture_url = dog_owner.dog_picture_url
navbar_name = dog_owner.first_name + ' ' + dog_owner.last_name

elif DayCare.objects.filter(user=request.user).exists():
daycare = DayCare.objects.filter(user=request.user).first()
navbar_picture_url = Image.objects.filter(daycare_id=daycare).first().url
navbar_name = daycare.name
context = {
'navbar_picture_url': navbar_picture_url,
'navbar_name': navbar_name,
}
return context
43 changes: 25 additions & 18 deletions main/templates/main/base_template.html
Original file line number Diff line number Diff line change
Expand Up @@ -12,36 +12,43 @@
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css"
integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous">
<link rel="stylesheet" href="{% static 'css/sidebar.css' %}">
{% block stylesheets %}
{% endblock %}
</head>
<header>
<nav class="navbar navbar-expand-lg navbar-light bg-dark">
<nav class="navbar navbar-expand-lg navbar-light bg-dark" style="padding: 0 10px 0 10px;">
<a class="navbar-brand" href="..\">
<img src="..\..\..\static\images\Hotails-logo-smaller.png" style="width:50px; height:50px;" class="d-inline-block align-top" loading="lazy"></a>
<button class="navbar-toggler" type="button" data-target="#navbarText"
aria-controls="navbarText" aria-expanded="false" aria-label="Toggle navigation">
</button>
<ul class="navbar-nav mr-auto">
{% if request.user.is_authenticated %}
<li class="nav-item"><a class="nav-link text-white" href="">Profile</a></li>
<li class="nav-item"><a class="nav-link text-white" href="">Orders</a></li>
<li class="nav-item"><a class="nav-link text-white" href="">Search</a></li>
<li class="nav-item"><a class="nav-link text-white" href="">Chats</a></li>
{% endif %}
<li class="nav-item"><a class="nav-link text-white" href="/about">About</a></li>
</ul>
<img src="{% static 'images/Hotails-logo-smaller.png' %}" style="width:50px; height:50px;" class="d-inline-block align-top" loading="lazy">
</a>
<button class="navbar-toggler" type="button" data-target="#navbarText" aria-controls="navbarText" aria-expanded="false" aria-label="Toggle navigation"></button>
<ul class="navbar-nav mr-auto">
{% if request.user.is_authenticated %}
<li class="nav-item"><a class="nav-link text-white" href="">Profile</a></li>
<li class="nav-item"><a class="nav-link text-white" href="">Orders</a></li>
<li class="nav-item"><a class="nav-link text-white" href="">Search</a></li>
<li class="nav-item"><a class="nav-link text-white" href="">Chats</a></li>
{% endif %}
<li class="nav-item"><a class="nav-link text-white" href="/about">About</a></li>
</ul>
{% if request.user.is_authenticated %}
<ul class="nav navbar-nav navbar-right">
<li class="nav-item"><a class="nav-link text-white" style="font-size:1.3rem" href="/logout">Logout</a></li>
<li class="nav-item"><img src="{{ navbar_picture_url }}" alt="{{ name }} image" class="card-img-top sidebar-profile-img"></li>
<li class="nav-item">
<span id="welcomeMsg">Welcome, {{ navbar_name }}!</span><a class="nav-link" id="logoutHref" href="/logout">Logout</a>
</li>
</ul>
{% endif %}
</nav>
</header>

<body>
{% block content %}
{% endblock %}
<div class="row">
<div class="col-12 col-lg-12">
{% block content %}
{% endblock %}
</div>
</div>

</body>

</html>
8 changes: 8 additions & 0 deletions main/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,3 +87,11 @@ def test_unlogged_user_access_to_homepage(self, client):
response = client.get("/homepage/")
assert response.status_code == 302
assert response['Location'] == '/login/?next=/homepage/'


class TestAboutView:
def test_redirected_to_about_section(self, client):
response = client.get('/about')
assert response.status_code == 301
response = client.get(response.url)
assert response.status_code == 200
12 changes: 12 additions & 0 deletions main/urls.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
from django.urls import path
from django.contrib.auth import views as auth_views
from . import views

urlpatterns = [

path('', views.index, name='index'),
path('homepage/', views.homepage, name='homepage'),
path('login/', auth_views.LoginView.as_view(template_name='main/login.html',
redirect_authenticated_user=True), name='login'),
path('logout/', views.logout_view, name='logout')
]
21 changes: 20 additions & 1 deletion main/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
from django.contrib.auth.decorators import login_required
from django.shortcuts import redirect
from django.contrib.auth import logout
from daycare.models import DayCare, Image
from dogowner.models import DogOwner


def index(request):
Expand All @@ -13,7 +15,24 @@ def index(request):

@login_required()
def homepage(request):
return render(request, 'main/homepage.html')
if DogOwner.objects.filter(user=request.user).exists():
dog_owner = DogOwner.objects.filter(user=request.user).first()
profile_picture_url = dog_owner.dog_picture_url
username = dog_owner.first_name + dog_owner.last_name
dog_name = dog_owner.dog_name
else:
daycare = DayCare.objects.filter(user=request.user).first()
profile_picture_url = Image.objects.filter(daycare_id=daycare).first()
username = daycare.name
dog_name = None

context = {
'profile_picture_url': profile_picture_url,
'username': username,
'dog_name': dog_name,
}

return render(request, 'main/homepage.html', context)


def about(request):
Expand Down
Loading

0 comments on commit ea77a1e

Please sign in to comment.