Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWalter Bender <walter.bender@gmail.com>2012-11-15 01:55:44 (GMT)
committer Walter Bender <walter.bender@gmail.com>2012-11-15 01:55:44 (GMT)
commit8309677b5b1d37224e17af584f0339b238d0a79d (patch)
tree87a3984170ddaf35bd8c1203adab81cdb27def3d
parent4c12b34363163822bc05cefc4a39bd4f9534c058 (diff)
parse backup datastores
-rwxr-xr-xdsparse.py100
1 files changed, 58 insertions, 42 deletions
diff --git a/dsparse.py b/dsparse.py
index 9b8671a..0ee919f 100755
--- a/dsparse.py
+++ b/dsparse.py
@@ -29,48 +29,64 @@ class ParseMain():
for path in glob.glob(os.path.join(abspath, '*')):
if isdsdir(path):
self._dsdict[os.path.basename(path)] = []
- dsobjdirs = glob.glob(
- os.path.join(path, DIROFINTEREST, '??'))
- for dsobjdir in dsobjdirs:
- dsobjs = glob.glob(os.path.join(dsobjdir, '*'))
- for dsobj in dsobjs:
- self._dsdict[os.path.basename(path)].append({})
- activity = isactivity(dsobj)
- if not activity:
- self._dsdict[os.path.basename(path)][-1][
- 'activity'] = 'media object'
- else:
- self._dsdict[os.path.basename(path)][-1][
- 'activity'] = activity
- if activity == 'TurtleArtActivity':
- score = hasturtleblocks(dsobj)
- if score:
- self._dsdict[os.path.basename(path)][-1][
- 'score'] = score
- if activity == 'AbiWordActivity':
- score = hasmenuitems(dsobj)
- if score:
- self._dsdict[os.path.basename(path)][-1][
- 'score'] = score
- mime_type = hascomponent(dsobj, 'mime_type')
- if mime_type:
- self._dsdict[os.path.basename(path)][-1][
- 'mime_type'] = mime_type
- mtime = hascomponent(dsobj, 'mtime')
- if mtime:
- self._dsdict[os.path.basename(path)][-1][
- 'mtime'] = mtime
- creation_time = hascomponent(dsobj, 'creation_time')
- if creation_time:
- self._dsdict[os.path.basename(path)][-1][
- 'creation_time'] = \
- time.strftime('%Y-%m-%dT%H:%M:%S',
- time.gmtime(float(creation_time)))
- activity_count = hascomponent(dsobj, 'activity count')
- if activity_count:
- self._dsdict[os.path.basename(path)][-1][
- 'activity count'] = activity_count
-
+ self.dsobj_list = []
+ # First, parse datastore-current; then look for
+ # additional objects in the backup dirs
+ # FIXME: go from most recent to least recent
+ alldirs = glob.glob(os.path.join(path, '*'))
+ self._parse_dir(path, DIROFINTEREST)
+ for directory in alldirs:
+ if directory != DIROFINTEREST:
+ self._parse_dir(path, directory)
+ self._output()
+
+ def _parse_dir(self, path, directory):
+ dsobjdirs = glob.glob(
+ os.path.join(path, directory, '??'))
+ for dsobjdir in dsobjdirs:
+ dsobjs = glob.glob(os.path.join(dsobjdir, '*'))
+ for dsobj in dsobjs:
+ basename = os.path.basename(dsobj)
+ if not basename in self.dsobj_list:
+ self.dsobj_list.append(basename)
+ else:
+ continue # don't overwrite current object
+ self._dsdict[os.path.basename(path)].append({})
+ activity = isactivity(dsobj)
+ if not activity:
+ self._dsdict[os.path.basename(path)][-1]['activity'] = \
+ 'media object'
+ else:
+ self._dsdict[os.path.basename(path)][-1]['activity'] = \
+ activity
+ if activity == 'TurtleArtActivity':
+ score = hasturtleblocks(dsobj)
+ if score:
+ self._dsdict[os.path.basename(path)][-1]['score'] = \
+ score
+ if activity == 'AbiWordActivity':
+ score = hasmenuitems(dsobj)
+ if score:
+ self._dsdict[os.path.basename(path)][-1]['score'] = \
+ score
+ mime_type = hascomponent(dsobj, 'mime_type')
+ if mime_type:
+ self._dsdict[os.path.basename(path)][-1]['mime_type'] = \
+ mime_type
+ mtime = hascomponent(dsobj, 'mtime')
+ if mtime:
+ self._dsdict[os.path.basename(path)][-1]['mtime'] = mtime
+ creation_time = hascomponent(dsobj, 'creation_time')
+ if creation_time:
+ self._dsdict[os.path.basename(path)][-1]['creation_time'] \
+ = time.strftime('%Y-%m-%dT%H:%M:%S',
+ time.gmtime(float(creation_time)))
+ activity_count = hascomponent(dsobj, 'activity count')
+ if activity_count:
+ self._dsdict[os.path.basename(path)][-1]['activity count'] \
+ = activity_count
+
+ def _output(self):
for k, v in self._dsdict.iteritems():
for i in v:
line = '%s, ' % (k)