From 4c728c57c8a8c4dec95636b029646501c2fe3810 Mon Sep 17 00:00:00 2001 From: Gonzalo Odiard Date: Wed, 08 May 2013 12:21:06 +0000 Subject: Add information about who shared the object Signed-off-by: Gonzalo Odiard --- diff --git a/activity.py b/activity.py index 69ea814..e40ead8 100644 --- a/activity.py +++ b/activity.py @@ -169,8 +169,13 @@ class JournalShare(activity.Activity): logging.debug('ObjectChooser: %r', chooser.get_selected_object()) jobject = chooser.get_selected_object() + # add the information about the sharer + jobject.metadata['shared_by'] = json.dumps( + utils.get_user_data()) + if jobject and jobject.file_path: if self._master: + datastore.write(jobject) self._jm.append_to_shared_items(jobject.object_id) else: tmp_path = os.path.join(self._activity_root, @@ -454,6 +459,8 @@ class JournalManager(GObject.GObject): title = '' desc = '' comment = [] + shared_by = {} + downloaded_by = [] object_id = dsobj.object_id if hasattr(dsobj, 'metadata'): if 'title' in dsobj.metadata: @@ -465,12 +472,19 @@ class JournalManager(GObject.GObject): comment = json.loads(dsobj.metadata['comments']) except: comment = [] + if 'shared_by' in dsobj.metadata: + shared_by = json.loads(dsobj.metadata['shared_by']) + if 'downloaded_by' in dsobj.metadata: + downloaded_by = json.loads( + dsobj.metadata['downloaded_by']) else: logging.debug('dsobj has no metadata') utils.package_ds_object(dsobj, self._instance_path) results.append({'title': str(title), 'desc': str(desc), - 'comment': comment, 'id': str(object_id)}) + 'comment': comment, 'id': str(object_id), + 'shared_by': shared_by, + 'downloaded-by': downloaded_by}) logging.error(results) return json.dumps(results) diff --git a/utils.py b/utils.py index 65fa98f..637d411 100644 --- a/utils.py +++ b/utils.py @@ -26,6 +26,8 @@ import logging import websocket import tempfile +from sugar3 import profile + CHUNK_SIZE = 2048 @@ -76,6 +78,21 @@ class Uploader(GObject.GObject): GObject.idle_add(self.emit, 'uploaded') +def get_user_data(): + """ + Create this structure: + {"from": "Walter Bender", "icon": ["#FFC169", "#FF2B34"]} + used to identify the owner of a shared object + is compatible with how the comments are saved in + http://wiki.sugarlabs.org/go/Features/Comment_box_in_journal_detail_view + """ + xo_color = profile.get_color() + data = {} + data['from'] = profile.get_nick_name() + data['icon'] = [xo_color.get_stroke_color(), xo_color.get_fill_color()] + return data + + def package_ds_object(dsobj, destination_path): """ Creates a zipped file with the file associated to a journal object, @@ -110,6 +127,7 @@ def package_ds_object(dsobj, destination_path): for key in dsobj.metadata.keys(): if key not in ('object_id', 'preview', 'progress'): metadata[key] = dsobj.metadata[key] + metadata_file.write(json.dumps(metadata)) metadata_file.close() diff --git a/web/index.html b/web/index.html index a2f133c..66f58cf 100644 --- a/web/index.html +++ b/web/index.html @@ -8,12 +8,14 @@ local = (window.location.hostname == '0.0.0.0'); - function add_tr(id, title, desc) { + function add_tr(id, title, desc, shared_by) { $('#journaltable').append("" + ""+ ""+ ""+ ""+ + (shared_by.from != '' ? "" : "") + ""+ (!local ? "
" + title + "
Shared by " + shared_by.from + + "
" + desc + "
"+ ""+ @@ -34,7 +36,8 @@ $.getJSON("/datastore/selected.json", function(selected) { for (var i = 0; i < selected.length; i++) { id = selected[i].id; - add_tr(id, selected[i].title, selected[i].desc); + add_tr(id, selected[i].title, selected[i].desc, + selected[i].shared_by); } if (selected.length == 0) { @@ -59,7 +62,8 @@ for (var i = 0; i < new_list.length; i++) { id = new_list[i].id; if ($('#' + id).length == 0) { - add_tr(id, new_list[i].title, new_list[i].desc); + add_tr(id, new_list[i].title, new_list[i].desc, + new_list[i].shared_by); } } }; -- cgit v0.9.1