Some refactoring in mgmt: move many views from views.py to separate modules, as reports_views.py, etc.

portnov [2008-06-16 06:02:54]
Some refactoring in mgmt: move many views from views.py to separate modules, as reports_views.py, etc.
Filename
mgmt/bugs_views.py
mgmt/documents_views.py
mgmt/project_views.py
mgmt/reports_views.py
mgmt/requests_views.py
mgmt/tasks_views.py
mgmt/views.py
diff --git a/mgmt/bugs_views.py b/mgmt/bugs_views.py
new file mode 100644
index 0000000..46a4f05
--- /dev/null
+++ b/mgmt/bugs_views.py
@@ -0,0 +1,159 @@
+from django.conf import settings
+import django.newforms as djangoforms
+from decorators import check_auth,login_required,render_to
+from utils import get_bugs,get_comments
+from models import *
+from rights import can,possible_changes
+from forms import BugForm,BugPriorityForm,BugComplexityForm,CommentForm
+
+@login_required
+@render_to('bug_report.html')
+def bug_report(request,pid):
+  project = Project.objects.get(pk=pid)
+  if request.method=='POST':
+    form = BugForm(request.POST)
+    if form.is_valid():
+      name = form.cleaned_data['name']
+      comp = form.cleaned_data['component']
+      actions = form.cleaned_data['your_actions']
+      expected = form.cleaned_data['expected']
+      unexpected = form.cleaned_data['unexpected']
+      text  = form.cleaned_data['text']
+      s0 = BugState.objects.get(pk=1)
+      b = Bug(created=datetime.now(),
+          author = request.user,
+          project = project,
+          status = s0,
+          name = name,
+          component=comp,
+          actions=actions,
+          expected=expected,
+          unexpected=unexpected,
+          priority=-1,
+          text = text)
+      b.save()
+      return HttpResponseRedirect(reverse('mgmt.views.project_bugs',args=(pid,)))
+    else:
+      return {'project': project, 'form': form}
+  form = BugForm()
+  return {'project': project,
+       'form': form}
+
+@render_to('bug.html')
+def one_bug(request,id):
+  bug = Bug.objects.get(pk=id)
+  if request.method=='POST':
+    if request.POST['action']=='comment':
+      title = request.POST['title']
+      text  = request.POST['text']
+      if not title:
+        title = text[:20]+'...'
+      c = Comment(created=datetime.now(),
+          author = request.user,
+          object_id = bug.id,
+          object_type = 'Bug',
+          title = title,
+          text = text)
+      c.save()
+    elif request.POST['action']=='change_state':
+      new_state = request.POST['new_state']
+      bug.status = BugState.objects.get(pk=new_state)
+      if bug.status.id==3:
+        bug.responsible = request.user
+      if bug.status.id in [1,4,5]:
+        bug.priority=-1
+      bug.save()
+    elif request.POST['action']=='set_priority':
+      bug.priority =request.POST['priority']
+      bug.save()
+    elif request.POST['action']=='set_complexity':
+      bug.complexity = request.POST['complexity']
+      bug.save()
+  curr,pages,comments = get_comments(request,bug.id,'Bug')
+  change_states = possible_changes(bug,request.user)
+  if change_states:
+    choices = [(st.id,st.name) for st in change_states]
+
+    class BugStateForm(djangoforms.Form):
+      new_state = djangoforms.ChoiceField(choices)
+
+    state_form = BugStateForm()
+  else:
+    state_form = None
+  if can(request.user,'set_priority',bug):
+    priority_form = BugPriorityForm(dict(priority=bug.priority))
+  else:
+    priority_form = None
+  if can(request.user,'set_complexity',bug):
+    complexity_form = BugComplexityForm(dict(complexity=bug.complexity))
+  else:
+    complexity_form = None
+  if can(request.user,'comment'):
+    form = CommentForm()
+  else:
+    form = None
+  if can(request.user,'edit',bug):
+    edit_link = '/bugs/%s/edit/' % bug.id
+  else:
+    edit_link = None
+  for comment in comments:
+    comment.can_delete = can(request.user,'delete',comment)
+  tasks = bug.task_set.all()
+  priority = dict(settings.PRIORITY_CHOICES).get(bug.priority,u'Unset')
+  complexity = dict(settings.COMPLEXITY_CHOICES).get(bug.complexity,'Unknown')
+  return {'bug': bug,
+       'change_state': state_form,
+       'edit_link': edit_link,
+       'project': bug.project,
+       'current_page': curr,
+       'page_numbers': pages,
+       'comments': comments,
+       'tasks': tasks,
+       'priority': priority,
+       'complexity': complexity,
+       'priority_form': priority_form,
+       'complexity_form': complexity_form,
+       'form': form}
+
+@check_auth(Bug,'edit')
+@render_to('edit_bug.html')
+def edit_bug(request,bug):
+  if request.method=='POST':
+    form = BugForm(request.POST)
+    if form.is_valid():
+      name = form.cleaned_data['name']
+      text = form.cleaned_data['text']
+      comp = form.cleaned_data['component']
+      actions = form.cleaned_data['your_actions']
+      expected = form.cleaned_data['expected']
+      unexpected = form.cleaned_data['unexpected']
+      bug.name = name
+      bug.text = text
+      bug.component = comp
+      bug.actions = actions
+      bug.expected = expected
+      bug.unexpected = unexpected
+      bug.save()
+  form = BugForm({'name': bug.name,
+                  'text': bug.text,
+                  'component': bug.component,
+                  'your_actions': bug.actions,
+                  'expected': bug.expected,
+                  'unexpected': bug.unexpected})
+  return {'project': bug.project,
+       'bug': bug,
+       'form': form}
+
+@render_to('all_bugs.html')
+def all_bugs(request):
+  page,pages,bugs = get_bugs(request)
+  return {'bugs': bugs,
+      'current_page': page,
+      'page_numbers': pages}
+
+@render_to('all_bugs.html')
+def bugs_by_state(request,sid):
+  state = BugState.objects.get(pk=sid)
+  page,pages,bugs = Bug.objects.filter(status=state)
+  return {'bugs': bugs,
+      'state': state.name}
diff --git a/mgmt/documents_views.py b/mgmt/documents_views.py
new file mode 100644
index 0000000..81f8f82
--- /dev/null
+++ b/mgmt/documents_views.py
@@ -0,0 +1,82 @@
+from decorators import check_auth,login_required,render_to
+from utils import get_comments
+from models import *
+from rights import can
+from forms import CommentForm,DocForm
+
+@render_to('project_docs.html')
+def project_documents(request,id):
+  project = Project.objects.get(pk=id)
+  cats = Category.objects.filter(document__project=project)
+  return {'project': project,
+       'categories': cats}
+
+@render_to('document.html')
+def one_document(request,id):
+  doc = Document.objects.get(pk=id)
+  if request.method=='POST':
+    title = request.POST['title']
+    text  = request.POST['text']
+    if not title:
+      title = text[:20]+'...'
+    c = Comment(created=datetime.now(),
+        author = request.user,
+        object_id = doc.id,
+        object_type = 'Document',
+        title = title,
+        text = text)
+    c.save()
+  curr,pages,comments = get_comments(request,doc.id,'Document')
+  if can(request.user,'comment'):
+    form = CommentForm()
+  else:
+    form = None
+  if can(request.user,'edit',doc):
+    edit_link = '/docs/%s/edit/' % id
+  else:
+    edit_link = None
+  for comment in comments:
+    comment.can_delete = can(request.user,'delete',comment)
+  return {'document': doc,
+       'edit_link': edit_link,
+       'current_page': curr,
+       'page_numbers': pages,
+       'comments': comments,
+       'form': form}
+
+@check_auth(Project,'document')
+@render_to('create_doc.html')
+def create_document(request,project):
+  msg = ""
+  if request.method=='POST':
+    form = DocForm(request.POST)
+    if form.is_valid():
+      doc = form.save(commit=False)
+      doc.created = datetime.now()
+      doc.author = request.user
+      doc.project = project
+      doc.save()
+      return HttpResponseRedirect(reverse('mgmt.views.one_document',args=(doc.id,)))
+    else:
+      return {'form': form}
+  form = DocForm()
+  return {'form': form}
+
+@check_auth(Document,'edit')
+@render_to('edit_document.html')
+def edit_document(request,doc):
+  project = doc.project
+  if request.method=='POST':
+    form = DocForm(request.POST,instance=doc)
+    if form.is_valid():
+      form.save()
+      return HttpResponseRedirect(reverse('mgmt.views.one_document',args=(doc.id,)))
+    else:
+      return {'document': doc,
+         'project_id': project.id,
+         'form': form}
+  form = DocForm(instance=doc)
+  return {'document': doc,
+       'project_id': project.id,
+       'form': form}
+
diff --git a/mgmt/project_views.py b/mgmt/project_views.py
new file mode 100644
index 0000000..5d9235d
--- /dev/null
+++ b/mgmt/project_views.py
@@ -0,0 +1,48 @@
+from django.conf import settings
+from decorators import check_auth,login_required,render_to
+from utils import get_comments,get_bugs
+from models import *
+from rights import can
+from forms import CommentForm
+
+@render_to('project.html')
+def one_project(request,id):
+  project = Project.objects.get(pk=id)
+  if request.method=='POST':
+    title = request.POST['title']
+    text  = request.POST['text']
+    if not title:
+      title = text[:20]+'...'
+    c = Comment(created=datetime.now(),
+        author = request.user,
+        object_id = project.id,
+        object_type = 'Project',
+        title = title,
+        text = text)
+    c.save()
+  curr,pages,comments = get_comments(request,project.id,'Project')
+  if can(request.user,'comment'):
+    form = CommentForm()
+  else:
+    form = None
+  for comment in comments:
+    comment.can_delete = can(request.user,'delete',comment)
+  return {'project': project,
+       'current_page': curr,
+       'page_numbers': pages,
+       'comments': comments,
+       'form': form}
+
+@render_to('project_bugs.html')
+def project_bugs(request,id):
+  project = Project.objects.get(pk=id)
+  page,pages,bugs = get_bugs(request,id)
+  for bug in bugs:
+    bug.complexity_str = dict(settings.COMPLEXITY_CHOICES).get(bug.complexity,'Unknown')
+    bug.priority_str = dict(settings.PRIORITY_CHOICES).get(bug.priority,'Unset')
+  can_report = can(request.user,'send bug')
+  return {'project': project,
+       'current_page': page,
+       'page_numbers': pages,
+       'bugs': bugs,
+       'can_report': can_report}
diff --git a/mgmt/reports_views.py b/mgmt/reports_views.py
new file mode 100644
index 0000000..97e6113
--- /dev/null
+++ b/mgmt/reports_views.py
@@ -0,0 +1,53 @@
+from decorators import check_auth,login_required,render_to
+from models import *
+from rights import can
+from forms import ReportModelForm
+
+@render_to('report.html')
+def one_report(request,rid):
+  report = Report.objects.select_related().get(pk=rid)
+  can_edit = can(request.user,'edit',report)
+  return {'report': report,
+       'can_edit': can_edit}
+
+@render_to('task_reports.html')
+def task_reports(request,tid):
+  task = Task.objects.get(pk=tid)
+  reports = task.report_set.select_related().all()
+  return {'task': task,
+       'reports': reports}
+
+@login_required
+@render_to('create_report.html')
+def create_report(request,tid):
+  if request.method=='POST':
+    form = ReportModelForm(request.POST)
+    if form.is_valid():
+      report = form.save(commit=False)
+      report.created = datetime.now()
+      report.author = request.user
+      report.task = Task.objects.get(pk=tid)
+      report.save()
+      return HttpResponseRedirect(reverse('mgmt.views.one_task',args=(tid,)))
+    else:
+      return {'form': form}
+  else:
+    form = ReportModelForm()
+    return {'form': form}
+
+@check_auth(Report,'edit')
+@render_to('edit_report.html')
+def edit_report(request,report):
+  if request.method=='POST':
+    form = ReportModelForm(request.POST,instance=report)
+    if form.is_valid():
+      form.save()
+      return HttpResponseRedirect(reverse('mgmt.views.one_report',args=(report.id,)))
+    else:
+      return {'form': form,
+           'report': report}
+  else:
+    form = ReportModelForm(instance=report)
+    return {'form': form,
+         'report': report}
+
diff --git a/mgmt/requests_views.py b/mgmt/requests_views.py
new file mode 100644
index 0000000..3ade79f
--- /dev/null
+++ b/mgmt/requests_views.py
@@ -0,0 +1,99 @@
+from decorators import check_auth,login_required,render_to
+from utils import get_comments
+from models import *
+from rights import can
+from forms import RequestForm,RequestStateForm,CommentForm
+
+@render_to('requests.html')
+def requests(request,pid):
+  project = Project.objects.get(pk=pid)
+  rs = project.request_set.all()
+  can_request = can(request.user,'request',project)
+  return {'project': project,
+     'can_request': can_request,
+     'requests': rs}
+
+@login_required
+@render_to('create_request.html')
+def create_request(request,pid):
+  project = Project.objects.get(pk=pid)
+  if request.method == 'POST':
+    form = RequestForm(request.POST)
+    if form.is_valid():
+      title = form.cleaned_data['title']
+      text  = form.cleaned_data['text']
+      rq = Request(name=title,
+          created = datetime.now(),
+          text=text,
+          status=0,
+          project=project)
+      rq.save()
+      return HttpResponseRedirect(reverse('mgmt.views.requests',args=(pid,)))
+    else:
+      return {'project': project,
+           'form': form}
+  form = RequestForm()
+  return {'project': project,
+       'form': form}
+
+@check_auth(Request,'edit')
+@render_to('edit_request.html')
+def edit_request(request,rq):
+  if request.method=='POST':
+    form = RequestForm(request.POST)
+    if form.is_valid():
+      title = form.cleaned_data['title']
+      text = form.cleaned_data['text']
+      rq.title = title
+      rq.text = text
+      rq.save()
+      return HttpResponseRedirect(reverse('mgmt.views.one_request',args=(rq.id,)))
+    else:
+      return {'request': rq,
+         'form': form}
+  else:
+    form = RequestForm({'title': rq.name, 'text': rq.text})
+    return {'request': rq,
+       'form': form}
+
+@render_to('request.html')
+def one_request(request,rid):
+  rq = Request.objects.get(pk=rid)
+  if request.method=='POST':
+    if request.POST['action']=='change_state':
+      new_state = request.POST['state']
+      rq.status = new_state
+      rq.save()
+    else:
+      title = request.POST['title']
+      text  = request.POST['text']
+      if not title:
+        title = text[:20]+'...'
+      c = Comment(created=datetime.now(),
+          author = request.user,
+          object_id = rid,
+          object_type = 'Request',
+          title = title,
+          text = text)
+      c.save()
+  can_change_state = can(request.user,'change_state',rq)
+  if can_change_state:
+    state_form = RequestStateForm({'state': rq.status})
+  else:
+    state_form = None
+  can_edit = can(request.user,'edit',rq)
+  tasks = rq.task_set.all()
+  page,pages,comments = get_comments(request,rid,'Request')
+  if can(request.user,'comment'):
+    form = CommentForm()
+  else:
+    form = None
+  return {'request': rq,
+       'tasks': tasks,
+       'can_edit': can_edit,
+       'state_form': state_form,
+       'current_page': page,
+       'page_numbers': pages,
+       'comments': comments,
+       'form': form}
+
diff --git a/mgmt/tasks_views.py b/mgmt/tasks_views.py
new file mode 100644
index 0000000..8c6f5e1
--- /dev/null
+++ b/mgmt/tasks_views.py
@@ -0,0 +1,68 @@
+from decorators import check_auth,login_required,render_to
+from models import *
+from rights import can
+from forms import TaskStateForm,TaskModelForm
+
+@render_to('project_tasks.html')
+def project_tasks(request,pid):
+  project = Project.objects.get(pk=pid)
+  tasks = project.task_set.all()
+  can_task = can(request.user,'create task',project)
+  return {'project': project,
+       'can_task': can_task,
+       'tasks': tasks}
+
+@render_to('task.html')
+def one_task(request,tid):
+  task = Task.objects.select_related().get(pk=tid)
+  if request.method=='POST':
+    task.status = request.POST['state']
+    task.save()
+  can_edit = can(request.user,'edit',task)
+  can_report = request.user.id == task.to.id
+  reports = task.report_set.all()
+  if can(request.user,'change_state',task):
+    state_form = TaskStateForm({'state': task.status})
+  else:
+    state_form = None
+  return {'task': task,
+       'can_report': can_report,
+       'reports': reports,
+       'state_form': state_form,
+       'can_edit': can_edit}
+
+@check_auth(Task,'edit')
+@render_to('edit_task.html')
+def edit_task(request,task):
+  if request.method=='POST':
+    form = TaskModelForm(request.POST,instance=task)
+    if form.is_valid():
+      task = form.save(commit=False)
+      task.save()
+      return HttpResponseRedirect(reverse('mgmt.views.one_task',args=(task.id,)))
+    else:
+      return {'form': form,
+         'task': task}
+  else:
+    form = TaskModelForm(instance=task)
+    return {'form': form,
+       'task': task}
+
+@check_auth(Project,'create task')
+@render_to('create_task.html')
+def create_task(request,project):
+  if request.method=='POST':
+    form = TaskModelForm(request.POST)
+    if form.is_valid():
+      task = form.save(commit=False)
+      task.project = project
+      task.created = datetime.now()
+      task.author = request.user
+      task.status = 0
+      task = task.save()
+      return HttpResponseRedirect(reverse('mgmt.views.project_tasks',args=(project.id,)))
+    else:
+      return {'form': form}
+  else:
+    form = TaskModelForm()
+    return {'form': form}
diff --git a/mgmt/views.py b/mgmt/views.py
index 21f834f..99e2191 100644
--- a/mgmt/views.py
+++ b/mgmt/views.py
@@ -4,7 +4,6 @@
 from datetime import datetime

 from django.http import HttpResponse,Http404,HttpResponseForbidden,HttpResponseRedirect
