def __init__(self, **kwargs):
        self._css = {}
        self._js = []

        if kwargs:
            Media.add_css(self, kwargs.get('css', None))
            Media.add_js(self, kwargs.get('js', None))
Beispiel #2
0
    def test_js_packages_with_pipeline_disabled(self):
        """Testing PipelineFormMedia.js_packages with PIPELINE_ENABLED=False"""
        class MyMedia(PipelineFormMedia):
            js_packages = ('scripts1', 'scripts2')
            js = ('extra1.js', 'extra2.js')

        media = Media(MyMedia)

        self.assertEqual(
            MyMedia.js,
            [
                'extra1.js',
                'extra2.js',
                'pipeline/js/first.js',
                'pipeline/js/second.js',
                'pipeline/js/application.js',
            ])
        self.assertEqual(MyMedia.js, media._js)
        self.assertEqual(
            media.render_js(),
            [
                '<script type="text/javascript" src="%s"></script>' % path
                for path in (
                    '/static/extra1.js',
                    '/static/extra2.js',
                    '/static/pipeline/js/first.js',
                    '/static/pipeline/js/second.js',
                    '/static/pipeline/js/application.js',
                )
            ])
Beispiel #3
0
 def _get_media(self):
     """ hack for executing form's js code before widget's js """
     from django.forms import Media
     media = Media()
     media.add_js(self.Media().js)
     for field in self.fields.values():
         media = media + field.widget.media
     return media
Beispiel #4
0
def vendor(*tags):
    media = Media()
    for tag in tags:
        file_type = tag.split('.')[-1]
        files = xstatic(tag)
        if file_type == 'js':
            media.add_js(files)
        elif file_type == 'css':
            media.add_css({'screen': files})
    return media
    def __add__(self, other):
        # Performance improvement
        if other is ImmutableMedia.empty_instance:
            return other

        # Fast copy
        combined = Media()
        combined._css = other._css.copy()
        combined._js = other._js[:]
        return combined
Beispiel #6
0
def vendor(*tags):
    media = Media()
    for tag in tags:
        file_type = tag.split(".")[-1]
        files = xstatic(tag)
        if file_type == "js":
            media.add_js(files)
        elif file_type == "css":
            media.add_css({"screen": files})
    return media
Beispiel #7
0
    def _media(self):
        base = getattr(super(AdminCropdusterWidget, self), 'media', None)
        media = Media(base) if base else Media()

        media_url = reverse("cropduster-static", kwargs={"path": ""})

        media.add_js([media_url + 'js/admin.cropduster.js',])
        media.add_css({
            'all': (
                media_url + 'css/admin.cropduster.css',
            ),})
        return media
Beispiel #8
0
 def test_merge_warning(self):
     with warnings.catch_warnings(record=True) as w:
         warnings.simplefilter('always')
         self.assertEqual(Media.merge([1, 2], [2, 1]), [1, 2])
         self.assertEqual(
             str(w[-1].message),
             'Detected duplicate Media files in an opposite order:\n1\n2'
         )
Beispiel #9
0
    def test_css_packages_with_pipeline_disabled(self):
        """Testing PipelineFormMedia.css_packages with PIPELINE_ENABLED=False"""
        class MyMedia(PipelineFormMedia):
            css_packages = {
                'all': ('styles1', 'styles2'),
                'print': ('print',),
            }

            css = {
                'all': ('extra1.css', 'extra2.css')
            }

        media = Media(MyMedia)

        self.assertEqual(
            MyMedia.css,
            {
                'all': [
                    'extra1.css',
                    'extra2.css',
                    'pipeline/css/first.css',
                    'pipeline/css/second.css',
                    'pipeline/css/unicode.css',
                ],
                'print': ['pipeline/css/urls.css'],
            })
        self.assertEqual(MyMedia.css, media._css)
        self.assertEqual(
            list(media.render_css()),
            [
                '<link href="%s" type="text/css" media="all" '
                'rel="stylesheet" />' % path
                for path in (
                    '/static/extra1.css',
                    '/static/extra2.css',
                    '/static/pipeline/css/first.css',
                    '/static/pipeline/css/second.css',
                    '/static/pipeline/css/unicode.css',
                )
            ] + [
                '<link href="/static/pipeline/css/urls.css" type="text/css" '
                'media="print" rel="stylesheet" />'
            ])
