From b041bf3773030dbf4a2c8532e64b09f3972be297 Mon Sep 17 00:00:00 2001 From: Kristofers Solo Date: Mon, 26 Jun 2023 14:41:58 +0000 Subject: [PATCH] Added `Project` update view --- FOSSDB/apps/fossdb/urls.py | 1 + FOSSDB/apps/fossdb/views.py | 19 +++++++++++++++++++ templates/fossdb/update_view.html | 20 ++++++++++++++++++++ 3 files changed, 40 insertions(+) create mode 100644 templates/fossdb/update_view.html diff --git a/FOSSDB/apps/fossdb/urls.py b/FOSSDB/apps/fossdb/urls.py index 4e0ad33..a86d3c2 100644 --- a/FOSSDB/apps/fossdb/urls.py +++ b/FOSSDB/apps/fossdb/urls.py @@ -6,4 +6,5 @@ urlpatterns = [ path("", views.index, name="index"), path("add/", views.add_project, name="add-project"), path("//", views.ProjectDetailView.as_view(), name="project-detail"), + path("//update/", views.ProjectUpdateView.as_view(), name="project-update"), ] diff --git a/FOSSDB/apps/fossdb/views.py b/FOSSDB/apps/fossdb/views.py index 1a53e34..16a03fb 100644 --- a/FOSSDB/apps/fossdb/views.py +++ b/FOSSDB/apps/fossdb/views.py @@ -69,3 +69,22 @@ class ProjectDetailView(DetailView): return queryset.filter(owner__username=self.kwargs.get("username")) +class ProjectUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView): + model = Project + template_name = "fossdb/update_view.html" + form_class = ( + ProjectForm, + HostingPlatformForm, + ProgrammingLanguageForm, + ) + 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")) + + def test_func(self): + return self.get_object().owner == self.request.user + + diff --git a/templates/fossdb/update_view.html b/templates/fossdb/update_view.html new file mode 100644 index 0000000..38b1f46 --- /dev/null +++ b/templates/fossdb/update_view.html @@ -0,0 +1,20 @@ +{% extends "layout.html" %} +{% block title %}Update {{ project.name }}{% endblock %} +{% block content %} +
+ {% csrf_token %} + {{ project_form.as_p }} + + {{ language_formset.management_form }} + {% for form in language_formset %} + + + + + + {% endfor %} +
{{ form.language.label_tag }}{{ form.language }}{{ form.percentage }}
+ {{ host_formset.as_p }} + +
+{% endblock %}