@@ -216,7 +216,7 @@ class MultiplePatchForm(forms.Form):
216216 label = 'Archived' ,
217217 )
218218
219- def __init__ (self , project , * args , ** kwargs ):
219+ def __init__ (self , project , user = None , * args , ** kwargs ):
220220 super (MultiplePatchForm , self ).__init__ (* args , ** kwargs )
221221 self .fields ['delegate' ] = OptionalModelChoiceField (
222222 queryset = _get_delegate_qs (project = project ),
@@ -231,6 +231,20 @@ def __init__(self, project, *args, **kwargs):
231231 className = 'change-property-state' ,
232232 label = 'Change state' ,
233233 )
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+ )
234248
235249 def save (self , instance , commit = True ):
236250 opts = instance .__class__ ._meta
@@ -252,8 +266,27 @@ def save(self, instance, commit=True):
252266 if field .is_no_change (data [f .name ]):
253267 continue
254268
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+
255276 setattr (instance , f .name , data [f .name ])
256277
257278 if commit :
258279 instance .save ()
259280 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