Beispiel #10
0
def vendor(*tags):
    css = {'screen': []}

    js = []
    for tag in tags:
        file_type = tag.split('.')[-1]
        files = xstatic(tag)
        if file_type == 'js':
            js.extend(files)
        elif file_type == 'css':
            css['screen'] += files
    return Media(css=css, js=js)
Beispiel #11
0
def register_frontend_media(request, media):
    """
    Add a :class:`~django.forms.Media` class to the current request.
    This will be rendered by the ``render_plugin_media`` template tag.
    """
    if media is ImmutableMedia.empty_instance:
        return

    if not hasattr(request, "_fluent_contents_frontend_media"):
        request._fluent_contents_frontend_media = Media()

    add_media(request._fluent_contents_frontend_media, media)
Beispiel #12
0
 def change_view(self, request, object_id, form_url='', extra_context=None):
     """add media that is placed below form as separate argument in context"""
     extra_context = extra_context or {}
     extra_context["bottom_media"] = Media(
         js=("mapbox_location_field/js/map_input.js",
             "mapbox_location_field/js/address_input.js"))
     return super().change_view(
         request,
         object_id,
         form_url,
         extra_context=extra_context,
     )
Beispiel #13
0
    def media(self):
        media = Media(js=[
            'wagtailadmin/js/vendor/hallo.js',
            'wagtailadmin/js/hallo-bootstrap.js',
        ], css={
            'all': ['wagtailadmin/css/panels/hallo.css']
        })

        for plugin in self.plugins:
            media += plugin.media

        return media
Beispiel #14
0
 def test_merge(self):
     test_values = (
         (([1, 2], [3, 4]), [1, 2, 3, 4]),
         (([1, 2], [2, 3]), [1, 2, 3]),
         (([2, 3], [1, 2]), [1, 2, 3]),
         (([1, 3], [2, 3]), [1, 2, 3]),
         (([1, 2], [1, 3]), [1, 2, 3]),
         (([1, 2], [3, 2]), [1, 3, 2]),
     )
     for (list1, list2), expected in test_values:
         with self.subTest(list1=list1, list2=list2):
             self.assertEqual(Media.merge(list1, list2), expected)
 def media(self):
     js = (
         'django-redactor/lib/jquery-1.7.min.js',
         'django-redactor/redactor/redactor.min.js',
         'django-redactor/redactor/setup.js',
     )
     css = {
         'screen': [
             'django-redactor/redactor/css/redactor.css',
         ]
     }
     return Media(css=css, js=js)
Beispiel #16
0
 def media_css(self):
     css = {
         'all': ('bootstrap/css/bootstrap.css',
                 'css/core.css',
                 'css/main_framework.'+settings.STATIC_VERSION+'.css',)
     }
     media = Media(css=css)
     try:
         media += self.media['css']
     except:
         pass
     return media
Beispiel #17
0
    def _media(self):
        """
        The medias needed to enhance the admin page.
        """
        media = super(EntryAdminTinyMCEMixin, self).media

        media += TinyMCE().media + Media(js=[
            reverse('tinymce-js', args=['admin/zinnia/entry']),
            reverse('tinymce-filebrowser-callback')
        ])

        return media
Beispiel #18
0
 def get_tree_media(self):
     js = [
         '/static/django_mptt_admin/jquery_namespace.js',
         '/static/django_mptt_admin/django_mptt_admin.js',
     ]
     css = {
         'all': [
             '/static/edw/css/admin/django_mptt_admin.css',
         ]
     }
     tree_media = Media(js=js, css=css)
     return self.media + tree_media
Beispiel #19
0
    def media(self):
        media = Media(js=[
            versioned_static('wagtailadmin/js/vendor/hallo.js'),
            versioned_static('wagtailadmin/js/hallo-bootstrap.js'),
        ], css={
            'all': [versioned_static('wagtailadmin/css/panels/hallo.css')]
        })

        for plugin in self.plugins:
            media += plugin.media

        return media
