diff options
author | florent <florent@toopy.org> | 2011-12-20 00:50:32 (GMT) |
---|---|---|
committer | florent <florent@toopy.org> | 2011-12-20 00:50:32 (GMT) |
commit | f16ed907ae964b7d6229dc81f93166c39402ad28 (patch) | |
tree | c0f379ba6fa2a1106223da7958edfd5d32a12499 | |
parent | 20948ef3e63dc64a4196066e44a74953a73f07e2 (diff) |
implement 3 basic moulinette methods -> remains the extract part + full moulinette review
-rw-r--r-- | datastore_reader/_datastore_reader.py | 35 |
1 files changed, 23 insertions, 12 deletions
diff --git a/datastore_reader/_datastore_reader.py b/datastore_reader/_datastore_reader.py index 6c6b92b..35cde1e 100644 --- a/datastore_reader/_datastore_reader.py +++ b/datastore_reader/_datastore_reader.py @@ -1,5 +1,6 @@ +# -*- coding: utf-8 -*- # python import -import os +import json, os from datetime import datetime # ds reader import @@ -12,11 +13,14 @@ def parse_meta_file(meta_path): :param meta_path: '/somewhere/here/tmp/.../store/file.metadata' :return meta_dict: {'activity': 'paint', 'timestamp': '1324136292', ...} - >>> parse_meta_file('data/.../../.metadata') - {'activity': 'paint', 'timestamp': '1324136292'} + >>> datastore_path = './data/tmp/demo/home/olpc/.sugar/default/datastore/store' + >>> meta_path = os.path.join(datastore_path, 'demo.metadata') + >>> parse_meta_file(meta_path) + {u'activity_id': u'ec04b5191d6a0468ff1c23d4233a2e4438517a1a', u'title_set_by_user': u'0', u'uid': u'2f84e066-39d8-4e36-b389-79e430082ca0', u'vid': 2.0, u'title': u'Activit\\xe9 M\\xe9moriser', u'timestamp': 1308067572, u'mtime': u'2011-06-14T16:06:12.760893', u'keep': 0, u'icon-color': u'#00B20D,#FF8F00', u'activity': u'org.laptop.Memorize', u'mime_type': u''} """ - pass + with open(meta_path, 'rb') as f: + return json.load(f, 'utf-8') def list_meta_files(datastore_path): @@ -27,11 +31,14 @@ def list_meta_files(datastore_path): :return meta_path: ex.: ['/somewhere/here/tmp/.../store/file.metadata', ..] >>> path = './data/tmp/demo/home/olpc/.sugar/default/datastore/store' - >>> res = [meta_path for meta_path in list_meta_files(path)] - res[0] = os.path.join(path, 'demo.metadata') + >>> [meta_path for meta_path in list_meta_files(path)] + ['./data/tmp/demo/home/olpc/.sugar/default/datastore/store/demo.metadata'] """ - pass + for file_name in os.listdir(datastore_path): + name, ext = os.path.splitext(file_name) + if ext == '.metadata': + yield os.path.join(datastore_path, file_name) def extract_backup(backup_path): @@ -48,7 +55,7 @@ def extract_backup(backup_path): pass -def list_backups(working_dir=None): +def list_backups(working_dir): """Iters serial nb and path tuples according the backup files of the working dir, ex.: [('serial_1': '/somewhere/here')] @@ -57,11 +64,15 @@ def list_backups(working_dir=None): :param working_dir: for testing issue otherwise use the value from the config file. - >>> res = [(s, p) for s, p in list_backup(working_dir='data')] - res[0] = ('demo', './data/demo.bz2') + >>> [(s, p) for s, p in list_backups('data')] + [('demo', 'data/demo.tar.bz2')] """ - pass + for file_name in os.listdir(working_dir): + name_tar, ext_bz2 = os.path.splitext(file_name) + name, ext_tar = os.path.splitext(name_tar) + if ext_bz2 == '.bz2' and ext_tar == '.tar': + yield (name, os.path.join(working_dir, file_name)) def read_backups(): @@ -80,7 +91,7 @@ def read_backups(): # header line writer.writerow(c.moulinette.columns) # list backups - for backup_serial, backup_path in list_backups(): + for backup_serial, backup_path in list_backups(c.main.working_dir): # extract backup datastore_path = extract_backup(backup_path) # list metadata |