-import django.newforms as djangoforms
 from django.contrib.auth.models import User
 from django.core.urlresolvers import reverse

@@ -13,10 +12,16 @@ from django.conf import settings
 import debug
 from models import *
 from rights import can,possible_changes
-from utils import get_comments,get_bugs
 from forms import *
 from decorators import check_auth,login_required,render_to

+from project_views import *
+from bugs_views import *
+from requests_views import *
+from documents_views import *
+from tasks_views import *
+from reports_views import *
+
 #############
 # Views
 ############
@@ -26,275 +31,6 @@ def main(request):
   projects = Project.objects.all()
   return {'projects': projects}

-@render_to('project.html')
-def one_project(request,id):
-  project = Project.objects.get(pk=id)
-  if request.method=='POST':
-    title = request.POST['title']
-    text  = request.POST['text']
-    if not title:
-      title = text[:20]+'...'
-    c = Comment(created=datetime.now(),
-        author = request.user,
-        object_id = project.id,
-        object_type = 'Project',
-        title = title,
-        text = text)
-    c.save()
-  curr,pages,comments = get_comments(request,project.id,'Project')
-  if can(request.user,'comment'):
-    form = CommentForm()
-  else:
-    form = None
-  for comment in comments:
-    comment.can_delete = can(request.user,'delete',comment)
-  return {'project': project,
-       'current_page': curr,
-       'page_numbers': pages,
-       'comments': comments,
-       'form': form}
-
-@render_to('project_bugs.html')
-def project_bugs(request,id):
-  project = Project.objects.get(pk=id)
-  page,pages,bugs = get_bugs(request,id)
-  for bug in bugs:
-    bug.complexity_str = dict(settings.COMPLEXITY_CHOICES).get(bug.complexity,'Unknown')
-    bug.priority_str = dict(settings.PRIORITY_CHOICES).get(bug.priority,'Unset')
-  can_report = can(request.user,'send bug')
-  return {'project': project,
-       'current_page': page,
-       'page_numbers': pages,
-       'bugs': bugs,
-       'can_report': can_report}
-
-@login_required
-@render_to('bug_report.html')
-def bug_report(request,pid):
-  project = Project.objects.get(pk=pid)
-  if request.method=='POST':
-    form = BugForm(request.POST)
-    if form.is_valid():
-      name = form.cleaned_data['name']
-      comp = form.cleaned_data['component']
-      actions = form.cleaned_data['your_actions']
-      expected = form.cleaned_data['expected']
-      unexpected = form.cleaned_data['unexpected']
-      text  = form.cleaned_data['text']
-      s0 = BugState.objects.get(pk=1)
-      b = Bug(created=datetime.now(),
-          author = request.user,
-          project = project,
-          status = s0,
-          name = name,
-          component=comp,
-          actions=actions,
-          expected=expected,
-          unexpected=unexpected,
-          priority=-1,
-          text = text)
-      b.save()
-      return HttpResponseRedirect(reverse('mgmt.views.project_bugs',args=(pid,)))
-    else:
-      return {'project': project, 'form': form}
-  form = BugForm()
-  return {'project': project,
-       'form': form}
-
-@render_to('project_docs.html')
-def project_documents(request,id):
-  project = Project.objects.get(pk=id)
-  cats = Category.objects.filter(document__project=project)
-  return {'project': project,
-       'categories': cats}
-
-@render_to('document.html')
-def one_document(request,id):
-  doc = Document.objects.get(pk=id)
-  if request.method=='POST':
-    title = request.POST['title']
-    text  = request.POST['text']
-    if not title:
-      title = text[:20]+'...'
-    c = Comment(created=datetime.now(),
-        author = request.user,
-        object_id = doc.id,
-        object_type = 'Document',
-        title = title,
-        text = text)
-    c.save()
-  curr,pages,comments = get_comments(request,doc.id,'Document')
-  if can(request.user,'comment'):
-    form = CommentForm()
-  else:
-    form = None
-  if can(request.user,'edit',doc):
-    edit_link = '/docs/%s/edit/' % id
-  else:
-    edit_link = None
-  for comment in comments:
-    comment.can_delete = can(request.user,'delete',comment)
-  return {'document': doc,
-       'edit_link': edit_link,
-       'current_page': curr,
-       'page_numbers': pages,
-       'comments': comments,
-       'form': form}
-
-@check_auth(Project,'document')
-@render_to('create_doc.html')
-def create_document(request,project):
-  msg = ""
-  if request.method=='POST':
-    form = DocForm(request.POST)
-    if form.is_valid():
-      doc = form.save(commit=False)
-      doc.created = datetime.now()
-      doc.author = request.user
-      doc.project = project
-      doc.save()
-      return HttpResponseRedirect(reverse('mgmt.views.one_document',args=(doc.id,)))
-    else:
-      return {'form': form}
-  form = DocForm()
-  return {'form': form}
-
-@check_auth(Document,'edit')
-@render_to('edit_document.html')
-def edit_document(request,doc):
-  project = doc.project
-  if request.method=='POST':
-    form = DocForm(request.POST,instance=doc)
-    if form.is_valid():
-      form.save()
-      return HttpResponseRedirect(reverse('mgmt.views.one_document',args=(doc.id,)))
-    else:
-      return {'document': doc,
-         'project_id': project.id,
-         'form': form}
-  form = DocForm(instance=doc)
-  return {'document': doc,
-       'project_id': project.id,
-       'form': form}
-
-def one_bug(request,id):
-  bug = Bug.objects.get(pk=id)
-  if request.method=='POST':
-    if request.POST['action']=='comment':
-      title = request.POST['title']
-      text  = request.POST['text']
-      if not title:
-        title = text[:20]+'...'
-      c = Comment(created=datetime.now(),
-          author = request.user,
-          object_id = bug.id,
-          object_type = 'Bug',
-          title = title,
-          text = text)
-      c.save()
-    elif request.POST['action']=='change_state':
-      new_state = request.POST['new_state']
-      bug.status = BugState.objects.get(pk=new_state)
-      if bug.status.id==3:
-        bug.responsible = request.user
-      if bug.status.id in [1,4,5]:
-        bug.priority=-1
-      bug.save()
-    elif request.POST['action']=='set_priority':
-      bug.priority =request.POST['priority']
-      bug.save()
-    elif request.POST['action']=='set_complexity':
-      bug.complexity = request.POST['complexity']
-      bug.save()
-  curr,pages,comments = get_comments(request,bug.id,'Bug')
-  change_states = possible_changes(bug,request.user)
-  if change_states:
-    choices = [(st.id,st.name) for st in change_states]
-
-    class BugStateForm(djangoforms.Form):
-      new_state = djangoforms.ChoiceField(choices)
-
-    state_form = BugStateForm()
-  else:
-    state_form = None
-  if can(request.user,'set_priority',bug):
-    priority_form = BugPriorityForm(dict(priority=bug.priority))
-  else:
-    priority_form = None
-  if can(request.user,'set_complexity',bug):
-    complexity_form = BugComplexityForm(dict(complexity=bug.complexity))
-  else:
-    complexity_form = None
-  if can(request.user,'comment'):
-    form = CommentForm()
-  else:
-    form = None
-  if can(request.user,'edit',bug):
-    edit_link = '/bugs/%s/edit/' % bug.id
-  else:
-    edit_link = None
-  for comment in comments:
-    comment.can_delete = can(request.user,'delete',comment)
-  tasks = bug.task_set.all()
-  priority = dict(settings.PRIORITY_CHOICES).get(bug.priority,u'Unset')
-  complexity = dict(settings.COMPLEXITY_CHOICES).get(bug.complexity,'Unknown')
-  return {'bug': bug,
-       'change_state': state_form,
-       'edit_link': edit_link,
-       'project': bug.project,
-       'current_page': curr,
-       'page_numbers': pages,
-       'comments': comments,
-       'tasks': tasks,
-       'priority': priority,
-       'complexity': complexity,
-       'priority_form': priority_form,
-       'complexity_form': complexity_form,
-       'form': form}
-
-@check_auth(Bug,'edit')
-@render_to('edit_bug.html')
-def edit_bug(request,bug):
-  if request.method=='POST':
-    form = BugForm(request.POST)
-    if form.is_valid():
-      name = form.cleaned_data['name']
-      text = form.cleaned_data['text']
-      comp = form.cleaned_data['component']
-      actions = form.cleaned_data['your_actions']
-      expected = form.cleaned_data['expected']
-      unexpected = form.cleaned_data['unexpected']
-      bug.name = name
-      bug.text = text
-      bug.component = comp
-      bug.actions = actions
-      bug.expected = expected
-      bug.unexpected = unexpected
-      bug.save()
-  form = BugForm({'name': bug.name,
-                  'text': bug.text,
-                  'component': bug.component,
-                  'your_actions': bug.actions,
-                  'expected': bug.expected,
-                  'unexpected': bug.unexpected})
-  return {'project': bug.project,
-       'bug': bug,
-       'form': form}
-
-@render_to('all_bugs.html')
-def all_bugs(request):
-  page,pages,bugs = get_bugs(request)
-  return {'bugs': bugs,
-      'current_page': page,
-      'page_numbers': pages}
-
-@render_to('all_bugs.html')
-def bugs_by_state(request,sid):
-  state = BugState.objects.get(pk=sid)
-  page,pages,bugs = Bug.objects.filter(status=state)
-  return {'bugs': bugs,
-      'state': state.name}
-
 @login_required
 @render_to('user_page.html')
 def user_page(request,name):
