Source code for errata_tool.product

from errata_tool import ErrataConnector
from errata_tool.product_version import ProductVersion

[docs]class Product(ErrataConnector): def __init__(self, name): self.name = name self.data = None self.url = self._url + '/products/%s' % self.name
[docs] def product_versions(self): """Get the list of product version for this Product. :returns: a (possibly-empty) list of ProductVersion objects. """ url = '/api/v1/products/%s/product_versions' % self.name result = self._get(url)['data'] product_versions = [] for product_version in result: product_version_id = product_version['id'] product_versions.append( ProductVersion( id_or_name=product_version_id, data=product_version ) ) return product_versions
[docs] def refresh(self): url = '/api/v1/products/' + self.name result = self._get(url) self.data = result['data']
[docs] def render(self): reviewer = self.relationships['default_docs_reviewer'] rule_set = str(self.relationships['state_machine_rule_set']['name']) return { 'name': str(self.name), 'short_name': str(self.short_name), 'bugzilla_product_name': str(self.bugzilla_product_name), 'description': str(self.description), 'valid_bug_states': [ str(state) for state in self.valid_bug_states ], 'default_docs_reviewer': str(reviewer) if reviewer else None, 'ftp_subdir': str(self.ftp_subdir), 'push_targets': [ str(target['name']) for target in self.relationships['push_targets'] ], 'state_machine_rule_set': rule_set, 'product_versions': [ product_version.render() for product_version in self.product_versions() ], }
def __getattr__(self, name): if self.data is None: self.refresh() return self.data.get(name) or self.data['attributes'][name] def __repr__(self): return 'Product(%s)' % self.name def __str__(self): return self.name