Cloned DMOJ
This commit is contained in:
parent
f623974b58
commit
49dc9ff10c
513 changed files with 132349 additions and 39 deletions
47
judge/widgets/mixins.py
Normal file
47
judge/widgets/mixins.py
Normal file
|
@ -0,0 +1,47 @@
|
|||
from textwrap import dedent
|
||||
|
||||
from django import forms
|
||||
from django.conf import settings
|
||||
from django.template import Context, Template
|
||||
from lxml import html
|
||||
|
||||
|
||||
class CompressorWidgetMixin(object):
|
||||
__template_css = dedent('''\
|
||||
{% compress css %}
|
||||
{{ media.css }}
|
||||
{% endcompress %}
|
||||
''')
|
||||
|
||||
__template_js = dedent('''\
|
||||
{% compress js %}
|
||||
{{ media.js }}
|
||||
{% endcompress %}
|
||||
''')
|
||||
|
||||
__templates = {
|
||||
(False, False): Template(''),
|
||||
(True, False): Template('{% load compress %}' + __template_css),
|
||||
(False, True): Template('{% load compress %}' + __template_js),
|
||||
(True, True): Template('{% load compress %}' + __template_js + __template_css),
|
||||
}
|
||||
|
||||
compress_css = False
|
||||
compress_js = False
|
||||
|
||||
try:
|
||||
import compressor
|
||||
except ImportError:
|
||||
pass
|
||||
else:
|
||||
if getattr(settings, 'COMPRESS_ENABLED', not settings.DEBUG):
|
||||
@property
|
||||
def media(self):
|
||||
media = super().media
|
||||
template = self.__templates[self.compress_css, self.compress_js]
|
||||
result = html.fromstring(template.render(Context({'media': media})))
|
||||
|
||||
return forms.Media(
|
||||
css={'all': [result.find('.//link').get('href')]} if self.compress_css else media._css,
|
||||
js=[result.find('.//script').get('src')] if self.compress_js else media._js,
|
||||
)
|
Loading…
Add table
Add a link
Reference in a new issue