In mgmt, move utility functions from views.py to other modules.

portnov [2008-06-14 17:15:12]
In mgmt, move utility functions from views.py to other modules.
Filename
mgmt/decorators.py
mgmt/forms.py
mgmt/hms/.gitignore
mgmt/utils.py
mgmt/views.py
templates/project_bugs.html
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 %}
ViewGit