Beispiel #20
0
 def media(self):
     js = self._get_js_media()
     if self.redactor_settings['lang'] != 'en':
         js += ('django-redactor/redactor/langs/%s.js' %
                self.redactor_settings['lang'], )
     css = {
         'screen': [
             'django-redactor/redactor/css/redactor.css',
             'django-redactor/redactor/css/django_admin.css',
         ]
     }
     return Media(css=css, js=js)
Beispiel #21
0
    def get_tree_media(self):
        admin_media = super(DjangoMpttAdminMixin, self).media

        js = [
            static('django_mptt_admin/jquery_namespace.js'),
            static('django_mptt_admin/django_mptt_admin.js'),
        ]
        css = dict(all=(static('django_mptt_admin/django_mptt_admin.css'), ))

        tree_media = Media(js=js, css=css)

        return admin_media + tree_media
Beispiel #22
0
    def test_media_deduplication(self):
        # A deduplication test applied directly to a Media object, to confirm
        # that the deduplication doesn't only happen at the point of merging
        # two or more media objects.
        media = Media(
            css={'all': ('/path/to/css1', '/path/to/css1')},
            js=('/path/to/js1', '/path/to/js1'),
        )
        self.assertEqual(
            str(media),
            """<link href="/path/to/css1" type="text/css" media="all" rel="stylesheet">
<script src="/path/to/js1"></script>""")
Beispiel #23
0
 def test_merge(self):
     test_values = (
         (([1, 2], [3, 4]), [1, 2, 3, 4]),
         (([1, 2], [2, 3]), [1, 2, 3]),
         (([2, 3], [1, 2]), [1, 2, 3]),
         (([1, 3], [2, 3]), [1, 2, 3]),
         (([1, 2], [1, 3]), [1, 2, 3]),
         (([1, 2], [3, 2]), [1, 3, 2]),
     )
     for (list1, list2), expected in test_values:
         with self.subTest(list1=list1, list2=list2):
             self.assertEqual(Media.merge(list1, list2), expected)
Beispiel #24
0
    def test_construction(self):
        # Check construction of media objects
        m = Media(
            css={'all': ('path/to/css1', '/path/to/css2')},
            js=('/path/to/js1', 'http://media.other.com/path/to/js2',
                'https://secure.other.com/path/to/js3'),
        )
        self.assertEqual(
            str(m),
            """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet">
<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet">
<script src="/path/to/js1"></script>
<script src="http://media.other.com/path/to/js2"></script>
<script src="https://secure.other.com/path/to/js3"></script>""")
        self.assertEqual(
            repr(m), "Media(css={'all': ['path/to/css1', '/path/to/css2']}, "
            "js=['/path/to/js1', 'http://media.other.com/path/to/js2', 'https://secure.other.com/path/to/js3'])"
        )

        class Foo:
            css = {'all': ('path/to/css1', '/path/to/css2')}
            js = ('/path/to/js1', 'http://media.other.com/path/to/js2',
                  'https://secure.other.com/path/to/js3')

        m3 = Media(Foo)
        self.assertEqual(
            str(m3),
            """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet">
<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet">
<script src="/path/to/js1"></script>
<script src="http://media.other.com/path/to/js2"></script>
<script src="https://secure.other.com/path/to/js3"></script>""")

        # A widget can exist without a media definition
        class MyWidget(TextInput):
            pass

        w = MyWidget()
        self.assertEqual(str(w.media), '')
Beispiel #25
0
    def get_tree_media(self):
        django_mptt_admin_js = 'django_mptt_admin.coverage.js' if settings.DJANGO_MPTT_ADMIN_COVERAGE_JS else 'django_mptt_admin.js'

        js = [
            "admin/js/jquery.init.js",
            static('django_mptt_admin/jquery_namespace.js'),
            static(f"django_mptt_admin/{django_mptt_admin_js}"),
        ]
        css = dict(all=(static('django_mptt_admin/django_mptt_admin.css'), ))

        tree_media = Media(js=js, css=css)

        return self.media + tree_media
Beispiel #26
0
 def media(self):
     return Media(js=[
         'UEditor/ueditor.config.js',
         'UEditor/ueditor.all.js',
         'UEditor/ueditor.parse.js',
         'UEditor/ueditor.init.js',
     ],
                  css={
                      'all': (
                          'UEditor/themes/iframe.css',
                          'UEditor/themes/default/css/ueditor.css',
                      ),
                  })
