diff --git a/origin-manager.py b/origin-manager.py index 442b488c..88a560a2 100755 --- a/origin-manager.py +++ b/origin-manager.py @@ -15,8 +15,6 @@ class OriginManager(ReviewBot.ReviewBot): # ReviewBot options. self.request_default_return = True - # No such thing as override, only changing origin which must be approved - # by fallback group. Annotation must be included in review. self.override_allow = False def check_source_submission(self, src_project, src_package, src_rev, tgt_project, tgt_package): @@ -55,7 +53,15 @@ class OriginManager(ReviewBot.ReviewBot): self.policy_result_comment_add(project, package, result.comments) - if not result.wait: + if result.wait: + # Allow overriding a policy wait by accepting as workaround with the + # hope that pending request will be accepted. + override = self.request_override_check(self.request, True) + if override: + self.review_messages['accepted'] = origin_annotation_dump( + origin_info_new, origin_info_old, self.review_messages['accepted']) + return override + else: if result.accept: self.review_messages['accepted'] = origin_annotation_dump(origin_info_new, origin_info_old) return result.accept diff --git a/osclib/origin.py b/osclib/origin.py index 0601d3a0..6f38dad2 100644 --- a/osclib/origin.py +++ b/osclib/origin.py @@ -291,11 +291,15 @@ def origin_find_fallback(apiurl, target_project, package, source_hash, user): return None -def origin_annotation_dump(origin_info_new, origin_info_old): +def origin_annotation_dump(origin_info_new, origin_info_old, override=False): data = {'origin': str(origin_info_new.project)} if origin_info_old and origin_info_new.project != origin_info_old.project: data['origin_old'] = str(origin_info_old.project) + if override: + data['origin'] = origin_workaround_ensure(data['origin']) + data['comment'] = override + return yaml.dump(data, default_flow_style=False) def origin_annotation_load(annotation):