/
views.py
82 lines (57 loc) · 2.38 KB
/
views.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
"""
Copyright 2008-2010 Serge Matveenko, TrashNRoll
This file is part of Picket.
Picket is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Picket is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Picket. If not, see <http://www.gnu.org/licenses/>.
"""
from django.contrib import messages
from django.http import Http404
from django.shortcuts import redirect
from django.utils.translation import ugettext_lazy as _
from .decorators import render_to
from .documents import Project
from .forms import IssueForm, Issue
@render_to('picket/index.html')
def index(request):
return {}
@render_to('picket/new_issue.html')
def new_issue(request):
current_project_id = request.session.get('current_project')
if request.method == 'POST':
issue_form = IssueForm(data=request.POST)
if issue_form.is_valid():
request.session['return_to_form'] = issue_form.cleaned_data[
'return_to_form']
issue = issue_form.save(commit=False)
if request.user.is_authenticated():
issue.reporter = request.user
issue.project = current_project_id and Project.objects.with_id(
current_project_id)
issue.save()
messages.success(request, _('Issue submitted'))
return redirect(issue_form.cleaned_data['return_to_form'] and
'picket-issue-new' or issue.get_absolute_url())
else:
issue_form = IssueForm(
return_to_form=request.session.get('return_to_form'))
return {'issue_form': issue_form}
@render_to('picket/issue.html')
def issue(request, issue_number):
issue = Issue.objects.with_id(int(issue_number))
if not issue: raise Http404
return {'issue': issue}
@render_to('picket/issues.html')
def issues(request):
issues = Issue.objects()
project = request.project
if project:
issues = issues.filter(project=project)
return {'issues': issues}