@@ -339,118 +75,6 @@ def user_page(request,name):
 def my_page(request):
   return user_page(request,request.user.username)

-@render_to('report.html')
-def one_report(request,rid):
-  report = Report.objects.select_related().get(pk=rid)
-  can_edit = can(request.user,'edit',report)
-  return {'report': report,
-       'can_edit': can_edit}
-
-@render_to('task_reports.html')
-def task_reports(request,tid):
-  task = Task.objects.get(pk=tid)
-  reports = task.report_set.select_related().all()
-  return {'task': task,
-       'reports': reports}
-
-@login_required
-@render_to('create_report.html')
-def create_report(request,tid):
-  if request.method=='POST':
-    form = ReportModelForm(request.POST)
-    if form.is_valid():
-      report = form.save(commit=False)
-      report.created = datetime.now()
-      report.author = request.user
-      report.task = Task.objects.get(pk=tid)
-      report.save()
-      return HttpResponseRedirect(reverse('mgmt.views.one_task',args=(tid,)))
-    else:
-      return {'form': form}
-  else:
-    form = ReportModelForm()
-    return {'form': form}
-
-@check_auth(Report,'edit')
-@render_to('edit_report.html')
-def edit_report(request,report):
-  if request.method=='POST':
-    form = ReportModelForm(request.POST,instance=report)
-    if form.is_valid():
-      form.save()
-      return HttpResponseRedirect(reverse('mgmt.views.one_report',args=(report.id,)))
-    else:
-      return {'form': form,
-           'report': report}
-  else:
-    form = ReportModelForm(instance=report)
-    return {'form': form,
-         'report': report}
-
-@render_to('project_tasks.html')
-def project_tasks(request,pid):
-  project = Project.objects.get(pk=pid)
-  tasks = project.task_set.all()
-  can_task = can(request.user,'create task',project)
-  return {'project': project,
-       'can_task': can_task,
-       'tasks': tasks}
-
-@render_to('task.html')
-def one_task(request,tid):
-  task = Task.objects.select_related().get(pk=tid)
-  if request.method=='POST':
-    task.status = request.POST['state']
-    task.save()
-  can_edit = can(request.user,'edit',task)
-  can_report = request.user.id == task.to.id
-  reports = task.report_set.all()
-  if can(request.user,'change_state',task):
-    state_form = TaskStateForm({'state': task.status})
-  else:
-    state_form = None
-  return {'task': task,
-       'can_report': can_report,
-       'reports': reports,
-       'state_form': state_form,
-       'can_edit': can_edit}
-
-@check_auth(Task,'edit')
-@render_to('edit_task.html')
-def edit_task(request,task):
-  if request.method=='POST':
-    form = TaskModelForm(request.POST,instance=task)
-    if form.is_valid():
-      task = form.save(commit=False)
-      task.save()
-      return HttpResponseRedirect(reverse('mgmt.views.one_task',args=(task.id,)))
-    else:
-      return {'form': form,
-         'task': task}
-  else:
-    form = TaskModelForm(instance=task)
-    return {'form': form,
-       'task': task}
-
-@check_auth(Project,'create task')
-@render_to('create_task.html')
-def create_task(request,project):
-  if request.method=='POST':
-    form = TaskModelForm(request.POST)
-    if form.is_valid():
-      task = form.save(commit=False)
-      task.project = project
-      task.created = datetime.now()
-      task.author = request.user
-      task.status = 0
-      task = task.save()
-      return HttpResponseRedirect(reverse('mgmt.views.project_tasks',args=(project.id,)))
-    else:
-      return {'form': form}
-  else:
-    form = TaskModelForm()
-    return {'form': form}
-
 @login_required
 @render_to('private_message.html')
 def private_message(request,mid):
