Add some docstrings for mgmt.

portnov [2008-06-21 07:47:25]
Add some docstrings for mgmt.
Filename
mgmt/bugs_views.py
mgmt/context.py
mgmt/decorators.py
mgmt/documents_views.py
mgmt/models.py
mgmt/project_views.py
mgmt/reports_views.py
mgmt/requests_views.py
mgmt/rights.py
mgmt/tasks_views.py
mgmt/utils.py
mgmt/views.py
diff --git a/mgmt/bugs_views.py b/mgmt/bugs_views.py
index 3b29200..6b5a6f7 100644
--- a/mgmt/bugs_views.py
+++ b/mgmt/bugs_views.py
@@ -12,6 +12,7 @@ from forms import BugForm,BugPriorityForm,BugComplexityForm,CommentForm
 @login_required
 @render_to('bug_report.html')
 def bug_report(request,pid):
+  "Create a bug report"
   project = Project.objects.get(pk=pid)
   if request.method=='POST':
     form = BugForm(request.POST)
@@ -33,6 +34,7 @@ def bug_report(request,pid):

 @render_to('bug.html')
 def one_bug(request,id):
+  "Show bug with given ID"
   bug = Bug.objects.get(pk=id)
   if can(request.user,'comment'):
     form = CommentForm()
@@ -102,6 +104,7 @@ def one_bug(request,id):
 @check_auth(Bug,'edit')
 @render_to('edit_bug.html')
 def edit_bug(request,bug):
+  "Edit given bug"
   if request.method=='POST':
     form = BugForm(request.POST,instance=bug)
     if form.is_valid():
@@ -117,6 +120,7 @@ def edit_bug(request,bug):

 @render_to('all_bugs.html')
 def all_bugs(request):
