Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • beat/beat.web
1 result
Show changes
Commits on Source (5)
...@@ -192,7 +192,7 @@ class JobSplitInline(admin.TabularInline): ...@@ -192,7 +192,7 @@ class JobSplitInline(admin.TabularInline):
def has_delete_permission(self, request, obj=None): def has_delete_permission(self, request, obj=None):
return False return False
def has_add_permission(self, request): def has_add_permission(self, request, obj=None):
return False return False
...@@ -210,7 +210,7 @@ class Job(admin.ModelAdmin): ...@@ -210,7 +210,7 @@ class Job(admin.ModelAdmin):
def splits(self, obj): def splits(self, obj):
return obj.splits.count() return obj.splits.count()
def has_add_permission(self, request): def has_add_permission(self, request, obj=None):
return False return False
......
...@@ -229,7 +229,7 @@ class DatabaseSetTemplateOutputInline(admin.TabularInline): ...@@ -229,7 +229,7 @@ class DatabaseSetTemplateOutputInline(admin.TabularInline):
def has_delete_permission(self, request, obj=None): def has_delete_permission(self, request, obj=None):
return False return False
def has_add_permission(self, request): def has_add_permission(self, request, obj=None):
return False return False
...@@ -245,7 +245,7 @@ class DatabaseSetTemplate(admin.ModelAdmin): ...@@ -245,7 +245,7 @@ class DatabaseSetTemplate(admin.ModelAdmin):
def has_delete_permission(self, request, obj=None): def has_delete_permission(self, request, obj=None):
return False return False
def has_add_permission(self, request): def has_add_permission(self, request, obj=None):
return False return False
...@@ -265,7 +265,7 @@ class DatabaseSetOutputInline(admin.TabularInline): ...@@ -265,7 +265,7 @@ class DatabaseSetOutputInline(admin.TabularInline):
def has_delete_permission(self, request, obj=None): def has_delete_permission(self, request, obj=None):
return False return False
def has_add_permission(self, request): def has_add_permission(self, request, obj=None):
return False return False
...@@ -286,7 +286,7 @@ class DatabaseSet(admin.ModelAdmin): ...@@ -286,7 +286,7 @@ class DatabaseSet(admin.ModelAdmin):
def has_delete_permission(self, request, obj=None): def has_delete_permission(self, request, obj=None):
return False return False
def has_add_permission(self, request): def has_add_permission(self, request, obj=None):
return False return False
......
...@@ -133,7 +133,7 @@ class BlockInline(admin.TabularInline): ...@@ -133,7 +133,7 @@ class BlockInline(admin.TabularInline):
def has_delete_permission(self, request, obj=None): def has_delete_permission(self, request, obj=None):
return False return False
def has_add_permission(self, request): def has_add_permission(self, request, obj=None):
return False return False
...@@ -268,7 +268,7 @@ class BlockInputInline(admin.TabularInline): ...@@ -268,7 +268,7 @@ class BlockInputInline(admin.TabularInline):
def has_delete_permission(self, request, obj=None): def has_delete_permission(self, request, obj=None):
return False return False
def has_add_permission(self, request): def has_add_permission(self, request, obj=None):
return False return False
...@@ -291,7 +291,7 @@ class CachedFileInline(admin.TabularInline): ...@@ -291,7 +291,7 @@ class CachedFileInline(admin.TabularInline):
def has_delete_permission(self, request, obj=None): def has_delete_permission(self, request, obj=None):
return False return False
def has_add_permission(self, request): def has_add_permission(self, request, obj=None):
return False return False
...@@ -328,7 +328,7 @@ class BlockDependentsInline(admin.TabularInline): ...@@ -328,7 +328,7 @@ class BlockDependentsInline(admin.TabularInline):
def has_delete_permission(self, request, obj=None): def has_delete_permission(self, request, obj=None):
return False return False
def has_add_permission(self, request): def has_add_permission(self, request, obj=None):
return False return False
...@@ -365,7 +365,7 @@ class BlockDependenciesInline(admin.TabularInline): ...@@ -365,7 +365,7 @@ class BlockDependenciesInline(admin.TabularInline):
def has_delete_permission(self, request, obj=None): def has_delete_permission(self, request, obj=None):
return False return False
def has_add_permission(self, request): def has_add_permission(self, request, obj=None):
return False return False
...@@ -457,7 +457,7 @@ class Block(admin.ModelAdmin): ...@@ -457,7 +457,7 @@ class Block(admin.ModelAdmin):
def has_delete_permission(self, request, obj=None): def has_delete_permission(self, request, obj=None):
return False return False
def has_add_permission(self, request): def has_add_permission(self, request, obj=None):
return False return False
form = BlockModelForm form = BlockModelForm
...@@ -505,7 +505,7 @@ class Result(admin.ModelAdmin): ...@@ -505,7 +505,7 @@ class Result(admin.ModelAdmin):
def has_delete_permission(self, request, obj=None): def has_delete_permission(self, request, obj=None):
return False return False
def has_add_permission(self, request): def has_add_permission(self, request, obj=None):
return False return False
...@@ -640,7 +640,7 @@ class CachedFile(admin.ModelAdmin): ...@@ -640,7 +640,7 @@ class CachedFile(admin.ModelAdmin):
def has_delete_permission(self, request, obj=None): def has_delete_permission(self, request, obj=None):
return False return False
def has_add_permission(self, request): def has_add_permission(self, request, obj=None):
return False return False
......
...@@ -29,10 +29,10 @@ ...@@ -29,10 +29,10 @@
# https://github.com/lambdalisue/django-codemirror-widget # https://github.com/lambdalisue/django-codemirror-widget
# (originally BSD-Licensed) # (originally BSD-Licensed)
from itertools import chain
import re
import hashlib import hashlib
import json import json
import re
from itertools import chain
from django import forms from django import forms
from django.conf import settings from django.conf import settings
...@@ -41,31 +41,36 @@ from django.utils.safestring import mark_safe ...@@ -41,31 +41,36 @@ from django.utils.safestring import mark_safe
from .. import __version__ from .. import __version__
# set default settings # set default settings
CODEMIRROR_PATH = getattr(settings, 'CODEMIRROR_PATH', 'codemirror') CODEMIRROR_PATH = getattr(settings, "CODEMIRROR_PATH", "codemirror")
if CODEMIRROR_PATH.endswith('/'): if CODEMIRROR_PATH.endswith("/"):
CODEMIRROR_PATH = CODEMIRROR_PATH[:-1] CODEMIRROR_PATH = CODEMIRROR_PATH[:-1]
CODEMIRROR_MODE = getattr(settings, 'CODEMIRROR_MODE', 'javascript') CODEMIRROR_MODE = getattr(settings, "CODEMIRROR_MODE", "javascript")
CODEMIRROR_THEME = getattr(settings, 'CODEMIRROR_THEME', 'default') CODEMIRROR_THEME = getattr(settings, "CODEMIRROR_THEME", "default")
CODEMIRROR_SIZE = getattr(settings, 'CODEMIRROR_SIZE', None) CODEMIRROR_SIZE = getattr(settings, "CODEMIRROR_SIZE", None)
THEME_CSS_FILENAME_RE = re.compile(r"[\w-]+")
THEME_CSS_FILENAME_RE = re.compile(r'[\w-]+')
def uniq(seq, idfun=None): def uniq(seq, idfun=None):
"""Order preserving, fast de-duplication for lists""" """Order preserving, fast de-duplication for lists"""
if idfun is None: if idfun is None:
def idfun(x): return x
def idfun(x):
return x
seen = {} seen = {}
result = [] result = []
for item in seq: for item in seq:
marker = idfun(item) marker = idfun(item)
if marker in seen: continue if marker in seen:
continue
seen[marker] = 1 seen[marker] = 1
result.append(item) result.append(item)
return result return result
def isstring(obj): def isstring(obj):
try: try:
return isinstance(obj, basestring) return isinstance(obj, basestring)
...@@ -111,7 +116,7 @@ class CodeMirrorJSONEncoder(json.JSONEncoder): ...@@ -111,7 +116,7 @@ class CodeMirrorJSONEncoder(json.JSONEncoder):
def default(self, obj): def default(self, obj):
if isinstance(obj, CodeMirrorJavascript): if isinstance(obj, CodeMirrorJavascript):
# If a Javascript object is encountered, replace it with a placeholder. # If a Javascript object is encountered, replace it with a placeholder.
stash_id = self.stash_prefix + hashlib.md5(obj.js).hexdigest() stash_id = self.stash_prefix + hashlib.md5(obj.js).hexdigest() # nosec
self.stash[stash_id] = obj.js self.stash[stash_id] = obj.js
return stash_id return stash_id
return super(CodeMirrorJSONEncoder, self).default(obj) return super(CodeMirrorJSONEncoder, self).default(obj)
...@@ -135,7 +140,7 @@ class FingerPrintedMedia(forms.Media): ...@@ -135,7 +140,7 @@ class FingerPrintedMedia(forms.Media):
for the latest version of the application for the latest version of the application
""" """
abs_path = super(FingerPrintedMedia, self).absolute_path(path) abs_path = super(FingerPrintedMedia, self).absolute_path(path)
abs_path += '?v={}'.format(__version__) abs_path += "?v={}".format(__version__)
return abs_path return abs_path
...@@ -150,14 +155,17 @@ class CodeMirrorTextarea(forms.Textarea): ...@@ -150,14 +155,17 @@ class CodeMirrorTextarea(forms.Textarea):
mode_name = self.mode_name mode_name = self.mode_name
js = [ js = [
"%s/lib/codemirror.js" % (CODEMIRROR_PATH,), "%s/lib/codemirror.js" % (CODEMIRROR_PATH,),
"%s/addon/fold/foldcode.js" % (CODEMIRROR_PATH,), "%s/addon/fold/foldcode.js" % (CODEMIRROR_PATH,),
"%s/addon/fold/foldgutter.js" % (CODEMIRROR_PATH,), "%s/addon/fold/foldgutter.js" % (CODEMIRROR_PATH,),
] ]
if not self.custom_mode: if not self.custom_mode:
js.append("%s/mode/%s/%s.js" % (CODEMIRROR_PATH, mode_name, mode_name)) js.append("%s/mode/%s/%s.js" % (CODEMIRROR_PATH, mode_name, mode_name))
js += ["%s/mode/%s/%s.js" % (CODEMIRROR_PATH, dependency, dependency) for dependency in self.dependencies] js += [
"%s/mode/%s/%s.js" % (CODEMIRROR_PATH, dependency, dependency)
for dependency in self.dependencies
]
js += ["%s/addon/%s.js" % (CODEMIRROR_PATH, addon) for addon in self.addon_js] js += ["%s/addon/%s.js" % (CODEMIRROR_PATH, addon) for addon in self.addon_js]
if self.keymap: if self.keymap:
...@@ -170,24 +178,38 @@ class CodeMirrorTextarea(forms.Textarea): ...@@ -170,24 +178,38 @@ class CodeMirrorTextarea(forms.Textarea):
js += ["ui/js/codemirror-defaults.js"] js += ["ui/js/codemirror-defaults.js"]
css = ( css = (
"%s/lib/codemirror.css" % CODEMIRROR_PATH, ("%s/lib/codemirror.css" % CODEMIRROR_PATH,)
) + \ + tuple(
tuple("%s/theme/%s.css" % (CODEMIRROR_PATH, theme_css_filename) "%s/theme/%s.css" % (CODEMIRROR_PATH, theme_css_filename)
for theme_css_filename in self.theme_css) + \ for theme_css_filename in self.theme_css
tuple("%s/addon/%s.css" % (CODEMIRROR_PATH, css_file) )
for css_file in self.addon_css) + \ + tuple(
( "%s/addon/%s.css" % (CODEMIRROR_PATH, css_file)
"ui/css/codemirror-overrides.css", for css_file in self.addon_css
)
+ (
"ui/css/codemirror-overrides.css",
"%s/addon/fold/foldgutter.css" % CODEMIRROR_PATH, "%s/addon/fold/foldgutter.css" % CODEMIRROR_PATH,
)
) )
return FingerPrintedMedia(css={'all': css}, js=js) return FingerPrintedMedia(css={"all": css}, js=js)
def __init__( def __init__(
self, attrs=None, mode=None, theme=None, config=None, size=None, self,
dependencies=(), addon_js=(), addon_css=(), attrs=None,
custom_mode=None, custom_js=(), keymap=None, **kwargs): mode=None,
theme=None,
config=None,
size=None,
dependencies=(),
addon_js=(),
addon_css=(),
custom_mode=None,
custom_js=(),
keymap=None,
**kwargs
):
u"""Constructor of CodeMirrorTextarea u"""Constructor of CodeMirrorTextarea
Attribute: Attribute:
...@@ -264,8 +286,8 @@ class CodeMirrorTextarea(forms.Textarea): ...@@ -264,8 +286,8 @@ class CodeMirrorTextarea(forms.Textarea):
self.mode = mode or custom_mode or CODEMIRROR_MODE self.mode = mode or custom_mode or CODEMIRROR_MODE
if isstring(self.mode): if isstring(self.mode):
self.mode = { 'name': self.mode } self.mode = {"name": self.mode}
self.mode_name = self.mode['name'] self.mode_name = self.mode["name"]
self.size = size or CODEMIRROR_SIZE self.size = size or CODEMIRROR_SIZE
self.custom_mode = custom_mode self.custom_mode = custom_mode
self.dependencies = dependencies self.dependencies = dependencies
...@@ -274,47 +296,44 @@ class CodeMirrorTextarea(forms.Textarea): ...@@ -274,47 +296,44 @@ class CodeMirrorTextarea(forms.Textarea):
self.custom_js = custom_js self.custom_js = custom_js
self.keymap = keymap self.keymap = keymap
self.addon_js = uniq(list(addon_js) + [ self.addon_js = uniq(
"mode/overlay", list(addon_js)
"search/search", + ["mode/overlay", "search/search", "search/searchcursor", "dialog/dialog"]
"search/searchcursor", )
"dialog/dialog",
])
self.addon_css = uniq(list(addon_css) + ["dialog/dialog"]) self.addon_css = uniq(list(addon_css) + ["dialog/dialog"])
self.theme = theme or CODEMIRROR_THEME self.theme = theme or CODEMIRROR_THEME
theme_css_filename = THEME_CSS_FILENAME_RE.search(self.theme).group(0) theme_css_filename = THEME_CSS_FILENAME_RE.search(self.theme).group(0)
if theme_css_filename == 'default': if theme_css_filename == "default":
self.theme_css = [] self.theme_css = []
else: else:
self.theme_css = [theme_css_filename] self.theme_css = [theme_css_filename]
self.config = config or {} self.config = config or {}
def render(self, name, value, attrs=None): def render(self, name, value, attrs=None, renderer=None):
"""Render CodeMirrorTextarea""" """Render CodeMirrorTextarea"""
if self.size is not None: if self.size is not None:
suffix = ' %s_editor.setSize%s;' % (name, tuple(self.size)) suffix = " %s_editor.setSize%s;" % (name, tuple(self.size))
else: else:
suffix = '' suffix = ""
self.config.setdefault('foldGutter', True) self.config.setdefault("foldGutter", True)
option_json = CodeMirrorJSONEncoder().encode(dict(chain( option_json = CodeMirrorJSONEncoder().encode(
self.config.items(), dict(
[('mode', self.mode), ('theme', self.theme)]))) chain(self.config.items(), [("mode", self.mode), ("theme", self.theme)])
)
)
output = [ output = [
super(CodeMirrorTextarea, self).render(name, value, attrs), super().render(name, value, attrs, renderer),
'<script type="text/javascript">var %(name)s_editor = CodeMirror.fromTextArea(document.getElementById("id_%(name)s"), %(options)s);%(suffix)s</script>' % \ '<script type="text/javascript">var %(name)s_editor = CodeMirror.fromTextArea(document.getElementById("id_%(name)s"), %(options)s);%(suffix)s</script>'
dict( % dict(name=name, options=option_json, suffix=suffix,),
name=name,
options=option_json,
suffix=suffix,
),
] ]
return mark_safe('\n'.join(output)) return mark_safe("\n".join(output)) # nosec
class CodeMirrorFileWidget(CodeMirrorTextarea): class CodeMirrorFileWidget(CodeMirrorTextarea):
"""Allows editing a file instead of a plain content""" """Allows editing a file instead of a plain content"""
...@@ -322,11 +341,13 @@ class CodeMirrorFileWidget(CodeMirrorTextarea): ...@@ -322,11 +341,13 @@ class CodeMirrorFileWidget(CodeMirrorTextarea):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super(CodeMirrorFileWidget, self).__init__(*args, **kwargs) super(CodeMirrorFileWidget, self).__init__(*args, **kwargs)
def render(self, name, value, attrs=None): def render(self, name, value, attrs=None, renderer=None):
if isinstance(value, str): if isinstance(value, str):
contents = value contents = value
elif hasattr(value, 'read'): elif hasattr(value, "read"):
contents = value.read() contents = value.read()
if type(contents) == bytes:
contents = contents.decode("utf-8")
else: else:
contents = '' contents = ""
return mark_safe(super(CodeMirrorFileWidget, self).render(name, contents, attrs)) return mark_safe(super().render(name, contents, attrs, renderer)) # nosec