Changeset 197:cc2f0c5d2514

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

[multi,resource][s]: fix major bug in multiviews (was not working at all!) and get related test working.

  • To get test working create new Resource locator_type (inline) which allows for storing of text inline
    • model/dm.py, tests/test_model.py: update Resource.get_stream
    • use this type when setting up standard fixtures tests/init.py (this allows us multi functional test to run)
    • format.py: fix up conversion to unicode (only do it when necessary -- not needed for inline resource fileobj for example as already unicode)
Location:
shakespeare
Files:
6 modified

Legend:

Unmodified
Added
Removed
  • shakespeare/controllers/multi.py

    r185 r197  
    2424        text1 = request.params.get('text_1', None) 
    2525        text2 = request.params.get('text_2', None) 
    26         if not text1 or text2: 
     26        if not text1 or not text2: 
    2727            c.error = 'Texts incorrectly specified' 
    2828            return render('multi/view.html') 
     
    3434        for item in textlist: 
    3535            tfileobj = item.get_text() 
    36             # hack for time being ... 
    37             if item.format == 'mkd': 
    38                 ttext = h.markdown(tfileobj.read()) 
    39             else: 
    40                 ttext = shakespeare.format.format_text(tfileobj, format) 
     36            # TODO: check format 
     37            ttext = shakespeare.format.format_text(tfileobj, format) 
    4138            texthtml[item.name] = genshi.HTML(ttext) 
    4239        c.frame_width = 100.0/numtexts - 4.0 
  • shakespeare/format.py

    r122 r197  
    4343    def format(self, file): 
    4444        self.file = file 
    45         out = unicode(self.file.read(), 'utf-8') 
     45        out = self.file.read() 
     46        if not isinstance(out, unicode): 
     47            out = unicode(out, 'utf-8') 
    4648        out = self.escape_chars(out) 
    4749        out = \ 
  • shakespeare/model/dm.py

    r193 r197  
    3333    # url or path 
    3434    Column('locator', UnicodeText), 
    35     # types: url, cache, package, disk 
     35    # types: url, cache, package, disk, inline 
    3636    Column('locator_type', UnicodeText, default=u'url'), 
    3737    ) 
     
    9797            fileobj = pkg_resources.resource_stream(package, path) 
    9898            return fileobj 
     99        elif self.locator_type == u'inline': 
     100            from StringIO import StringIO 
     101            return StringIO(self.locator) 
    99102        else: 
    100103            raise NotImplementedError 
  • shakespeare/tests/__init__.py

    r192 r197  
    7676                    work=sonnet18_work, 
    7777                    ) 
     78        if not sonnet18.resources: 
     79            res = model.Resource(locator_type=u'inline', 
     80                locator=sonnet18_text) 
     81            sonnet18.resources.append(res) 
    7882        assert len(sonnet18_work.materials)==1 
    7983        model.Session.flush() 
  • shakespeare/tests/functional/test_multi.py

    r185 r197  
    3030        # TODO: 2009-07-16 this should be uncommented 
    3131        # however form setting does not seem to work (don't know why!) 
    32         # assert not 'Error' in res, res 
     32        assert not 'Error' in res, res 
    3333    
    3434    def test_view(self): 
  • shakespeare/tests/test_model.py

    r193 r197  
    5656 
    5757 
     58class TestResource: 
     59    def test_get_stream_inline(self): 
     60        sometext = u'aaaaaaaaaaaaa' 
     61        res = model.Resource(locator=sometext, locator_type=u'inline') 
     62        out = res.get_stream() 
     63        assert out.read() == sometext 
     64 
     65 
    5866class TestStatistic: 
    5967