Added language form

This commit is contained in:
Kristofers Solo 2023-04-07 23:50:36 +03:00
parent 4791e5477a
commit 2544256b50

View File

@ -1,14 +1,15 @@
from django.contrib.auth.decorators import login_required, permission_required from django.contrib.auth.decorators import login_required, permission_required
from django.forms import formset_factory
from django.shortcuts import redirect, render from django.shortcuts import redirect, render
from .forms import ProjectForm from .forms import ProjectForm, ProjectProgrammingLanguageForm
from .models import Project from .models import ProgrammingLanguage, Project
def index(request): def index(request):
context = { context = {
"title": "FOSSDB", "title": "FOSSDB",
"projects": Project.objects.all() "projects": Project.objects.all(),
} }
return render(request, "fossdb/index.html", context) return render(request, "fossdb/index.html", context)
@ -16,21 +17,31 @@ def index(request):
@login_required(login_url="login/") @login_required(login_url="login/")
@permission_required("fossdb.add_post", login_url="login/", raise_exception=True) @permission_required("fossdb.add_post", login_url="login/", raise_exception=True)
def add_project(request): def add_project(request):
ProgrammingLanguageFormSet = formset_factory(ProjectProgrammingLanguageForm, extra=1)
if request.method == "POST": if request.method == "POST":
project_form = ProjectForm(request.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 = project_form.save(commit=False)
project.author = request.user project.author = request.user
project.save() 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() project_form.save_m2m()
return redirect("/") return redirect("/")
else: else:
project_form = ProjectForm() project_form = ProjectForm()
language_formset = ProgrammingLanguageFormSet()
context = { context = {
"title": "Add project", "title": "Add project",
"project_form": project_form, "project_form": project_form,
# "language_formset": language_formset "language_formset": language_formset
} }
return render(request, "fossdb/add_project.html", context) return render(request, "fossdb/add_project.html", context)