Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorflorent <florent@toopy.org>2011-12-20 00:50:32 (GMT)
committer florent <florent@toopy.org>2011-12-20 00:50:32 (GMT)
commitf16ed907ae964b7d6229dc81f93166c39402ad28 (patch)
treec0f379ba6fa2a1106223da7958edfd5d32a12499
parent20948ef3e63dc64a4196066e44a74953a73f07e2 (diff)
implement 3 basic moulinette methods -> remains the extract part + full moulinette review
-rw-r--r--datastore_reader/_datastore_reader.py35
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