Beispiel #27
0
    def test_absolute(self):
        media = Media(js=[
            JS(
                'https://cdn.example.org/script.js',
                static=False,
            ),
        ], )
        html = '%s' % media

        self.assertInHTML(
            '<script type="text/javascript" src="https://cdn.example.org/script.js"></script>',  # noqa
            html,
        )
Beispiel #28
0
    def test_django_html_escaping(self):
        class TestForm(Form):
            test_field = CharField()

        media = Media(js=["my-script.js"])
        form = TestForm()
        template = self.engine.get_template(
            "template_backends/django_escaping.html")
        content = template.render({"media": media, "test_form": form})

        expected = "{}\n\n{}\n\n{}".format(media, form, form["test_field"])

        self.assertHTMLEqual(content, expected)
Beispiel #29
0
    def test_css_packages_with_pipeline_enabled(self):
        """Testing PipelineFormMedia.css_packages with PIPELINE_ENABLED=True"""
        class MyMedia(PipelineFormMedia):
            css_packages = {
                'all': ('styles1', 'styles2'),
                'print': ('print', ),
            }

            css = {'all': ('extra1.css', 'extra2.css')}

        media = Media(MyMedia)

        self.assertEqual(
            MyMedia.css, {
                'all': [
                    'extra1.css',
                    'extra2.css',
                    '/static/styles1.min.css',
                    '/static/styles2.min.css',
                ],
                'print': ['/static/print.min.css'],
            })
        self.assertEqual(MyMedia.css, media._css)
        expected_regex = [
            r'<link href="%s" type="text/css" media="all" '
            'rel="stylesheet"( /)?>' % path for path in (
                '/static/extra1.css',
                '/static/extra2.css',
                '/static/styles1.min.css',
                '/static/styles2.min.css',
            )
        ] + [
            r'<link href="/static/print.min.css" type="text/css" '
            'media="print" rel="stylesheet"( /)?>'
        ]
        for rendered_node, expected_node in zip(media.render_css(),
                                                expected_regex):
            self.assertRegex(rendered_node, expected_node)
Beispiel #30
0
 def test_add_css_deduplication(self):
     widget1 = Media(css={'screen': ['a.css'], 'all': ['b.css']})
     widget2 = Media(css={'screen': ['c.css']})
     widget3 = Media(css={'screen': ['a.css'], 'all': ['b.css', 'c.css']})
     widget4 = Media(css={'screen': ['a.css'], 'all': ['c.css', 'b.css']})
     merged = widget1 + widget1
     self.assertEqual(merged._css_lists, [{
         'screen': ['a.css'],
         'all': ['b.css']
     }])
     self.assertEqual(merged._css, {'screen': ['a.css'], 'all': ['b.css']})
     merged = widget1 + widget2
     self.assertEqual(merged._css_lists, [
         {
             'screen': ['a.css'],
             'all': ['b.css']
         },
         {
             'screen': ['c.css']
         },
     ])
     self.assertEqual(merged._css, {
         'screen': ['a.css', 'c.css'],
         'all': ['b.css']
     })
     merged = widget3 + widget4
     # Ordering within lists is preserved.
     self.assertEqual(merged._css_lists, [{
         'screen': ['a.css'],
         'all': ['b.css', 'c.css']
     }, {
         'screen': ['a.css'],
         'all': ['c.css', 'b.css']
     }])
     msg = ("Detected duplicate Media files in an opposite order: "
            "['b.css', 'c.css'], ['c.css', 'b.css']")
     with self.assertWarnsMessage(RuntimeWarning, msg):
         merged._css
Beispiel #31
0
def vendor(*tags):
    js = []
    css = []
    for tag in tags:
        file_type = tag.split('.')[-1]
        files = xstatic(tag)
        if file_type == 'js':
            js.extend(files)
        elif file_type == 'css':
            css.extend(files)
    js = tuple(js)
    css = {'screen': tuple(css)}
    media = Media(css=css, js=js)
    return media
