mirror of
https://github.com/kristoferssolo/FOSSDB.git
synced 2025-10-21 17:50:35 +00:00
Created settings page
This commit is contained in:
parent
e1e858beaa
commit
1590ae8e84
24
src/apps/account/templates/setting.html
Normal file
24
src/apps/account/templates/setting.html
Normal 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 %}
|
||||||
@ -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.forms import PasswordChangeForm
|
||||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||||
from django.shortcuts import get_object_or_404, redirect, render
|
from django.shortcuts import redirect, render
|
||||||
from django.views.generic import ListView
|
from django.views.generic import ListView, TemplateView
|
||||||
|
|
||||||
from fossdb.models import Project
|
from fossdb.models import Project
|
||||||
|
|
||||||
from .forms import LoginForm, SignUpForm
|
from .forms import LoginForm, SignUpForm, UserChangeForm
|
||||||
from .models import User
|
|
||||||
|
|
||||||
|
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):
|
class ProfileProjectListView(LoginRequiredMixin, ListView):
|
||||||
@ -25,16 +79,6 @@ class ProfileProjectListView(LoginRequiredMixin, ListView):
|
|||||||
return data
|
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):
|
def signup_view(request):
|
||||||
form = SignUpForm(request.POST or None)
|
form = SignUpForm(request.POST or None)
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user