Fix user profile

This commit is contained in:
Kristofers Solo 2023-06-30 02:16:48 +00:00
parent 065bb127ba
commit 76bc5fad60
4 changed files with 40 additions and 31 deletions

View File

@ -4,15 +4,24 @@
{% block meta %}{% endblock %} {% block meta %}{% endblock %}
{% block content %} {% block content %}
<div class="py-8 px-32"> <div class="py-8 px-32">
<div class="flex justify-end gap-4"> {% if user.is_authenticated and user == page_owner %}
<a href="{% url "logout" %}"> <div class="flex justify-end gap-4">
<i class="fa-solid fa-right-from-bracket fa-2xl"></i> <a href="{% url "logout" %}">
</a> <i class="fa-solid fa-right-from-bracket fa-2xl"></i>
<a href="{% url "settings" %}"> </a>
<i class="fa-solid fa-gear fa-2xl"></i> <a href="{% url "settings" %}">
</a> <i class="fa-solid fa-gear fa-2xl"></i>
</div> </a>
<h1 class="font-abel text-4xl mb-8">My Projects</h1> </div>
{% endif %}
<h1 class="font-abel text-4xl mb-8">
{% if user.is_authenticated and user == page_owner %}
My
{% else %}
{{ page_owner }}
{% endif %}
Projects
</h1>
<div class="grid grid-cols-1 gap-4"> <div class="grid grid-cols-1 gap-4">
{% for project in projects %} {% for project in projects %}
<div class="border border-steelblue-100 p-8 flex flex-row gap-4 justify-between"> <div class="border border-steelblue-100 p-8 flex flex-row gap-4 justify-between">

View File

@ -4,9 +4,7 @@ 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 redirect, render from django.shortcuts import redirect, render
from django.urls import reverse_lazy from django.urls import reverse_lazy
from django.views.generic import ListView, TemplateView, View from django.views.generic import TemplateView, View
from fossdb.models import Project
from .forms import LoginForm, SignUpForm, UserChangeForm from .forms import LoginForm, SignUpForm, UserChangeForm
@ -64,22 +62,6 @@ class PasswordChangeView(LoginRequiredMixin, TemplateView):
return self.render_to_response(context) return self.render_to_response(context)
class ProfileProjectListView(LoginRequiredMixin, ListView):
model = Project
template_name = "profile.html"
context_object_name = "projects"
login_url = reverse_lazy("login")
redirect_field_name = "redirect_to"
def get_queryset(self):
return Project.objects.filter(owner=self.request.user)
def get_context_data(self, *args, **kwargs):
data = super().get_context_data(**kwargs)
data["title"] = self.request.user.username + ("" if not self.request.user.full_name else f" ({self.request.user.full_name})")
return data
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":

View File

@ -1,6 +1,7 @@
from django.contrib.auth import get_user_model
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
from django.db.models import Q from django.db.models import Q
from django.shortcuts import redirect from django.shortcuts import get_object_or_404, redirect
from django.urls import reverse_lazy from django.urls import reverse_lazy
from django.views.generic import CreateView, DeleteView, DetailView, ListView, UpdateView from django.views.generic import CreateView, DeleteView, DetailView, ListView, UpdateView
@ -34,6 +35,24 @@ class SearchResultsListView(ListView):
return data return data
class ProfileProjectListView(ListView):
model = Project
template_name = "profile.html"
context_object_name = "projects"
slug_field = "username"
def get_queryset(self):
username = self.kwargs.get("username")
self.user = get_object_or_404(get_user_model(), username=username)
return Project.objects.filter(owner__username=username)
def get_context_data(self, *args, **kwargs):
data = super().get_context_data(**kwargs)
data["title"] = self.user.username + ("" if not self.user.full_name else f" ({self.user.full_name})")
data["page_owner"] = self.user
return data
class ProjectListView(ListView): class ProjectListView(ListView):
model = Project model = Project
template_name = "explore.html" template_name = "explore.html"

View File

@ -1,6 +1,5 @@
from account.views import ProfileProjectListView
from django.urls import path from django.urls import path
from fossdb.views import ProjectCreateView, ProjectListView, SearchResultsListView from fossdb.views import ProfileProjectListView, ProjectCreateView, ProjectListView, SearchResultsListView
from . import views from . import views