示例#1
0
文件: tests.py 项目: bopopescu/focus
 def test_custom_output_dir(self):
     old_output_dir = settings.OUTPUT_DIR
     settings.OUTPUT_DIR = 'custom'
     output = u'<script type="text/javascript" src="/media/custom/js/3f33b9146e12.js" charset="utf-8"></script>'
     self.assertEqual(output, JsCompressor(self.js).output())
     settings.OUTPUT_DIR = ''
     output = u'<script type="text/javascript" src="/media/js/3f33b9146e12.js" charset="utf-8"></script>'
     self.assertEqual(output, JsCompressor(self.js).output())
     settings.OUTPUT_DIR = '/custom/nested/'
     output = u'<script type="text/javascript" src="/media/custom/nested/js/3f33b9146e12.js" charset="utf-8"></script>'
     self.assertEqual(output, JsCompressor(self.js).output())
     settings.OUTPUT_DIR = old_output_dir
示例#2
0
 def render(self, context):
     content = self.nodelist.render(context)
     if 'MEDIA_URL' in context:
         media_url = context['MEDIA_URL']
     else:
         media_url = settings.MEDIA_URL
     if self.kind == 'css':
         compressor = CssCompressor(content,
                                    xhtml=self.xhtml,
                                    media_url=media_url)
     if self.kind == 'js':
         compressor = JsCompressor(content,
                                   xhtml=self.xhtml,
                                   media_url=media_url)
     in_cache = cache.get(compressor.cachekey)
     if in_cache:
         return in_cache
     else:
         # do this to prevent dog piling
         in_progress_key = '%s.django_css.in_progress.%s' % (
             DOMAIN, compressor.cachekey)
         added_to_cache = cache.add(in_progress_key, True, 300)
         if added_to_cache:
             output = compressor.output()
             cache.set(
                 compressor.cachekey, output, 2591000
             )  # rebuilds the cache every 30 days if nothing has changed.
             cache.set(in_progress_key, False, 300)
         else:
             while cache.get(in_progress_key):
                 sleep(0.1)
             output = cache.get(compressor.cachekey)
         return output
示例#3
0
文件: tests.py 项目: bopopescu/focus
    def setUp(self):
        settings.COMPRESS = True
        self.css = """
        <link rel="stylesheet" href="/media/css/one.css" type="text/css" charset="utf-8">
        <style type="text/css">p { border:5px solid green;}</style>
        <link rel="stylesheet" href="/media/css/two.css" type="text/css" charset="utf-8">
        """
        self.cssNode = CssCompressor(self.css)

        self.js = """
        <script src="/media/js/one.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript" charset="utf-8">obj.value = "value";</script>
        """
        self.jsNode = JsCompressor(self.js)
示例#4
0
 def render(self, context):
     content = self.nodelist.render(context)
     if not settings.COMPRESS or not len(content.strip()):
         return content
     if self.kind == 'css':
         compressor = CssCompressor(content)
     if self.kind == 'js':
         compressor = JsCompressor(content)
     cachekey = "%s-%s" % (compressor.cachekey, self.mode)
     output = self.cache_get(cachekey)
     if output is None:
         try:
             if self.mode == OUTPUT_FILE:
                 output = compressor.output()
             else:
                 output = compressor.output_inline()
             self.cache_set(cachekey, output)
         except:
             from traceback import format_exc
             raise Exception(format_exc())
     return output