Ejemplo n.º 1
0
    def get_dev_output(self, name):
        config = OFFLINE_MANIFEST[name]
        if isinstance(config, (tuple, list)):
            config = {'cache': config}
        elif isinstance(config, basestring):
            config = {'cache': (config, )}

        cache_pattern = prepare_patterns(get_tuple(config, 'cache', '.*'),
                                         'OFFLINE_MANIFEST[%s]' % name)
        exclude = prepare_patterns(get_tuple(config, 'exclude'),
                                   "OFFLINE_MANIFEST[%s]['exclude']" % name)
        cache = set()
        for item in get_media_mapping().keys():
            if cache_pattern.match(item) and not exclude.match(item):
                cache.add(item)
        cache -= set(OFFLINE_MANIFEST.keys())

        # include raw url entries in cache section
        cache_urls = config.get('cache_urls', [])

        network = get_tuple(config, 'network', ('*', ))
        fallback = get_tuple(config, 'fallback')

        template = get_tuple(
            config, 'template') + ('mediagenerator/manifest/' + name,
                                   'mediagenerator/manifest/base.manifest')

        content = render_to_string(
            template, {
                'cache': cache,
                'cache_urls': cache_urls,
                'network': network,
                'fallback': fallback,
            })
        return content, 'text/cache-manifest'
Ejemplo n.º 2
0
    def get_dev_output(self, name):
        config = OFFLINE_MANIFEST[name]
        if isinstance(config, (tuple, list)):
            config = {'cache': config}
        elif isinstance(config, basestring):
            config = {'cache': (config,)}

        cache_pattern = prepare_patterns(get_tuple(config, 'cache', '.*'),
                                         'OFFLINE_MANIFEST[%s]' % name)
        exclude = prepare_patterns(get_tuple(config, 'exclude'),
                                   "OFFLINE_MANIFEST[%s]['exclude']" % name)
        cache = set()
        for item in get_media_mapping().keys():
            if cache_pattern.match(item) and not exclude.match(item):
                cache.add(item)
        cache -= set(OFFLINE_MANIFEST.keys())

        # include raw url entries in cache section
        cache_urls = config.get('cache_urls', [])

        network = get_tuple(config, 'network', ('*',))
        fallback = get_tuple(config, 'fallback')

        template = get_tuple(config, 'template') + (
            'mediagenerator/manifest/' + name,
            'mediagenerator/manifest/base.manifest'
        )

        content = render_to_string(template, {
            'cache': cache, 'cache_urls': cache_urls, 'network': network, 'fallback': fallback,
        })
        return content, 'text/cache-manifest'
Ejemplo n.º 3
0
    def get_dev_output(self, name):
        config = OFFLINE_MANIFEST[name]
        if isinstance(config, (tuple, list)):
            config = {"cache": config}
        elif isinstance(config, basestring):
            config = {"cache": (config,)}

        cache_pattern = prepare_patterns(get_tuple(config, "cache", ".*"), "OFFLINE_MANIFEST[%s]" % name)
        exclude = prepare_patterns(get_tuple(config, "exclude"), "OFFLINE_MANIFEST[%s]['exclude']" % name)
        cache = set()
        for item in get_media_mapping().keys():
            if cache_pattern.match(item) and not exclude.match(item):
                cache.add(item)
        cache -= set(OFFLINE_MANIFEST.keys())

        network = get_tuple(config, "network", ("*",))
        fallback = get_tuple(config, "fallback")

        template = get_tuple(config, "template") + (
            "mediagenerator/manifest/" + name,
            "mediagenerator/manifest/base.manifest",
        )

        content = render_to_string(template, {"cache": cache, "network": network, "fallback": fallback})
        return content, "text/cache-manifest"
Ejemplo n.º 4
0
from django.conf import settings
from hashlib import sha1
from mediagenerator.base import Generator
from mediagenerator.utils import get_media_dirs, find_file, prepare_patterns
from mimetypes import guess_type
import os
import sys

COPY_MEDIA_FILETYPES = getattr(
    settings, 'COPY_MEDIA_FILETYPES',
    ('gif', 'jpg', 'jpeg', 'png', 'svg', 'svgz', 'ico', 'swf', 'ttf', 'otf',
     'eot', 'woff', 'json', 'eqcss'))

IGNORE_PATTERN = prepare_patterns(
    getattr(settings, 'IGNORE_MEDIA_COPY_PATTERNS', ()),
    'IGNORE_MEDIA_COPY_PATTERNS')


class CopyFiles(Generator):
    def get_dev_output(self, name):
        path = find_file(name)
        fp = open(path, 'rb')
        content = fp.read()
        fp.close()
        mimetype = guess_type(path)[0]
        return content, mimetype

    def get_dev_output_names(self):
        media_files = {}
        for root in get_media_dirs():
            self.collect_copyable_files(media_files, root)
Ejemplo n.º 5
0
import posixpath
from hashlib import sha1

from django.conf import settings
from mimetypes import guess_type
from base64 import b64encode
from mediagenerator import settings as appsettings
from mediagenerator.generators.bundles.base import FileFilter
from mediagenerator.utils import prepare_patterns, find_file
from mediagenerator.utils import media_urls

