Using d Django Abstract Base User model to enable Profile tab - django

Using Django Abstract Base User model, How do I make the Profile tab show when a user is logged in. Should I create a model/form for Profile, This is the image of the html file. The backend for signup and login works perfectly fine but when a user signs up or logs in, the nav bar doesn't change at all. Please help
{% extends 'base.html' %}
{% block title %}Profile{% endblock %}
{% block content %}
<h1>Hello World</h1>
{% if user.is_authenticated %}
Profile
Logout
{% else %}
Sign Up
Log In
{% endif %}
{% endblock %}

Related

Get the user context in all views django?

Im using a template syntax to set the permissions for the topbar of the application like so
Top bar permision
{% if user.is_authenticated %}
# Top bar html code
{% endif %}
but the problem is that when a user i authenticated they can accress the profile picture and name of another user if they have the correct url:uuid link.
I managed to get this fixed by putting this syntax in the template
{% if object == request.user %}
{% if object.pk %}
{% endif %}
{% endif %}
This fixed the issue on the pages where the request.user can be accressed from the profile view. How can i accress the request.user in all the views at once?
Solved the problem i moved the templates tags to this order
{% if user.is_authenticated %}
{% if user == request.user %}
{% if user.pk %} {% endif %}
{% endif %}
{% endif %}

Django: how to pass value from a list template to a view, static url

In my template, I have a list of users on which the connected user can click to access the profile of a user on the list. I want to retrieve the user I clicked on in my view. However, I would like to keep a static URL (to avoid having user-related settings displayed in the URL). Do you have any idea how to do that?
Here is my template :
{% extends "base.html" %}
{% block content %}
{% if userConnected.adminRole == "SuperUser" %}
<h2>Members List</h2>
<h3>Members from OU : {{ userConnected.ou }} </h3>
{% for element in user_list %}
<p>{{ element.first_name }}</p>
{% endfor %}
{% endif %}
{% endblock %}
What should I add to my template and what should I write in my view "edit_other_profile" to get the right user ? Thanks a lot

Django - check if user is authenticated for every url

On my html, I can check if the user is logged in by using the following syntax:
{% if user.is_authenticated %}
<div id="display_something">...</div>
{% else %}
<p>Please Log in</p>
{% endif %}
But what should I do if I want to check if the user is authenticated for every html file I am rendering? Do I have to copy and paste that {% if ... %} block for every single html file? What is the Django's way of handling this issue? What's the good practice?
in your base.html, add your check
{% if user.is_authenticated %}
{% block page %}
{% endblock %}
{% else %}
<p>Please Log in</p>
{% endif %}
then with all your other pages, add {% extends 'base.html' %} at the top. You will need to give it a relative link to base.html.
Then the rest of your code on that page needs to sit between tags like below.
{% block page %}
<!-- all your html code here -->
{% endblock %}
Notice that after block, you need to have the same name. for this example, it is page but you can pick your own variable name.
You shouldn't handle the authentication logic in the template (for the entire site), instead you can use the login_required decorator on your views.
from django.contrib.auth.decorators import login_required
#login_required
def my_view(request):
...

how to override wagtail admin login page

I am trying to build my own custom login page for wagtail admin login page. Everything is working fine I removed all the content by extending
{% extends "wagtailadmin/login.html" %}
Login is working but the default sign in button is still showing in my custom login page. How to remove it.
Here my own custom login page code is
{% extends "wagtailadmin/login.html" %}
{% load staticfiles i18n %}
{% block css %}
#Loaded my css files here
{% endblock %}
{% block branding_login %}{% endblock %} # to Remove branding login(login to wagtail site)
{% block fields %}
#Login form here
{% endblock %}
To replace the submit button, define a submit_buttons block on your template.
http://docs.wagtail.io/en/v2.1.1/advanced_topics/customisation/admin_templates.html#submit-buttons

Overriding django admin dashboard and adding logic on it

I would like to know how could I add some logic on my admin dashboard. I need to make queries on three different models and show data on Dashboard template but still can't handle the template extention with different models data.
Thanks!
Accomplishing what I was planning to do looked weird. I would need to change the base_site.html rendering view to show up these information, or something else that I don't know how to deal with, so, what i did was:
Extend admin/base.html on /templates/admin loading original data, and overriding some blocks
{% extends "admin/base.html" %}
{% load i18n %}
{% block title %}
{{ title }}
{% endblock %}
{% block branding %}
<h1 id="site-name">Administration</h1>
{% endblock %}
{% block nav-global %}
<center>
<button>Reports</button>
<button>Graphs</button>
</center>
{% endblock %}
It's working fine by now, but still don't know how to deal with admin view of base_index.html