[PATCH] Import copy-to-journal

Phil Bordelon phil at thenexusproject.org
Fri Dec 21 21:45:12 EST 2007


---
 bin/Makefile.am     |    3 +-
 bin/copy-to-journal |   86 +++++++++++++++++++++++++++++++++++++++++++++++++++
 configure.ac        |    2 +-
 3 files changed, 89 insertions(+), 2 deletions(-)
 create mode 100755 bin/copy-to-journal

diff --git a/bin/Makefile.am b/bin/Makefile.am
index 764f0ba..d69e07f 100644
--- a/bin/Makefile.am
+++ b/bin/Makefile.am
@@ -1,4 +1,5 @@
 bin_SCRIPTS =	\
-	datastore-service	
+	datastore-service	\
+	copy-to-journal
 
 EXTRA_DIST = $(bin_SCRIPTS)
diff --git a/bin/copy-to-journal b/bin/copy-to-journal
new file mode 100755
index 0000000..4fabd94
--- /dev/null
+++ b/bin/copy-to-journal
@@ -0,0 +1,86 @@
+#!/usr/bin/env python
+#
+# Simple script to import a file to the datastore
+# Reinier Heeres, <reinier at heeres.eu>, 2007-12-20
+#
+# Modified by Phil Bordelon <phil at lsu.edu> 2007-12-20, 2007-12-21
+# to support adding metadata.  Note that the MIME-type is required,
+# as otherwise the datastore will not accept the file.
+
+import sys
+import os
+import optparse
+
+from sugar.datastore import datastore
+
+def build_option_parser():
+
+    usage = "Usage: %prog <file> -m MIMETYPE [-t TITLE] [-d DESC] [-T tag1 [-T tag2 ...]]"
+    parser = optparse.OptionParser(usage=usage)
+
+    parser.add_option("-t", "--title", action="store", dest="title",
+     help="Set the title of the journal entry to TITLE", metavar="TITLE",
+     default=None)
+    parser.add_option("-d", "--description", action="store",
+     dest="description", metavar="DESC",
+     help="Set the description of the journal entry to DESC",
+     default=None)
+    parser.add_option("-m", "--mimetype", action="store",
+     dest="mimetype", metavar="MIMETYPE",
+     help="Set the file's MIME-type to MIMETYPE",
+     default=None)
+    parser.add_option("-T", "--tag", action="append", dest="tag_list",
+     help="Add tag TAG to the journal entry's tags; this option can be repeated",
+     metavar="TAG")
+    return parser
+
+if __name__ == "__main__":
+
+    parser = build_option_parser()
+    options, args = parser.parse_args()
+    if len(args) < 1:
+        parser.print_help()
+        exit(0)
+    
+    fname = args[0]
+    absname = os.path.abspath(fname)
+    if not os.path.exists(absname):
+        print 'Error: File does not exist.'
+        parser.print_help()
+        exit(0)
+
+    if not options.mimetype:
+        print 'Error: No MIME-type given.'
+        parser.print_help()
+        exit(0)
+    
+    try:
+        entry = datastore.create()
+        entry.set_file_path(absname)
+
+        # Set the mimetype to the provided one.
+        entry.metadata['mime_type'] = options.mimetype
+
+        # If no title is given, use the filename.
+        if options.title:
+            entry.metadata['title'] = options.title
+        else:
+            entry.metadata['title'] = fname
+
+        # Use the description given, otherwise leave it blank.
+        if options.description:
+            entry.metadata['description'] = options.description
+
+        # Lastly, if any tags are given, combine them into a single string
+        # and save them.
+        if options.tag_list:
+            tag_string = " ".join(options.tag_list)
+            entry.metadata['tags'] = tag_string
+
+        datastore.write(entry)
+        print 'Created as %s' % (entry.object_id)
+    
+        entry.destroy()
+    
+    except Exception, e:
+        print 'Error: %s' % (e)
diff --git a/configure.ac b/configure.ac
index c60229a..93416ad 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,4 +1,4 @@
-AC_INIT([sugar-datastore],[0.2.2],[],[sugar-datastore])
+AC_INIT([sugar-datastore],[0.2.2.1],[],[sugar-datastore])
 
 AC_PREREQ([2.59])
 
-- 
1.5.2.5




More information about the Devel mailing list