Line 1: |
Line 1: |
− | {{Sugar Almanac}} | + | {{Almanac}} |
− | {{Sugar Almanac TOC}} | + | {{Almanac TOC}} |
| | | |
| = High Level Functionality of the Datastore = | | = High Level Functionality of the Datastore = |
Line 32: |
Line 32: |
| | | |
| === How do I provide a query to the datastore.find() method so that I can find datastore objects with a particular property? === | | === How do I provide a query to the datastore.find() method so that I can find datastore objects with a particular property? === |
| + | |
| + | '''IMPORTANT''' Do not rely on datastore.find() method in all cases, its behaviour could be changed in future releases;<br>there is only on thing for sure: to treat jobjects that were created within activity use:<br>datastore.find({'activity_id': <activity-id-of(and only of)-current-activity>, ...}) |
| + | |
| The datastore package includes a find() helper function that allows you to find things in the datastore. Belows is a very simple example use of find where I simply search for journal entries that have a title of 'file1.txt'. I think print out the title and file path for each retreived entry. | | The datastore package includes a find() helper function that allows you to find things in the datastore. Belows is a very simple example use of find where I simply search for journal entries that have a title of 'file1.txt'. I think print out the title and file path for each retreived entry. |
| | | |
Line 41: |
Line 44: |
| print "Number of Objects: " + str(num_objects) | | print "Number of Objects: " + str(num_objects) |
| | | |
− | for i in xrange (0, num_objects, 1): | + | for i in xrange (num_objects): |
| print "File Path: " + ds_objects[i].get_file_path() | | print "File Path: " + ds_objects[i].get_file_path() |
| print "Title: " + ds_objects[i].metadata['title'] | | print "Title: " + ds_objects[i].metadata['title'] |
Line 74: |
Line 77: |
| | | |
| #loop through and delete each datastore object found. | | #loop through and delete each datastore object found. |
− | for i in xrange (0, num_objects, 1): | + | for i in xrange (num_objects): |
| print 'DELETING ' + ds_objects[i].metadata['title'] + '...' | | print 'DELETING ' + ds_objects[i].metadata['title'] + '...' |
| ds_objects[i].destroy() | | ds_objects[i].destroy() |
Line 95: |
Line 98: |
| | | |
| #loop through list of values and print them out. | | #loop through list of values and print them out. |
− | for i in xrange(0, len(unique_val_array), 1): | + | for x in unique_val_array: |
− | print str(unique_val_array[i]) | + | print x |
| </pre> | | </pre> |
| | | |
Line 119: |
Line 122: |
| print '------------------------MOUNTS--------------------------------' | | print '------------------------MOUNTS--------------------------------' |
| ds_mounts = datastore.mounts() | | ds_mounts = datastore.mounts() |
− | for i in xrange(0, len(ds_mounts), 1): | + | for x in ds_mounts: |
| print '---------MOUNT---------' | | print '---------MOUNT---------' |
− | print 'title: '+ ds_mounts[i]['title'] | + | print 'title: '+ x['title'] |
− | print 'uri: '+ ds_mounts[i]['uri'] | + | print 'uri: '+ x['uri'] |
− | print 'id: ' + ds_mounts[i]['id'] | + | print 'id: ' + x['id'] |
| | | |
| </pre> | | </pre> |
Line 135: |
Line 138: |
| | | |
| === How do I access the metadata entries for a datastore object? === | | === How do I access the metadata entries for a datastore object? === |
− | Every DSObject created by datastore.create() has a metadata property. This property refers to a [[#Class: DSMetadata | DSMetadata object]], which contains the metadata for your datastore object. The code below shows how to read metadata values by referring to the metadata property of a DSObject. metadata is a Python dictionary object. | + | Every DSObject created by datastore.create() has a metadata property. This property refers to a [[Low-level_Activity_API#Meta_Data|DS Object]], which contains the metadata for your datastore object. The code below shows how to read metadata values by referring to the metadata property of a DSObject. metadata is a Python dictionary object. |
| <pre> | | <pre> |
| from sugar.datastore import datastore | | from sugar.datastore import datastore |
| ... | | ... |
| #my_dsobject is of type datastore.DSObject | | #my_dsobject is of type datastore.DSObject |
− | #object_id is a datastore object (returned from the datastore Chooser | + | #object_id is a datastore object (e.g., returned from the datastore Chooser) |
| my_dsobject = datastore.get(object_id) | | my_dsobject = datastore.get(object_id) |
| | | |
Line 146: |
Line 149: |
| print my_dsobject.metadata['description'] | | print my_dsobject.metadata['description'] |
| | | |
− | #other standard objects in the metadata dictionary include 'tags', 'title', 'mimetypes', ... | + | </pre> |
| + | This code snippet shows how to create a pixbuf from the preview entry in the datastore: |
| + | <pre> |
| + | from sugar.datastore import datastore |
| + | ... |
| + | #my_dsobject is of type datastore.DSObject |
| + | #object_id is a datastore object |
| + | my_dsobject = datastore.get(object_id) |
| + | |
| + | pixbufloader = gtk.gdk.pixbuf_loader_new_with_mime_type('image/png') |
| + | #Access the 'preview' property |
| + | #Note that the preview image is 300x225 |
| + | pixbufloader.write(dsobject.metadata['preview']) |
| + | pixbufloader.close() |
| + | pixbuf = pixbufloader.get_pixbuf() |
| </pre> | | </pre> |
| | | |