JS_URL_PREFIX = getattr(settings, "MEDIA_JS_URL_FILTER_PREFIX", r"OTA\.")
GENERATE_DATA_URIS = getattr(settings, "GENERATE_DATA_URIS", False)
MAX_DATA_URI_FILE_SIZE = getattr(settings, "MAX_DATA_URI_FILE_SIZE", 12 * 1024)
IGNORE_PATTERN = prepare_patterns(
    getattr(settings, "IGNORE_DATA_URI_PATTERNS", (r".*\.htc",)), "IGNORE_DATA_URI_PATTERNS"
)


class UrlFixFilter(FileFilter):
    def get_dev_output(self, name, variation, content=None):

        if not content:
            content = super(UrlFixFilter, self).get_dev_output(name, variation)

        if name.startswith("admin-media"):
            return content

        rewriter = UrlRerwiter(name)
        return rewriter.rewrite(content)
Ejemplo n.º 6
0
import posixpath
import re

url_re = re.compile(r'url\s*\(["\']?([\w\.][^:]*?)["\']?\)', re.UNICODE)

# Whether to rewrite CSS URLs, at all
REWRITE_CSS_URLS = getattr(settings, 'REWRITE_CSS_URLS', True)
# Whether to rewrite CSS URLs relative to the respective source file
# or whether to use "absolute" URL rewriting (i.e., relative URLs are
# considered absolute with regards to STATICFILES_URL)
REWRITE_CSS_URLS_RELATIVE_TO_SOURCE = getattr(settings,
    'REWRITE_CSS_URLS_RELATIVE_TO_SOURCE', True)

GENERATE_DATA_URIS = getattr(settings, 'GENERATE_DATA_URIS', False)
MAX_DATA_URI_FILE_SIZE = getattr(settings, 'MAX_DATA_URI_FILE_SIZE', 12 * 1024)
IGNORE_PATTERN = prepare_patterns(getattr(settings,
   'IGNORE_DATA_URI_PATTERNS', (r'.*\.htc',)), 'IGNORE_DATA_URI_PATTERNS')

class URLRewriter(object):
    def __init__(self, base_path='./'):
        if not base_path:
            base_path = './'
        self.base_path = base_path

    def rewrite_urls(self, content):
        if not REWRITE_CSS_URLS:
            return content
        return url_re.sub(self.fixurls, content)

    def fixurls(self, match):
        url = match.group(1)
Ejemplo n.º 7
0
url_re = re.compile(r'url\s*\(["\']?([\w\.][^:]*?)["\']?\)', re.UNICODE)
# logger = logging.getLogger(__name__)

# Whether to rewrite CSS URLs, at all
REWRITE_CSS_URLS = getattr(settings, 'REWRITE_CSS_URLS', True)
# Whether to rewrite CSS URLs relative to the respective source file
# or whether to use "absolute" URL rewriting (i.e., relative URLs are
# considered absolute with regards to STATICFILES_URL)
REWRITE_CSS_URLS_RELATIVE_TO_SOURCE = getattr(
    settings, 'REWRITE_CSS_URLS_RELATIVE_TO_SOURCE', True)

GENERATE_DATA_URIS = getattr(settings, 'GENERATE_DATA_URIS', False)
MAX_DATA_URI_FILE_SIZE = getattr(settings, 'MAX_DATA_URI_FILE_SIZE', 12 * 1024)
IGNORE_PATTERN = prepare_patterns(
    getattr(settings, 'IGNORE_DATA_URI_PATTERNS', (r'.*\.htc', )),
    'IGNORE_DATA_URI_PATTERNS')


class URLRewriter:
    def __init__(self, base_path='./'):
        self.base_path = base_path or './'

    def rewrite_urls(self, content):
        return url_re.sub(self.fixurls,
                          content) if REWRITE_CSS_URLS else content

    def fixurls(self, match):
        url = original_url = match.group(1)

        hashid = ''
Ejemplo n.º 8
0
from django.conf import settings
from hashlib import sha1
from mediagenerator.base import Generator
from mediagenerator.utils import get_media_dirs, find_file, prepare_patterns
from mimetypes import guess_type
import os
import sys

COPY_MEDIA_FILETYPES = getattr(settings, 'COPY_MEDIA_FILETYPES',
    ('gif', 'jpg', 'jpeg', 'png', 'svg', 'svgz', 'ico', 'swf', 'ttf', 'otf',
     'eot', 'woff'))

IGNORE_PATTERN = prepare_patterns(getattr(settings,
   'IGNORE_MEDIA_COPY_PATTERNS', ()), 'IGNORE_MEDIA_COPY_PATTERNS')


class CopyFiles(Generator):
    def get_dev_output(self, name):
        path = find_file(name)
        fp = open(path, 'rb')
        content = fp.read()
        fp.close()
        mimetype = guess_type(path)[0]
        return content, mimetype

    def get_dev_output_names(self):
        media_files = {}
        for root in get_media_dirs():
            self.collect_copyable_files(media_files, root)

        for name, source in media_files.items():