Small feature and fixes
Added field_widgets to asyncron.base.admin models fixed language config not working
This commit is contained in:
parent
07fe648b9c
commit
9d7e1b080d
|
|
@ -12,6 +12,11 @@ class BaseModelAdmin( admin.ModelAdmin ):
|
||||||
formfield = super().formfield_for_dbfield(db_field, **kwargs)
|
formfield = super().formfield_for_dbfield(db_field, **kwargs)
|
||||||
if isinstance( formfield, JSONField ):
|
if isinstance( formfield, JSONField ):
|
||||||
formfield.widget = Codearea( language = "json" )
|
formfield.widget = Codearea( language = "json" )
|
||||||
|
|
||||||
|
custom_widget = getattr(self, "field_widgets", {}).get(db_field.name, None)
|
||||||
|
if custom_widget:
|
||||||
|
formfield.widget = custom_widget()
|
||||||
|
|
||||||
return formfield
|
return formfield
|
||||||
|
|
||||||
def explain_gather_results( self, request, results, fails_to_show = 2 ):
|
def explain_gather_results( self, request, results, fails_to_show = 2 ):
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
<div id="codearea_{{ target }}">
|
<div id="codearea_{{ target }}">
|
||||||
{{ textarea }}
|
{{ textarea }}
|
||||||
<pre>{{ value }}</pre>
|
<code class="language-{{ language }}">{{ value }}</code>
|
||||||
</div>
|
</div>
|
||||||
<style media="screen">
|
<style media="screen">
|
||||||
#codearea_{{ target }} {
|
#codearea_{{ target }} {
|
||||||
|
|
@ -22,10 +22,10 @@
|
||||||
color: transparent;
|
color: transparent;
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
}
|
}
|
||||||
#codearea_{{ target }} > pre {
|
#codearea_{{ target }} > code {
|
||||||
position: absolute; pointer-events: none;
|
position: absolute; pointer-events: none;
|
||||||
left: 0; right: 0; top: 0; bottom: 0;
|
left: 0; right: 0; top: 0; bottom: 0;
|
||||||
white-space: wrap;
|
white-space: pre-wrap;
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
background: transparent;
|
background: transparent;
|
||||||
}
|
}
|
||||||
|
|
@ -38,19 +38,17 @@
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
{{ hljs_config | json_script:"hlsj-config" }}
|
|
||||||
<script>
|
<script>
|
||||||
(function(){
|
(function(){
|
||||||
const codearea = document.getElementById("codearea_{{ target }}");
|
const codearea = document.getElementById("codearea_{{ target }}");
|
||||||
const textarea = codearea.querySelector('textarea');
|
const textarea = codearea.querySelector('textarea');
|
||||||
const pre = codearea.querySelector('pre');
|
const code = codearea.querySelector('code');
|
||||||
const config = JSON.parse(document.getElementById('hlsj-config').textContent);
|
|
||||||
|
|
||||||
textarea.addEventListener('input', (e) => {
|
textarea.addEventListener('input', (e) => {
|
||||||
pre.innerText = e.target.value;
|
code.innerHTML = textarea.value;
|
||||||
delete pre.dataset.highlighted;
|
delete code.dataset.highlighted;
|
||||||
hljs.highlightElement( pre, config )
|
hljs.highlightElement( code )
|
||||||
});
|
});
|
||||||
hljs.highlightElement( pre, config )
|
hljs.highlightElement( code )
|
||||||
})()
|
})()
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -10,13 +10,9 @@ class Codearea( Textarea ):
|
||||||
super().__init__( *args, **kwargs )
|
super().__init__( *args, **kwargs )
|
||||||
|
|
||||||
def render( self, name, value, attrs = None, renderer = None ):
|
def render( self, name, value, attrs = None, renderer = None ):
|
||||||
print( self )
|
|
||||||
print(f"RENDERING: {name=} {value=} {attrs=} {renderer=}")
|
|
||||||
return loader.get_template("asyncron/codearea-widget.html").render({
|
return loader.get_template("asyncron/codearea-widget.html").render({
|
||||||
"textarea": super().render( name, value, attrs, renderer ),
|
"textarea": super().render( name, value, attrs, renderer ),
|
||||||
"value": value,
|
"value": value,
|
||||||
"target": name,
|
"target": name,
|
||||||
"hljs_config": {
|
"language": self.language
|
||||||
"language": self.language
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user