mirror of
https://github.com/kristoferssolo/FOSSDB.git
synced 2025-10-21 17:50:35 +00:00
Fix UpdateView
This commit is contained in:
parent
4ab45b4347
commit
28ed2827e8
@ -1,5 +1,3 @@
|
|||||||
from django import forms
|
|
||||||
from django.conf import settings
|
|
||||||
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
|
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
|
||||||
from django.shortcuts import get_object_or_404, redirect, render
|
from django.shortcuts import get_object_or_404, redirect, render
|
||||||
from django.urls import reverse_lazy
|
from django.urls import reverse_lazy
|
||||||
@ -10,8 +8,6 @@ from .hosting_platform.forms import HostingPlatformForm
|
|||||||
from .models import Project
|
from .models import Project
|
||||||
from .programming_language.forms import ProgrammingLanguageForm
|
from .programming_language.forms import ProgrammingLanguageForm
|
||||||
|
|
||||||
User = settings.AUTH_USER_MODEL
|
|
||||||
|
|
||||||
|
|
||||||
def index(request):
|
def index(request):
|
||||||
context = {
|
context = {
|
||||||
@ -25,6 +21,8 @@ class ProjectCreateView(LoginRequiredMixin, CreateView):
|
|||||||
model = Project
|
model = Project
|
||||||
form_class = ProjectForm
|
form_class = ProjectForm
|
||||||
template_name = "fossdb/add_project.html"
|
template_name = "fossdb/add_project.html"
|
||||||
|
login_url = "/login/"
|
||||||
|
redirect_field_name = "redirect_to"
|
||||||
|
|
||||||
def form_valid(self, form):
|
def form_valid(self, form):
|
||||||
form.instance.owner = self.request.user
|
form.instance.owner = self.request.user
|
||||||
@ -69,13 +67,30 @@ class ProjectDetailView(DetailView):
|
|||||||
class ProjectUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView):
|
class ProjectUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView):
|
||||||
model = Project
|
model = Project
|
||||||
template_name = "fossdb/update_view.html"
|
template_name = "fossdb/update_view.html"
|
||||||
form_class = (
|
form_class = ProjectForm
|
||||||
ProjectForm,
|
|
||||||
HostingPlatformForm,
|
|
||||||
ProgrammingLanguageForm,
|
|
||||||
)
|
|
||||||
slug_field = "name"
|
slug_field = "name"
|
||||||
slug_url_kwarg = "project_name"
|
slug_url_kwarg = "project_name"
|
||||||
|
login_url = "/login/"
|
||||||
|
redirect_field_name = "redirect_to"
|
||||||
|
|
||||||
|
def form_valid(self, form):
|
||||||
|
form.instance.owner = self.request.user
|
||||||
|
response = super().form_valid(form)
|
||||||
|
|
||||||
|
hosting_platform_form = HostingPlatformForm(self.request.POST, instance=self.object)
|
||||||
|
if hosting_platform_form.is_valid():
|
||||||
|
hosting_platform = hosting_platform_form.save(commit=False)
|
||||||
|
hosting_platform.project = self.object
|
||||||
|
hosting_platform.save()
|
||||||
|
|
||||||
|
# TODO: allow adding multiple languages
|
||||||
|
programming_language_form = ProgrammingLanguageForm(self.request.POST, instance=self.object)
|
||||||
|
if programming_language_form.is_valid():
|
||||||
|
programming_language = programming_language_form.save(commit=False)
|
||||||
|
programming_language.project = self.object
|
||||||
|
programming_language.save()
|
||||||
|
|
||||||
|
return response
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
queryset = super().get_queryset()
|
queryset = super().get_queryset()
|
||||||
@ -84,13 +99,31 @@ class ProjectUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView):
|
|||||||
def test_func(self):
|
def test_func(self):
|
||||||
return self.get_object().owner == self.request.user
|
return self.get_object().owner == self.request.user
|
||||||
|
|
||||||
|
def handle_no_permission(self):
|
||||||
|
return redirect("index")
|
||||||
|
|
||||||
|
def get_context_data(self, *args, **kwargs):
|
||||||
|
context = super().get_context_data(**kwargs)
|
||||||
|
if self.request.POST:
|
||||||
|
context["project_form"] = ProjectForm(self.request.POST, instance=self.object)
|
||||||
|
context["hosting_platform_form"] = HostingPlatformForm(self.request.POST, instance=self.object)
|
||||||
|
context["programming_language_form"] = ProgrammingLanguageForm(self.request.POST, instance=self.object)
|
||||||
|
else:
|
||||||
|
context["project_form"] = ProjectForm(instance=self.object)
|
||||||
|
context["hosting_platform_form"] = HostingPlatformForm(instance=self.object)
|
||||||
|
context["programming_language_form"] = ProgrammingLanguageForm(instance=self.object)
|
||||||
|
|
||||||
|
return context
|
||||||
|
|
||||||
|
|
||||||
class ProjectDeleteView(LoginRequiredMixin, UserPassesTestMixin, DeleteView):
|
class ProjectDeleteView(LoginRequiredMixin, UserPassesTestMixin, DeleteView):
|
||||||
model = Project
|
model = Project
|
||||||
template_name = "fossdb/delete_view.html"
|
template_name = "fossdb/delete_view.html"
|
||||||
slug_field = "name"
|
slug_field = "name"
|
||||||
slug_url_kwarg = "project_name"
|
slug_url_kwarg = "project_name"
|
||||||
success_url = reverse_lazy("index")
|
login_url = "/login/"
|
||||||
|
redirect_field_name = "redirect_to"
|
||||||
|
success_url = "/"
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
queryset = super().get_queryset()
|
queryset = super().get_queryset()
|
||||||
@ -98,3 +131,6 @@ class ProjectDeleteView(LoginRequiredMixin, UserPassesTestMixin, DeleteView):
|
|||||||
|
|
||||||
def test_func(self):
|
def test_func(self):
|
||||||
return self.get_object().owner == self.request.user
|
return self.get_object().owner == self.request.user
|
||||||
|
|
||||||
|
def handle_no_permission(self):
|
||||||
|
return redirect("index")
|
||||||
|
|||||||
@ -136,6 +136,7 @@ MEDIA_ROOT = BASE_PATH.joinpath("media")
|
|||||||
DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"
|
DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"
|
||||||
LOGIN_REDIRECT_URL = "/"
|
LOGIN_REDIRECT_URL = "/"
|
||||||
LOGOUT_REDIRECT_URL = "/"
|
LOGOUT_REDIRECT_URL = "/"
|
||||||
|
LOGIN_URL = "login/"
|
||||||
|
|
||||||
# HTTPS settings
|
# HTTPS settings
|
||||||
# SESSION_COOKIE_SECURE = True
|
# SESSION_COOKIE_SECURE = True
|
||||||
|
|||||||
@ -1,20 +1,12 @@
|
|||||||
{% extends "layout.html" %}
|
{% extends "layout.html" %}
|
||||||
{% block title %}Update {{ project.name }}{% endblock %}
|
{% block title %}Edit {{ project.name }}{% endblock %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<form method="post">
|
<form method="post">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
{{ project_form.as_p }}
|
{{ project_form.as_p }}
|
||||||
<table>
|
{{ hosting_platform_form.as_table }}
|
||||||
{{ language_formset.management_form }}
|
<br />
|
||||||
{% for form in language_formset %}
|
{{ programming_language_form.as_table }}
|
||||||
<tr>
|
|
||||||
<td>{{ form.language.label_tag }}</td>
|
|
||||||
<td>{{ form.language }}</td>
|
|
||||||
<td>{{ form.percentage }}</td>
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
</table>
|
|
||||||
{{ host_formset.as_p }}
|
|
||||||
<button type="submit">Save</button>
|
<button type="submit">Save</button>
|
||||||
</form>
|
</form>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@ -4,7 +4,8 @@
|
|||||||
{% block meta %}{% endblock %}
|
{% block meta %}{% endblock %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<form method="post">
|
<form method="post">
|
||||||
{% csrf_token %}{{ form }}
|
{% csrf_token %}
|
||||||
|
{{ form.as_p }}
|
||||||
<p>
|
<p>
|
||||||
Don't have an account? Create one <a href="{% url 'signup' %}">Here</a>!
|
Don't have an account? Create one <a href="{% url 'signup' %}">Here</a>!
|
||||||
</p>
|
</p>
|
||||||
|
|||||||
@ -2,7 +2,8 @@
|
|||||||
{% block title %}Sign Up{% endblock %}
|
{% block title %}Sign Up{% endblock %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<form method="post">
|
<form method="post">
|
||||||
{% csrf_token %}{{ form }}
|
{% csrf_token %}
|
||||||
|
{{ form.as_p }}
|
||||||
<p>
|
<p>
|
||||||
Have an account? Login <a href="{% url 'login' %}">Here</a>!
|
Have an account? Login <a href="{% url 'login' %}">Here</a>!
|
||||||
</p>
|
</p>
|
||||||
Loading…
Reference in New Issue
Block a user