From 23f3d2a96f42bd7c4424ff97e450b1470fdcca3b Mon Sep 17 00:00:00 2001 From: binaryDiv Date: Mon, 3 Jun 2019 00:14:40 +0200 Subject: [PATCH] create 'new issue' form --- issues/forms.py | 9 +++++++++ issues/templates/issues/index.html | 4 +++- issues/templates/issues/new.html | 15 +++++++++++++++ issues/urls.py | 1 + issues/views.py | 16 ++++++++++++++++ projects/models.py | 2 +- projects/urls.py | 2 +- 7 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 issues/forms.py create mode 100644 issues/templates/issues/new.html diff --git a/issues/forms.py b/issues/forms.py new file mode 100644 index 0000000..c7c5dc9 --- /dev/null +++ b/issues/forms.py @@ -0,0 +1,9 @@ +from django.forms import ModelForm + +from .models import Issue + + +class IssueForm(ModelForm): + class Meta: + model = Issue + fields = ['project', 'title', 'text'] diff --git a/issues/templates/issues/index.html b/issues/templates/issues/index.html index bcf3760..c109698 100644 --- a/issues/templates/issues/index.html +++ b/issues/templates/issues/index.html @@ -8,4 +8,6 @@ {% else %}

No issues.

-{% endif %} \ No newline at end of file +{% endif %} + +

Create new issue

diff --git a/issues/templates/issues/new.html b/issues/templates/issues/new.html new file mode 100644 index 0000000..e9b9899 --- /dev/null +++ b/issues/templates/issues/new.html @@ -0,0 +1,15 @@ +

Create new issue

+ +{% if error_message %}

{{ error_message }}

{% endif %} + +
+ {% csrf_token %} + + {{ form.as_table }} + + + +
+ +
+
diff --git a/issues/urls.py b/issues/urls.py index 93ae9ac..323d620 100644 --- a/issues/urls.py +++ b/issues/urls.py @@ -5,5 +5,6 @@ from . import views app_name = 'issues' urlpatterns = [ path('', views.index, name='index'), + path('new', views.new, name='new'), path('/', views.detail, name='detail'), ] diff --git a/issues/views.py b/issues/views.py index b6d463a..0c43bcc 100644 --- a/issues/views.py +++ b/issues/views.py @@ -1,5 +1,7 @@ +from django.http import HttpResponseRedirect from django.shortcuts import get_object_or_404, render +from .forms import IssueForm from .models import Issue @@ -15,3 +17,17 @@ def detail(request, issue_id): return render(request, 'issues/detail.html', { 'issue': issue, }) + + +def new(request): + if request.method == 'POST': + form = IssueForm(request.POST) + if form.is_valid(): + new_issue = form.save() + return HttpResponseRedirect('/issues/{}'.format(new_issue.id)) + else: + form = IssueForm() + + return render(request, 'issues/new.html', { + 'form': form, + }) diff --git a/projects/models.py b/projects/models.py index c6ba458..9345b06 100644 --- a/projects/models.py +++ b/projects/models.py @@ -7,4 +7,4 @@ class Project(models.Model): description = models.TextField(blank=True) def __str__(self): - return self.name + return '{} - {}'.format(self.project_key, self.name) diff --git a/projects/urls.py b/projects/urls.py index d53296a..7be94af 100644 --- a/projects/urls.py +++ b/projects/urls.py @@ -5,5 +5,5 @@ from . import views app_name = 'projects' urlpatterns = [ path('', views.index, name='index'), - path('/', views.view, name='view'), + path('/', views.view, name='view'), ]