@@ -479,99 +103,6 @@ def delete_comment(request,comment):
     comment.delete()
     return HttpResponseRedirect('/')

-@render_to('requests.html')
-def requests(request,pid):
-  project = Project.objects.get(pk=pid)
-  rs = project.request_set.all()
-  can_request = can(request.user,'request',project)
-  return {'project': project,
-     'can_request': can_request,
-     'requests': rs}
-
-@login_required
-@render_to('create_request.html')
-def create_request(request,pid):
-  project = Project.objects.get(pk=pid)
-  if request.method == 'POST':
-    form = RequestForm(request.POST)
-    if form.is_valid():
-      title = form.cleaned_data['title']
-      text  = form.cleaned_data['text']
-      rq = Request(name=title,
-          created = datetime.now(),
-          text=text,
-          status=0,
-          project=project)
-      rq.save()
-      return HttpResponseRedirect(reverse('mgmt.views.requests',args=(pid,)))
-    else:
-      return {'project': project,
-           'form': form}
-  form = RequestForm()
-  return {'project': project,
-       'form': form}
-
-@check_auth(Request,'edit')
-@render_to('edit_request.html')
-def edit_request(request,rq):
-  if request.method=='POST':
-    form = RequestForm(request.POST)
-    if form.is_valid():
-      title = form.cleaned_data['title']
-      text = form.cleaned_data['text']
-      rq.title = title
-      rq.text = text
-      rq.save()
-      return HttpResponseRedirect(reverse('mgmt.views.one_request',args=(rq.id,)))
-    else:
-      return {'request': rq,
-         'form': form}
-  else:
-    form = RequestForm({'title': rq.name, 'text': rq.text})
-    return {'request': rq,
-       'form': form}
-
-@render_to('request.html')
-def one_request(request,rid):
-  rq = Request.objects.get(pk=rid)
-  if request.method=='POST':
-    if request.POST['action']=='change_state':
-      new_state = request.POST['state']
-      rq.status = new_state
-      rq.save()
-    else:
-      title = request.POST['title']
-      text  = request.POST['text']
-      if not title:
-        title = text[:20]+'...'
-      c = Comment(created=datetime.now(),
-          author = request.user,
-          object_id = rid,
-          object_type = 'Request',
-          title = title,
-          text = text)
-      c.save()
-  can_change_state = can(request.user,'change_state',rq)
-  if can_change_state:
-    state_form = RequestStateForm({'state': rq.status})
-  else:
-    state_form = None
-  can_edit = can(request.user,'edit',rq)
-  tasks = rq.task_set.all()
-  page,pages,comments = get_comments(request,rid,'Request')
-  if can(request.user,'comment'):
-    form = CommentForm()
-  else:
-    form = None
-  return {'request': rq,
-       'tasks': tasks,
-       'can_edit': can_edit,
-       'state_form': state_form,
-       'current_page': page,
-       'page_numbers': pages,
-       'comments': comments,
-       'form': form}
-
 @render_to('preview.html')
 def message_preview(request):
   if request.method=='POST':
ViewGit