summaryrefslogtreecommitdiff
path: root/obsapi/core.py
diff options
context:
space:
mode:
authorScott Bahling <sbahling@suse.de>2016-02-21 14:02:08 +0100
committerScott Bahling <sbahling@suse.de>2016-02-21 14:02:08 +0100
commit622b176e622e96742610bbaf07cab645e6b208a1 (patch)
tree5dc3679a45b6ece31575dce98b977704f8bd85e1 /obsapi/core.py
parentcfdcaa52f656cfc80f9f2b021c262f4ea6663fda (diff)
downloadobsapi-622b176e622e96742610bbaf07cab645e6b208a1.tar.gz
obsapi-622b176e622e96742610bbaf07cab645e6b208a1.tar.xz
obsapi-622b176e622e96742610bbaf07cab645e6b208a1.zip
Refactor FileInfo object
Diffstat (limited to 'obsapi/core.py')
-rw-r--r--obsapi/core.py103
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):