def mk_site_filters(self, params): ''' Create global mobile-site filters Builds a list of filters that will be passed on to every moplate during rendering, to be applied to the extracted content of every mobile page. Note that these are applyed *after* any moplate-level filters, which are themselves applied after any component-level filters. This list can be altered or added to by subclasses. @param params : Site-level template parameters @type params : dict @return : Filters @rtype : list of callable ''' from mobilize.images import to_imgserve site_filters = [] if self.imgsubs: site_filters.append(lambda elem: filters.imgsub(elem, self.imgsubs)) if 'fullsite' in params and 'request_path' in params: desktop_url = 'http://%(fullsite)s%(request_path)s' % params site_filters.extend(( lambda elem: filters.absimgsrc(elem, desktop_url), to_imgserve, lambda elem: filters.abslinkfilesrc(elem, desktop_url), )) return site_filters
def test_abslinkfilesrc(self): from mobilize.filters import abslinkfilesrc html_in = '''<div> <p><a href="marketstudy.xls">Market Study</a></p> <p><a href="/whitepapers/fill-in-blank.doc">Make your own white paper!</a></p> <p><a href="/whitepapers/widgets.pdf">Widget White Paper</a></p> <p><a href="">HTML Pathology 101</a></p> </div>''' html_out ='''<div> <p><a href="http://example.com/about/marketstudy.xls">Market Study</a></p> <p><a href="/whitepapers/fill-in-blank.doc">Make your own white paper!</a></p> <p><a href="http://example.com/whitepapers/widgets.pdf">Widget White Paper</a></p> <p><a href="">HTML Pathology 101</a></p> </div>''' desktop_url = 'http://example.com/about/papers.html' extensions=['.xls', '.pdf'] elem = html.fromstring(html_in) abslinkfilesrc(elem, desktop_url, extensions) result = html.tostring(elem) self.assertSequenceEqual(normxml(html_out), normxml(result))