Beispiel #32
0
    def media(self):
        css = ["css/django_reactive.css"]
        if self.extra_css:
            css.extend(self.extra_css)
        js = [
            "dist/react.js",
            "dist/react-dom.js",
            "dist/react-jsonschema-form.js",
            "js/django_reactive.js",
        ]
        if self.extra_js:
            js.extend(self.extra_js)

        return Media(css={"all": css}, js=js)
Beispiel #33
0
    def media(self):
        media = Media(
            js=[
                versioned_static('wagtailadmin/js/draftail.js'),
            ],
            css={
                'all':
                [versioned_static('wagtailadmin/css/panels/draftail.css')]
            })

        for plugin in self.plugins:
            media += plugin.media

        return media
Beispiel #34
0
 def media(self):
     return Media(css={
         'all': (
             settings.STATIC_URL + 'markdownme/css/github.min.css',
             settings.STATIC_URL + 'markdownme/css/markdownme.css',
         )
     },
                  js=(
                      settings.STATIC_URL + 'markdownme/js/marked.min.js',
                      settings.STATIC_URL +
                      'markdownme/js/highlight.min.js',
                      settings.STATIC_URL + 'markdownme/js/purify.min.js',
                      settings.STATIC_URL + 'markdownme/js/markdownme.js',
                  ))
Beispiel #35
0
 def media(self):
     root = "django_react_streamfield"
     return self.block_def.all_media() + Media(
         js=[
             f"{root}/js/wagtail-react-streamfield.js",
             f"{root}/js/django-react-streamfield.js",
         ],
         css={
             "all": [
                 f"{root}/css/wagtail-react-streamfield.css",
                 f"{root}/fontawesome/css/all.min.css",
             ]
         },
     )
Beispiel #36
0
def vendor(*tags):
    css = {'screen': []}
    js = []
    # media = Media()
    for tag in tags:
        file_type = tag.split('.')[-1]
        files = xstatic(tag)
        if file_type == 'js':
            # media.add_js(files)
            js.extend(files)
        elif file_type == 'css':
            # media.add_css({'screen': files})
            css['screen'] += files
    return Media(css=css,js=js)
    def test_css_packages_with_pipeline_disabled(self):
        """Testing PipelineFormMedia.css_packages with PIPELINE_ENABLED=False"""
        class MyMedia(PipelineFormMedia):
            css_packages = {
                'all': ('styles1', 'styles2'),
                'print': ('print', ),
            }

            css = {'all': ('extra1.css', 'extra2.css')}

        media = Media(MyMedia)

        self.assertEqual(
            MyMedia.css, {
                'all': [
                    'extra1.css',
                    'extra2.css',
                    'pipeline/css/first.css',
                    'pipeline/css/second.css',
                    'pipeline/css/unicode.css',
                ],
                'print': ['pipeline/css/urls.css'],
            })
        self.assertEqual(MyMedia.css, media._css)
        self.assertEqual(list(media.render_css()), [
            '<link href="%s" type="text/css" media="all" '
            'rel="stylesheet" />' % path for path in (
                '/static/extra1.css',
                '/static/extra2.css',
                '/static/pipeline/css/first.css',
                '/static/pipeline/css/second.css',
                '/static/pipeline/css/unicode.css',
            )
        ] + [
            '<link href="/static/pipeline/css/urls.css" type="text/css" '
            'media="print" rel="stylesheet" />'
        ])
Beispiel #38
0
    def test_js_packages_with_pipeline_enabled(self):
        """Testing PipelineFormMedia.js_packages with PIPELINE_ENABLED=True"""
        class MyMedia(PipelineFormMedia):
            js_packages = ('scripts1', 'scripts2')
            js = ('extra1.js', 'extra2.js')

        media = Media(MyMedia)

        self.assertEqual(MyMedia.js, [
            'extra1.js',
            'extra2.js',
            '/static/scripts1.min.js',
            '/static/scripts2.min.js',
        ])
        self.assertEqual(MyMedia.js, media._js)
        self.assertEqual(media.render_js(), [
            '<script type="text/javascript" src="%s"></script>' % path
            for path in (
                '/static/extra1.js',
                '/static/extra2.js',
                '/static/scripts1.min.js',
                '/static/scripts2.min.js',
            )
        ])
