From 3ea5bd07c23838b1a96357089e8173a094dfaed1 Mon Sep 17 00:00:00 2001 From: Scott Bahling Date: Thu, 3 Mar 2016 02:19:13 +0100 Subject: Add formatter class and extend FileInfo class --- obsapi/core.py | 45 +++++++++++++++++++++------------------------ 1 file changed, 21 insertions(+), 24 deletions(-) (limited to 'obsapi/core.py') 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: @@ -100,6 +92,11 @@ class FileInfo(object): else: return values + @property + def datetime(self): + if self.mtime: + return datetime.fromtimestamp(int(self.mtime)) + @property def xml(self): return etree.tostring(self.finfo) -- cgit v1.2.3