{
"info": {
"author": "Therp BV, Tecnativa, Camptocamp, Odoo Community Association (OCA)",
"author_email": "support@odoo-community.org",
"bugtrack_url": null,
"classifiers": [
"Framework :: Odoo",
"License :: OSI Approved :: GNU Affero General Public License v3",
"Programming Language :: Python"
],
"description": ".. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg\n :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html\n :alt: License: AGPL-3\n\n===========================\n2D matrix for x2many fields\n===========================\n\nThis module allows to show an x2many field with 3-tuples\n($x_value, $y_value, $value) in a table\n\n+-----------+-------------+-------------+\n| | $x_value1 | $x_value2 |\n+===========+=============+=============+\n| $y_value1 | $value(1/1) | $value(2/1) |\n+-----------+-------------+-------------+\n| $y_value2 | $value(1/2) | $value(2/2) |\n+-----------+-------------+-------------+\n\nwhere `value(n/n)` is editable.\n\nAn example use case would be: Select some projects and some employees so that\na manager can easily fill in the planned_hours for one task per employee. The\nresult could look like this:\n\n.. image:: /web_widget_x2many_2d_matrix/static/description/screenshot.png\n :alt: Screenshot\n\nThe beauty of this is that you have an arbitrary amount of columns with this\nwidget, trying to get this in standard x2many lists involves some quite ugly\nhacks.\n\nUsage\n=====\n\nUse this widget by saying::\n\n\n\nThis assumes that my_field refers to a model with the fields `x`, `y` and\n`value`. If your fields are named differently, pass the correct names as\nattributes:\n\n.. code-block:: xml\n\n \n \n \n \n \n \n \n \n\nYou can pass the following parameters:\n\nfield_x_axis\n The field that indicates the x value of a point\nfield_y_axis\n The field that indicates the y value of a point\nfield_label_x_axis\n Use another field to display in the table header\nfield_label_y_axis\n Use another field to display in the table header\nfield_value\n Show this field as value\nshow_row_totals\n If field_value is a numeric field, it indicates if you want to calculate\n row totals. True by default\nshow_column_totals\n If field_value is a numeric field, it indicates if you want to calculate\n column totals. True by default\n\n.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas\n :alt: Try me on Runbot\n :target: https://runbot.odoo-community.org/runbot/162/11.0\n\nExample\n=======\n\nYou need a data structure already filled with values. Let's assume we want to\nuse this widget in a wizard that lets the user fill in planned hours for one\ntask per project per user. In this case, we can use ``project.task`` as our\ndata model and point to it from our wizard. The crucial part is that we fill\nthe field in the default function:\n\n.. code-block:: python\n\n from odoo import fields, models\n\n class MyWizard(models.TransientModel):\n _name = 'my.wizard'\n\n def _default_task_ids(self):\n # your list of project should come from the context, some selection\n # in a previous wizard or wherever else\n projects = self.env['project.project'].browse([1, 2, 3])\n # same with users\n users = self.env['res.users'].browse([1, 2, 3])\n return [\n (0, 0, {\n 'name': 'Sample task name',\n 'project_id': p.id,\n 'user_id': u.id,\n 'planned_hours': 0,\n 'message_needaction': False,\n 'date_deadline': fields.Date.today(),\n })\n # if the project doesn't have a task for the user,\n # create a new one\n if not p.task_ids.filtered(lambda x: x.user_id == u) else\n # otherwise, return the task\n (4, p.task_ids.filtered(lambda x: x.user_id == u)[0].id)\n for p in projects\n for u in users\n ]\n\n task_ids = fields.Many2many('project.task', default=_default_task_ids)\n\nNow in our wizard, we can use:\n\n.. code-block:: xml\n\n \n \n \n \n \n \n \n \n\nKnown issues / Roadmap\n======================\n\n* Support extra attributes on each field cell via `field_extra_attrs` param.\n We could set a cell as not editable, required or readonly for instance.\n The `readonly` case will also give the ability\n to click on m2o to open related records.\n\n* Support limit total records in the matrix. Ref: https://github.com/OCA/web/issues/901\n\n* Support cell traversal through keyboard arrows.\n\n* Entering the widget from behind by pressing ``Shift+TAB`` in your keyboard\n will enter into the 1st cell until https://github.com/odoo/odoo/pull/26490\n is merged.\n\n* Support extra invisible fields inside each cell.\n\nBug Tracker\n===========\n\nBugs are tracked on `GitHub Issues\n`_. In case of trouble, please\ncheck there if your issue has already been reported. If you spotted it first,\nhelp us smash it by providing a detailed and welcomed feedback.\n\nCredits\n=======\n\nContributors\n------------\n\n* Holger Brunn \n* Pedro M. Baeza \n* Artem Kostyuk \n* Simone Orsi \n* Timon Tschanz \n* Jairo Llopis \n* Dennis Sluijk \n\nMaintainer\n----------\n\n.. image:: https://odoo-community.org/logo.png\n :alt: Odoo Community Association\n :target: https://odoo-community.org\n\nThis module is maintained by the OCA.\n\nOCA, or the Odoo Community Association, is a nonprofit organization whose\nmission is to support the collaborative development of Odoo features and\npromote its widespread use.\n\nTo contribute to this module, please visit https://odoo-community.org.\n\n\n",
"description_content_type": "",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/OCA/web",
"keywords": "",
"license": "AGPL-3",
"maintainer": "",
"maintainer_email": "",
"name": "odoo11-addon-web-widget-x2many-2d-matrix",
"package_url": "https://pypi.org/project/odoo11-addon-web-widget-x2many-2d-matrix/",
"platform": "",
"project_url": "https://pypi.org/project/odoo11-addon-web-widget-x2many-2d-matrix/",
"project_urls": {
"Homepage": "https://github.com/OCA/web"
},
"release_url": "https://pypi.org/project/odoo11-addon-web-widget-x2many-2d-matrix/11.0.1.1.2/",
"requires_dist": [
"odoo (<11.1dev,>=11.0a)"
],
"requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*",
"summary": "Show list fields as a matrix",
"version": "11.0.1.1.2"
},
"last_serial": 5258008,
"releases": {
"11.0.1.0.0.99.dev1": [
{
"comment_text": "",
"digests": {
"md5": "f4a32e3d4fd930678f6f37a8df413e2b",
"sha256": "42ccde3a0e107b9224251ef9a03717a130201178ead54b30417822f3ce501174"
},
"downloads": -1,
"filename": "odoo11_addon_web_widget_x2many_2d_matrix-11.0.1.0.0.99.dev1-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "f4a32e3d4fd930678f6f37a8df413e2b",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*",
"size": 50561,
"upload_time": "2018-04-06T04:30:29",
"url": "https://files.pythonhosted.org/packages/50/0a/81ddf915a83f6ba5800b94dcfde41d501053959fc03c43f5464c8c3445a7/odoo11_addon_web_widget_x2many_2d_matrix-11.0.1.0.0.99.dev1-py2.py3-none-any.whl"
}
],
"11.0.1.0.1": [
{
"comment_text": "",
"digests": {
"md5": "860a3d1663611850ce0aa2958c32eecc",
"sha256": "3fa7b921750befa07be0c868eafd9ff28a88e8045f240fd2c3d2b7644a93380b"
},
"downloads": -1,
"filename": "odoo11_addon_web_widget_x2many_2d_matrix-11.0.1.0.1-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "860a3d1663611850ce0aa2958c32eecc",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*",
"size": 50666,
"upload_time": "2018-04-24T04:35:12",
"url": "https://files.pythonhosted.org/packages/0a/10/25f42457c4caa61ebc708dfe5faef96053c12bb7e9d93f317a98a989e01e/odoo11_addon_web_widget_x2many_2d_matrix-11.0.1.0.1-py2.py3-none-any.whl"
}
],
"11.0.1.0.2": [
{
"comment_text": "",
"digests": {
"md5": "b9d86623bf6c2753d31b595214126984",
"sha256": "92e1a78bf5eb4d81d0e2c1500db5e3d6e6c93fecc28cd339be9654c749b22957"
},
"downloads": -1,
"filename": "odoo11_addon_web_widget_x2many_2d_matrix-11.0.1.0.2-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "b9d86623bf6c2753d31b595214126984",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*",
"size": 50683,
"upload_time": "2018-05-03T04:35:18",
"url": "https://files.pythonhosted.org/packages/df/00/615dd0d58327f6f6dae17270abeed29848634c23f69085f12d8f325d24a7/odoo11_addon_web_widget_x2many_2d_matrix-11.0.1.0.2-py2.py3-none-any.whl"
}
],
"11.0.1.0.2.99.dev1": [
{
"comment_text": "",
"digests": {
"md5": "92b0393ad4e34d4776692513d865dd22",
"sha256": "ba35aa29ad6d244c4ddb58c1080e017ba461f2ea684fc0c655588f21cd1b1352"
},
"downloads": -1,
"filename": "odoo11_addon_web_widget_x2many_2d_matrix-11.0.1.0.2.99.dev1-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "92b0393ad4e34d4776692513d865dd22",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*",
"size": 51776,
"upload_time": "2018-06-25T04:39:45",
"url": "https://files.pythonhosted.org/packages/b5/5d/f4cefc3c7c1515e7ba352231729d433d473b7b04685410dd4cd3a3198c05/odoo11_addon_web_widget_x2many_2d_matrix-11.0.1.0.2.99.dev1-py2.py3-none-any.whl"
}
],
"11.0.1.0.2.99.dev2": [
{
"comment_text": "",
"digests": {
"md5": "8a56362e06cead85e9d12fd8acb57584",
"sha256": "e93561f8e6fb7abe426a22225e545e674cb2352101c6ce607e2da2607ede6b13"
},
"downloads": -1,
"filename": "odoo11_addon_web_widget_x2many_2d_matrix-11.0.1.0.2.99.dev2-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "8a56362e06cead85e9d12fd8acb57584",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*",
"size": 48481,
"upload_time": "2018-08-04T04:37:41",
"url": "https://files.pythonhosted.org/packages/eb/69/c8db615b9bab0190d410dff77738205666d4b0002f08f43f1d1f8c526515/odoo11_addon_web_widget_x2many_2d_matrix-11.0.1.0.2.99.dev2-py2.py3-none-any.whl"
}
],
"11.0.1.0.2.99.dev6": [
{
"comment_text": "",
"digests": {
"md5": "200cade7337c5b3cb51724eedb4b7859",
"sha256": "ffd371528630b4abb2d6e6a2f4107b318f6973b75b906d5f89b0a26dbf75edae"
},
"downloads": -1,
"filename": "odoo11_addon_web_widget_x2many_2d_matrix-11.0.1.0.2.99.dev6-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "200cade7337c5b3cb51724eedb4b7859",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*",
"size": 49710,
"upload_time": "2018-08-28T04:37:02",
"url": "https://files.pythonhosted.org/packages/7c/de/acf367cd4d008dd28da5850451f00dd7f0867b23e462e3661678258a1862/odoo11_addon_web_widget_x2many_2d_matrix-11.0.1.0.2.99.dev6-py2.py3-none-any.whl"
}
],
"11.0.1.1.0.99.dev1": [
{
"comment_text": "",
"digests": {
"md5": "eebba739811f1add61e1fad28165e0f7",
"sha256": "f0e8820fc86c07a1508857cd3b2729b08c32d88bb641a3e1b75a0827687ac95d"
},
"downloads": -1,
"filename": "odoo11_addon_web_widget_x2many_2d_matrix-11.0.1.1.0.99.dev1-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "eebba739811f1add61e1fad28165e0f7",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*",
"size": 50520,
"upload_time": "2018-09-21T04:37:20",
"url": "https://files.pythonhosted.org/packages/e6/f2/446c22ced1ec3bc9449d68c1318d070c434f739d6c15e91b96584414f5bb/odoo11_addon_web_widget_x2many_2d_matrix-11.0.1.1.0.99.dev1-py2.py3-none-any.whl"
}
],
"11.0.1.1.1.99.dev1": [
{
"comment_text": "",
"digests": {
"md5": "7bd5f97ccd0d7530e04ac7c903415ced",
"sha256": "58e4362fc48a5479ba0bd87739dae6aab61d164bb9793d5c47fde637fc773097"
},
"downloads": -1,
"filename": "odoo11_addon_web_widget_x2many_2d_matrix-11.0.1.1.1.99.dev1-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "7bd5f97ccd0d7530e04ac7c903415ced",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*",
"size": 51135,
"upload_time": "2018-11-10T05:38:00",
"url": "https://files.pythonhosted.org/packages/85/3b/c17b35cc43eed5b376ee752a28a4b3ebdeed1d3412faabd1cd5615302229/odoo11_addon_web_widget_x2many_2d_matrix-11.0.1.1.1.99.dev1-py2.py3-none-any.whl"
}
],
"11.0.1.1.1.99.dev2": [
{
"comment_text": "",
"digests": {
"md5": "89e76c691633231aeaeb3f12db98b568",
"sha256": "4c79dac2eb8009f6823d4307d03d2ff3e024c3ab27d13112e6e00623d66e74e9"
},
"downloads": -1,
"filename": "odoo11_addon_web_widget_x2many_2d_matrix-11.0.1.1.1.99.dev2-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "89e76c691633231aeaeb3f12db98b568",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*",
"size": 51437,
"upload_time": "2018-12-06T05:38:41",
"url": "https://files.pythonhosted.org/packages/68/51/1df466ff84af63643ef33e0eee84670ae0164d87b3e4ad4508655f743a30/odoo11_addon_web_widget_x2many_2d_matrix-11.0.1.1.1.99.dev2-py2.py3-none-any.whl"
}
],
"11.0.1.1.2": [
{
"comment_text": "",
"digests": {
"md5": "6bf84ae2ea23d8896aef6454b04e8eab",
"sha256": "c90d950f899df59d65cdd92ecd1819906012cf9abfa10cacf5e5d169bdb290ce"
},
"downloads": -1,
"filename": "odoo11_addon_web_widget_x2many_2d_matrix-11.0.1.1.2-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "6bf84ae2ea23d8896aef6454b04e8eab",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*",
"size": 51381,
"upload_time": "2019-04-25T04:40:47",
"url": "https://files.pythonhosted.org/packages/b4/34/62646548409f66cd4b57f90691349546f3de977e8de6f7043c724ad7c5fa/odoo11_addon_web_widget_x2many_2d_matrix-11.0.1.1.2-py2.py3-none-any.whl"
}
],
"11.0.1.1.2.99.dev2": [
{
"comment_text": "",
"digests": {
"md5": "d2088ac495647dd4b16482c7ea08b7ad",
"sha256": "abd5d056e42b358dc9595ad358c2f749bf2ff8fab5134dd74c8c1776bb8133c0"
},
"downloads": -1,
"filename": "odoo11_addon_web_widget_x2many_2d_matrix-11.0.1.1.2.99.dev2-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "d2088ac495647dd4b16482c7ea08b7ad",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*",
"size": 51524,
"upload_time": "2019-05-12T04:42:11",
"url": "https://files.pythonhosted.org/packages/8e/28/a102e4c5fdc3054777dd9827966299c16badc66253e41b580cdbeca7228c/odoo11_addon_web_widget_x2many_2d_matrix-11.0.1.1.2.99.dev2-py2.py3-none-any.whl"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "6bf84ae2ea23d8896aef6454b04e8eab",
"sha256": "c90d950f899df59d65cdd92ecd1819906012cf9abfa10cacf5e5d169bdb290ce"
},
"downloads": -1,
"filename": "odoo11_addon_web_widget_x2many_2d_matrix-11.0.1.1.2-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "6bf84ae2ea23d8896aef6454b04e8eab",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*",
"size": 51381,
"upload_time": "2019-04-25T04:40:47",
"url": "https://files.pythonhosted.org/packages/b4/34/62646548409f66cd4b57f90691349546f3de977e8de6f7043c724ad7c5fa/odoo11_addon_web_widget_x2many_2d_matrix-11.0.1.1.2-py2.py3-none-any.whl"
}
]
}