v 11.0 v 12.0 Third Party 127
Download for v 12.0 Deploy on Odoo.sh
Availability
Odoo Online
Odoo.sh
On Premise
Lines of code 1094
Technical Name terminal
LicenseAGPL-3
Versions 11.0 12.0
You bought this module and need support? Click here!

Terminal

License: AGPL-3

Manage Odoo with commands.

Features

  • Interactive Terminal
  • View models
  • Manage records (Create, Read, Update, Delete)
  • Manage modules (Install, Upgrade, Uninstall)
  • Use alias
  • Call model methods
  • Launch actions
  • Customizable
  • And more…

Table of contents

Screenshot

Usage

  • Press CTRL + 1
  • Debug Menu Entry

EXAMPLE COMMANDS

  • Create Record: `create res.partner "{'name': 'The One'}"`
  • Search Record: `search res.partner name "[['id', '>', 5]]"`
  • Create Alias: `alias myalias "print Hello, $1!"`
  • Call Alias: `myalias Me`
  • Install Module: `install mymodule`

PUBLIC METHODS (Javascript)

  • `print(str)` Print a message
  • `eprint(str)` Print a escaped message
  • `clean()` Clean terminal
  • `cleanInput()` Clean input
  • `registerCommand(str, cmdDef)` Register new command
  • `executeCommand(str)` Execute a command
  • `do_show()` Show terminal
  • `do_hide()` Hide terminal
  • `do_toggle()` Toggle visibility

DEFINE NEW COMMANDS (Javascript)

Commands works with promises

Command definition:

{
  definition: 'string',
  callback: function,
  detail: 'string',
  syntaxis: 'string',
  args: 'string',
}
  • definition: Quick definition.
  • callback: Callback function.
  • detail: Command explained.
  • syntaxis: Command Parameters (For Humans) * <> Required * [] Optional
  • args: Command Paramerters Types * ‘s’ String * ‘i’ Integer * ‘?’ Indicates that next parameter is optional

Basic Example:

odoo.define('terminal.MyFuncs', function(require) {
  'use strict';

  var Terminal = require('terminal.Terminal').terminal;

  Terminal.include({
    init: function() {
      this._super.apply(this, arguments);

      this.registerCommand('mycommand', {
        definition: 'This is my command',
        function: this._myFunc,
        detail: 'My command explained...',
        syntaxis: '<STRING: ParamA> <INT: ParamB> [STRING: ParamC]',
        args: 'si?s',
      });
    },

    _myFunc: function(params) {
      var pA = params[0];
      var pB = params[1];
      var pC = params[2] || "DefaultValue";
      var self = this;

      var defer = $.Deferred(function(d){
        self.print("Hello, World!");
        self.eprint("ParamA (String): " + pA);
        self.eprint("ParamB (Int): " + pB);
        self.eprint("ParamC (Optional String): " + pC);

        if (Number(pA) === pB) {
          d.resolve();
        } else {
          d.reject("Oops! error");
        }
      });

      return $.when(defer);
    },
  });

});

Credits

Authors

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author, please use the developer contact information. They can usually be found in the description.
Please choose a rating from 1 to 5 for this module.