Beispiel #39
0
    def test_django_html_escaping(self):
        if self.backend_name == 'dummy':
            self.skipTest("test doesn't apply to dummy backend")

        class TestForm(Form):
            test_field = CharField()

        media = Media(js=['my-script.js'])
        form = TestForm()
        template = self.engine.get_template('template_backends/django_escaping.html')
        content = template.render({'media': media, 'test_form': form})

        expected = '{}\n\n{}\n\n{}'.format(media, form, form['test_field'])

        self.assertHTMLEqual(content, expected)
Beispiel #40
0
    def media(self):
        media = Media(
            js=[
                versioned_static("wagtailadmin/js/draftail.js"),
            ],
            css={
                "all":
                [versioned_static("wagtailadmin/css/panels/draftail.css")]
            },
        )

        for plugin in self.plugins:
            media += plugin.media

        return media
Beispiel #41
0
 def test_merge(self):
     test_values = (
         (([1, 2], [3, 4]), [1, 3, 2, 4]),
         (([1, 2], [2, 3]), [1, 2, 3]),
         (([2, 3], [1, 2]), [1, 2, 3]),
         (([1, 3], [2, 3]), [1, 2, 3]),
         (([1, 2], [1, 3]), [1, 2, 3]),
         (([1, 2], [3, 2]), [1, 3, 2]),
         (([1, 2], [1, 2]), [1, 2]),
         ([[1, 2], [1, 3], [2, 3], [5, 7], [5, 6], [6, 7, 9], [8, 9]], [1, 5, 8, 2, 6, 3, 7, 9]),
         ((), []),
         (([1, 2],), [1, 2]),
     )
     for lists, expected in test_values:
         with self.subTest(lists=lists):
             self.assertEqual(Media.merge(*lists), expected)
Beispiel #42
0
 def test_merge_warning(self):
     msg = 'Detected duplicate Media files in an opposite order:\n1\n2'
     with self.assertWarnsMessage(RuntimeWarning, msg):
         self.assertEqual(Media.merge([1, 2], [2, 1]), [1, 2])
Beispiel #43
0
 def test_html_safe(self):
     media = Media(css={'all': ['/path/to/css']}, js=['/path/to/js'])
     self.assertTrue(hasattr(Media, '__html__'))
     self.assertEqual(force_text(media), media.__html__())
 def get_media(self, *args, **kwargs):
     media = super(PaiementAdminView, self).get_media(*args, **kwargs)
     m = Media()
     m.add_js(['paiement_etudiant/js/paiement_etudiant.js'])
     return media+m
    def _upgrade_jquery(self, media):
        # upgrade jquery and cms jquery UI
        new_media = Media()
        new_media.add_css(media._css)

        new_jquery_version = static('cms_blogger/js/jquery-1.9.1.min.js')
        new_jquery_ui_version = static('cms_blogger/js/jquery-ui.min.js')
        # make sure all jquery namespaces point to the same jquery
        jquery_namspace = static('cms_blogger/js/jQuery-patch.js')
        django_jquery_urls = [static('admin/js/jquery.js'),
                              static('admin/js/jquery.min.js')]
        django_collapse_js = [static('admin/js/collapse.js'),
                              static('admin/js/collapse.min.js')]
        for js in media._js:
            if js in django_jquery_urls:
                new_media.add_js((new_jquery_version, ))
            elif js in django_collapse_js:
                new_media.add_js(
                    (static('cms_blogger/js/admin-collapse.js'), ))
            elif js == static('admin/js/jquery.init.js'):
                new_media.add_js((js, jquery_namspace))
            elif js.startswith(static('cms/js/libs/jquery.ui.')):
                new_media.add_js((new_jquery_ui_version, ))
            else:
                new_media.add_js((js, ))
        return new_media
 def get_media(self, *args, **kwargs):
     media = super(AuditeurLibreApogeeAdmin, self).get_media(*args, **kwargs)
     m = Media()
     m.add_js(['paiement_etudiant/js/paiement_etudiant.js'])
     return media+m
Beispiel #47
0
 def media(self):
     '上传前 预览图片'
     media = Media()
     media.add_js(['js/previrew-image-before-upload.js'])
     # media.add_css({'screen': files})
     return media