diff --git a/mgmt/decorators.py b/mgmt/decorators.py
new file mode 100644
index 0000000..3e3851d
--- /dev/null
+++ b/mgmt/decorators.py
@@ -0,0 +1,17 @@
+from django.http import HttpResponseForbidden
+
+####################
+# User auth tests
+####################
+
+def check_auth(cls,action):
+ def decorator(func):
+ def wrapper(request,id,*args,**kwargs):
+ obj = cls.objects.get(pk=id)
+ if not can(request.user,action,obj):
+ return HttpResponseForbidden("<h1>You are not allowed to view this page</h1>")
+ return func(request,obj,*args,**kwargs)
+ wrapper.__name__ = func.__name__
+ return wrapper
+ decorator.__name__ = 'check_auth'
+ return decorator
diff --git a/mgmt/forms.py b/mgmt/forms.py
new file mode 100644
index 0000000..5ce9f8a
--- /dev/null
+++ b/mgmt/forms.py
@@ -0,0 +1,40 @@
+import django.newforms as forms
+#encoding: utf-8
+
+############
+# Forms
+############
+
+class CommentForm(forms.Form):
+ title = forms.CharField(required=False,label=u'Тема')
+ text = forms.CharField(widget=forms.Textarea(),label=u'Текст')
+
+class BugForm(forms.Form):
+ name = forms.CharField(label=u'Название')
+ component = forms.CharField(required=False,label=u'Компонент')
+ your_actions = forms.CharField(widget=forms.Textarea(),label=u'Ваши действия')
+ expected = forms.CharField(widget=forms.Textarea(),label=u'Что ожидали получить')
+ unexpected = forms.CharField(widget=forms.Textarea(),label=u'Что получили')
+ text = forms.CharField(widget=forms.Textarea(),label=u'Дополнения')
+
+class BugPriorityForm(forms.Form):
+ priority = forms.ChoiceField(settings.PRIORITY_CHOICES,required=False)
+
+class BugComplexityForm(forms.Form):
+ complexity = forms.ChoiceField(settings.COMPLEXITY_CHOICES,required=False)
+
+class RequestForm(forms.Form):
+ title = forms.CharField(label=u'Название')
+ text = forms.CharField(widget=forms.Textarea(),label=u'Текст')
+
+class RequestStateForm(forms.Form):
+ state = forms.ChoiceField(settings.REQUEST_STATES)
+
+class DocForm(forms.Form):
+ name = forms.CharField()
+ text = forms.CharField(widget=forms.Textarea())
+
+class MessageForm(forms.Form):
+ name = forms.CharField()
+ text = forms.CharField(widget=forms.Textarea())
+
diff --git a/mgmt/hms/.gitignore b/mgmt/hms/.gitignore
deleted file mode 100644
index 4e72520..0000000
--- a/mgmt/hms/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-.*.swp
-*.swp
-*.pyc
diff --git a/mgmt/utils.py b/mgmt/utils.py
new file mode 100644
index 0000000..6a1cc7d
--- /dev/null
+++ b/mgmt/utils.py
@@ -0,0 +1,38 @@
+from django.template import RequestContext
+from django.template.loader import get_template
+from django.http import HttpResponse
+from django.core.paginator import Paginator
+
+from models import *
+
+#############
+# Utilites
+############
+
+def render_it(template,dict,request):
+ c = RequestContext(request,dict,[add_blocks,add_menu,debug_messages])
+ t = get_template(template)
+ return HttpResponse(t.render(c))
+
+def get_comments(request,id,type):
+ all = Comment.objects.filter(object_id=id, object_type=type)
+ pg = Paginator(all,settings.COMMENTS_PER_PAGE)
+ page_num = int(request.GET.get('page',1))
+ page = pg.page(page_num)
+ range = pg.page_range
+ if range == [1]:
+ range = None
+ return page_num,range, page.object_list
+
+def get_bugs(request,pid=None):
+ if pid:
+ all = Bug.objects.filter(project__pk=pid)
+ else:
+ all = Bug.objects.all()
+ pg = Paginator(all,settings.BUGS_PER_PAGE)
+ page_num = int(request.GET.get('page',1))
+ page = pg.page(page_num)
+ range = pg.page_range
+ if range == [1]:
+ range = None
+ return page_num,range, page.object_list
diff --git a/mgmt/views.py b/mgmt/views.py
index a924e96..ef1a556 100644
--- a/mgmt/views.py
+++ b/mgmt/views.py
@@ -4,107 +4,20 @@
from datetime import datetime
from django.http import HttpResponse,Http404,HttpResponseForbidden,HttpResponseRedirect
-from django.core.paginator import Paginator
-from django.template import RequestContext
-from django.template.loader import get_template
-from django.shortcuts import render_to_response
-import django.newforms as forms
+import django.newforms as djangoforms
from django.contrib.auth.models import User
from django.contrib.auth.decorators import login_required
from django.core.urlresolvers import reverse
+from django.conf import settings
+
+import debug
from models import *
from context import add_blocks,debug_messages,add_menu
from rights import can,possible_changes
-import debug
-
-from django.conf import settings
-
-#############
-# Utilites
-############
-
-def render_it(template,dict,request):
- c = RequestContext(request,dict,[add_blocks,add_menu,debug_messages])
- t = get_template(template)
- return HttpResponse(t.render(c))
-
-def get_comments(request,id,type):
- all = Comment.objects.filter(object_id=id, object_type=type)
- pg = Paginator(all,settings.COMMENTS_PER_PAGE)
- page_num = int(request.GET.get('page',1))
- page = pg.page(page_num)
- range = pg.page_range
- if range == [1]:
- range = None
- return page_num,range, page.object_list
-
-def get_bugs(request,pid=None):
- if pid:
- all = Bug.objects.filter(project__pk=pid)
- else:
- all = Bug.objects.all()
- pg = Paginator(all,settings.BUGS_PER_PAGE)
- page_num = int(request.GET.get('page',1))
- page = pg.page(page_num)
- range = pg.page_range
- if range == [1]:
- range = None
- return page_num,range, page.object_list
-
-############
-# Forms
-############
-
-class CommentForm(forms.Form):
- title = forms.CharField(required=False,label=u'Тема')
- text = forms.CharField(widget=forms.Textarea(),label=u'Текст')
-
-class BugForm(forms.Form):
- name = forms.CharField(label=u'Название')
- component = forms.CharField(required=False,label=u'Компонент')
- your_actions = forms.CharField(widget=forms.Textarea(),label=u'Ваши действия')
- expected = forms.CharField(widget=forms.Textarea(),label=u'Что ожидали получить')
- unexpected = forms.CharField(widget=forms.Textarea(),label=u'Что получили')
- text = forms.CharField(widget=forms.Textarea(),label=u'Дополнения')
-
-class BugPriorityForm(forms.Form):
- priority = forms.ChoiceField(settings.PRIORITY_CHOICES,required=False)
-
-class BugComplexityForm(forms.Form):
- complexity = forms.ChoiceField(settings.COMPLEXITY_CHOICES,required=False)
-
-class RequestForm(forms.Form):
- title = forms.CharField(label=u'Название')
- text = forms.CharField(widget=forms.Textarea(),label=u'Текст')
-
-class RequestStateForm(forms.Form):
- state = forms.ChoiceField(settings.REQUEST_STATES)
-
-class DocForm(forms.Form):
- name = forms.CharField()
- text = forms.CharField(widget=forms.Textarea())
-
-class MessageForm(forms.Form):
- name = forms.CharField()
- text = forms.CharField(widget=forms.Textarea())
-
-####################
-# User auth tests
-####################
-
-def check_auth(cls,action):
- def decorator(func):
- def wrapper(request,id,*args,**kwargs):
- obj = cls.objects.get(pk=id)
- if not can(request.user,action,obj):
- return HttpResponseForbidden("<h1>You are not allowed to view this page</h1>")
- return func(request,obj,*args,**kwargs)
- wrapper.__name__ = func.__name__
- return wrapper
- decorator.__name__ = 'check_auth'
- return decorator
-
+from utils import *
+from forms import *
+from decorators import check_auth
#############
# Views
@@ -282,8 +195,8 @@ def one_bug(request,id):
if change_states:
choices = [(st.id,st.name) for st in change_states]
- class BugStateForm(forms.Form):
- new_state = forms.ChoiceField(choices)
+ class BugStateForm(djangoforms.Form):
+ new_state = djangoforms.ChoiceField(choices)
state_form = BugStateForm()
else:
diff --git a/templates/project_bugs.html b/templates/project_bugs.html
index 7c4df45..377a817 100644
--- a/templates/project_bugs.html
+++ b/templates/project_bugs.html
@@ -17,17 +17,14 @@
<div class='bugs'>
{% for bug in bugs %}
<div class='bug bug-state-{{bug.status.id}}'>
- <div class='project-link'>
- <a href='{% url mgmt.views.project_bugs project.id %}'>{{project.name}}</a>
+ <div class='bug-priority'>
+ <p><strong>Приоритет:</strong> {{bug.priority_str}}</p>
+ <p><strong>Сложность:</strong> {{bug.complexity_str}}</p>
</div>
<h3><a href='{% url mgmt.views.one_bug bug.id %}'>Баг #{{bug.id}}: {{bug.name}}</a></h3>
{% if edit_link %}
<div class='links'><a href='{{edit_link}}'>Изменить</a></div>
{% endif %}
- <div class='bug-priority'>
- <p><strong>Приоритет:</strong> {{bug.priority_str}}</p>
- <p><strong>Сложность:</strong> {{bug.complexity_str}}</p>
- </div>
{% if bug.component %}
<p><strong>Компонент:</strong> {{bug.component}}</p>
{% endif %}