diff --git a/mgmt/decorators.py b/mgmt/decorators.py index 5b49597..4b2d618 100644 --- a/mgmt/decorators.py +++ b/mgmt/decorators.py @@ -1,5 +1,6 @@ from django.http import HttpResponseForbidden,HttpResponseRedirect from rights import can +from utils import render_it def login_required(func): def wrapper(request,*args,**kwargs): @@ -25,3 +26,12 @@ def check_auth(cls,action): return wrapper decorator.__name__ = 'check_auth' return decorator + +def render_to(template): + def decorator(func): + def wrapper(request,*args,**kwargs): + r = func(request,*args,**kwargs) + return render_it(template, r, request) + wrapper.__name__ = func.__name__ + return wrapper + return decorator diff --git a/mgmt/views.py b/mgmt/views.py index 8859a99..21f834f 100644 --- a/mgmt/views.py +++ b/mgmt/views.py @@ -13,18 +13,20 @@ from django.conf import settings import debug from models import * from rights import can,possible_changes -from utils import * +from utils import get_comments,get_bugs from forms import * -from decorators import check_auth,login_required +from decorators import check_auth,login_required,render_to ############# # Views ############ +@render_to('main.html') def main(request): projects = Project.objects.all() - return render_it('main.html',{'projects': projects},request) + return {'projects': projects} +@render_to('project.html') def one_project(request,id): project = Project.objects.get(pk=id) if request.method=='POST': @@ -46,14 +48,13 @@ def one_project(request,id): form = None for comment in comments: comment.can_delete = can(request.user,'delete',comment) - return render_it('project.html', - {'project': project, + return {'project': project, 'current_page': curr, 'page_numbers': pages, 'comments': comments, - 'form': form}, - request) + '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) @@ -61,15 +62,14 @@ def project_bugs(request,id): 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 render_it('project_bugs.html', - {'project': project, + return {'project': project, 'current_page': page, 'page_numbers': pages, 'bugs': bugs, - 'can_report': can_report}, - request) + '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': @@ -96,23 +96,19 @@ def bug_report(request,pid): b.save() return HttpResponseRedirect(reverse('mgmt.views.project_bugs',args=(pid,))) else: - return render_it('bug_report.html', - {'project': project, 'form': form}, - request) + return {'project': project, 'form': form} form = BugForm() - return render_it('bug_report.html', - {'project': project, - 'form': form}, - request) + 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 render_it('project_docs.html', - {'project': project, - 'categories': cats}, - request) + return {'project': project, + 'categories': cats} +@render_to('document.html') def one_document(request,id): doc = Document.objects.get(pk=id) if request.method=='POST': @@ -138,16 +134,15 @@ def one_document(request,id): edit_link = None for comment in comments: comment.can_delete = can(request.user,'delete',comment) - return render_it('document.html', - {'document': doc, + return {'document': doc, 'edit_link': edit_link, 'current_page': curr, 'page_numbers': pages, 'comments': comments, - 'form': form}, - request) + 'form': form} @check_auth(Project,'document') +@render_to('create_doc.html') def create_document(request,project): msg = "" if request.method=='POST': @@ -160,15 +155,12 @@ def create_document(request,project): doc.save() return HttpResponseRedirect(reverse('mgmt.views.one_document',args=(doc.id,))) else: - return render_it('create_doc.html', - {'form': form}, - request) + return {'form': form} form = DocForm() - return render_it('create_doc.html', - {'form': form}, - request) + return {'form': form} @check_auth(Document,'edit') +@render_to('edit_document.html') def edit_document(request,doc): project = doc.project if request.method=='POST': @@ -177,17 +169,13 @@ def edit_document(request,doc): form.save() return HttpResponseRedirect(reverse('mgmt.views.one_document',args=(doc.id,))) else: - return render_it('edit_document.html', - {'document': doc, + return {'document': doc, 'project_id': project.id, - 'form': form}, - request) + 'form': form} form = DocForm(instance=doc) - return render_it('edit_document.html', - {'document': doc, + return {'document': doc, 'project_id': project.id, - 'form': form}, - request) + 'form': form} def one_bug(request,id): bug = Bug.objects.get(pk=id) @@ -250,8 +238,7 @@ def one_bug(request,id): 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 render_it('bug.html', - {'bug': bug, + return {'bug': bug, 'change_state': state_form, 'edit_link': edit_link, 'project': bug.project, @@ -263,10 +250,10 @@ def one_bug(request,id): 'complexity': complexity, 'priority_form': priority_form, 'complexity_form': complexity_form, - 'form': form}, - request) + 'form': form} @check_auth(Bug,'edit') +@render_to('edit_bug.html') def edit_bug(request,bug): if request.method=='POST': form = BugForm(request.POST) @@ -290,29 +277,26 @@ def edit_bug(request,bug): 'your_actions': bug.actions, 'expected': bug.expected, 'unexpected': bug.unexpected}) - return render_it('edit_bug.html', - {'project': bug.project, + return {'project': bug.project, 'bug': bug, - 'form': form}, - request) + 'form': form} +@render_to('all_bugs.html') def all_bugs(request): page,pages,bugs = get_bugs(request) - return render_it('all_bugs.html', - {'bugs': bugs, + return {'bugs': bugs, 'current_page': page, - 'page_numbers': pages}, - request) + '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 render_it('all_bugs.html', - {'bugs': bugs, - 'state': state.name}, - request) + return {'bugs': bugs, + 'state': state.name} @login_required +@render_to('user_page.html') def user_page(request,name): try: user = User.objects.get(username=name) @@ -343,37 +327,34 @@ def user_page(request,name): tasks = user.task_set.select_related().filter(status__lt=2)[:10] reports = user.report_set.select_related().all()[:10] - return render_it('user_page.html', - {'user_view': user, + return {'user_view': user, 'private_messages': messages, 'form': form, 'projects_admin': pr_admin, 'projects_team': pr_team, 'tasks': tasks, 'reports': reports, - 'bugs_resp': bugs_resp}, - request) + 'bugs_resp': bugs_resp} 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 render_it('report.html', - {'report': report, - 'can_edit': can_edit}, - request) + 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 render_it('task_reports.html', - {'task': task, - 'reports': reports}, - request) + 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) @@ -385,16 +366,13 @@ def create_report(request,tid): report.save() return HttpResponseRedirect(reverse('mgmt.views.one_task',args=(tid,))) else: - return render_it('create_report.html', - {'form': form}, - request) + return {'form': form} else: form = ReportModelForm() - return render_it('create_report.html', - {'form': form}, - request) + 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) @@ -402,27 +380,23 @@ def edit_report(request,report): form.save() return HttpResponseRedirect(reverse('mgmt.views.one_report',args=(report.id,))) else: - return render_it('edit_report.html', - {'form': form, - 'report': report}, - request) + return {'form': form, + 'report': report} else: form = ReportModelForm(instance=report) - return render_it('edit_report.html', - {'form': form, - 'report': report}, - request) + 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 render_it('project_tasks.html', - {'project': project, + return {'project': project, 'can_task': can_task, - 'tasks': tasks}, - request) + 'tasks': tasks} +@render_to('task.html') def one_task(request,tid): task = Task.objects.select_related().get(pk=tid) if request.method=='POST': @@ -435,15 +409,14 @@ def one_task(request,tid): state_form = TaskStateForm({'state': task.status}) else: state_form = None - return render_it('task.html', - {'task': task, + return {'task': task, 'can_report': can_report, 'reports': reports, 'state_form': state_form, - 'can_edit': can_edit}, - request) + '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) @@ -452,18 +425,15 @@ def edit_task(request,task): task.save() return HttpResponseRedirect(reverse('mgmt.views.one_task',args=(task.id,))) else: - return render_it('edit_task.html', - {'form': form, - 'task': task}, - request) + return {'form': form, + 'task': task} else: form = TaskModelForm(instance=task) - return render_it('edit_task.html', - {'form': form, - 'task': task}, - request) + 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) @@ -476,57 +446,50 @@ def create_task(request,project): task = task.save() return HttpResponseRedirect(reverse('mgmt.views.project_tasks',args=(project.id,))) else: - return render_it('create_task.html', - {'form': form}, - request) + return {'form': form} else: form = TaskModelForm() - return render_it('create_task.html', - {'form': form}, - request) + return {'form': form} @login_required +@render_to('private_message.html') def private_message(request,mid): msg = PrivateMsg.objects.get(pk=mid) if request.user.id != msg.reciever.id: return HttpResponseForbidden('<h1>Forbidden!</h1>') - return render_it('private_message.html', - {'message': msg}, - request) + return {'message': msg} @check_auth(PrivateMsg,'delete') +@render_to('delete.html') def delete_private_message(request,msg): if request.method=='GET': - return render_it('delete.html', - {'message': msg, - 'referer': request.META['HTTP_REFERER']}, - request) + return {'message': msg, + 'referer': request.META['HTTP_REFERER']} elif request.method=='POST': msg.delete() return HttpResponseRedirect(reverse('mgmt.views.user_page',args=(request.user.username,))) @check_auth(Comment,'delete') +@render_to('delete.html') def delete_comment(request,comment): if request.method=='GET': - return render_it('delete.html', - {'message': comment, - 'referer': request.META['HTTP_REFERER']}, - request) + return {'message': comment, + 'referer': request.META['HTTP_REFERER']} elif request.method=='POST': 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 render_it('requests.html', - {'project': project, + return {'project': project, 'can_request': can_request, - 'requests': rs}, - 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': @@ -542,17 +505,14 @@ def create_request(request,pid): rq.save() return HttpResponseRedirect(reverse('mgmt.views.requests',args=(pid,))) else: - return render_it('create_request.html', - {'project': project, - 'form': form}, - request) + return {'project': project, + 'form': form} form = RequestForm() - return render_it('create_request.html', - {'project': project, - 'form': form}, - request) + 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) @@ -564,17 +524,14 @@ def edit_request(request,rq): rq.save() return HttpResponseRedirect(reverse('mgmt.views.one_request',args=(rq.id,))) else: - return render_it('edit_request.html', - {'request': rq, - 'form': form}, - request) + return {'request': rq, + 'form': form} else: form = RequestForm({'title': rq.name, 'text': rq.text}) - return render_it('edit_request.html', - {'request': rq, - 'form': form}, - request) + return {'request': rq, + 'form': form} +@render_to('request.html') def one_request(request,rid): rq = Request.objects.get(pk=rid) if request.method=='POST': @@ -606,23 +563,20 @@ def one_request(request,rid): form = CommentForm() else: form = None - return render_it('request.html', - {'request': rq, + return {'request': rq, 'tasks': tasks, 'can_edit': can_edit, 'state_form': state_form, 'current_page': page, 'page_numbers': pages, 'comments': comments, - 'form': form}, - request) + 'form': form} +@render_to('preview.html') def message_preview(request): if request.method=='POST': text = request.POST['data'] - return render_it('preview.html', - {'text': text}, - request) + return {'text': text} raise Http404 def strange(request): diff --git a/pygit/views.py b/pygit/views.py index 6af6cc9..543e8b0 100644 --- a/pygit/views.py +++ b/pygit/views.py @@ -12,7 +12,7 @@ import pygit from chart import Chart sys.path.append(dirname(dirname(__file__))) -from mgmt.views import render_it +from mgmt.utils import render_it class Repo(object): pass diff --git a/templates/project_docs.html b/templates/project_docs.html index 3f858b9..88a78e5 100644 --- a/templates/project_docs.html +++ b/templates/project_docs.html @@ -5,7 +5,7 @@ {% block main %} - <h2>Проект: {{project|link|safe}}</h2> + <h2>Документация по проекту {{project|link|safe}}</h2> {%if categories %} {% for cat in categories %} <h3>{{cat.title}}:</h3>