diff --git a/src/apps/account/templates/profile.html b/src/apps/account/templates/profile.html index 3c93cfb..9e5e2d6 100644 --- a/src/apps/account/templates/profile.html +++ b/src/apps/account/templates/profile.html @@ -3,8 +3,20 @@ {% block title %}{{ title }}{% endblock %} {% block meta %}{% endblock %} {% block content %} -

{{ user.username }}

- {{ user.username }}’s profile picture -

{{ user.email }}

+
+

My Projects

+
+ {% for project in projects %} +
+ +

{{ project.name }}

+
+

{{ project.description|slice:500 }}

+
+ {% empty %} +

No projects yet.

+ {% endfor %} +
+
{% endblock %} diff --git a/src/apps/account/urls.py b/src/apps/account/urls.py index c812fd2..f055ba7 100644 --- a/src/apps/account/urls.py +++ b/src/apps/account/urls.py @@ -5,5 +5,5 @@ from . import views urlpatterns = [ path("signup/", views.signup_view, name="signup"), path("login/", views.login_view, name="login"), - path("/", views.profile, name="profile"), + path("/", views.ProfileProjectListView.as_view(), name="profile"), ] diff --git a/src/apps/account/views.py b/src/apps/account/views.py index 585876f..470136b 100644 --- a/src/apps/account/views.py +++ b/src/apps/account/views.py @@ -1,10 +1,29 @@ from django.contrib.auth import authenticate, login +from django.contrib.auth.mixins import LoginRequiredMixin from django.shortcuts import get_object_or_404, redirect, render +from django.views.generic import ListView +from fossdb.models import Project from .forms import LoginForm, SignUpForm from .models import User +class ProfileProjectListView(LoginRequiredMixin, ListView): + model = Project + template_name = "profile.html" + context_object_name = "projects" + login_url = "/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 profile(request, username): user = get_object_or_404(User, username=username) diff --git a/src/apps/fossdb/templates/delete_view.html b/src/apps/fossdb/templates/delete_view.html index aaa3751..1b20a74 100644 --- a/src/apps/fossdb/templates/delete_view.html +++ b/src/apps/fossdb/templates/delete_view.html @@ -1,6 +1,6 @@ {% extends "base.html" %} {% load static %} -{% block title %}Delete {{ project }}{% endblock %} +{% block title %}{{ title }}{% endblock %} {% block content %}
+ class="text-center form-field border-slategray-200 hover:border-lightcoral bg-gray-300 focus:border-indianred-100 transition ease-linear" /> diff --git a/src/apps/fossdb/templates/search.html b/src/apps/fossdb/templates/search.html index 3a18b3b..8f0f7e0 100644 --- a/src/apps/fossdb/templates/search.html +++ b/src/apps/fossdb/templates/search.html @@ -15,7 +15,7 @@

{{ project.description|slice:500 }}

{% empty %} -

No projects yet.

+

No projects yet.

{% endfor %} diff --git a/src/apps/fossdb/views.py b/src/apps/fossdb/views.py index a33c423..0af96d8 100644 --- a/src/apps/fossdb/views.py +++ b/src/apps/fossdb/views.py @@ -28,6 +28,11 @@ class SearchResultsListView(ListView): | Q(programming_language__name__icontains=query) ).distinct() + def get_context_data(self, *args, **kwargs): + data = super().get_context_data(**kwargs) + data["title"] = "FOSSDB | Search" + return data + class ProjectListView(ListView): model = Project @@ -35,6 +40,11 @@ class ProjectListView(ListView): context_object_name = "projects" paginate_by = 50 # amount of items on screen + def get_context_data(self, *args, **kwargs): + data = super().get_context_data(**kwargs) + data["title"] = "FOSSDB | Explore" + return data + class ProjectCreateView(LoginRequiredMixin, CreateView): model = Project @@ -45,6 +55,7 @@ class ProjectCreateView(LoginRequiredMixin, CreateView): def get_context_data(self, *args, **kwargs): data = super().get_context_data(**kwargs) + data["title"] = "FOSSDB | Create Project" data["hosting_platform"] = HostingPlatformForm(self.request.POST or None) data["programming_languages"] = ProgrammingLanguageInlineFormSet(self.request.POST or None) return data @@ -95,6 +106,7 @@ class ProjectUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView): def get_context_data(self, *args, **kwargs): data = super().get_context_data(**kwargs) + data["title"] = f"Edit {self.object}" data["hosting_platform"] = HostingPlatformForm(self.request.POST or None, instance=self.object.projecthostingplatform) data["programming_languages"] = ProgrammingLanguageInlineFormSet(self.request.POST or None, instance=self.object) return data @@ -133,3 +145,8 @@ class ProjectDeleteView(LoginRequiredMixin, UserPassesTestMixin, DeleteView): def handle_no_permission(self): return redirect("login") + + def get_context_data(self, *args, **kwargs): + data = super().get_context_data(**kwargs) + data["title"] = f"Delete {self.object}" + return data