Changeset 3628

Show
Ignore:
Timestamp:
17/10/08 18:57:08 (3 months ago)
Author:
dmeyer
Message:

use fake media object for queries on media not available

Location:
trunk/beacon/src
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • trunk/beacon/src/db.py

    r3626 r3628  
    4646# beacon imports 
    4747from item import Item 
    48 from media import MediaList 
     48from media import MediaList, FakeMedia 
    4949 
    5050# get logging object 
     
    395395            m = self.medialist.get_by_beacon_id(i['parent']) 
    396396            if not m: 
    397                 raise AttributeError('bad media %s' % str(i['parent'])) 
     397                # media not mounted, make it an Item, not a File 
     398                result = self._db.query(type="media", id=i['parent'][1]) 
     399                if not result: 
     400                    raise AttributeError('bad media %s' % str(i['parent'])) 
     401                return create_item(i, FakeMedia(result[0]['name'])) 
    398402            return create_directory(i, m) 
    399403 
  • trunk/beacon/src/media.py

    r3614 r3628  
    4545log = logging.getLogger('beacon') 
    4646 
     47 
     48class FakeMedia(object): 
     49    """ 
     50    Media object for a media that is not available 
     51    """ 
     52    def __init__(self, name): 
     53        self.url = 'media://%s' % name 
     54 
     55    @property 
     56    def _beacon_media(self): 
     57        """ 
     58        Get _beacon_media which is this object itself. To avoid circular 
     59        references, use a property here. 
     60        """ 
     61        return self 
    4762 
    4863class Media(object):