[extensions-web] review: Add a new WAITING state
- From: Jasper St. Pierre <jstpierre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [extensions-web] review: Add a new WAITING state
- Date: Mon, 6 Aug 2012 21:27:16 +0000 (UTC)
commit 45162b8d6f1b10ff6e0b85e4220ecde42a6785b8
Author: Jasper St. Pierre <jstpierre mecheye net>
Date: Mon Aug 6 15:28:00 2012 -0300
review: Add a new WAITING state
The WAITING state is used to put an extension in limbo, and will
automatically reset to UNREVIEWED when the author comments.
sweettooth/extensions/models.py | 3 ++-
sweettooth/review/templates/review/review.html | 1 +
sweettooth/review/views.py | 23 ++++++++++++++---------
3 files changed, 17 insertions(+), 10 deletions(-)
---
diff --git a/sweettooth/extensions/models.py b/sweettooth/extensions/models.py
index 5c44778..f5c4d68 100644
--- a/sweettooth/extensions/models.py
+++ b/sweettooth/extensions/models.py
@@ -17,7 +17,7 @@ from sorl import thumbnail
(STATUS_NEW, STATUS_UNREVIEWED,
STATUS_REJECTED, STATUS_INACTIVE,
- STATUS_ACTIVE) = xrange(5)
+ STATUS_ACTIVE, STATUS_WAITING) = xrange(6)
STATUSES = {
STATUS_NEW: u"New",
@@ -25,6 +25,7 @@ STATUSES = {
STATUS_REJECTED: u"Rejected",
STATUS_INACTIVE: u"Inactive",
STATUS_ACTIVE: u"Active",
+ STATUS_WAITING: u"Waiting for author",
}
APPROVED_STATUSES = (STATUS_INACTIVE, STATUS_ACTIVE)
diff --git a/sweettooth/review/templates/review/review.html b/sweettooth/review/templates/review/review.html
index 938d4be..f42d948 100644
--- a/sweettooth/review/templates/review/review.html
+++ b/sweettooth/review/templates/review/review.html
@@ -122,6 +122,7 @@
<option value="approve" class="approve">Approve</option>
{% endif %}
<option value="reject" class="reject">Reject</option>
+ <option value="wait" class="waiting">Needs reply from author</option>
</select>
<input type="submit" value="Submit">
</form>
diff --git a/sweettooth/review/views.py b/sweettooth/review/views.py
index 67b684f..3c6ebc4 100644
--- a/sweettooth/review/views.py
+++ b/sweettooth/review/views.py
@@ -227,7 +227,10 @@ def download_zipfile(request, pk):
def submit_review_view(request, obj):
extension, version = obj.extension, obj
- if not can_review_extension(request.user, extension):
+ can_approve = can_approve_extension(request.user, extension)
+ can_review = can_review_extension(request.user, extension)
+
+ if not can_review:
return HttpResponseForbidden()
review = CodeReview(version=version,
@@ -238,21 +241,23 @@ def submit_review_view(request, obj):
status_string = request.POST.get('status')
newstatus = dict(approve=models.STATUS_ACTIVE,
+ wait=models.STATUS_WAITING,
reject=models.STATUS_REJECTED).get(status_string, None)
+ # If a normal user didn't change the status and it was in WAITING,
+ # change it back to UNREVIEWED
+ if not can_approve and obj.status == models.STATUS_WAITING:
+ newstatus = models.STATUS_UNREVIEWED
+
if newstatus is not None:
- if newstatus == models.STATUS_ACTIVE and not can_approve_extension(request.user, extension):
+ if newstatus == models.STATUS_ACTIVE and not can_approve:
return HttpResponseForbidden()
- log = ChangeStatusLog.objects.create(user=request.user,
- version=obj,
- newstatus=newstatus)
-
+ review.changelog = ChangeStatusLog.objects.create(user=request.user,
+ version=obj,
+ newstatus=newstatus)
obj.status = newstatus
obj.save()
-
- review.changelog = log
-
models.status_changed.send(sender=request, version=obj, log=log)
review.save()
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]