@@ -59,7 +59,27 @@ def __init__(self, user, repository, client):
5959 self .rules ['mergedelay' ] = self .rules ['mergedelay' ] * 24
6060 if 'timeout' in self .rules and self .rules ['timeout' ]:
6161 self .rules ['timeout' ] = self .rules ['timeout' ] * 24
62-
62+ self .rules ['version' ] = 2
63+
64+ if self .rules ['version' ] < 3 :
65+ self .rules ['version' ] = 3
66+ self .rules ['pull_requests' ] = {
67+ "quorum" : self .rules .get ('quorum' , False ),
68+ "threshold" : self .rules .get ('threshold' , False ),
69+ "contributors_only" : self .rules .get ('contributorsonly' , False ),
70+ "collaborators_only" : self .rules .get ('collaboratorsonly' , False ),
71+ "whitelist" : self .rules .get ('whitelist' ),
72+ "blacklist" : self .rules .get ('blacklist' ),
73+ "merge_delay" : self .rules .get ('mergedelay' , False ),
74+ "delay_override" : self .rules .get ('delayoverride' , False ),
75+ "merge_delay_min" : self .rules .get ('mergedelaymin' , False ),
76+ "license_delay" : self .rules .get ('licenseddelay' , False ),
77+ "license_lock" : self .rules .get ('locklicense' , False ),
78+ "consensus_delay" : self .rules .get ('consensusdelay' , False ),
79+ "consensus_lock" : self .rules .get ('lockconsensus' , False ),
80+ "timeout" : self .rules .get ('timeout' )
81+ }
82+ print (self .rules )
6383
6484 def getPullRequests (self ):
6585 prs = self .repository .iter_pulls (state = "open" )
@@ -380,10 +400,10 @@ def validate(self, pr):
380400
381401 def isAllowed (self , pr ):
382402 if pr .changesLicense ():
383- if 'locklicense ' in self .rules and self .rules ['locklicense ' ]:
403+ if 'license_lock ' in self .rules [ 'pull_requests' ] and self .rules ['pull_requests' ][ 'license_lock ' ]:
384404 return False
385405 if pr .changesConsensus ():
386- if 'lockconsensus ' in self .rules and self .rules ['lockconsensus ' ]:
406+ if 'consensus_lock ' in self .rules [ 'pull_requests' ] and self .rules ['pull_requests' ][ 'consensus_lock ' ]:
387407 return False
388408 return True
389409
@@ -393,43 +413,43 @@ def isMergeable(self, pr):
393413 return True
394414
395415 def hasQuorum (self , pr ):
396- if 'quorum' in self .rules :
397- if len (pr .users ) < self .rules ['quorum' ]:
416+ if 'quorum' in self .rules [ 'pull_requests' ] :
417+ if len (pr .users ) < self .rules ['pull_requests' ][ ' quorum' ]:
398418 return False
399419 return True
400420
401421 def hasVotes (self , pr ):
402- if 'threshold' in self .rules :
422+ if 'threshold' in self .rules [ 'pull_requests' ] :
403423 total = (len (pr .yes ) + len (pr .no ))
404424 if total <= 0 :
405425 return False
406426 ratio = len (pr .yes ) / total
407- if ratio < self .rules ['threshold' ]:
427+ if ratio < self .rules ['pull_requests' ][ ' threshold' ]:
408428 return False
409429 return True
410430
411431 def hasAged (self , pr ):
412432 hours = pr .hoursSinceLastUpdate ()
413433 if pr .changesLicense ():
414- if 'licensedelay ' in self .rules and self .rules ['licensedelay ' ]:
415- if hours < self .rules ['licensedelay ' ]:
434+ if 'license_delay ' in self .rules [ 'pull_requests' ] and self .rules ['pull_requests' ][ 'license_delay ' ]:
435+ if hours < self .rules ['pull_requests' ][ 'license_delay ' ]:
416436 return False
417437 if pr .changesConsensus ():
418- if 'consensusdelay ' in self .rules and self .rules ['consensusdelay ' ]:
419- if hours < self .rules ['consensusdelay ' ]:
438+ if 'consensus_delay ' in self .rules [ 'pull_requests' ] and self .rules ['pull_requests' ][ 'consensus_delay ' ]:
439+ if hours < self .rules ['pull_requests' ][ 'consensus_delay ' ]:
420440 return False
421- if 'mergedelay ' not in self .rules :
441+ if 'merge_delay ' not in self .rules [ 'pull_requests' ] or not self . rules [ 'pull_requests' ][ 'merge_delay' ] :
422442 return True
423- if hours >= self .rules ['mergedelay ' ]:
443+ if hours >= self .rules ['pull_requests' ][ 'merge_delay ' ]:
424444 return True
425- if 'delayoverride ' in self .rules and self .rules ['delayoverride ' ]:
445+ if 'delay_override ' in self .rules [ 'pull_requests' ] and self .rules ['pull_requests' ][ 'delay_override ' ]:
426446 if pr .changesConsensus () or pr .changesLicense ():
427447 return False
428- if 'mergedelaymin ' in self .rules and self .rules ['mergedelaymin ' ]:
429- if hours < self .rules ['mergedelaymin ' ]:
448+ if 'merge_delay_min ' in self .rules [ 'pull_requests' ] and self .rules ['pull_requests' ][ 'merge_delay_min ' ]:
449+ if hours < self .rules ['pull_requests' ][ 'merge_delay_min ' ]:
430450 return False
431451 if len (pr .no ) > 0 :
432452 return False
433- if len (pr .contributors_yes ) >= self .rules ['delayoverride ' ]:
453+ if len (pr .contributors_yes ) >= self .rules ['pull_requests' ][ 'delay_override ' ]:
434454 return True
435455 return False
0 commit comments