Fix HostingPlatform

This commit is contained in:
Kristofers Solo 2023-06-26 13:11:21 +00:00
parent 9dbc32656a
commit fd5dd8bf55
4 changed files with 24 additions and 21 deletions

View File

@ -1,7 +1,5 @@
from django import forms
from .hosting_platform.models import HostingPlatform
from .models import Project

View File

@ -3,9 +3,15 @@ from django import forms
from .models import HostingPlatform, ProjectHostingPlatform
class ProjectHostingPlatformForm(forms.ModelForm):
hosting_platform = forms.ModelChoiceField(queryset=HostingPlatform.objects.all())
class HostingPlatformForm(forms.ModelForm):
class Meta:
model = ProjectHostingPlatform
fields = ("hosting_platform", "url")
fields = (
"url",
"hosting_platform",
)
widgets = {
"hosting_platform": forms.Select(
choices=HostingPlatform.objects.all(),
)
}

View File

@ -12,29 +12,28 @@ from .models import Project
@permission_required("fossdb.add_project", login_url="login/", raise_exception=True)
def add_project(request):
project_form = ProjectForm(request.POST or None)
hosting_platform_form = ProjectHostingPlatformForm(request.POST or None)
hosting_platform_form = HostingPlatformForm(request.POST or None)
_forms: dict[str, forms.ModelForm] = {
"project_form": project_form,
"hosting_platform_form": hosting_platform_form,
}
if request.method == "POST":
if project_form.is_valid() and hosting_platform_form.is_valid():
if all([form.is_valid() for form in _forms.values()]):
project = project_form.save(commit=False)
project.author = request.user
project.save()
project_hosting_platform = ProjectHostingPlatform(
hosting_platform=hosting_platform_form.cleaned_data["hosting_platform"],
project=project,
url=hosting_platform_form.cleaned_data["url"],
)
project_hosting_platform.save()
hosting_platform = hosting_platform_form.save(commit=False)
hosting_platform.project = project
hosting_platform.save()
project_form.save_m2m()
return redirect("index")
context = {
"title": "Add project",
"form": project_form,
"host_form": hosting_platform_form,
}
context = {"title": "Add project", **_forms}
return render(request, "fossdb/add_project.html", context)

View File

@ -5,8 +5,8 @@
{% block content %}
<form method="post">
{% csrf_token %}
{{ form.as_p }}
{{ host_form.as_p }}
{{ project_form.as_p }}
{{ hosting_platform_form.as_table }}
<button type="submit">Submit</button>
</form>
{% endblock %}