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))
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', ) ])
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
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
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 _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
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' )
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" />' ])
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)
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)
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, )
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
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)
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
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
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
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
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)
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
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>""")
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), '')
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
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', ), })
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, )
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)
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)
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
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
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)
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
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', ))
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", ] }, )
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" />' ])
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', ) ])
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)
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
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)
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])
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
def media(self): '上传前 预览图片' media = Media() media.add_js(['js/previrew-image-before-upload.js']) # media.add_css({'screen': files}) return media