Added Project detail view

This commit is contained in:
Kristofers Solo 2023-06-26 14:41:36 +00:00
parent a2868b573d
commit 31cf63c1ed
3 changed files with 56 additions and 5 deletions

View File

@ -4,5 +4,6 @@ from . import views
urlpatterns = [
path("", views.index, name="index"),
path("add", views.add_project, name="add-project"),
path("add/", views.add_project, name="add-project"),
path("<str:username>/<str:project_name>/", views.ProjectDetailView.as_view(), name="project-detail"),
]

View File

@ -1,6 +1,9 @@
from django import forms
from django.conf import settings
from django.contrib.auth.decorators import login_required, permission_required
from django.shortcuts import redirect, render
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
from django.shortcuts import get_object_or_404, redirect, render
from django.urls import reverse_lazy
from django.views.generic import CreateView, DeleteView, DetailView, UpdateView
from .forms import ProjectForm
@ -8,6 +11,8 @@ from .hosting_platform.forms import HostingPlatformForm
from .models import Project
from .programming_language.forms import ProgrammingLanguageForm
User = settings.AUTH_USER_MODEL
@login_required(login_url="login/")
@permission_required("fossdb.add_project", login_url="login/", raise_exception=True)
@ -52,8 +57,15 @@ def index(request):
return render(request, "fossdb/index.html", context)
class ProjectDetailView(DetailView):
model = Project
template_name = "fossdb/detailed_view.html"
context_object_name = "project"
slug_field = "name"
slug_url_kwarg = "project_name"
def get_queryset(self):
queryset = super().get_queryset()
return queryset.filter(owner__username=self.kwargs.get("username"))

View File

@ -0,0 +1,38 @@
{% extends "layout.html" %}
{% load static %}
{% block title %}{{ project.name }}{% endblock %}
{% block meta %}{% endblock %}
{% block content %}
<h2>@{{ project.owner.username }}</h2>
<p>{{ project.name }}</p>
<p>{{ project.description }}</p>
<ul>
{% for license in project.licenses.all %}
<li>
<a href="{{ license.url }}">{{ license.short_name }}</a>
</li>
{% empty %}
<p>No license</p>
{% endfor %}
</ul>
<ul>
{% for language in project.projectprogramminglanguage_set.all %}
<li>{{ language.language }} | {{ language.percentage }}&#37;</li>
{% empty %}
<p>No language</p>
{% endfor %}
</ul>
<ul>
{% for tag in project.tag.all %}
<li>{{ tag.name }}</li>
{% empty %}
{% endfor %}
</ul>
<p>{{ project.date_created|date:"d.m.Y, G:i" }}</p>
<button>
<a href="{% url 'project-update' project.owner project.name %}">Update</a>
</button>
<button>
<a href="{% url 'project-delete' project.owner project.name %}">Delete</a>
</button>
{% endblock %}