+  "Show a list of all bugs"
   page,pages,bugs = get_bugs(request)
   return {'bugs': bugs,
       'current_page': page,
@@ -124,6 +128,7 @@ def all_bugs(request):

 @render_to('all_bugs.html')
 def bugs_by_state(request,sid):
+  "Show a list of all bugs in given state"
   state = BugState.objects.get(pk=sid)
   page,pages,bugs = Bug.objects.filter(status=state)
   return {'bugs': bugs,
diff --git a/mgmt/context.py b/mgmt/context.py
index 87e1e36..0163aff 100644
--- a/mgmt/context.py
+++ b/mgmt/context.py
@@ -11,11 +11,15 @@ import debug

 from models import *

+# Export django.conf.settings to all modules
 hms.modules.settings = settings
 hms.modules.exports.append('settings')
 hms.modules.init()

 def make_chart(path):
+  """Return HTML for bugs chart.
+  Show chart of bugs in given projects on /projects/id/, and
+  chart of all bugs on other urls."""
   p1 = re.compile(settings.BASE_URL+'/projects/(\d+)/$')
   m = p1.match(path)
   if m:
@@ -36,6 +40,8 @@ def make_chart(path):
     return title+hms.modules.bug_chart(d)

 def add_blocks(request):
+  """Add {{blocks}} variable to context, a dict, containing all blocks.
+  Also, add {{login_message}} and {{chart}} for bugs chart."""
   blocks = {}
   logged = request.user.is_authenticated()
   for blk in hms.generate('block'):
@@ -61,13 +67,16 @@ def add_blocks(request):
   return dict(blocks=blocks,login_message=log_msg, chart=make_chart(request.path))

 def add_menu(request):
+  """Add {{menu}} variable to context."""
   menu = hms.modules.menu(request)
   return dict(menu=menu)

 def for_rss(request):
+  """Add variables, needed to form RSS feeds."""
   return dict(pub_date = datetime.now().strftime('%a, %d %b %Y %H:%M:%S') )

 def debug_messages(request):
+  "Add {{debug}} variable for all debug messages"
   if settings.DEBUG:
     return dict(debug = debug.dump())
   else:
diff --git a/mgmt/decorators.py b/mgmt/decorators.py
index 1d1f289..fc027c1 100644
--- a/mgmt/decorators.py
+++ b/mgmt/decorators.py
@@ -4,6 +4,7 @@ from rights import can
 from utils import render_it,render_rss

 def login_required(func):
+  "Show page only for authorized users. Redirect guests to LOGIN_URL."
   def wrapper(request,*args,**kwargs):
     if request.user.is_authenticated():
       return func(request,*args,**kwargs)
@@ -17,6 +18,7 @@ def login_required(func):
 ####################

 def check_auth(cls,action):
+  "Show page only for users, who is allowed to view it. Return Http403 for others."
   def decorator(func):
     def wrapper(request,id,*args,**kwargs):
       obj = cls.objects.get(pk=id)
@@ -24,11 +26,13 @@ def check_auth(cls,action):
         return HttpResponseForbidden("<h1>You are not allowed to view this page</h1>")
       return func(request,obj,*args,**kwargs)
     wrapper.__name__ = func.__name__
+    wrapper.__doc__ = func.__doc__
     return wrapper
   decorator.__name__ = 'check_auth'
   return decorator

 def render_to(template):
+  "If function returns dict, render it with given template. Otherwise, just return the result."
   def decorator(func):
     def wrapper(request,*args,**kwargs):
       r = func(request,*args,**kwargs)
@@ -37,14 +41,17 @@ def render_to(template):
       else:
         return r
     wrapper.__name__ = func.__name__
+    wrapper.__doc__ = func.__doc__
     return wrapper
   return decorator

 def rss(template):
+  "Form RSS feed with given template."
   def decorator(func):
     def wrapper(request,*args,**kwargs):
       r = func(request,*args,**kwargs)
       return render_rss(template, r, request)
     wrapper.__name__ = func.__name__
+    wrapper.__doc__ = func.__doc__
     return wrapper
   return decorator
diff --git a/mgmt/documents_views.py b/mgmt/documents_views.py
index ffe9c14..2fcc101 100644
--- a/mgmt/documents_views.py
+++ b/mgmt/documents_views.py
@@ -10,6 +10,7 @@ from forms import CommentForm,DocForm
 @check_auth(Project,'view')
 @render_to('project_docs.html')
 def project_documents(request,project):
+  "Show a list of all documents for given project."
   cats = Category.objects.filter(document__project=project).distinct()
   return {'project': project,
        'categories': cats}
@@ -17,6 +18,7 @@ def project_documents(request,project):
 @check_auth(Document,'view')
 @render_to('document.html')
 def one_document(request,doc):
+  "Show given document."
   if can(request.user,'comment'):
     form = CommentForm()
   else:
diff --git a/mgmt/models.py b/mgmt/models.py
index d274a5f..6048b63 100644
--- a/mgmt/models.py
+++ b/mgmt/models.py
@@ -10,6 +10,7 @@ from django.utils.translation import activate
 # _ = lambda s: s

 class Object(models.Model):
+  "Base abstract model."
   name = models.CharField(_("Name"),max_length=64)
   text = models.TextField(_("Text"))
   created = models.DateTimeField(_("Created"))
diff --git a/mgmt/project_views.py b/mgmt/project_views.py
index d416236..f6b5d8b 100644
--- a/mgmt/project_views.py
+++ b/mgmt/project_views.py
@@ -31,6 +31,7 @@ def one_project(request,project):
 @check_auth(Project,'view')
 @render_to('project_bugs.html')
 def project_bugs(request,project):
+  "Show a list of bugs for given project."
   page,pages,bugs = get_bugs(request,project.id)
   for bug in bugs:
     bug.complexity_str = dict(settings.COMPLEXITY_CHOICES).get(bug.complexity,'Unknown')
diff --git a/mgmt/reports_views.py b/mgmt/reports_views.py
index a9629fe..eec559e 100644
--- a/mgmt/reports_views.py
+++ b/mgmt/reports_views.py
@@ -15,6 +15,7 @@ def one_report(request,rid):

 @render_to('task_reports.html')
 def task_reports(request,tid):
+  "Show a list of reports for given task."
   task = Task.objects.get(pk=tid)
   reports = task.report_set.select_related().all()
   return {'task': task,
diff --git a/mgmt/requests_views.py b/mgmt/requests_views.py
index 9e64f71..bc4b207 100644
--- a/mgmt/requests_views.py
+++ b/mgmt/requests_views.py
@@ -9,6 +9,7 @@ from forms import RequestForm,RequestStateForm,CommentForm

 @render_to('requests.html')
 def requests(request,pid):
+  "Show a list of all feature requests for given project"
   project = Project.objects.get(pk=pid)
   rs = project.request_set.all()
   can_request = can(request.user,'request',project)
diff --git a/mgmt/rights.py b/mgmt/rights.py
index 8db62ea..4fad778 100644
--- a/mgmt/rights.py
+++ b/mgmt/rights.py
@@ -18,6 +18,7 @@ def can_change_bug_state(user,bug,new_state):
   return False

 def can(user,action,object=None,target=None):
+  "Main function, which determines whether {user} can do {action} within {object}."
   cls = object.__class__.__name__
   if action in ['comment','send bug','request']:
     return user.is_authenticated()
@@ -66,6 +67,7 @@ def can(user,action,object=None,target=None):
   return False

 def possible_changes(bug,user):
+  "Return a list of bug states, to which given user can turn given bug."
   r = []
   for new in range(1,6):
     if can_change_bug_state(user,bug,new):
diff --git a/mgmt/tasks_views.py b/mgmt/tasks_views.py
index f8c48fb..4798c8d 100644
--- a/mgmt/tasks_views.py
+++ b/mgmt/tasks_views.py
@@ -8,6 +8,7 @@ from forms import TaskStateForm,TaskModelForm

 @render_to('project_tasks.html')
 def project_tasks(request,pid):
+  "A list of all tasks for given project."
   project = Project.objects.get(pk=pid)
   tasks = project.task_set.all()
   can_task = can(request.user,'create task',project)
diff --git a/mgmt/utils.py b/mgmt/utils.py
index 9adc659..56db47c 100644
--- a/mgmt/utils.py
+++ b/mgmt/utils.py
@@ -14,11 +14,13 @@ from forms import CommentForm
 ############

 def render_it(template,dict,request):
+  "Render template with given context. Use some context processors."
   c = RequestContext(request,dict,[add_blocks,add_menu,debug_messages])
   t = get_template(template)
   return HttpResponse(t.render(c))

 def render_rss(template,dict,request):
+  "Render template, using only context processors suitable for RSS."
   c = RequestContext(request,dict,[for_rss])
   t = get_template(template)
   return HttpResponse(t.render(c),mimetype='application/xml')
diff --git a/mgmt/views.py b/mgmt/views.py
index 8a78b7c..f801cc2 100644
--- a/mgmt/views.py
+++ b/mgmt/views.py
@@ -31,6 +31,7 @@ from rss_views import *

 @render_to('main.html')
 def main(request):
+  "Create main page - a list of projects."
   if request.user.is_authenticated():
     projects = Project.objects.all()
   else:
@@ -84,6 +85,7 @@ def my_page(request):
 @login_required
 @render_to('private_message.html')
 def private_message(request,mid):
+  "Show given private message"
   msg = PrivateMsg.objects.get(pk=mid)
   if request.user.id != msg.reciever.id:
     return HttpResponseForbidden('<h1>Forbidden!</h1>')
ViewGit