diff options
| author | Scott Bahling <sbahling@suse.de> | 2016-02-21 14:02:08 +0100 |
|---|---|---|
| committer | Scott Bahling <sbahling@suse.de> | 2016-02-21 14:02:08 +0100 |
| commit | 622b176e622e96742610bbaf07cab645e6b208a1 (patch) | |
| tree | 5dc3679a45b6ece31575dce98b977704f8bd85e1 /obsapi | |
| parent | cfdcaa52f656cfc80f9f2b021c262f4ea6663fda (diff) | |
| download | obsapi-622b176e622e96742610bbaf07cab645e6b208a1.tar.gz obsapi-622b176e622e96742610bbaf07cab645e6b208a1.tar.xz obsapi-622b176e622e96742610bbaf07cab645e6b208a1.zip | |
Refactor FileInfo object
Diffstat (limited to 'obsapi')
| -rw-r--r-- | obsapi/core.py | 103 |
1 files changed, 49 insertions, 54 deletions
diff --git a/obsapi/core.py b/obsapi/core.py index ebbe016..284199c 100644 --- a/obsapi/core.py +++ b/obsapi/core.py @@ -25,18 +25,10 @@ EMPTY = EMPTYTREE.xpath('.')[0] class FileInfo(object): - attributes = ['name', - 'version', - 'release', - 'arch', - 'summary', - 'description', - 'source', - 'size', - 'mtime', - 'provides', - 'requires', - ] + file_str_template = ("{filename}" + "size : {size}" + "mtime : {mtime}" + ) pkg_str_template = ("{filename}" "Name : {name}" @@ -63,58 +55,61 @@ class FileInfo(object): "{description}" ) - file_str_template = ("{filename}" - "size : {size}" - "mtime : {mtime}" - ) - def __init__(self, xml): - finfo = etree.fromstring(xml) - self.filename = finfo.get('filename') - for attr in self.attributes: - if attr in ('provides', 'requires'): - try: - self.set_list_attr(attr, finfo.findall(attr)) - except: - self.set_attr(attr, []) - continue - try: - value = finfo.find(attr).text - self.set_attr(attr, value) - except: - self.set_attr(attr, '') + self.finfo = etree.fromstring(xml) + self.filename = self.finfo.get('filename', None) + + @property + def info(self): + if self.is_pkg: + return dict(filename=self.filename, + name=self.name, + version=self.version, + release=self.release, + arch=self.arch, + size=self.size, + source=self.source, + mtime=self.mtime, + summary=self.summary, + description=self.description, + ) - def __str__(self): - opts = dict(filename=self.filename, - name=self.name, - version=self.version, - release=self.release, - arch=self.arch, - size=self.size, - source=self.source, - mtime=self.mtime, - summary=self.summary, - description=self.description, - ) - - if self.arch == 'src': - return self.src_str_template.format(**opts) - elif self.source: - return self.pkg_str_template.format(**opts) else: - return self.file_str_template.format(**opts) + return dict(filename=self.filename, + size=self.size, + mtime=self.mtime, + ) + + def __str__(self): + if self.is_src: + return self.src_str_template.format(**self.info) + + if self.is_pkg: + return self.pkg_str_template.format(**self.info) - def set_list_attr(self, attr, elements): - items = [element.text for element in elements] - setattr(attr, items) + return self.file_str_template.format(**self.info) - def set_attr(self, attr, value): - setattr(self, attr, value) + def __getattr__(self, attr): + try: + values = [value.text for value in self.finfo.findall(attr)] + except: + values = [None] + + if len(values) == 1: + return values[0] + else: + return values + + @property + def xml(self): + return etree.tostring(self.finfo) @property def is_pkg(self): if self.arch: return True + else: + return False @property def is_src(self): |
