Created settings page

This commit is contained in:
Kristofers Solo 2023-06-29 21:46:14 +00:00
parent e1e858beaa
commit 1590ae8e84
2 changed files with 83 additions and 15 deletions

View File

@ -0,0 +1,24 @@
{% extends "base.html" %}
{% load static %}
{% block title %}{{ title }}{% endblock %}
{% block meta %}{% endblock %}
{% block content %}
<div class="py-8 px-32">
<div class="flex justify-end">
<a href="{% url 'change_password' %}">
<i class="fa-solid fa-shield fa-2xl"></i>
</a>
</div>
<form method="POST"
enctype="multipart/form-data"
class="flex flex-col items-center justify-center space-y-4 my-auto">
<h2 class="text-3xl font-abel">Edit profile</h2>
{% csrf_token %}
{{ user_form.username }}
{{ user_form.email }}
{{ user_form.first_name }}
{{ user_form.last_name }}
<button type="submit" class="button bg-skyblue-300 text-gray-500">Update</button>
</form>
</div>
{% endblock %}

View File

@ -1,12 +1,66 @@
from django.contrib.auth import authenticate, login
from django.contrib import messages
from django.contrib.auth import authenticate, login, update_session_auth_hash
from django.contrib.auth.forms import PasswordChangeForm
from django.contrib.auth.mixins import LoginRequiredMixin
from django.shortcuts import get_object_or_404, redirect, render
from django.views.generic import ListView
from django.shortcuts import redirect, render
from django.views.generic import ListView, TemplateView
from fossdb.models import Project
from .forms import LoginForm, SignUpForm
from .models import User
from .forms import LoginForm, SignUpForm, UserChangeForm
class ProfileUpdateView(LoginRequiredMixin, TemplateView):
template_name = "setting.html"
login_url = "/login/"
redirect_field_name = "redirect_to"
def get(self, request):
user_form = UserChangeForm(instance=request.user)
context = {
"title": "Your profile",
"user_form": user_form,
}
return self.render_to_response(context)
def post(self, request):
user_form = UserChangeForm(request.POST, instance=request.user)
if user_form.is_valid():
user_form.save()
messages.add_message(request, messages.SUCCESS, "Your profile was successfully updated!")
context = {
"title": "Your profile",
"user_form": user_form,
}
return self.render_to_response(context)
class PasswordChangeView(LoginRequiredMixin, TemplateView):
template_name = "password.html"
def get(self, request):
form = PasswordChangeForm(user=request.user)
context = {
"title": "Change password",
"form": form,
}
return self.render_to_response(context)
def post(self, request):
form = PasswordChangeForm(data=request.POST, user=request.user)
if form.is_valid():
form.save()
update_session_auth_hash(request, form.user)
messages.add_message(request, messages.SUCCESS, "Your password was successfully updated!")
context = {
"title": "Change password",
"form": form,
}
return self.render_to_response(context)
class ProfileProjectListView(LoginRequiredMixin, ListView):
@ -25,16 +79,6 @@ class ProfileProjectListView(LoginRequiredMixin, ListView):
return data
def profile(request, username):
user = get_object_or_404(User, username=username)
context = {
"title": user.username + ("" if not user.full_name else f" ({user.full_name})"),
"user": user,
}
return render(request, "profile.html", context)
def signup_view(request):
form = SignUpForm(request.POST or None)
if request.method == "POST":