mirror of
https://github.com/kristoferssolo/FOSSDB.git
synced 2025-10-21 17:50:35 +00:00
Fix HostingPlatform
This commit is contained in:
parent
9dbc32656a
commit
fd5dd8bf55
@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -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(),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|||||||
@ -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)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -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 %}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user