In browser terminal for Django that enables custom commands
Dependency: Django Instant for the websockets: install doc
pip install django-term
Add "term",
to installed apps:
Set the urls
from instant.views import instant_auth
urlpatterns = [
url('^terminal/', include('term.urls')),
url('^instant/', include('instant.urls')),
url('^centrifuge/auth/$', instant_auth, name='instant-auth'),
]
Add to settings.py:
SITE_SLUG = "mysite"
INSTANT_SUPERUSER_CHANNELS = [
["$" + SITE_SLUG + "_terminal", ["/terminal"]]
]
Create a templates/instant/handlers/$mysite_terminal.js
whith this content:
{% include "term/handlers.js" %}
Run the websockets server and go to /terminal/
Note: to use the commands from third-party apps your must have these apps installed
help
: display info about the available commands
ping
: ping the server
clear
: clears the screen
From Django Introspection:
inspect
: gives infos about an app or model. Params: appname
or appname.Modelname
: ex: inspect auth.User
From Django Dex:
replicatedb
: replicates the 'default' db into a sqlite 'replica' db
Create a terminal
folder in any app. Create a commands.py
file inside this directory:
from term.commands import Command, rprint
def run_hello(request, cmd_args):
rprint("Hello world")
# Args are the command name, the runner function and the help text
c1 = Command("hello", run_hello, "Hello world command")
COMMANDS = [c1]
Your command will be detected at startup and enabled in the terminal
To debug a command during developement use TERM_DEBUG_MODEL = "mymodel"
django-introspection: get infos about Django objects
django-dex: database export tools
django-jobrunner: experimental asynchronous jobs runner
To customize the colors use the terminal/colors.css
template