1616from patchwork .forms import PatchForm
1717from patchwork .models import Cover
1818from patchwork .models import Patch
19+ from patchwork .models import PatchReviewIntention
1920from patchwork .models import Project
2021from patchwork .views import generic_list
2122from patchwork .views import set_bundle
@@ -80,6 +81,30 @@ def patch_detail(request, project_id, msgid):
8081 errors = set_bundle (
8182 request , project , action , request .POST , [patch ]
8283 )
84+ elif action == 'add-review' :
85+ if request .user .is_authenticated :
86+ PatchReviewIntention .objects .get_or_create (
87+ patch = patch ,
88+ user = request .user
89+ )
90+ patch .has_planned_review = patch .planning_to_review .exists ()
91+ patch .save ()
92+
93+ messages .success (request , "You have declared interest in reviewing this patch." )
94+ else :
95+ messages .error (request , "You must be logged in to declare review interest." )
96+
97+ elif action == 'remove-review' :
98+ if request .user .is_authenticated :
99+ PatchReviewIntention .objects .filter (
100+ patch = patch ,
101+ user = request .user
102+ ).delete ()
103+ patch .has_planned_review = patch .planning_to_review .exists ()
104+ patch .save ()
105+ messages .success (request , "You have removed your interest in reviewing this patch." )
106+ else :
107+ messages .error (request , "You must be logged in to remove review interest." )
83108
84109 elif not editable :
85110 return HttpResponseForbidden ()
@@ -93,6 +118,17 @@ def patch_detail(request, project_id, msgid):
93118 if request .user .is_authenticated :
94119 context ['bundles' ] = request .user .bundles .all ()
95120
121+ intentions = PatchReviewIntention .objects .filter (patch = patch )
122+
123+ context ['intentions' ] = intentions
124+ context ['planning_to_review' ] = False
125+ context ['review_expiry_date' ] = None
126+ for intention in intentions :
127+ intention .review_expiry_date = intention .last_time_marked_for_review + patch .state .review_intention_expiration_time
128+ if intention .user == request .user :
129+ context ['planning_to_review' ] = True
130+ context ['review_expiry_date' ] = intention .last_time_marked_for_review + patch .state .review_intention_expiration_time
131+
96132 comments = patch .comments .all ()
97133 comments = comments .select_related ('submitter' )
98134 comments = comments .only (
0 commit comments