summaryrefslogtreecommitdiff
path: root/obsapi/core.py
diff options
context:
space:
mode:
Diffstat (limited to 'obsapi/core.py')
-rw-r--r--obsapi/core.py45
1 files changed, 21 insertions, 24 deletions
diff --git a/obsapi/core.py b/obsapi/core.py
index 284199c..0148796 100644
--- a/obsapi/core.py
+++ b/obsapi/core.py
@@ -5,6 +5,9 @@ from requests.auth import HTTPBasicAuth
from io import BytesIO
from lxml import etree
from collections import namedtuple
+from datetime import datetime
+from obsapi.formatter import Formatter
+
try:
import osc.conf as osc_conf
osc_conf.get_config()
@@ -41,6 +44,8 @@ class FileInfo(object):
"Summary : {summary}"
"Description :"
"{description}"
+ "Provides :"
+ "{provides}"
)
src_str_template = ("{filename}"
@@ -58,36 +63,23 @@ class FileInfo(object):
def __init__(self, xml):
self.finfo = etree.fromstring(xml)
self.filename = self.finfo.get('filename', None)
+ self.formatter = Formatter(self)
@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,
- )
+ info = {'filename': [self.filename]}
+ for item in self.finfo:
+ info.setdefault(item.tag, []).append(item.text)
- else:
- return dict(filename=self.filename,
- size=self.size,
- mtime=self.mtime,
- )
+ for item, value in info.items():
+ if len(value) == 1:
+ info[item] = value[0]
+ # info[item] = '\n'.join(value)
- def __str__(self):
- if self.is_src:
- return self.src_str_template.format(**self.info)
+ return info
- if self.is_pkg:
- return self.pkg_str_template.format(**self.info)
-
- return self.file_str_template.format(**self.info)
+ def __str__(self):
+ return self.formatter.render()
def __getattr__(self, attr):
try:
@@ -101,6 +93,11 @@ class FileInfo(object):
return values
@property
+ def datetime(self):
+ if self.mtime:
+ return datetime.fromtimestamp(int(self.mtime))
+
+ @property
def xml(self):
return etree.tostring(self.finfo)