Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/storedata.py
diff options
context:
space:
mode:
authorolpc <olpc@xo-10-D5-61.localdomain>2010-06-22 22:37:31 (GMT)
committer olpc <olpc@xo-10-D5-61.localdomain>2010-06-22 22:37:31 (GMT)
commitb5c04ff29befec16f77f4674a95949bc0a36129f (patch)
treeba5d747749b7514da6bc64f72c280895104b1bf3 /storedata.py
Initial commitHEADmaster
Diffstat (limited to 'storedata.py')
-rw-r--r--storedata.py79
1 files changed, 79 insertions, 0 deletions
diff --git a/storedata.py b/storedata.py
new file mode 100644
index 0000000..d3eb14e
--- /dev/null
+++ b/storedata.py
@@ -0,0 +1,79 @@
+# Deals with storage of data and metadata.
+from sugar.datastore import datastore
+from canvas import canvas
+import time
+
+def unique_title(name):
+ if name == '':
+ name = 'Untitled'
+ objs, num_objects = datastore.find({'title':name, 'TimeLapse':'yes'})
+ if num_objects == 0:
+ return name
+ i = 1
+ while num_objects != 0:
+ i += 1
+ objs, num_objects = datastore.find({'title':name + str(i),
+ 'TimeLapse':'yes'})
+ return name + str(i)
+
+def change_description(title, new_discription):
+ dsobjects, num = datastore.find({'title':title, 'TimeLapse':'yes'})
+ for dsobject in dsobjects:
+ dsobject.metadata['description'] = new_discription
+ datastore.write(dsobject)
+ dsobject.destroy()
+
+def change_name(old_name, new_name):
+ dsobjects, num = datastore.find({'title':old_name, 'TimeLapse':'yes'})
+ for dsobject in dsobjects:
+ dsobject.metadata['title'] = new_name
+ dsobject.metadata['TimeLapsetitle'] = new_name
+ datastore.write(dsobject)
+ dsobject.destroy()
+
+
+def store_data(entry_title, mime_type, file_path):
+ file_dsobject = datastore.create()
+ file_dsobject.metadata['TimeLapse'] = 'yes'
+ file_dsobject.metadata['TimeLapsetitle'] = entry_title
+ file_dsobject.metadata['title'] = entry_title
+ file_dsobject.metadata['mime_type'] = mime_type
+ file_dsobject.metadata['description'] = ''
+ file_dsobject.set_file_path(file_path)
+ datastore.write(file_dsobject)
+ file_dsobject.destroy()
+
+class Collection:
+ def __init__(self, tab):
+ self.tab = tab
+ self.entry_title = unique_title(tab.jurnal_name)
+ if tab.video:
+ self.video_temp = "/tmp/tmp" + str(time.time()) + '.ogv'
+ if tab.audio:
+ self.audio_temp = "/tmp/tmp" + str(time.time()) + '.flac'
+ if tab.image:
+ self.image_temp = "/tmp/tmp" + str(time.time()) + '.png'
+ self.start()
+
+ def store_data(self):
+ if self.tab.video:
+ store_data(self.entry_title, 'video/ogg', self.video_temp)
+ if self.tab.audio:
+ store_data(self.entry_title, 'audio/ogg', self.audio_temp)
+ if self.tab.image:
+ store_data(self.entry_title, 'image/png', self.image_temp)
+ canvas.new_data_entry(self.entry_title)
+
+
+
+class LapseCollection:
+ def __init__(self, tab):
+ self.tab = tab
+ self.entry_title = unique_title(tab.jurnal_name)
+ self.lapse_temp = "/tmp/tmp" + str(time.time()) + '.mjpeg'
+ self.convert_temp = "/tmp/tmp" + str(time.time()) + '.ogg'
+ self.start()
+
+ def store_data(self):
+ store_data(self.entry_title, 'video/ogg', self.convert_temp)
+ canvas.new_data_entry(self.entry_title)