@@ -216,7 +216,7 @@ class MultiplePatchForm(forms.Form):
216
216
label = 'Archived' ,
217
217
)
218
218
219
- def __init__ (self , project , * args , ** kwargs ):
219
+ def __init__ (self , project , user = None , * args , ** kwargs ):
220
220
super (MultiplePatchForm , self ).__init__ (* args , ** kwargs )
221
221
self .fields ['delegate' ] = OptionalModelChoiceField (
222
222
queryset = _get_delegate_qs (project = project ),
@@ -231,6 +231,20 @@ def __init__(self, project, *args, **kwargs):
231
231
className = 'change-property-state' ,
232
232
label = 'Change state' ,
233
233
)
234
+ self .user = user
235
+ if self .user :
236
+ self .fields ['review_status' ] = OptionalBooleanField (
237
+ className = 'archive-patch-select' ,
238
+ choices = [
239
+ ('*' , 'no change' ),
240
+ ('True' , 'Planning to review' ),
241
+ ('False' , 'Not planning to review' ),
242
+ ],
243
+ coerce = lambda x : x == 'True' ,
244
+ empty_value = '*' ,
245
+ required = False ,
246
+ initial = '*' ,
247
+ )
234
248
235
249
def save (self , instance , commit = True ):
236
250
opts = instance .__class__ ._meta
@@ -252,8 +266,27 @@ def save(self, instance, commit=True):
252
266
if field .is_no_change (data [f .name ]):
253
267
continue
254
268
269
+ if f .name == 'review_status' :
270
+ if data [f .name ]:
271
+ self .instance .planning_to_review .add (self .user )
272
+ else :
273
+ self .instance .planning_to_review .remove (self .user )
274
+ continue
275
+
255
276
setattr (instance , f .name , data [f .name ])
256
277
257
278
if commit :
258
279
instance .save ()
259
280
return instance
281
+
282
+ def review_status_only (self ):
283
+ review_status_only = True
284
+ field_names = set (self .fields .keys ())
285
+ field_names .discard ({'review_status' , 'action' })
286
+
287
+ for field_name in field_names :
288
+ data = self .data .get (field_name , '*' )
289
+ if data != '*' :
290
+ review_status_only = False
291
+
292
+ return review_status_only
0 commit comments