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 django import forms
from .hosting_platform.models import HostingPlatform
from .models import Project from .models import Project

View File

@ -3,9 +3,15 @@ from django import forms
from .models import HostingPlatform, ProjectHostingPlatform from .models import HostingPlatform, ProjectHostingPlatform
class ProjectHostingPlatformForm(forms.ModelForm): class HostingPlatformForm(forms.ModelForm):
hosting_platform = forms.ModelChoiceField(queryset=HostingPlatform.objects.all())
class Meta: class Meta:
model = ProjectHostingPlatform 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) @permission_required("fossdb.add_project", login_url="login/", raise_exception=True)
def add_project(request): def add_project(request):
project_form = ProjectForm(request.POST or None) 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 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 = project_form.save(commit=False)
project.author = request.user project.author = request.user
project.save() project.save()
project_hosting_platform = ProjectHostingPlatform( hosting_platform = hosting_platform_form.save(commit=False)
hosting_platform=hosting_platform_form.cleaned_data["hosting_platform"], hosting_platform.project = project
project=project, hosting_platform.save()
url=hosting_platform_form.cleaned_data["url"],
)
project_hosting_platform.save()
project_form.save_m2m() project_form.save_m2m()
return redirect("index") return redirect("index")
context = { context = {"title": "Add project", **_forms}
"title": "Add project",
"form": project_form,
"host_form": hosting_platform_form,
}
return render(request, "fossdb/add_project.html", context) return render(request, "fossdb/add_project.html", context)

View File

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