20808ddc5d
We're starting to run jeepyb under python3 in the new gerrit image. Change-Id: Ia71cb13f3b45055bbb9a311807fa65a89c8be62a
95 lines
2.8 KiB
Python
95 lines
2.8 KiB
Python
# Copyright (c) 2013 Mirantis.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
"""
|
|
Expected review.projects.yaml format:
|
|
|
|
- project: some/project
|
|
launchpad: awesomeproject
|
|
description: Best project ever.
|
|
groups:
|
|
- awesome-group
|
|
options:
|
|
- delay-release
|
|
- no-launchpad-bugs
|
|
- no-launchpad-blueprints
|
|
"""
|
|
|
|
from six.moves import configparser
|
|
|
|
import jeepyb.utils as u
|
|
|
|
|
|
registry = u.ProjectsRegistry()
|
|
|
|
|
|
def project_to_groups(project_full_name):
|
|
return registry[project_full_name] \
|
|
.get('groups',
|
|
[registry[project_full_name].get('group',
|
|
u.short_project_name(
|
|
project_full_name))])
|
|
|
|
|
|
def _is_no_launchpad(project_full_name, obj_type):
|
|
try:
|
|
return ('no-launchpad-' + obj_type
|
|
in registry[project_full_name]['options'])
|
|
except KeyError:
|
|
return False
|
|
|
|
|
|
def is_no_launchpad_bugs(project_full_name):
|
|
return _is_no_launchpad(project_full_name, 'bugs')
|
|
|
|
|
|
def is_no_launchpad_blueprints(project_full_name):
|
|
return _is_no_launchpad(project_full_name, 'blueprints')
|
|
|
|
|
|
def has_github(project_full_name):
|
|
try:
|
|
if not registry.defaults.get('projects', 'has-github'):
|
|
# If the default is not to use GitHub...
|
|
try:
|
|
# ...then rely on the existence of a per-project option...
|
|
return 'has-github' in registry[project_full_name]['options']
|
|
except KeyError:
|
|
# ...and if it's not set, then still don't use it.
|
|
return False
|
|
# It's okay if the global option or even the section for this don't exist.
|
|
except (configparser.NoSectionError, configparser.NoOptionError):
|
|
pass
|
|
# If we got this far, we either explicitly or implicitly default to use it.
|
|
return True
|
|
|
|
|
|
def has_translations(project_full_name):
|
|
try:
|
|
return 'translate' in registry[project_full_name]['options']
|
|
except KeyError:
|
|
return False
|
|
|
|
|
|
def is_delay_release(project_full_name):
|
|
try:
|
|
return 'delay-release' in registry[project_full_name]['options']
|
|
except KeyError:
|
|
return False
|
|
|
|
|
|
def docimpact_target(project_full_name):
|
|
return registry.get_project_item(project_full_name, 'docimpact-group',
|
|
'unknown')
|