From 66f97a637a860714ae7761cdc9690b89b8342206 Mon Sep 17 00:00:00 2001 From: Mike Hiretsky Date: Fri, 21 Oct 2016 17:33:10 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D0=B8=D0=BD=D0=B3=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pym/calculate/lib/utils/content.py | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/pym/calculate/lib/utils/content.py b/pym/calculate/lib/utils/content.py index 97bf172..54afd5e 100644 --- a/pym/calculate/lib/utils/content.py +++ b/pym/calculate/lib/utils/content.py @@ -362,12 +362,7 @@ class ContentsStorage(ContentsFormat): f.write("{CATEGORY}/{PN}:{SLOTONLY} ".format(**data['package'])) self._write_info(f, fn, data) - def restore(self, prefix='/'): - """ - Восстановить записи о файлах принадлежащих пакету. - :param prefix: - :return: - """ + def _get_packages(self, prefix='/'): for package, objinfos in groupby( sorted(readLinesFile(self.storage_file)), lambda x: x.partition(" ")[0]): @@ -377,10 +372,19 @@ class ContentsStorage(ContentsFormat): if package: package = package[-1] content = PkgContents(str(package), prefix) - for infoline in (x.strip().partition(' ')[2] for x in objinfos): - fn, data = self._identifyLine(infoline) - if path.exists(fn): - content.content[fn] = data - content.addDir(path.dirname(fn)) - os.utime(fn, (int(data['mtime']), int(data['mtime']))) - content.writeContents() + yield content, objinfos + + def restore(self, prefix='/'): + """ + Восстановить записи о файлах принадлежащих пакету. + :param prefix: + :return: + """ + for content, objinfos in self._get_packages(prefix): + for infoline in (x.strip().partition(' ')[2] for x in objinfos): + fn, data = self._identifyLine(infoline) + if path.exists(fn): + content.content[fn] = data + content.addDir(path.dirname(fn)) + os.utime(fn, (int(data['mtime']), int(data['mtime']))) + content.writeContents()