diff options
author | Magnus Hagander | 2014-04-22 11:59:12 +0000 |
---|---|---|
committer | Magnus Hagander | 2014-04-22 11:59:12 +0000 |
commit | 084a37e4ddd51109dfb9977d585bb35872155bbf (patch) | |
tree | 249574ff4ad42f281fe096d01aadfb9bdfc3125b /pgcommitfest/commitfest | |
parent | c66975fcaecc4b87d70e75935d0fffb50d86bf3a (diff) |
Add support for claiming and unclaiming as committer
Diffstat (limited to 'pgcommitfest/commitfest')
-rw-r--r-- | pgcommitfest/commitfest/models.py | 3 | ||||
-rw-r--r-- | pgcommitfest/commitfest/templates/patch.html | 4 | ||||
-rw-r--r-- | pgcommitfest/commitfest/views.py | 36 |
3 files changed, 40 insertions, 3 deletions
diff --git a/pgcommitfest/commitfest/models.py b/pgcommitfest/commitfest/models.py index 75078a0..f8ea862 100644 --- a/pgcommitfest/commitfest/models.py +++ b/pgcommitfest/commitfest/models.py @@ -15,6 +15,9 @@ class Committer(models.Model): def __unicode__(self): return unicode(self.user) + @property + def fullname(self): + return "%s %s (%s)" % (self.user.first_name, self.user.last_name, self.user.username) class CommitFest(models.Model): STATUS_FUTURE=1 diff --git a/pgcommitfest/commitfest/templates/patch.html b/pgcommitfest/commitfest/templates/patch.html index a0a3b32..23976ee 100644 --- a/pgcommitfest/commitfest/templates/patch.html +++ b/pgcommitfest/commitfest/templates/patch.html @@ -43,7 +43,9 @@ </tr> <tr> <th>Committer</th> - <td>{%if patch.committer%}{{patch.committer.first_name}} {{patch.committer.last_name}} ({{patch.committer.username}}){%endif%}</td> + <td>{%if patch.committer%}{{patch.committer.fullname}}{%endif%} +{%if is_committer%}<a href="committer/{{is_this_committer|yesno:"remove,become"}}/" class="btn pull-right">{{is_this_committer|yesno:"Unclaim as committer,Claim as committer"}}</a>{%endif%} + </td> </tr> <tr> <th>Links</th> diff --git a/pgcommitfest/commitfest/views.py b/pgcommitfest/commitfest/views.py index b66e37f..f502f38 100644 --- a/pgcommitfest/commitfest/views.py +++ b/pgcommitfest/commitfest/views.py @@ -1,5 +1,5 @@ from django.shortcuts import render_to_response, get_object_or_404 -from django.http import HttpResponseRedirect, Http404 +from django.http import HttpResponseRedirect, Http404, HttpResponseForbidden from django.template import RequestContext from django.db import transaction from django.db.models import Q @@ -111,11 +111,18 @@ def patch(request, cfid, patchid): #XXX: this creates a session, so find a smarter way. Probably handle #it in the callback and just ask the user then? if request.user.is_authenticated(): - is_committer = Committer.objects.filter(user=request.user).exists() + committer = list(Committer.objects.filter(user=request.user, active=True)) + if len(committer) > 0: + is_committer= True + is_this_committer = committer[0] == patch.committer + else: + is_committer = is_this_committer = False + is_reviewer = request.user in patch.reviewers.all() # is_reviewer = len([x for x in patch.reviewers.all() if x==request.user]) > 0 else: is_committer = False + is_this_committer = False is_reviewer = False return render_to_response('patch.html', { @@ -123,6 +130,7 @@ def patch(request, cfid, patchid): 'patch': patch, 'patch_commitfests': patch_commitfests, 'is_committer': is_committer, + 'is_this_committer': is_this_committer, 'is_reviewer': is_reviewer, 'title': 'View patch', 'breadcrumbs': [{'title': cf.name, 'href': '/%s/' % cf.pk},], @@ -368,3 +376,27 @@ def reviewer(request, cfid, patchid, status): patch.set_modified() PatchHistory(patch=patch, by=request.user, what='Removed self from reviewers').save() return HttpResponseRedirect('../../') + +@login_required +@transaction.commit_on_success +def committer(request, cfid, patchid, status): + get_object_or_404(CommitFest, pk=cfid) + patch = get_object_or_404(Patch, pk=patchid) + + committer = list(Committer.objects.filter(user=request.user, active=True)) + if len(committer) == 0: + return HttpResponseForbidden('Only committers can do that!') + committer = committer[0] + + is_committer = committer == patch.committer + + if status=='become' and not is_committer: + patch.committer = committer + patch.set_modified() + PatchHistory(patch=patch, by=request.user, what='Added self as committer').save() + elif status=='remove' and is_committer: + patch.committer = None + patch.set_modified() + PatchHistory(patch=patch, by=request.user, what='Removed self from committers').save() + patch.save() + return HttpResponseRedirect('../../') |