From 2544256b50a8e103e611380c5cc16265a3e48fca Mon Sep 17 00:00:00 2001 From: Kristofers Solo Date: Fri, 7 Apr 2023 23:50:36 +0300 Subject: [PATCH] Added language form --- FOSSDB_web/apps/fossdb/views.py | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/FOSSDB_web/apps/fossdb/views.py b/FOSSDB_web/apps/fossdb/views.py index 5e0b370..4d2496f 100644 --- a/FOSSDB_web/apps/fossdb/views.py +++ b/FOSSDB_web/apps/fossdb/views.py @@ -1,14 +1,15 @@ from django.contrib.auth.decorators import login_required, permission_required +from django.forms import formset_factory from django.shortcuts import redirect, render -from .forms import ProjectForm -from .models import Project +from .forms import ProjectForm, ProjectProgrammingLanguageForm +from .models import ProgrammingLanguage, Project def index(request): context = { "title": "FOSSDB", - "projects": Project.objects.all() + "projects": Project.objects.all(), } return render(request, "fossdb/index.html", context) @@ -16,21 +17,31 @@ def index(request): @login_required(login_url="login/") @permission_required("fossdb.add_post", login_url="login/", raise_exception=True) def add_project(request): + ProgrammingLanguageFormSet = formset_factory(ProjectProgrammingLanguageForm, extra=1) if request.method == "POST": project_form = ProjectForm(request.POST) + language_formset = ProgrammingLanguageFormSet(request.POST) - if project_form.is_valid(): + if project_form.is_valid() and language_formset.is_valid(): project = project_form.save(commit=False) project.author = request.user project.save() + + for language_form in language_formset: + if language_formset.is_valid(): + language = language_form.save(commit=False) + language.project = project + language.save() + project_form.save_m2m() return redirect("/") else: project_form = ProjectForm() + language_formset = ProgrammingLanguageFormSet() context = { "title": "Add project", "project_form": project_form, - # "language_formset": language_formset + "language_formset": language_formset } return render(request, "fossdb/add_project.html", context)