[Sugar-devel] [PATCH] Journal: Enable saving metadata in external device - OLPC#10717

Simon Schampijer simon at schampijer.de
Fri Jun 24 07:38:15 EDT 2011


Thanks for the patch Gonzalo. The patch looks good and works well, 
tested here.

Acked-By: Simon Schampijer <simon at laptop.org>

Regards,
    Simon

On 06/17/2011 04:20 PM, godiard at sugarlabs.org wrote:
> From: Gonzalo Odiard<godiard at gmail.com>
>
> This patch enable saving metadata and renaming files in device
> with write permission.
> There are code to avoid break if the user change the title and other
> properties, like description, tags or favorites, because changing
> the title, the files used to save the meatata change the name too.
>
> Signed-off-by: Gonzalo Odiard<gonzalo at laptop.org>
> ---
>   src/jarabe/journal/expandedentry.py |   20 ++++++++++++++++++--
>   src/jarabe/journal/listview.py      |    3 ---
>   src/jarabe/journal/model.py         |    6 ++++--
>   3 files changed, 22 insertions(+), 7 deletions(-)
>
> diff --git a/src/jarabe/journal/expandedentry.py b/src/jarabe/journal/expandedentry.py
> index fe2f320..d293694 100644
> --- a/src/jarabe/journal/expandedentry.py
> +++ b/src/jarabe/journal/expandedentry.py
> @@ -18,6 +18,7 @@ import logging
>   from gettext import gettext as _
>   import StringIO
>   import time
> +import os
>
>   import hippo
>   import cairo
> @@ -406,7 +407,14 @@ class ExpandedEntry(hippo.CanvasBox):
>               needs_update = True
>
>           if needs_update:
> -            model.write(self._metadata, update_mtime=False)
> +            if self._metadata.get('mountpoint', '/') == '/':
> +                model.write(self._metadata, update_mtime=False)
> +            else:
> +                old_file_path = os.path.join(self._metadata['mountpoint'],
> +                        model.get_file_name(old_title,
> +                        self._metadata['mime_type']))
> +                model.write(self._metadata, file_path=old_file_path,
> +                        update_mtime=False)
>
>           self._update_title_sid = None
>
> @@ -420,7 +428,15 @@ class ExpandedEntry(hippo.CanvasBox):
>               self._metadata['keep'] = 0
>           else:
>               self._metadata['keep'] = 1
> -        model.write(self._metadata, update_mtime=False)
> +
> +        if self._metadata.get('mountpoint', '/') == '/':
> +            model.write(self._metadata, update_mtime=False)
> +        else:
> +            f_path = os.path.join(self._metadata['mountpoint'],
> +                    model.get_file_name(self._metadata['title'],
> +                    self._metadata['mime_type']))
> +            model.write(self._metadata, file_path=f_path,
> +                    update_mtime=False)
>
>           keep_icon.props.keep = self.get_keep()
>
> diff --git a/src/jarabe/journal/listview.py b/src/jarabe/journal/listview.py
> index 1bc8f8a..78e109a 100644
> --- a/src/jarabe/journal/listview.py
> +++ b/src/jarabe/journal/listview.py
> @@ -328,9 +328,6 @@ class BaseListView(gtk.Bin):
>           self._scroll_position = self.tree_view.props.vadjustment.props.value
>           logging.debug('ListView.__map_cb %r', self._scroll_position)
>
> -        is_editable = self._query.get('mountpoints', '') == '/'
> -        self.cell_title.props.editable = is_editable
> -
>       def _is_query_empty(self):
>           # FIXME: This is a hack, we shouldn't have to update this every time
>           # a new search term is added.
> diff --git a/src/jarabe/journal/model.py b/src/jarabe/journal/model.py
> index fd25681..2be2bde 100644
> --- a/src/jarabe/journal/model.py
> +++ b/src/jarabe/journal/model.py
> @@ -782,5 +782,7 @@ def get_unique_file_name(mount_point, file_name):
>
>
>   def is_editable(metadata):
> -    mountpoint = metadata.get('mountpoint', '/')
> -    return mountpoint == '/'
> +    if metadata.get('mountpoint', '/') == '/':
> +        return True
> +    else:
> +        return os.access(metadata['mountpoint'], os.W_OK)



More information about the Sugar-devel mailing list