Changeset 201:574d0d75ee24

Show
Ignore:
Timestamp:
09/26/09 15:20:49 (6 months ago)
Author:
rgrp
Branch:
default
convert_revision:
svn:0ead1229-0713-0410-96cd-f668dbfad531/trunk@289
Message:

[shksprdata][l]: add in moby metadata and associated material.

  • refactor loading of text info into db and load moby metadata.
  • script creation of moby html and pdf in cache and link to these using Resource on relevant Material
    • support new locator_type cache on Resource
Location:
shakespeare
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • shakespeare/cache.py

    r169 r201  
    3535    def path_from_offset(self, offset): 
    3636        "Get full path of file in cache given by offset." 
     37        if offset.startswith('/'): 
     38            offset = offset[1:] 
    3739        return os.path.join(self.cache_path, offset) 
     40 
     41    def save(self, path, data): 
     42        fp = self.path_from_offset(path) 
     43        fo = open(fp, 'w') 
     44        fo.write(data) 
     45        fo.close() 
    3846 
    3947    def download_url(self, url, overwrite=False): 
  • shakespeare/model/__init__.py

    r196 r201  
    6262    Session.flush() 
    6363 
    64 def load_texts(fileobj, locator, norm_work_name=None): 
     64def load_material(fileobj, norm_work_name=None): 
    6565    if not norm_work_name: 
    6666        norm_work_name = lambda x: x 
    6767    cfgp = SafeConfigParser() 
    6868    cfgp.readfp(fileobj) 
     69    results = [] 
    6970    for section in cfgp.sections(): 
    7071        work_name = unicode(norm_work_name(section)) 
    7172        work = Work.by_name(work_name) 
    72         if work is None: 
    73             work = Work(name=work_name) 
     73        assert work is not None, work_name 
    7474 
    7575        item = Material.by_name(unicode(section)) 
     
    8181            setattr(item, key, val) 
    8282        item.work = work 
    83         if not item.resources: 
    84             res = Resource( 
    85                 locator_type=u'package', 
    86                 locator=locator(section), 
    87                 # TODO: use format correctly 
    88                 format=u'txt', 
    89                 material=item, 
    90                 ) 
     83        results.append(item) 
    9184        Session.flush() 
     85    return results 
     86 
  • shakespeare/model/dm.py

    r197 r201  
    100100            from StringIO import StringIO 
    101101            return StringIO(self.locator) 
     102        elif self.locator_type == u'cache': 
     103            import shakespeare.cache 
     104            cache = shakespeare.cache.default 
     105            fp = cache.path_from_offset(self.locator) 
     106            return open(fp) 
    102107        else: 
    103108            raise NotImplementedError 
  • shakespeare/tests/test_model.py

    r197 r201  
    6363        assert out.read() == sometext 
    6464 
     65    def test_get_stream_cache(self): 
     66        import shakespeare.cache 
     67        cache = shakespeare.cache.default 
     68        sometext = u'baa baa' 
     69        path = 'testcache.txt' 
     70        cache.save(path, sometext) 
     71        res = model.Resource(locator=path, locator_type=u'cache') 
     72        out = res.get_stream() 
     73        assert out.read() == sometext 
     74 
    6575 
    6676class TestStatistic: