Ticket #1636: 0001-Removable-disk-Save-metadata-and-preview-dlo-9657.patch

File 0001-Removable-disk-Save-metadata-and-preview-dlo-9657.patch, 2.2 KB (added by martin.langhoff, 14 years ago)
  • src/jarabe/journal/model.py

    From 8caf92943bf285971b75e56f4dc611bc3c040cd6 Mon Sep 17 00:00:00 2001
    From: Martin Langhoff <martin@laptop.org>
    Date: Fri, 4 Dec 2009 17:22:25 +0000
    Subject: [PATCH 1/4] Removable disk: Save metadata and preview dlo#9657
    
    ---
     src/jarabe/journal/model.py |   31 ++++++++++++++++++++++++++++++-
     1 files changed, 30 insertions(+), 1 deletions(-)
    
    diff --git a/src/jarabe/journal/model.py b/src/jarabe/journal/model.py
    index 1b4e236..7814fe6 100644
    a b import os 
    1919from datetime import datetime
    2020import time
    2121import shutil
     22import tempfile
    2223from stat import S_IFMT, S_IFDIR, S_IFREG
    2324import traceback
    2425import re
    import gobject 
    2728import dbus
    2829import gconf
    2930import gio
     31import json
    3032
    3133from sugar import dispatch
    3234from sugar import mime
    def write(metadata, file_path='', update_mtime=True): 
    503505
    504506        destination_path = os.path.join(metadata['mountpoint'], file_name)
    505507        shutil.copy(file_path, destination_path)
    506         object_id = destination_path
    507508
     509        # issue our metadata massage on a copy
     510        md = metadata.copy()
     511        del md['mountpoint']
     512
     513        # if we ever write to places other than the root
     514        # keep in mind that the metadata file must be in the
     515        # same directory as the data file.
     516        md_path = os.path.join(metadata['mountpoint'],
     517                               '.'+file_name+'.metadata')
     518       
     519        preview = md['preview']
     520        preview_fname =  '.'+file_name+'.preview'
     521        preview_path = os.path.join(metadata['mountpoint'], preview_fname)
     522        md['preview'] = preview_fname
     523       
     524        # Write metadata atomically (on FSs that support it)
     525        (fh, fn) = tempfile.mkstemp(dir=metadata['mountpoint'])
     526        os.write(fh, json.dumps(md))
     527        os.close(fh)
     528        os.rename(fn, md_path)
     529
     530        # Write preview atomically
     531        (fh, fn) = tempfile.mkstemp(dir=metadata['mountpoint'])
     532        os.write(fh, preview)
     533        os.close(fh)
     534        os.rename(fn, preview_path)
     535
     536        object_id = destination_path
    508537    return object_id
    509538
    510539def _get_file_name(title, mime_type):