diff options
| author | Christophe Simonis <chs@odoo.com> | 2017-07-26 23:35:06 +0200 |
|---|---|---|
| committer | Christophe Simonis <chs@odoo.com> | 2017-07-26 23:35:06 +0200 |
| commit | 8a1311bca17bd93a87f94579698adddc416f78f0 (patch) | |
| tree | bac0ac044fd643927466dc5eb32d0359d9b37bde /addons/web | |
| parent | faf72250221e0eb2fc711b9168c75b1dc70120e7 (diff) | |
| parent | 3d4238f71e48de14afd0072a8309f2bb6fc46eb6 (diff) | |
[MERGE] forward port branch saas-17 up to 3d4238f71e4
Diffstat (limited to 'addons/web')
| -rw-r--r-- | addons/web/i18n/web.pot | 1293 | ||||
| -rw-r--r-- | addons/web/static/src/js/chrome/search_menus.js | 8 | ||||
| -rw-r--r-- | addons/web/static/src/js/chrome/search_view.js | 2 | ||||
| -rw-r--r-- | addons/web/static/src/js/fields/relational_fields.js | 34 | ||||
| -rw-r--r-- | addons/web/static/src/js/services/data_manager.js | 2 | ||||
| -rw-r--r-- | addons/web/static/src/js/views/basic/basic_model.js | 36 | ||||
| -rw-r--r-- | addons/web/static/src/js/views/form/form_renderer.js | 15 | ||||
| -rw-r--r-- | addons/web/static/src/less/form_view.less | 21 | ||||
| -rw-r--r-- | addons/web/static/src/xml/base.xml | 49 | ||||
| -rw-r--r-- | addons/web/static/tests/fields/relational_fields_tests.js | 72 | ||||
| -rw-r--r-- | addons/web/static/tests/helpers/mock_server.js | 2 | ||||
| -rw-r--r-- | addons/web/static/tests/views/basic_model_tests.js | 14 | ||||
| -rw-r--r-- | addons/web/static/tests/views/form_tests.js | 65 |
13 files changed, 915 insertions, 698 deletions
diff --git a/addons/web/i18n/web.pot b/addons/web/i18n/web.pot index 1362fd9ccca..c460b8ece07 100644 --- a/addons/web/i18n/web.pot +++ b/addons/web/i18n/web.pot @@ -4,10 +4,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 10.saas~15\n" +"Project-Id-Version: Odoo Server 10.saas~16\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-04-18 14:46+0000\n" -"PO-Revision-Date: 2017-04-18 14:46+0000\n" +"POT-Creation-Date: 2017-07-25 10:04+0000\n" +"PO-Revision-Date: 2017-07-25 10:04+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -17,93 +17,115 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_common.js:874 +#: code:addons/web/static/src/js/views/view_dialogs.js:125 #, python-format msgid " & Close" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/search_filters.js:222 +#: code:addons/web/static/src/js/views/calendar/calendar_model.js:479 +#, python-format +msgid " [Me]" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/chrome/search_filters.js:223 #, python-format msgid " and " msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/search_inputs.js:554 -#: code:addons/web/static/src/js/views/search_view.js:206 +#: code:addons/web/static/src/js/chrome/search_inputs.js:566 +#: code:addons/web/static/src/js/chrome/search_view.js:203 #, python-format msgid " or " msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/view_manager.js:222 +#: code:addons/web/static/src/js/fields/field_utils.js:247 +#: code:addons/web/static/src/js/views/kanban/kanban_column.js:222 +#, python-format +msgid " records" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/chrome/view_manager.js:311 #, python-format msgid " view couldn't be loaded" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/search_filters.js:107 -#: code:addons/web/static/src/js/views/search_filters.js:340 +#: code:addons/web/static/src/xml/base.xml:587 +#, python-format +msgid "# Code editor" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/chrome/search_filters.js:107 +#: code:addons/web/static/src/js/chrome/search_filters.js:342 #, python-format msgid "%(field)s %(operator)s" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/search_filters.js:108 +#: code:addons/web/static/src/js/chrome/search_filters.js:108 #, python-format msgid "%(field)s %(operator)s \"%(value)s\"" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/view_manager.js:65 +#: code:addons/web/static/src/js/chrome/view_manager.js:106 #, python-format msgid "%(view_type)s view" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/translation.js:103 +#: code:addons/web/static/src/js/core/translation.js:103 #, python-format msgid "%d days ago" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/translation.js:101 +#: code:addons/web/static/src/js/core/translation.js:101 #, python-format msgid "%d hours ago" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/translation.js:99 +#: code:addons/web/static/src/js/core/translation.js:99 #, python-format msgid "%d minutes ago" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/translation.js:105 +#: code:addons/web/static/src/js/core/translation.js:105 #, python-format msgid "%d months ago" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/debug_manager.js:136 +#: code:addons/web/static/src/js/widgets/debug_manager.js:141 #, python-format msgid "%d requests (%d ms) %d queries (%d ms)" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/translation.js:107 +#: code:addons/web/static/src/js/core/translation.js:107 #, python-format msgid "%d years ago" msgstr "" @@ -117,72 +139,72 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/formats.js:189 +#: code:addons/web/static/src/js/fields/field_utils.js:375 #, python-format msgid "'%s' is not a correct date" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/time.js:193 +#: code:addons/web/static/src/js/core/time.js:193 #, python-format msgid "'%s' is not a correct date, datetime nor time" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/formats.js:175 +#: code:addons/web/static/src/js/fields/field_utils.js:422 #, python-format msgid "'%s' is not a correct datetime" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/formats.js:146 +#: code:addons/web/static/src/js/fields/field_utils.js:433 #, python-format msgid "'%s' is not a correct float" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/formats.js:134 +#: code:addons/web/static/src/js/fields/field_utils.js:503 #, python-format msgid "'%s' is not a correct integer" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/formats.js:194 +#: code:addons/web/static/src/js/fields/field_utils.js:469 #, python-format -msgid "'%s' is not a correct time" +msgid "'%s' is not a correct monetary field" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/time.js:205 +#: code:addons/web/static/src/js/core/time.js:205 #, python-format msgid "'%s' is not convertible to date, datetime nor time" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/formats.js:77 +#: code:addons/web/static/src/xml/base_common.xml:101 #, python-format -msgid "(%d records)" +msgid "(no string)" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base_common.xml:100 +#: code:addons/web/static/src/xml/base_common.xml:34 #, python-format -msgid "(no string)" +msgid "(nolabel)" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base_common.xml:34 +#: code:addons/web/static/src/js/fields/field_utils.js:245 #, python-format -msgid "(nolabel)" +msgid "1 record" msgstr "" #. module: web @@ -197,63 +219,56 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:708 +#: code:addons/web/static/src/xml/base.xml:564 #, python-format msgid "ALL" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:709 +#: code:addons/web/static/src/xml/base.xml:565 #, python-format msgid "ANY" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/crash_manager.js:19 +#: code:addons/web/static/src/js/services/crash_manager.js:19 #, python-format msgid "Access Denied" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/crash_manager.js:15 +#: code:addons/web/static/src/js/services/crash_manager.js:15 #, python-format msgid "Access Error" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1438 +#: code:addons/web/static/src/xml/base.xml:1265 #, python-format msgid "Access to all Enterprise Apps" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/sidebar.js:23 +#: code:addons/web/static/src/js/chrome/sidebar.js:34 #, python-format msgid "Action" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_relational_widgets.js:1123 -#, python-format -msgid "Action Button" -msgstr "" - -#. module: web -#. openerp-web -#: code:addons/web/static/src/xml/base_common.xml:120 +#: code:addons/web/static/src/xml/base_common.xml:135 #, python-format msgid "Action ID:" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_widgets.js:695 +#: code:addons/web/static/src/js/fields/basic_fields.js:1481 #, python-format msgid "Activate" msgstr "" @@ -267,256 +282,312 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_widgets.js:692 -#: code:addons/web/static/src/js/views/form_widgets.js:698 -#: code:addons/web/static/src/js/views/form_widgets.js:704 +#: code:addons/web/static/src/js/fields/basic_fields.js:1480 +#: code:addons/web/static/src/js/fields/basic_fields.js:1484 +#: code:addons/web/static/src/js/fields/basic_fields.js:1488 #, python-format msgid "Active" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_relational_widgets.js:1379 -#: code:addons/web/static/src/xml/base.xml:1267 +#: code:addons/web/static/src/js/fields/relational_fields.js:1114 +#: code:addons/web/static/src/xml/base.xml:1121 +#: code:addons/web/static/src/xml/kanban.xml:51 +#: code:addons/web/static/src/xml/kanban.xml:52 +#: code:addons/web/static/src/xml/kanban.xml:60 +#: code:addons/web/static/src/xml/kanban.xml:61 #, python-format msgid "Add" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1091 +#: code:addons/web/static/src/xml/base.xml:943 #, python-format msgid "Add Custom Filter" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1095 +#: code:addons/web/static/src/xml/base.xml:947 #, python-format msgid "Add a condition" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_relational_widgets.js:1019 +#: code:addons/web/static/src/js/views/list/list_editable_renderer.js:384 #, python-format msgid "Add an item" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1201 +#: code:addons/web/static/src/xml/base.xml:1056 #, python-format msgid "Add custom group" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:716 +#: code:addons/web/static/src/xml/base.xml:572 #, python-format msgid "Add filter" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:770 +#: code:addons/web/static/src/xml/kanban.xml:48 +#, python-format +msgid "Add new Column" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:632 #, python-format msgid "Add new value" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:251 +#: code:addons/web/static/src/xml/base.xml:250 #, python-format msgid "Add..." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_relational_widgets.js:1306 +#: code:addons/web/static/src/js/fields/relational_fields.js:1137 #, python-format msgid "Add: " msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1067 +#: code:addons/web/static/src/xml/base.xml:920 #, python-format msgid "Advanced Search..." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/dialog.js:169 +#: code:addons/web/static/src/js/core/dialog.js:177 #, python-format msgid "Alert" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:698 -#: code:addons/web/static/src/xml/base.xml:703 +#: code:addons/web/static/src/xml/base.xml:554 +#: code:addons/web/static/src/xml/base.xml:559 #, python-format msgid "All" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:480 +#: code:addons/web/static/src/js/views/calendar/calendar_model.js:363 +#, python-format +msgid "All day" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/views/calendar/calendar_renderer.js:328 +#, python-format +msgid "All the day" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:380 #, python-format msgid "All users" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:35 +#: code:addons/web/static/src/xml/base.xml:37 #, python-format msgid "An error occurred" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1443 +#: code:addons/web/static/src/xml/base.xml:1270 #, python-format msgid "And more" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:699 -#: code:addons/web/static/src/xml/base.xml:704 +#: code:addons/web/static/src/xml/base.xml:555 +#: code:addons/web/static/src/xml/base.xml:560 #, python-format msgid "Any" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1094 -#: code:addons/web/static/src/xml/base.xml:1212 +#: code:addons/web/static/src/xml/base.xml:946 +#: code:addons/web/static/src/xml/base.xml:1067 #, python-format msgid "Apply" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_widgets.js:699 -#: code:addons/web/static/src/js/views/list_view.js:289 +#: code:addons/web/static/src/js/fields/basic_fields.js:1485 +#: code:addons/web/static/src/js/views/list/list_controller.js:127 #, python-format msgid "Archive" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_widgets.js:700 +#: code:addons/web/static/src/xml/kanban.xml:25 +#, python-format +msgid "Archive Records" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/fields/basic_fields.js:1484 #, python-format msgid "Archived" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/search_menus.js:250 +#: code:addons/web/static/src/js/views/kanban/kanban_column.js:275 +#, python-format +msgid "Are you sure that you want to remove this column ?" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/chrome/search_menus.js:251 #, python-format msgid "Are you sure that you want to remove this filter?" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:224 +#: code:addons/web/static/src/js/views/basic/basic_controller.js:288 +#: code:addons/web/static/src/js/views/calendar/calendar_controller.js:287 #, python-format -msgid "Attachment :" +msgid "Are you sure you want to delete this record ?" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1263 +#: code:addons/web/static/src/xml/base.xml:223 #, python-format -msgid "Available fields" +msgid "Attachment :" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:547 +#: code:addons/web/static/src/xml/base.xml:1117 #, python-format -msgid "Bar Chart" +msgid "Available fields" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/list_view.js:1857 +#: code:addons/web/static/src/xml/base.xml:447 #, python-format -msgid "Binary file" +msgid "Bar Chart" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1442 +#: code:addons/web/static/src/xml/base.xml:1269 #, python-format msgid "Bugfixes guarantee" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base_common.xml:97 +#: code:addons/web/static/src/xml/base_common.xml:98 #, python-format msgid "Button" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base_common.xml:112 +#: code:addons/web/static/src/xml/base_common.xml:127 #, python-format msgid "Button Type:" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/utils.js:285 +#: code:addons/web/static/src/js/core/utils.js:113 #, python-format msgid "Bytes,Kb,Mb,Gb,Tb,Pb,Eb,Zb,Yb" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/list_common.js:134 +#: code:addons/web/static/src/js/views/calendar/calendar_view.js:22 +#, python-format +msgid "Calendar" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/views/calendar/calendar_view.js:36 #, python-format -msgid "Can't convert value %s to context" +msgid "Calendar view has not defined 'date_start' attribute." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/crash_manager.js:201 -#: code:addons/web/static/src/js/framework/dialog.js:183 -#: code:addons/web/static/src/js/views/form_common.js:1047 -#: code:addons/web/static/src/js/views/form_relational_widgets.js:43 -#: code:addons/web/static/src/js/views/form_upgrade_widgets.js:41 -#: code:addons/web/static/src/xml/base.xml:65 +#: code:addons/web/static/src/js/core/dialog.js:191 +#: code:addons/web/static/src/js/fields/relational_fields.js:66 +#: code:addons/web/static/src/js/fields/upgrade_fields.js:75 +#: code:addons/web/static/src/js/services/crash_manager.js:201 +#: code:addons/web/static/src/js/views/calendar/calendar_quick_create.js:56 +#: code:addons/web/static/src/js/views/kanban/kanban_column.js:269 +#: code:addons/web/static/src/js/views/view_dialogs.js:353 +#: code:addons/web/static/src/xml/base.xml:67 #, python-format msgid "Cancel" msgstr "" #. module: web #. openerp-web -#: code:addons/web/controllers/main.py:754 -#: code:addons/web/controllers/main.py:756 -#: code:addons/web/controllers/main.py:761 -#: code:addons/web/controllers/main.py:762 -#: code:addons/web/static/src/js/widgets/change_password.js:15 -#: code:addons/web/static/src/xml/base.xml:64 +#: code:addons/web/static/src/js/views/graph/graph_renderer.js:69 +#, python-format +msgid "Cannot render chart with mode : " +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/controllers/main.py:772 +#: code:addons/web/controllers/main.py:774 +#: code:addons/web/controllers/main.py:779 +#: code:addons/web/controllers/main.py:780 +#: code:addons/web/static/src/js/widgets/change_password.js:27 +#: code:addons/web/static/src/xml/base.xml:66 #, python-format msgid "Change Password" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base_common.xml:71 +#: code:addons/web/static/src/xml/base_common.xml:73 #, python-format msgid "Change default:" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:969 -#: code:addons/web/static/src/xml/base.xml:999 +#: code:addons/web/static/src/xml/base.xml:823 +#: code:addons/web/static/src/xml/base.xml:854 #, python-format msgid "Clear" msgstr "" @@ -530,9 +601,9 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_common.js:868 -#: code:addons/web/static/src/js/views/form_view.js:1122 -#: code:addons/web/static/src/js/views/form_widgets.js:706 +#: code:addons/web/static/src/js/fields/basic_fields.js:1489 +#: code:addons/web/static/src/js/views/calendar/calendar_controller.js:298 +#: code:addons/web/static/src/js/views/view_dialogs.js:111 #: code:addons/web/static/src/js/widgets/data_export.js:203 #: code:addons/web/static/src/js/widgets/domain_selector_dialog.js:21 #, python-format @@ -541,170 +612,175 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_widgets.js:705 +#: code:addons/web/static/src/js/fields/basic_fields.js:1488 #, python-format msgid "Closed" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:454 +#: code:addons/web/static/src/xml/base.xml:354 #, python-format msgid "Condition:" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:59 +#: code:addons/web/static/src/xml/base.xml:61 #, python-format msgid "Confirm New Password" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/dialog.js:194 +#: code:addons/web/static/src/js/core/dialog.js:202 #, python-format msgid "Confirmation" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/abstract_web_client.js:220 +#: code:addons/web/static/src/js/chrome/abstract_web_client.js:260 #, python-format msgid "Connection lost" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/abstract_web_client.js:229 +#: code:addons/web/static/src/js/chrome/abstract_web_client.js:269 #, python-format msgid "Connection restored" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base_common.xml:59 +#: code:addons/web/static/src/xml/base_common.xml:61 +#: code:addons/web/static/src/xml/base_common.xml:114 #, python-format msgid "Context:" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/crash_manager.js:127 +#: code:addons/web/static/src/js/services/crash_manager.js:127 #, python-format msgid "Copied !" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:33 +#: code:addons/web/static/src/xml/base.xml:35 #, python-format msgid "Copy the full error to clipboard" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_widgets.js:1322 +#: code:addons/web/static/src/js/fields/basic_fields.js:1115 #, python-format msgid "Could not display the selected image." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/list_view.js:1034 +#: code:addons/web/static/src/js/core/utils.js:416 #, python-format -msgid "Could not find id in dataset" +msgid "Could not serialize XML" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/utils.js:180 +#: code:addons/web/static/src/js/views/graph/graph_view.js:35 +#: code:addons/web/static/src/js/views/graph/graph_view.js:48 +#: code:addons/web/static/src/js/views/pivot/pivot_view.js:39 +#: code:addons/web/static/src/js/views/pivot/pivot_view.js:58 +#: code:addons/web/static/src/xml/base.xml:443 +#: code:addons/web/static/src/xml/base.xml:470 #, python-format -msgid "Could not serialize XML" +msgid "Count" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/graph_view.js:87 -#: code:addons/web/static/src/js/views/graph_widget.js:22 -#: code:addons/web/static/src/js/views/pivot_view.js:196 -#: code:addons/web/static/src/xml/base.xml:543 -#: code:addons/web/static/src/xml/base.xml:572 +#: code:addons/web/static/src/js/fields/relational_fields.js:45 +#: code:addons/web/static/src/js/views/calendar/calendar_controller.js:212 +#: code:addons/web/static/src/js/views/calendar/calendar_quick_create.js:45 +#: code:addons/web/static/src/js/views/calendar/calendar_quick_create.js:80 +#: code:addons/web/static/src/js/views/kanban/kanban_controller.js:321 +#: code:addons/web/static/src/js/views/view_dialogs.js:359 +#: code:addons/web/static/src/xml/base.xml:296 +#: code:addons/web/static/src/xml/base.xml:316 #, python-format -msgid "Count" +msgid "Create" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_common.js:1050 -#: code:addons/web/static/src/js/views/form_relational_widgets.js:29 -#: code:addons/web/static/src/js/views/list_view.js:49 -#: code:addons/web/static/src/js/views/list_view.js:1940 -#: code:addons/web/static/src/xml/base.xml:416 +#: code:addons/web/static/src/js/views/form/form_controller.js:468 #, python-format -msgid "Create" +msgid "Create " msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_common.js:226 +#: code:addons/web/static/src/js/fields/relational_fields.js:357 #, python-format msgid "Create \"<strong>%s</strong>\"" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_relational_widgets.js:26 +#: code:addons/web/static/src/js/fields/relational_fields.js:42 #, python-format msgid "Create a %s" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_common.js:237 +#: code:addons/web/static/src/js/fields/relational_fields.js:366 #, python-format msgid "Create and Edit..." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_relational_widgets.js:39 +#: code:addons/web/static/src/js/fields/relational_fields.js:56 #, python-format msgid "Create and edit" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_common.js:281 -#: code:addons/web/static/src/js/views/form_relational_widgets.js:1081 +#: code:addons/web/static/src/js/fields/relational_fields.js:395 +#: code:addons/web/static/src/js/views/calendar/calendar_quick_create.js:85 #, python-format msgid "Create: " msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:229 +#: code:addons/web/static/src/xml/base.xml:228 #, python-format msgid "Created by :" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:183 +#: code:addons/web/static/src/xml/base.xml:182 #, python-format msgid "Creation Date:" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:179 +#: code:addons/web/static/src/xml/base.xml:178 #, python-format msgid "Creation User:" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/search_menus.js:178 +#: code:addons/web/static/src/js/chrome/search_menus.js:179 #, python-format msgid "Custom Filter" msgstr "" @@ -716,89 +792,80 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:591 +#: code:addons/web/static/src/xml/base.xml:488 +#: code:addons/web/static/src/xml/web_calendar.xml:71 #, python-format msgid "Day" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_widgets.js:693 +#: code:addons/web/static/src/js/fields/basic_fields.js:1481 #, python-format msgid "Deactivate" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:437 +#: code:addons/web/static/src/xml/base.xml:337 #, python-format msgid "Default:" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_view.js:164 -#: code:addons/web/static/src/js/views/list_view.js:291 -#: code:addons/web/static/src/xml/base.xml:1308 +#: code:addons/web/static/src/js/views/calendar/calendar_controller.js:285 +#: code:addons/web/static/src/js/views/form/form_controller.js:152 +#: code:addons/web/static/src/js/views/list/list_controller.js:137 +#: code:addons/web/static/src/xml/base.xml:1162 +#: code:addons/web/static/src/xml/kanban.xml:22 #, python-format msgid "Delete" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:240 +#: code:addons/web/static/src/xml/base.xml:239 #, python-format msgid "Delete this attachment" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1048 +#: code:addons/web/static/src/xml/base.xml:901 #, python-format msgid "Delete this file" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_common.js:868 +#: code:addons/web/static/src/js/views/view_dialogs.js:111 #: code:addons/web/static/src/js/widgets/domain_selector_dialog.js:28 -#: code:addons/web/static/src/xml/base.xml:348 -#: code:addons/web/static/src/xml/base.xml:426 +#: code:addons/web/static/src/xml/base.xml:303 +#: code:addons/web/static/src/xml/base.xml:326 +#: code:addons/web/static/src/xml/kanban.xml:53 +#: code:addons/web/static/src/xml/kanban.xml:62 #, python-format msgid "Discard" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/sidebar.js:219 -#, python-format -msgid "Do you really want to delete this attachment ?" -msgstr "" - -#. module: web -#. openerp-web -#: code:addons/web/static/src/js/widgets/data_export.js:325 +#: code:addons/web/static/src/js/widgets/data_export.js:336 #, python-format msgid "Do you really want to delete this export template?" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_view.js:728 -#, python-format -msgid "Do you really want to delete this record?" -msgstr "" - -#. module: web -#. openerp-web -#: code:addons/web/static/src/js/views/list_view.js:544 +#: code:addons/web/static/src/js/views/calendar/calendar_renderer.js:132 #, python-format -msgid "Do you really want to remove these records?" +msgid "Do you really want to delete this filter from favorites ?" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1423 +#: code:addons/web/static/src/xml/base.xml:1250 #, python-format msgid "Documentation" msgstr "" @@ -812,51 +879,46 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base_common.xml:63 -#, python-format -msgid "Domain:" -msgstr "" - -#. module: web -#. openerp-web -#: code:addons/web/static/src/js/framework/misc.js:16 +#: code:addons/web/static/src/js/widgets/domain_selector.js:501 #, python-format -msgid "Don't leave yet,<br />it's still loading..." +msgid "Domain error" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/list_view.js:1857 +#: code:addons/web/static/src/xml/base_common.xml:65 #, python-format -msgid "Download" +msgid "Domain:" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/list_view.js:1873 +#: code:addons/web/static/src/js/core/misc.js:16 #, python-format -msgid "Download \"%s\"" +msgid "Don't leave yet,<br />it's still loading..." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:578 +#: code:addons/web/static/src/xml/base.xml:476 #, python-format msgid "Download xls" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_view.js:165 +#: code:addons/web/static/src/js/views/form/form_controller.js:158 #, python-format msgid "Duplicate" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:159 -#: code:addons/web/static/src/xml/base.xml:412 -#: code:addons/web/static/src/xml/base.xml:968 +#: code:addons/web/static/src/js/views/calendar/calendar_controller.js:279 +#: code:addons/web/static/src/js/views/calendar/calendar_quick_create.js:50 +#: code:addons/web/static/src/xml/base.xml:158 +#: code:addons/web/static/src/xml/base.xml:312 +#: code:addons/web/static/src/xml/base.xml:822 #, python-format msgid "Edit" msgstr "" @@ -870,22 +932,28 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:160 +#: code:addons/web/static/src/js/views/kanban/kanban_column.js:301 +#, python-format +msgid "Edit Column" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:159 #, python-format msgid "Edit SearchView" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/debug_manager.js:255 -#: code:addons/web/static/src/xml/base.xml:131 +#: code:addons/web/static/src/xml/kanban.xml:21 #, python-format -msgid "Edit Workflow" +msgid "Edit Stage" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:683 +#: code:addons/web/static/src/xml/base.xml:540 #, python-format msgid "Edit domain" msgstr "" @@ -897,37 +965,44 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/crash_manager.js:130 -#: code:addons/web/static/src/js/view_manager.js:222 -#: code:addons/web/static/src/js/views/search_menus.js:86 -#: code:addons/web/static/src/js/views/search_menus.js:93 +#: code:addons/web/static/src/js/chrome/search_menus.js:86 +#: code:addons/web/static/src/js/chrome/search_menus.js:93 +#: code:addons/web/static/src/js/chrome/view_manager.js:311 +#: code:addons/web/static/src/js/services/crash_manager.js:130 #, python-format msgid "Error" msgstr "" #. module: web -#: code:addons/web/controllers/main.py:762 +#: code:addons/web/controllers/main.py:780 #, python-format msgid "Error, password not changed !" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/pyeval.js:1024 +#: code:addons/web/static/src/js/views/calendar/calendar_model.js:488 +#, python-format +msgid "Everybody's calendars" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/views/calendar/calendar_model.js:488 #, python-format -msgid "Evaluation Error" +msgid "Everything" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:577 +#: code:addons/web/static/src/xml/base.xml:475 #, python-format msgid "Expand all" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/list_view.js:288 +#: code:addons/web/static/src/js/views/list/list_controller.js:122 #, python-format msgid "Export" msgstr "" @@ -941,7 +1016,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1256 +#: code:addons/web/static/src/xml/base.xml:1110 #, python-format msgid "Export Formats :" msgstr "" @@ -955,127 +1030,134 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1249 +#: code:addons/web/static/src/xml/base.xml:1103 #, python-format msgid "Export Type :" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1252 +#: code:addons/web/static/src/xml/base.xml:1106 #, python-format msgid "Export all Data" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/view_manager.js:436 +#: code:addons/web/static/src/js/chrome/view_manager.js:510 #, python-format msgid "Failed to evaluate search criterions" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1218 +#: code:addons/web/static/src/js/fields/field_utils.js:44 #, python-format -msgid "Favorites" +msgid "False" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_view.js:1299 +#: code:addons/web/static/src/xml/base.xml:1072 #, python-format -msgid "Field '%s' specified in view could not be found." +msgid "Favorites" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base_common.xml:39 +#: code:addons/web/static/src/xml/base_common.xml:41 #, python-format msgid "Field:" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/debug_manager.js:336 -#: code:addons/web/static/src/xml/base.xml:157 +#: code:addons/web/static/src/js/widgets/debug_manager.js:354 +#: code:addons/web/static/src/xml/base.xml:156 #, python-format msgid "Fields View Get" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/debug_manager.js:233 +#: code:addons/web/static/src/js/widgets/debug_manager.js:248 #, python-format msgid "Fields of %s" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1275 +#: code:addons/web/static/src/xml/base.xml:1129 #, python-format msgid "Fields to export" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_widgets.js:1185 +#: code:addons/web/static/src/js/fields/basic_fields.js:1034 #, python-format msgid "File Upload" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_widgets.js:1165 +#: code:addons/web/static/src/js/fields/basic_fields.js:1014 #, python-format msgid "File upload" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/search_inputs.js:552 +#: code:addons/web/static/src/js/chrome/search_inputs.js:564 #, python-format msgid "Filter" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/search_menus.js:86 +#: code:addons/web/static/src/js/chrome/search_menus.js:86 #, python-format msgid "Filter name is required." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/search_inputs.js:496 +#: code:addons/web/static/src/js/chrome/search_inputs.js:508 #, python-format msgid "Filter on: %s" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/search_menus.js:93 +#: code:addons/web/static/src/js/chrome/search_menus.js:93 #, python-format msgid "Filter with same name already exists." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1087 +#: code:addons/web/static/src/xml/base.xml:939 #, python-format msgid "Filters" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:576 +#: code:addons/web/static/src/xml/base.xml:474 #, python-format msgid "Flip axis" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/pivot_view.js:848 +#: code:addons/web/static/src/xml/kanban.xml:19 +#, python-format +msgid "Fold" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/views/pivot/pivot_controller.js:128 #, python-format msgid "For Excel compatibility, data cannot be exported if there are more than 256 columns.\n" "\n" @@ -1084,44 +1166,43 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_view.js:33 -#: code:addons/web/static/src/js/views/form_view.js:301 +#: code:addons/web/static/src/js/views/form/form_view.js:17 #, python-format msgid "Form" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1435 +#: code:addons/web/static/src/xml/base.xml:1262 #, python-format msgid "Get this feature and much more with Odoo Enterprise!" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/crash_manager.js:18 +#: code:addons/web/static/src/js/services/crash_manager.js:18 #, python-format msgid "Global Business Error" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/graph_view.js:18 +#: code:addons/web/static/src/js/views/graph/graph_view.js:20 #, python-format msgid "Graph" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/search_inputs.js:699 -#: code:addons/web/static/src/xml/base.xml:1196 +#: code:addons/web/static/src/js/chrome/search_inputs.js:717 +#: code:addons/web/static/src/xml/base.xml:1051 #, python-format msgid "Group By" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/search_inputs.js:674 +#: code:addons/web/static/src/js/chrome/search_inputs.js:692 #, python-format msgid "Group by: %s" msgstr "" @@ -1133,91 +1214,99 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/priority.js:50 -#, python-format -msgid "High" -msgstr "" - -#. module: web -#. openerp-web -#: code:addons/web/static/src/xml/base.xml:167 +#: code:addons/web/static/src/xml/base.xml:166 #, python-format msgid "ID:" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_widgets.js:1322 +#: code:addons/web/static/src/js/fields/basic_fields.js:1115 #, python-format msgid "Image" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1251 +#: code:addons/web/static/src/xml/base.xml:1105 #, python-format msgid "Import-Compatible Export" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_widgets.js:694 +#: code:addons/web/static/src/js/fields/basic_fields.js:1480 #, python-format msgid "Inactive" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/graph_widget.js:209 -#: code:addons/web/static/src/js/views/graph_widget.js:217 +#: code:addons/web/static/src/js/views/graph/graph_renderer.js:205 +#: code:addons/web/static/src/js/views/graph/graph_renderer.js:213 #, python-format msgid "Invalid data" msgstr "" #. module: web -#: code:addons/web/controllers/main.py:658 -#: code:addons/web/controllers/main.py:672 +#: code:addons/web/controllers/main.py:676 +#: code:addons/web/controllers/main.py:690 #, python-format -msgid "Invalid database name. Only alphanumerical characters and underscore are allowed." +msgid "Invalid database name. Only alphanumerical characters, underscore, hyphen and dot are allowed." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:681 +#: code:addons/web/static/src/xml/base.xml:538 #, python-format msgid "Invalid domain" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:808 +#: code:addons/web/static/src/js/widgets/model_field_selector.js:392 +#: code:addons/web/static/src/xml/base.xml:669 #, python-format msgid "Invalid field chain" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/debug_manager.js:184 +#: code:addons/web/static/src/js/views/graph/graph_renderer.js:68 +#, python-format +msgid "Invalid mode for chart" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/widgets/debug_manager.js:194 #, python-format msgid "JS Tests" msgstr "" #. module: web -#: code:addons/web/controllers/main.py:769 +#. openerp-web +#: code:addons/web/static/src/js/views/kanban/kanban_view.js:15 +#, python-format +msgid "Kanban" +msgstr "" + +#. module: web +#: code:addons/web/controllers/main.py:787 #, python-format msgid "Languages" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:191 +#: code:addons/web/static/src/xml/base.xml:190 #, python-format msgid "Latest Modification Date:" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:187 +#: code:addons/web/static/src/xml/base.xml:186 #, python-format msgid "Latest Modification by:" msgstr "" @@ -1231,47 +1320,44 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:548 +#: code:addons/web/static/src/xml/base.xml:448 #, python-format msgid "Line Chart" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/list_view.js:59 +#: code:addons/web/static/src/js/views/list/list_view.js:21 #, python-format msgid "List" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/loading.js:47 +#: code:addons/web/static/src/xml/kanban.xml:41 #, python-format -msgid "Loading" +msgid "Load more... (" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/loading.js:45 +#: code:addons/web/static/src/js/chrome/loading.js:58 #, python-format -msgid "Loading (%d)" +msgid "Loading" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/misc.js:13 +#: code:addons/web/static/src/js/chrome/loading.js:56 #, python-format -msgid "Loading..." +msgid "Loading (%d)" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/pyeval.js:1028 +#: code:addons/web/static/src/js/core/misc.js:13 #, python-format -msgid "Local evaluation failure\n" -"%s\n" -"\n" -"%s" +msgid "Loading..." msgstr "" #. module: web @@ -1281,21 +1367,14 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1428 +#: code:addons/web/static/src/xml/base.xml:1255 #, python-format msgid "Log out" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/priority.js:49 -#, python-format -msgid "Low" -msgstr "" - -#. module: web -#. openerp-web -#: code:addons/web/static/src/js/views/search_inputs.js:452 +#: code:addons/web/static/src/js/chrome/search_inputs.js:457 #, python-format msgid "M2O search fields do not currently handle multiple default values" msgstr "" @@ -1307,7 +1386,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/debug_manager.js:243 +#: code:addons/web/static/src/js/widgets/debug_manager.js:258 #: code:addons/web/static/src/xml/base.xml:130 #, python-format msgid "Manage Filters" @@ -1315,92 +1394,95 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:715 +#: code:addons/web/static/src/xml/base.xml:571 #, python-format msgid "Match" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:722 +#: code:addons/web/static/src/xml/base.xml:578 #, python-format msgid "Match records with" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:720 +#: code:addons/web/static/src/xml/base.xml:576 #, python-format msgid "Match records with the following rule:" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/misc.js:19 +#: code:addons/web/static/src/js/core/misc.js:19 #, python-format msgid "Maybe you should consider reloading the application by pressing F5..." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:535 -#: code:addons/web/static/src/xml/base.xml:564 +#: code:addons/web/static/src/xml/base.xml:435 +#: code:addons/web/static/src/xml/base.xml:462 #, python-format msgid "Measures" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/debug_manager.js:323 +#: code:addons/web/static/src/js/widgets/debug_manager.js:342 #, python-format msgid "Metadata (%s)" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base_common.xml:116 +#: code:addons/web/static/src/xml/base_common.xml:131 #, python-format msgid "Method:" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/crash_manager.js:16 +#: code:addons/web/static/src/js/services/crash_manager.js:16 #, python-format msgid "Missing Record" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1440 +#: code:addons/web/static/src/xml/base.xml:1267 #, python-format msgid "Mobile support" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:234 +#: code:addons/web/static/src/xml/base.xml:233 #, python-format msgid "Modified by :" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base_common.xml:67 +#: code:addons/web/static/src/xml/base_common.xml:69 +#: code:addons/web/static/src/xml/base_common.xml:118 #, python-format msgid "Modifiers:" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:593 +#: code:addons/web/static/src/xml/base.xml:490 +#: code:addons/web/static/src/xml/web_calendar.xml:73 #, python-format msgid "Month" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:948 +#: code:addons/web/static/src/js/views/form/form_renderer.js:290 +#: code:addons/web/static/src/xml/base.xml:805 #, python-format msgid "More" msgstr "" @@ -1412,84 +1494,84 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1271 +#: code:addons/web/static/src/xml/base.xml:1125 #, python-format msgid "Move Down" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1270 +#: code:addons/web/static/src/xml/base.xml:1124 #, python-format msgid "Move Up" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1427 +#: code:addons/web/static/src/xml/base.xml:1254 #, python-format msgid "My Odoo.com account" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:710 +#: code:addons/web/static/src/xml/base.xml:566 #, python-format msgid "NONE" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1325 +#: code:addons/web/static/src/xml/base.xml:1179 #, python-format msgid "Name:" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_view.js:315 +#: code:addons/web/static/src/js/views/basic/basic_model.js:439 #, python-format msgid "New" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:55 +#: code:addons/web/static/src/xml/base.xml:57 #, python-format msgid "New Password" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1439 +#: code:addons/web/static/src/xml/base.xml:1266 #, python-format msgid "New design" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/search_inputs.js:332 +#: code:addons/web/static/src/js/chrome/search_inputs.js:333 #, python-format msgid "No" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:175 +#: code:addons/web/static/src/xml/base.xml:174 #, python-format msgid "No Update:" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/graph_widget.js:96 +#: code:addons/web/static/src/js/views/graph/graph_renderer.js:75 #, python-format msgid "No data available for this chart. Try to add some records, or make sure that there is no active filter in the search bar." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:610 +#: code:addons/web/static/src/xml/base.xml:506 #, python-format msgid "No data available for this pivot table. Try to add some records, or make sure\n" " that there is at least one measure and no active filter in the search bar." @@ -1497,199 +1579,188 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/graph_widget.js:95 +#: code:addons/web/static/src/js/views/graph/graph_renderer.js:74 #, python-format msgid "No data to display" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:609 +#: code:addons/web/static/src/xml/base.xml:505 #, python-format msgid "No data to display." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/debug_manager.js:318 +#: code:addons/web/static/src/js/widgets/debug_manager.js:330 #, python-format msgid "No metadata available" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_common.js:246 -#, python-format -msgid "No results to show..." -msgstr "" - -#. module: web -#. openerp-web -#: code:addons/web/static/src/js/views/form_relational_widgets.js:328 +#: code:addons/web/static/src/js/fields/field_utils.js:243 #, python-format -msgid "No value found for the field %s for value %s" +msgid "No records" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/utils.js:144 +#: code:addons/web/static/src/js/fields/relational_fields.js:372 #, python-format -msgid "Node [%s] is not a JSONified XML node" +msgid "No results to show..." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:700 +#: code:addons/web/static/src/xml/base.xml:556 #, python-format msgid "None" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/priority.js:48 -#, python-format -msgid "Normal" -msgstr "" - -#. module: web -#. openerp-web -#: code:addons/web/static/src/js/views/graph_widget.js:253 +#: code:addons/web/static/src/js/views/graph/graph_renderer.js:252 #, python-format msgid "Not enough data points" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:900 +#: code:addons/web/static/src/xml/base.xml:776 #, python-format msgid "Not shown in kanban" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base_common.xml:43 +#: code:addons/web/static/src/xml/base_common.xml:45 +#: code:addons/web/static/src/xml/base_common.xml:110 #, python-format msgid "Object:" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/dialog.js:37 +#: code:addons/web/static/src/js/core/dialog.js:37 #, python-format msgid "Odoo" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/apps.js:149 +#: code:addons/web/static/src/js/apps.js:148 #, python-format msgid "Odoo Apps will be available soon" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/abstract_web_client.js:125 -#: code:addons/web/static/src/js/framework/crash_manager.js:154 +#: code:addons/web/static/src/js/chrome/abstract_web_client.js:165 +#: code:addons/web/static/src/js/services/crash_manager.js:154 #, python-format msgid "Odoo Client Error" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_upgrade_widgets.js:52 +#: code:addons/web/static/src/js/fields/upgrade_fields.js:86 #, python-format msgid "Odoo Enterprise" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/crash_manager.js:118 +#: code:addons/web/static/src/js/services/crash_manager.js:118 #, python-format msgid "Odoo Error" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/crash_manager.js:58 +#: code:addons/web/static/src/js/services/crash_manager.js:58 #, python-format msgid "Odoo Session Expired" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/crash_manager.js:108 -#: code:addons/web/static/src/js/framework/crash_manager.js:195 +#: code:addons/web/static/src/js/services/crash_manager.js:108 +#: code:addons/web/static/src/js/services/crash_manager.js:195 #, python-format msgid "Odoo Warning" msgstr "" #. module: web -#: model:ir.ui.view,arch_db:web.qunit_suite -msgid "Odoo Web Tests" -msgstr "" - -#. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_widgets.js:716 +#: code:addons/web/static/src/js/fields/basic_fields.js:1497 #, python-format msgid "Off" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/dialog.js:41 -#: code:addons/web/static/src/js/framework/dialog.js:159 -#: code:addons/web/static/src/js/framework/dialog.js:177 -#: code:addons/web/static/src/xml/base.xml:1298 +#: code:addons/web/static/src/js/core/dialog.js:41 +#: code:addons/web/static/src/js/core/dialog.js:167 +#: code:addons/web/static/src/js/core/dialog.js:185 +#: code:addons/web/static/src/js/views/kanban/kanban_column.js:264 +#: code:addons/web/static/src/xml/base.xml:1152 #, python-format msgid "Ok" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:51 +#: code:addons/web/static/src/xml/base.xml:53 #, python-format msgid "Old Password" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_widgets.js:714 +#: code:addons/web/static/src/js/fields/basic_fields.js:1496 #, python-format msgid "On" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base_common.xml:75 +#: code:addons/web/static/src/xml/base_common.xml:77 #, python-format msgid "On change:" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/progress_bar.js:79 +#: code:addons/web/static/src/js/fields/basic_fields.js:1698 #, python-format msgid "Only Integer Value should be valid." msgstr "" #. module: web +#: code:addons/web/controllers/main.py:488 +#, python-format +msgid "Only employee can access this database. Please contact the administrator." +msgstr "" + +#. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:473 +#: code:addons/web/static/src/xml/base.xml:373 #, python-format msgid "Only you" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_widgets.js:707 +#: code:addons/web/static/src/js/fields/basic_fields.js:1489 #, python-format msgid "Open" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:104 +#: code:addons/web/static/src/xml/base.xml:105 #, python-format msgid "Open Developer Tools" msgstr "" @@ -1703,10 +1774,10 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_relational_widgets.js:154 -#: code:addons/web/static/src/js/views/form_relational_widgets.js:922 -#: code:addons/web/static/src/js/views/form_relational_widgets.js:1105 -#: code:addons/web/static/src/js/views/form_relational_widgets.js:1322 +#: code:addons/web/static/src/js/fields/relational_fields.js:460 +#: code:addons/web/static/src/js/views/calendar/calendar_controller.js:265 +#: code:addons/web/static/src/js/views/form/form_controller.js:468 +#: code:addons/web/static/src/js/views/form/form_controller.js:487 #, python-format msgid "Open: " msgstr "" @@ -1718,28 +1789,28 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:549 +#: code:addons/web/static/src/xml/base.xml:449 #, python-format msgid "Pie Chart" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/graph_widget.js:218 +#: code:addons/web/static/src/js/views/graph/graph_renderer.js:214 #, python-format msgid "Pie chart cannot display all zero numbers.. Try to change your domain to display positive results" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/graph_widget.js:210 +#: code:addons/web/static/src/js/views/graph/graph_renderer.js:206 #, python-format msgid "Pie chart cannot mix positive and negative numbers. Try to change your domain to only display positive results" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/pivot_view.js:30 +#: code:addons/web/static/src/js/views/pivot/pivot_view.js:23 #, python-format msgid "Pivot" msgstr "" @@ -1753,35 +1824,35 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1286 +#: code:addons/web/static/src/xml/base.xml:1140 #, python-format msgid "Please note that only the selected ids will be exported." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1285 +#: code:addons/web/static/src/xml/base.xml:1139 #, python-format msgid "Please pay attention that all records matching your search filter will be exported. Not only the selected ids." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/data_export.js:441 +#: code:addons/web/static/src/js/widgets/data_export.js:455 #, python-format msgid "Please select fields to export..." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/data_export.js:427 +#: code:addons/web/static/src/js/widgets/data_export.js:441 #, python-format msgid "Please select fields to save export list..." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:36 +#: code:addons/web/static/src/xml/base.xml:38 #, python-format msgid "Please use the copy button to report the error to your support service." msgstr "" @@ -1798,77 +1869,83 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1426 +#: code:addons/web/static/src/xml/base.xml:1253 #, python-format msgid "Preferences" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/sidebar.js:22 +#: code:addons/web/static/src/js/chrome/sidebar.js:33 #, python-format msgid "Print" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:154 +#: code:addons/web/static/src/xml/base.xml:153 #, python-format msgid "Print Workflow" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:594 +#: code:addons/web/static/src/xml/base.xml:491 #, python-format msgid "Quarter" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/model_field_selector.js:40 +#: code:addons/web/static/src/js/widgets/model_field_selector.js:454 #, python-format msgid "Relation not allowed" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base_common.xml:79 +#: code:addons/web/static/src/xml/base_common.xml:81 #, python-format msgid "Relation:" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1268 +#: code:addons/web/static/src/xml/base.xml:1122 #, python-format msgid "Remove" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1269 +#: code:addons/web/static/src/xml/base.xml:1123 #, python-format msgid "Remove All" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_relational_widgets.js:327 +#: code:addons/web/static/src/xml/web_calendar.xml:57 #, python-format -msgid "Render" +msgid "Remove this favorite from the list" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_widgets.js:701 -#: code:addons/web/static/src/js/views/list_view.js:290 +#: code:addons/web/static/src/js/fields/basic_fields.js:1485 #, python-format msgid "Restore" msgstr "" #. module: web #. openerp-web +#: code:addons/web/static/src/xml/kanban.xml:26 +#, python-format +msgid "Restore Records" +msgstr "" + +#. module: web +#. openerp-web #: code:addons/web/static/src/xml/base.xml:113 #, python-format msgid "Run JS Tests" @@ -1876,113 +1953,106 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_common.js:874 +#: code:addons/web/static/src/js/views/view_dialogs.js:125 #: code:addons/web/static/src/js/widgets/domain_selector_dialog.js:25 -#: code:addons/web/static/src/xml/base.xml:345 -#: code:addons/web/static/src/xml/base.xml:422 -#: code:addons/web/static/src/xml/base.xml:1236 +#: code:addons/web/static/src/xml/base.xml:300 +#: code:addons/web/static/src/xml/base.xml:322 +#: code:addons/web/static/src/xml/base.xml:1090 #, python-format msgid "Save" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_common.js:889 +#: code:addons/web/static/src/js/views/view_dialogs.js:134 #, python-format msgid "Save & New" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_widgets.js:1202 +#: code:addons/web/static/src/js/fields/basic_fields.js:1170 #, python-format msgid "Save As..." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1298 +#: code:addons/web/static/src/xml/base.xml:1152 #, python-format msgid "Save as:" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1224 +#: code:addons/web/static/src/xml/base.xml:1078 #, python-format msgid "Save current search" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_view.js:1123 -#, python-format -msgid "Save default" -msgstr "" - -#. module: web -#. openerp-web -#: code:addons/web/static/src/xml/base.xml:1275 +#: code:addons/web/static/src/xml/base.xml:1129 #, python-format msgid "Save fields list" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1301 +#: code:addons/web/static/src/xml/base.xml:1155 #, python-format msgid "Saved exports:" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/search_inputs.js:361 +#: code:addons/web/static/src/js/chrome/search_inputs.js:362 #, python-format msgid "Search %(field)s at: %(value)s" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/search_inputs.js:193 -#: code:addons/web/static/src/js/views/search_inputs.js:212 -#: code:addons/web/static/src/js/views/search_inputs.js:403 +#: code:addons/web/static/src/js/chrome/search_inputs.js:194 +#: code:addons/web/static/src/js/chrome/search_inputs.js:213 +#: code:addons/web/static/src/js/chrome/search_inputs.js:403 #, python-format msgid "Search %(field)s for: %(value)s" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_common.js:212 +#: code:addons/web/static/src/js/fields/relational_fields.js:333 #, python-format msgid "Search More..." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1069 +#: code:addons/web/static/src/xml/base.xml:922 #, python-format msgid "Search..." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_common.js:281 +#: code:addons/web/static/src/js/fields/relational_fields.js:395 #, python-format msgid "Search: " msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:40 +#: code:addons/web/static/src/xml/base.xml:42 #, python-format msgid "See details" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_common.js:1055 -#: code:addons/web/static/src/xml/base.xml:997 -#: code:addons/web/static/src/xml/base.xml:998 +#: code:addons/web/static/src/js/views/view_dialogs.js:366 +#: code:addons/web/static/src/xml/base.xml:852 +#: code:addons/web/static/src/xml/base.xml:853 #, python-format msgid "Select" msgstr "" @@ -1994,235 +2064,215 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:685 +#: code:addons/web/static/src/xml/base.xml:542 #, python-format msgid "Select a model to add a filter." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/debug_manager.js:164 +#: code:addons/web/static/src/js/widgets/debug_manager.js:169 #, python-format msgid "Select a view" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_widgets.js:513 +#: code:addons/web/static/src/js/fields/basic_fields.js:2099 #, python-format msgid "Selected records" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base_common.xml:83 +#: code:addons/web/static/src/xml/base_common.xml:85 #, python-format msgid "Selection:" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_view.js:1120 -#, python-format -msgid "Set Default" -msgstr "" - -#. module: web -#. openerp-web -#: code:addons/web/static/src/xml/base.xml:151 +#: code:addons/web/static/src/xml/base.xml:150 #, python-format msgid "Set Defaults" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/list_view.js:941 -#, python-format -msgid "Setting 'id' attribute on existing record %s" -msgstr "" - -#. module: web -#. openerp-web -#: code:addons/web/static/src/xml/base.xml:1233 +#: code:addons/web/static/src/xml/base.xml:1087 #, python-format msgid "Share with all users" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/apps.js:149 +#: code:addons/web/static/src/js/apps.js:148 #, python-format msgid "Showing locally available modules" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base_common.xml:55 +#: code:addons/web/static/src/xml/base_common.xml:57 #, python-format msgid "Size:" msgstr "" #. module: web -#: code:addons/web/controllers/main.py:1070 +#: code:addons/web/controllers/main.py:1084 #, python-format msgid "Something horrible happened" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base_common.xml:107 +#: code:addons/web/static/src/xml/base_common.xml:122 #, python-format msgid "Special:" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/misc.js:14 +#: code:addons/web/static/src/js/core/misc.js:14 #, python-format msgid "Still loading..." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/misc.js:15 +#: code:addons/web/static/src/js/core/misc.js:15 #, python-format msgid "Still loading...<br />Please be patient." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1424 +#: code:addons/web/static/src/xml/web_calendar.xml:80 +#, python-format +msgid "Summary:" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1251 #, python-format msgid "Support" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_widgets.js:715 +#: code:addons/web/static/src/js/fields/basic_fields.js:1498 #, python-format msgid "Switch Off" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_widgets.js:717 +#: code:addons/web/static/src/js/fields/basic_fields.js:1499 #, python-format msgid "Switch On" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/domain_selector.js:264 +#: code:addons/web/static/src/js/widgets/domain_selector.js:548 #, python-format msgid "Syntax error" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/misc.js:18 +#: code:addons/web/static/src/js/core/misc.js:18 #, python-format msgid "Take a minute to get a coffee,<br />because it's loading..." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:132 +#: code:addons/web/static/src/xml/base.xml:131 #, python-format msgid "Technical Translation" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/domain_selector.js:264 +#: code:addons/web/static/src/js/widgets/domain_selector.js:502 +#: code:addons/web/static/src/js/widgets/domain_selector.js:548 #, python-format msgid "The domain you entered is not properly formed" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_widgets.js:1202 +#: code:addons/web/static/src/js/widgets/model_field_selector.js:393 #, python-format -msgid "The field is empty, there's nothing to save !" +msgid "The field chain is not valid. Did you maybe use a non-existing field name or followed a non-relational field?" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_view.js:882 +#: code:addons/web/static/src/js/fields/basic_fields.js:1170 #, python-format -msgid "The following fields are invalid:" +msgid "The field is empty, there's nothing to save !" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/list_view_editable.js:123 +#: code:addons/web/static/src/js/views/basic/basic_controller.js:391 #, python-format -msgid "The line has been modified, your changes will be discarded. Are you sure you want to discard the changes ?" +msgid "The following fields are invalid:" msgstr "" #. module: web -#: code:addons/web/controllers/main.py:756 +#: code:addons/web/controllers/main.py:774 #, python-format msgid "The new password and its confirmation must be identical." msgstr "" #. module: web -#. openerp-web -#: code:addons/web/static/src/js/views/form_relational_widgets.js:1124 -#, python-format -msgid "The o2m record must be saved before an action can be used" -msgstr "" - -#. module: web -#: code:addons/web/controllers/main.py:761 +#: code:addons/web/controllers/main.py:779 #, python-format msgid "The old password you provided is incorrect, your password was not changed." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_view.js:301 -#, python-format -msgid "The record could not be found in the database." -msgstr "" - -#. module: web -#. openerp-web -#: code:addons/web/static/src/js/views/form_view.js:751 +#: code:addons/web/static/src/js/views/basic/basic_controller.js:77 #, python-format -msgid "The record has been modified, your changes will be discarded. Are you sure you want to leave this page ?" +msgid "The record has been modified, your changes will be discarded. Are you sure you want to ?" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_widgets.js:1164 +#: code:addons/web/static/src/js/fields/basic_fields.js:1013 #, python-format msgid "The selected file exceed the maximum file size of %s." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_relational_widgets.js:1581 +#: code:addons/web/static/src/js/fields/relational_fields.js:1200 #, python-format msgid "The type of the field '%s' must be a many2many field with a relation to 'ir.attachment' model." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_widgets.js:1185 +#: code:addons/web/static/src/js/fields/basic_fields.js:1034 #, python-format msgid "There was a problem while uploading your file" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/search_menus.js:249 +#: code:addons/web/static/src/js/chrome/search_menus.js:250 #, python-format msgid "This filter is global and will be removed for everybody if you continue." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1242 +#: code:addons/web/static/src/xml/base.xml:1096 #, python-format msgid "This wizard will export all data that matches the current search criteria to a CSV file.\n" " You can export all data or only the fields that can be reimported after modification." @@ -2230,13 +2280,20 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_widgets.js:929 +#: code:addons/web/static/src/js/fields/special_fields.js:93 #, python-format msgid "Timezone Mismatch : The timezone of your browser doesn't match the selected one. The time in Odoo is displayed according to your field timezone." msgstr "" #. module: web #. openerp-web +#: code:addons/web/static/src/xml/web_calendar.xml:67 +#, python-format +msgid "Today" +msgstr "" + +#. module: web +#. openerp-web #: code:addons/web/static/src/xml/base.xml:117 #, python-format msgid "Toggle Timelines" @@ -2244,178 +2301,148 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/pivot_view.js:543 -#: code:addons/web/static/src/js/views/pivot_view.js:572 +#: code:addons/web/static/src/js/views/pivot/pivot_model.js:447 +#: code:addons/web/static/src/js/views/pivot/pivot_model.js:557 #, python-format msgid "Total" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/abstract_web_client.js:127 +#: code:addons/web/static/src/js/chrome/abstract_web_client.js:167 #, python-format msgid "Traceback:" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/tree_view.js:18 +#: code:addons/web/static/src/js/fields/field_utils.js:44 #, python-format -msgid "Tree" +msgid "True" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/abstract_web_client.js:221 +#: code:addons/web/static/src/js/chrome/abstract_web_client.js:261 #, python-format msgid "Trying to reconnect..." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base_common.xml:47 +#: code:addons/web/static/src/xml/base_common.xml:49 #, python-format msgid "Type:" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/graph_widget.js:80 -#: code:addons/web/static/src/js/views/list_view.js:1389 -#: code:addons/web/static/src/js/views/list_view.js:1395 -#: code:addons/web/static/src/js/views/list_view.js:1413 -#: code:addons/web/static/src/js/views/pivot_view.js:525 +#: code:addons/web/static/src/js/views/list/list_controller.js:131 #, python-format -msgid "Undefined" -msgstr "" - -#. module: web -#. openerp-web -#: code:addons/web/static/src/xml/base.xml:617 -#, python-format -msgid "Unhandled widget" -msgstr "" - -#. module: web -#. openerp-web -#: code:addons/web/static/src/js/views/form_widgets.js:868 -#, python-format -msgid "Unknown" +msgid "Unarchive" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/data.js:1077 +#: code:addons/web/static/src/js/views/graph/graph_model.js:172 +#: code:addons/web/static/src/js/views/kanban/kanban_column.js:64 +#: code:addons/web/static/src/js/views/kanban/kanban_column.js:67 +#: code:addons/web/static/src/js/views/list/list_renderer.js:379 +#: code:addons/web/static/src/js/views/list/list_renderer.js:382 +#: code:addons/web/static/src/js/views/pivot/pivot_model.js:660 #, python-format -msgid "Unknown field %s in domain %s" +msgid "Undefined" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/list_view.js:1096 +#: code:addons/web/static/src/xml/base.xml:512 #, python-format -msgid "Unknown m2m command %s" +msgid "Unhandled widget" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/pyeval.js:992 +#: code:addons/web/static/src/js/core/pyeval.js:1001 #, python-format msgid "Unknown nonliteral type " msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/data.js:1069 -#, python-format -msgid "Unknown operator %s in domain %s" -msgstr "" - -#. module: web -#. openerp-web -#: code:addons/web/static/src/js/framework/data.js:1132 +#: code:addons/web/static/src/js/_deprecated/data.js:736 #, python-format msgid "Unnamed" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/data.js:1115 +#: code:addons/web/static/src/js/views/pivot/pivot_view.js:95 #, python-format -msgid "Unsupported operator %s in domain %s" +msgid "Untitled" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1411 +#: code:addons/web/static/src/xml/base.xml:1238 #, python-format msgid "Update translations" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_upgrade_widgets.js:35 +#: code:addons/web/static/src/js/fields/upgrade_fields.js:69 #, python-format msgid "Upgrade now" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1441 +#: code:addons/web/static/src/xml/base.xml:1268 #, python-format msgid "Upgrade to future versions" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:997 +#: code:addons/web/static/src/xml/base.xml:852 #, python-format msgid "Upload your file" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_relational_widgets.js:1641 -#: code:addons/web/static/src/js/widgets/sidebar.js:175 +#: code:addons/web/static/src/js/fields/relational_fields.js:1358 #, python-format msgid "Uploading Error" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/sidebar.js:201 -#: code:addons/web/static/src/xml/base.xml:971 -#: code:addons/web/static/src/xml/base.xml:1001 -#: code:addons/web/static/src/xml/base.xml:1058 +#: code:addons/web/static/src/xml/base.xml:825 +#: code:addons/web/static/src/xml/base.xml:856 +#: code:addons/web/static/src/xml/base.xml:911 #, python-format msgid "Uploading..." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1230 +#: code:addons/web/static/src/xml/base.xml:1084 #, python-format msgid "Use by default" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/crash_manager.js:17 +#: code:addons/web/static/src/js/services/crash_manager.js:17 #, python-format msgid "Validation Error" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/priority.js:51 -#, python-format -msgid "Very High" -msgstr "" - -#. module: web -#. openerp-web -#: code:addons/web/static/src/js/views/list_view.js:1940 -#: code:addons/web/static/src/xml/base.xml:159 +#: code:addons/web/static/src/xml/base.xml:158 #, python-format msgid "View" msgstr "" @@ -2429,185 +2456,173 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:153 +#: code:addons/web/static/src/xml/base.xml:152 #, python-format msgid "View Metadata" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_relational_widgets.js:741 +#: code:addons/web/static/src/js/services/crash_manager.js:13 +#: code:addons/web/static/src/js/services/crash_manager.js:14 +#: code:addons/web/static/src/js/views/basic/basic_controller.js:80 #, python-format -msgid "View type '%s' is not supported in X2Many." +msgid "Warning" msgstr "" #. module: web -#. openerp-web -#: code:addons/web/static/src/js/framework/crash_manager.js:13 -#: code:addons/web/static/src/js/framework/crash_manager.js:14 -#: code:addons/web/static/src/js/views/form_view.js:756 -#: code:addons/web/static/src/js/views/list_view.js:677 -#: code:addons/web/static/src/js/widgets/sidebar.js:132 -#, python-format -msgid "Warning" +#: model:ir.ui.view,arch_db:web.benchmark_suite +msgid "Web Benchmarks" msgstr "" #. module: web -#. openerp-web -#: code:addons/web/static/src/xml/base.xml:592 -#, python-format -msgid "Week" +#: model:ir.ui.view,arch_db:web.qunit_suite +msgid "Web Tests" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_view.js:1303 +#: code:addons/web/static/src/xml/base.xml:489 +#: code:addons/web/static/src/xml/web_calendar.xml:72 #, python-format -msgid "Widget type '%s' is not implemented" +msgid "Week" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base_common.xml:51 +#: code:addons/web/static/src/xml/base_common.xml:53 #, python-format msgid "Widget:" msgstr "" #. module: web -#: code:addons/web/controllers/main.py:477 +#: code:addons/web/controllers/main.py:485 #, python-format msgid "Wrong login/password" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/progress_bar.js:79 +#: code:addons/web/static/src/js/fields/basic_fields.js:1698 #, python-format msgid "Wrong value entered!" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:171 +#: code:addons/web/static/src/xml/base.xml:170 #, python-format msgid "XML ID:" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:595 +#: code:addons/web/static/src/xml/base.xml:492 #, python-format msgid "Year" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/search_inputs.js:331 -#: code:addons/web/static/src/xml/base_common.xml:71 +#: code:addons/web/static/src/js/chrome/search_inputs.js:332 +#: code:addons/web/static/src/xml/base_common.xml:73 #, python-format msgid "Yes" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/abstract_web_client.js:230 +#: code:addons/web/static/src/js/chrome/abstract_web_client.js:270 #, python-format msgid "You are back online" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form_relational_widgets.js:48 +#: code:addons/web/static/src/js/fields/relational_fields.js:72 #, python-format msgid "You are creating a new %s, are you sure it does not exist yet?" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/model_field_selector.js:40 +#: code:addons/web/static/src/js/widgets/model_field_selector.js:454 #, python-format msgid "You cannot follow relations for this field chain construction" msgstr "" #. module: web -#: code:addons/web/controllers/main.py:754 +#: code:addons/web/controllers/main.py:772 #, python-format msgid "You cannot leave any password empty." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1409 +#: code:addons/web/static/src/xml/base.xml:1236 #, python-format msgid "You have updated" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/misc.js:17 +#: code:addons/web/static/src/js/core/misc.js:17 #, python-format msgid "You may not believe it,<br />but the application is actually loading..." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/sidebar.js:132 +#: code:addons/web/static/src/js/services/crash_manager.js:58 #, python-format -msgid "You must choose at least one record." -msgstr "" - -#. module: web -#. openerp-web -#: code:addons/web/static/src/js/views/list_view.js:677 -#, python-format -msgid "You must select at least one record." +msgid "Your Odoo session expired. Please refresh the current web page." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/crash_manager.js:58 +#: code:addons/web/static/src/js/views/kanban/kanban_record.js:196 #, python-format -msgid "Your Odoo session expired. Please refresh the current web page." +msgid "[No widget %s]" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/translation.js:102 +#: code:addons/web/static/src/js/core/translation.js:102 #, python-format msgid "a day ago" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/translation.js:98 +#: code:addons/web/static/src/js/core/translation.js:98 #, python-format msgid "about a minute ago" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/translation.js:104 +#: code:addons/web/static/src/js/core/translation.js:104 #, python-format msgid "about a month ago" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/translation.js:106 +#: code:addons/web/static/src/js/core/translation.js:106 #, python-format msgid "about a year ago" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/translation.js:100 +#: code:addons/web/static/src/js/core/translation.js:100 #, python-format msgid "about an hour ago" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:715 +#: code:addons/web/static/src/xml/base.xml:571 #, python-format msgid "all records" msgstr "" @@ -2621,7 +2636,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/search_filters.js:162 +#: code:addons/web/static/src/js/chrome/search_filters.js:163 #: code:addons/web/static/src/js/widgets/domain_selector.js:23 #, python-format msgid "contains" @@ -2629,25 +2644,23 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/search_filters.js:163 +#: code:addons/web/static/src/js/chrome/search_filters.js:164 #, python-format msgid "doesn't contain" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/search_filters.js:261 -#: code:addons/web/static/src/js/views/search_filters.js:290 -#: code:addons/web/static/src/js/widgets/domain_selector.js:19 +#: code:addons/web/static/src/js/chrome/search_filters.js:263 +#: code:addons/web/static/src/js/chrome/search_filters.js:292 #, python-format msgid "greater than" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/search_filters.js:263 -#: code:addons/web/static/src/js/views/search_filters.js:292 -#: code:addons/web/static/src/js/widgets/domain_selector.js:21 +#: code:addons/web/static/src/js/chrome/search_filters.js:265 +#: code:addons/web/static/src/js/chrome/search_filters.js:294 #, python-format msgid "greater than or equal to" msgstr "" @@ -2661,79 +2674,77 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/search_filters.js:282 -#: code:addons/web/static/src/js/views/search_filters.js:317 -#: code:addons/web/static/src/js/widgets/domain_selector.js:503 -#: code:addons/web/static/src/xml/base.xml:797 +#: code:addons/web/static/src/js/chrome/search_filters.js:284 +#: code:addons/web/static/src/js/chrome/search_filters.js:319 +#: code:addons/web/static/src/js/widgets/domain_selector.js:828 +#: code:addons/web/static/src/xml/base.xml:659 #, python-format msgid "is" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/search_filters.js:182 +#: code:addons/web/static/src/js/chrome/search_filters.js:183 #, python-format msgid "is after" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/search_filters.js:183 +#: code:addons/web/static/src/js/chrome/search_filters.js:184 #, python-format msgid "is before" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/search_filters.js:184 +#: code:addons/web/static/src/js/chrome/search_filters.js:185 #, python-format msgid "is between" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/search_filters.js:164 -#: code:addons/web/static/src/js/views/search_filters.js:180 -#: code:addons/web/static/src/js/views/search_filters.js:259 -#: code:addons/web/static/src/js/views/search_filters.js:288 -#: code:addons/web/static/src/js/widgets/domain_selector.js:17 +#: code:addons/web/static/src/js/chrome/search_filters.js:165 +#: code:addons/web/static/src/js/chrome/search_filters.js:181 +#: code:addons/web/static/src/js/chrome/search_filters.js:261 +#: code:addons/web/static/src/js/chrome/search_filters.js:290 #, python-format msgid "is equal to" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/search_filters.js:336 +#: code:addons/web/static/src/js/chrome/search_filters.js:338 #, python-format msgid "is false" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/search_filters.js:318 -#: code:addons/web/static/src/js/widgets/domain_selector.js:504 +#: code:addons/web/static/src/js/chrome/search_filters.js:320 +#: code:addons/web/static/src/js/widgets/domain_selector.js:829 #, python-format msgid "is not" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/search_filters.js:165 -#: code:addons/web/static/src/js/views/search_filters.js:181 -#: code:addons/web/static/src/js/views/search_filters.js:260 -#: code:addons/web/static/src/js/views/search_filters.js:289 -#: code:addons/web/static/src/js/widgets/domain_selector.js:18 +#: code:addons/web/static/src/js/chrome/search_filters.js:166 +#: code:addons/web/static/src/js/chrome/search_filters.js:182 +#: code:addons/web/static/src/js/chrome/search_filters.js:262 +#: code:addons/web/static/src/js/chrome/search_filters.js:291 #, python-format msgid "is not equal to" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/search_filters.js:167 -#: code:addons/web/static/src/js/views/search_filters.js:186 -#: code:addons/web/static/src/js/views/search_filters.js:266 -#: code:addons/web/static/src/js/views/search_filters.js:295 -#: code:addons/web/static/src/js/views/search_filters.js:320 +#: code:addons/web/static/src/js/chrome/search_filters.js:168 +#: code:addons/web/static/src/js/chrome/search_filters.js:187 +#: code:addons/web/static/src/js/chrome/search_filters.js:268 +#: code:addons/web/static/src/js/chrome/search_filters.js:297 +#: code:addons/web/static/src/js/chrome/search_filters.js:322 #: code:addons/web/static/src/js/widgets/domain_selector.js:37 #, python-format msgid "is not set" @@ -2741,11 +2752,11 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/search_filters.js:166 -#: code:addons/web/static/src/js/views/search_filters.js:185 -#: code:addons/web/static/src/js/views/search_filters.js:265 -#: code:addons/web/static/src/js/views/search_filters.js:294 -#: code:addons/web/static/src/js/views/search_filters.js:319 +#: code:addons/web/static/src/js/chrome/search_filters.js:167 +#: code:addons/web/static/src/js/chrome/search_filters.js:186 +#: code:addons/web/static/src/js/chrome/search_filters.js:267 +#: code:addons/web/static/src/js/chrome/search_filters.js:296 +#: code:addons/web/static/src/js/chrome/search_filters.js:321 #: code:addons/web/static/src/js/widgets/domain_selector.js:36 #, python-format msgid "is set" @@ -2753,60 +2764,59 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/search_filters.js:335 +#: code:addons/web/static/src/js/chrome/search_filters.js:337 #, python-format msgid "is true" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/utils.js:336 +#: code:addons/web/static/src/js/core/utils.js:97 #, python-format msgid "kMGTPE" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/search_filters.js:262 -#: code:addons/web/static/src/js/views/search_filters.js:291 -#: code:addons/web/static/src/js/widgets/domain_selector.js:20 +#: code:addons/web/static/src/js/chrome/search_filters.js:264 +#: code:addons/web/static/src/js/chrome/search_filters.js:293 #, python-format msgid "less than" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/framework/translation.js:97 +#: code:addons/web/static/src/js/core/translation.js:97 #, python-format msgid "less than a minute ago" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/search_filters.js:264 -#: code:addons/web/static/src/js/views/search_filters.js:293 -#: code:addons/web/static/src/js/widgets/domain_selector.js:22 +#: code:addons/web/static/src/js/chrome/search_filters.js:266 +#: code:addons/web/static/src/js/chrome/search_filters.js:295 #, python-format msgid "less than or equal to" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:799 +#: code:addons/web/static/src/js/widgets/domain_selector.js:18 +#: code:addons/web/static/src/xml/base.xml:661 #, python-format msgid "not" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/search_inputs.js:231 +#: code:addons/web/static/src/js/chrome/search_inputs.js:232 #, python-format msgid "not a valid integer" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/search_inputs.js:246 +#: code:addons/web/static/src/js/chrome/search_inputs.js:247 #, python-format msgid "not a valid number" msgstr "" @@ -2827,22 +2837,22 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:724 +#: code:addons/web/static/src/xml/base.xml:580 #, python-format msgid "of the following rules:" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:736 +#: code:addons/web/static/src/xml/base.xml:595 #, python-format msgid "of:" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:790 -#: code:addons/web/static/src/xml/base.xml:1164 +#: code:addons/web/static/src/xml/base.xml:652 +#: code:addons/web/static/src/xml/base.xml:1019 #, python-format msgid "or" msgstr "" @@ -2856,14 +2866,21 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:679 +#: code:addons/web/static/src/xml/base.xml:536 #, python-format msgid "record(s)" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:799 +#: code:addons/web/static/src/xml/kanban.xml:41 +#, python-format +msgid "remaining)" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:661 #, python-format msgid "set" msgstr "" diff --git a/addons/web/static/src/js/chrome/search_menus.js b/addons/web/static/src/js/chrome/search_menus.js index 1da7800b049..eee7303ffbd 100644 --- a/addons/web/static/src/js/chrome/search_menus.js +++ b/addons/web/static/src/js/chrome/search_menus.js @@ -122,6 +122,7 @@ return Widget.extend({ model_id: this.target_model, context: results.context, domain: results.domain, + sort: JSON.stringify(this.searchview.dataset._sort), is_default: default_filter, action_id: this.action_id, }; @@ -243,6 +244,13 @@ return Widget.extend({ } this.query.reset([this.facet_for(filter)], { preventSearch: preventSearch || false}); + + // Load sort settings on view + if (!_.isUndefined(filter.sort)){ + var sort_items = JSON.parse(filter.sort); + this.searchview.dataset.set_sort(sort_items); + } + this.$filters[this.key_for(filter)].addClass('selected'); }, remove_filter: function (filter, $filter, key) { diff --git a/addons/web/static/src/js/chrome/search_view.js b/addons/web/static/src/js/chrome/search_view.js index 26305817e55..6c3adcafcca 100644 --- a/addons/web/static/src/js/chrome/search_view.js +++ b/addons/web/static/src/js/chrome/search_view.js @@ -232,7 +232,7 @@ var SearchView = Widget.extend({ 'click .o_searchview_more': function (e) { $(e.target).toggleClass('fa-search-plus fa-search-minus'); var visibleSearchMenu = this.call('local_storage', 'getItem', 'visible_search_menu'); - this.call('local_storage', 'setItem', visibleSearchMenu !== 'true'); + this.call('local_storage', 'setItem', 'visible_search_menu', visibleSearchMenu !== 'true'); this.toggle_buttons(); }, 'keydown .o_searchview_input, .o_searchview_facet': function (e) { diff --git a/addons/web/static/src/js/fields/relational_fields.js b/addons/web/static/src/js/fields/relational_fields.js index 7522bb3bc37..1935e5804dd 100644 --- a/addons/web/static/src/js/fields/relational_fields.js +++ b/addons/web/static/src/js/fields/relational_fields.js @@ -99,7 +99,7 @@ var FieldMany2One = AbstractField.extend({ this.nodeOptions = _.defaults(this.nodeOptions, { quick_create: true, }); - this.m2o_value = field_utils.format.many2one(this.value); + this.m2o_value = this._formatValue(this.value); // 'recordParams' is a dict of params used when calling functions // 'getDomain' and 'getContext' on this.record this.recordParams = {fieldName: this.name, viewType: this.viewType}; @@ -838,8 +838,10 @@ var FieldX2Many = AbstractField.extend({ */ _onDeleteRecord: function (ev) { ev.stopPropagation(); + var shouldForget = this.attrs.widget === 'many2many' || this.field.type === 'many2many'; + var operation = shouldForget ? 'FORGET' : 'DELETE'; this._setValue({ - operation: 'REMOVE', + operation: operation, ids: [ev.data.id], }); }, @@ -1290,7 +1292,7 @@ var FieldMany2ManyBinaryMultiFiles = AbstractField.extend({ var record = _.findWhere(this.value.data, {res_id: fileID}); if (record) { this._setValue({ - operation: 'REMOVE', + operation: 'FORGET', ids: [record.id], }); var metadata = this.metadata[record.id]; @@ -1469,7 +1471,7 @@ var FieldMany2ManyTags = AbstractField.extend({ _removeTag: function (id) { var record = _.findWhere(this.value.data, {res_id: id}); this._setValue({ - operation: 'REMOVE', + operation: 'FORGET', ids: [record.id], }); }, @@ -2029,7 +2031,20 @@ var FieldReference = FieldMany2One.extend({ // needs to be copied as it is an unmutable object this.field = _.extend({}, this.field); if (this.value) { - this._setRelation(this.value.model); + var model = null; + // The value of a Reference field can either be a string in the form + // of model,record_id or an object + if (typeof this.value === "string") { + var value = this.value.split(','); + model = value[0]; + this.value = { + res_id: parseInt(value[1]), + }; + } else { + model = this.value.model; + } + + this._setRelation(model); } }, /** @@ -2045,6 +2060,15 @@ var FieldReference = FieldMany2One.extend({ //-------------------------------------------------------------------------- /** + * Get the encompassing record's display_name + * + * @override + */ + _formatValue: function () { + return this.recordData.display_name; + }, + + /** * Add a select in edit mode (for the model). * * @override diff --git a/addons/web/static/src/js/services/data_manager.js b/addons/web/static/src/js/services/data_manager.js index c1e69a72ce3..999a9d8df01 100644 --- a/addons/web/static/src/js/services/data_manager.js +++ b/addons/web/static/src/js/services/data_manager.js @@ -349,7 +349,7 @@ return core.Class.extend({ } if (attrs.Widget.prototype.fieldsToFetch) { attrs.viewType = 'default'; - attrs.relatedFields = attrs.Widget.prototype.fieldsToFetch; + attrs.relatedFields = _.extend({}, attrs.Widget.prototype.fieldsToFetch); attrs.fieldsInfo = { default: _.mapObject(attrs.Widget.prototype.fieldsToFetch, function () { return {}; diff --git a/addons/web/static/src/js/views/basic/basic_model.js b/addons/web/static/src/js/views/basic/basic_model.js index 75a0ad02971..8f679207f00 100644 --- a/addons/web/static/src/js/views/basic/basic_model.js +++ b/addons/web/static/src/js/views/basic/basic_model.js @@ -509,6 +509,7 @@ var BasicModel = AbstractModel.extend({ } if (params.type === 'record' && params.res_id === undefined) { + params.allowWarning = true; return this._makeDefaultRecord(params.modelName, params); } var dataPoint = this._makeDataPoint(params); @@ -1294,9 +1295,12 @@ var BasicModel = AbstractModel.extend({ defs.push(this._applyChange(command.id, command.data)); } break; - case 'REMOVE': + case 'FORGET': + // Unlink the record of list. + list._forceM2MUnlink = true; + case 'DELETE': // filter out existing operations involving the current - // dataPoint, and add a 'REMOVE' operation only if there is + // dataPoint, and add a 'DELETE' or 'FORGET' operation only if there is // no 'ADD' operation for that dataPoint, as it would mean // that the record wasn't in the relation yet var idsToRemove = command.ids; @@ -1308,7 +1312,8 @@ var BasicModel = AbstractModel.extend({ return idInCommands; }); _.each(idsToRemove, function (id) { - list._changes.push({operation: 'REMOVE', id: id}); + var operation = list._forceM2MUnlink ? 'FORGET': 'DELETE'; + list._changes.push({operation: operation, id: id}); }); break; case 'REPLACE_WITH': @@ -1332,7 +1337,7 @@ var BasicModel = AbstractModel.extend({ return self.localData[localId]; }); removedDef = this._applyX2ManyChange(record, fieldName, { - operation: 'REMOVE', + operation: 'DELETE', ids: _.map(removedIds, function (resID) { return _.findWhere(listData, {res_id: resID}).id; }), @@ -1349,7 +1354,7 @@ var BasicModel = AbstractModel.extend({ }, /** * In dataPoints of type list for x2manys, the changes are stored as a list - * of operations (being of type 'ADD', 'REMOVE', 'UPDATE' or 'REMOVE_ALL'). + * of operations (being of type 'ADD', 'DELETE', 'FORGET', UPDATE' or 'REMOVE_ALL'). * This function applies the operation of such a dataPoint without altering * the original dataPoint. It returns a copy of the dataPoint in which the * 'count', 'data' and 'res_ids' keys have been updated. @@ -1383,7 +1388,8 @@ var BasicModel = AbstractModel.extend({ list.res_ids.push(resID); } break; - case 'REMOVE': + case 'FORGET': + case 'DELETE': list.count--; list.res_ids = _.without(list.res_ids, relRecord.res_id); break; @@ -2348,7 +2354,11 @@ var BasicModel = AbstractModel.extend({ } // add delete commands for (i = 0; i < removedIds.length; i++) { - commands[fieldName].push(x2ManyCommands.delete(removedIds[i])); + if (list._forceM2MUnlink) { + commands[fieldName].push(x2ManyCommands.forget(removedIds[i])); + } else { + commands[fieldName].push(x2ManyCommands.delete(removedIds[i])); + } } } } @@ -2601,7 +2611,9 @@ var BasicModel = AbstractModel.extend({ var isValid = true; var element = this.localData[id]; _.each(element._changes, function (command) { - if (command.operation === 'REMOVE' || command.operation === 'REMOVE_ALL') { + if (command.operation === 'DELETE' || + command.operation === 'FORGET' || + command.operation === 'REMOVE_ALL') { return; } var recordData = self.get(command.id, {raw: true}).data; @@ -2735,6 +2747,8 @@ var BasicModel = AbstractModel.extend({ * @private * @param {any} params * @param {string} modelName model name + * @param {boolean} [params.allowWarning=false] if true, the default record + * operation can complete, even if a warning is raised * @param {Object} params.context the context for the new record * @param {Object} params.fieldsInfo contains the fieldInfo of each view, * for each field @@ -2887,7 +2901,11 @@ var BasicModel = AbstractModel.extend({ .then(function () { return self._performOnChange(record, fields_key).then(function () { if (record._warning) { - return $.Deferred().reject(); + if (params.allowWarning) { + delete record._warning; + } else { + return $.Deferred().reject(); + } } }); }) diff --git a/addons/web/static/src/js/views/form/form_renderer.js b/addons/web/static/src/js/views/form/form_renderer.js index 08b3fabd2e2..35194b313ad 100644 --- a/addons/web/static/src/js/views/form/form_renderer.js +++ b/addons/web/static/src/js/views/form/form_renderer.js @@ -336,12 +336,27 @@ var FormRenderer = BasicRenderer.extend({ * @returns {jQueryElement} */ _renderHeaderButton: function (node) { + var self = this; var $button = $('<button>') .text(node.attrs.string) .addClass('btn btn-sm btn-default'); this._addOnClickAction($button, node); this._handleAttributes($button, node); this._registerModifiers(node, this.state, $button); + + // Display tooltip + if (config.debug || node.attrs.help) { + $button.tooltip({ + delay: { show: 1000, hide: 0 }, + title: function () { + return qweb.render('WidgetButton.tooltip', { + debug: config.debug, + state: self.state, + node: node, + }); + }, + }); + } return $button; }, /** diff --git a/addons/web/static/src/less/form_view.less b/addons/web/static/src/less/form_view.less index 3127b2e4ea7..bcea630b152 100644 --- a/addons/web/static/src/less/form_view.less +++ b/addons/web/static/src/less/form_view.less @@ -86,18 +86,19 @@ display: inline-block; } - .o_form_uri { // FIXME maybe global? - display: inline-block; + } - color: @odoo-main-text-color; + .o_form_uri { + display: inline-block; + + color: @odoo-main-text-color; + &:first-line { + color: @link-color; + } + &:hover { + color: darken(@odoo-main-text-color, 1%); // hack required on chrome &:first-line { - color: @link-color; - } - &:hover { - color: darken(@odoo-main-text-color, 1%); // hack required on chrome - &:first-line { - color: darken(@link-color, 15%); - } + color: darken(@link-color, 15%); } } } diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index b9aa125c8de..f0a08b5dc62 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -69,36 +69,49 @@ </li> </ul> </t> -<t t-name="WidgetButton.tooltip" t-extend="WidgetLabel.tooltip"> - <t t-jquery="div.oe_tooltip_string" t-operation="replace"> - <div class="oe_tooltip_string" t-if="debug || widget.string"> - <t t-if="debug"> - Button - <t t-if="widget.string">: </t> - <t t-if="!widget.string"> (no string)</t> - </t> - <t t-esc="widget.string"/> - </div> - </t> - <t t-jquery="ul.oe_tooltip_technical" t-operation="append"> - <li t-if="widget.node.attrs.special" data-item="special"> +<t t-name="WidgetButton.tooltip"> + <div class="oe_tooltip_string" t-if="debug || node.attrs.string"> + <t t-if="debug"> + Button + <t t-if="node.attrs.string">: </t> + <t t-if="!node.attrs.string"> (no string)</t> + </t> + <t t-esc="node.attrs.string"/> + </div> + <p t-if="node.attrs.help" class="oe_tooltip_help"> + <t t-esc="node.attrs.help"/> + </p> + <ul t-if="debug" class="oe_tooltip_technical"> + <li data-item="object"> + <span class="oe_tooltip_technical_title">Object:</span> + <t t-esc="state.model"/> + </li> + <li t-if="node.attrs.context" data-item="context"> + <span class="oe_tooltip_technical_title">Context:</span> + <t t-esc="node.attrs.context || widget.field.context"/> + </li> + <li t-if="node.attrs.modifiers and node.attrs.modifiers != '{}'" data-item="modifiers"> + <span class="oe_tooltip_technical_title">Modifiers:</span> + <t t-esc="node.attrs.modifiers"/> + </li> + <li t-if="node.attrs.special" data-item="special"> <span class="oe_tooltip_technical_title">Special:</span> - <t t-esc="widget.node.attrs.special"/> + <t t-esc="node.attrs.special"/> </li> - <t t-set="button_type" t-value="widget.node.attrs.type"/> + <t t-set="button_type" t-value="node.attrs.type"/> <li t-if="button_type" data-item="button_type"> <span class="oe_tooltip_technical_title">Button Type:</span> <t t-esc="button_type"/> </li> <li t-if="button_type === 'object'" data-item="button_method"> <span class="oe_tooltip_technical_title">Method:</span> - <t t-esc="widget.node.attrs.name"/> + <t t-esc="node.attrs.name"/> </li> <li t-if="button_type === 'action'" data-item="button_action"> <span class="oe_tooltip_technical_title">Action ID:</span> - <t t-esc="widget.node.attrs.name"/> + <t t-esc="node.attrs.name"/> </li> - </t> + </ul> </t> <t t-name="Notification"> diff --git a/addons/web/static/tests/fields/relational_fields_tests.js b/addons/web/static/tests/fields/relational_fields_tests.js index 1a7badd353f..68a0257b24c 100644 --- a/addons/web/static/tests/fields/relational_fields_tests.js +++ b/addons/web/static/tests/fields/relational_fields_tests.js @@ -2005,6 +2005,49 @@ QUnit.module('relational_fields', { form.destroy(); }); + QUnit.test('one2many list: unlink one record', function (assert) { + assert.expect(5); + this.data.partner.records[0].p = [2, 4]; + var form = createView({ + View: FormView, + model: 'partner', + data: this.data, + arch:'<form string="Partners">' + + '<field name="p" widget="many2many">' + + '<tree>' + + '<field name="display_name"/>' + + '</tree>' + + '</field>' + + '</form>', + res_id: 1, + mockRPC: function (route, args) { + if (route === '/web/dataset/call_kw/partner/write') { + var commands = args.args[1].p; + assert.strictEqual(commands.length, 2, + 'should have generated two commands'); + assert.ok(commands[0][0] === 4 && commands[0][1] === 4, + 'should have generated the command 4 (LINK_TO) with id 4'); + assert.ok(commands[1][0] === 3 && commands[1][1] === 2, + 'should have generated the command 3 (UNLINK) with id 2'); + } + return this._super.apply(this, arguments); + }, + }); + form.$buttons.find('.o_form_button_edit').click(); + + assert.strictEqual(form.$('td.o_list_record_delete span').length, 2, + "should have 2 delete buttons"); + + form.$('td.o_list_record_delete span').first().click(); + + assert.strictEqual(form.$('td.o_list_record_delete span').length, 1, + "should have 1 delete button (a record is supposed to have been unlinked)"); + + // save and check that the correct command has been generated + form.$buttons.find('.o_form_button_save').click(); + form.destroy(); + }); + QUnit.test('one2many list: deleting one record', function (assert) { assert.expect(5); this.data.partner.records[0].p = [2, 4]; @@ -6156,32 +6199,44 @@ QUnit.module('relational_fields', { QUnit.module('FieldMany2ManyTags'); - QUnit.test('fieldmany2many tags without color', function (assert) { - assert.expect(4); + QUnit.test('fieldmany2many tags with and without color', function (assert) { + assert.expect(5); + this.data.partner.fields.partner_ids = {string: "Partner", type: "many2many", relation: 'partner'}; var form = createView({ View: FormView, model: 'partner', data: this.data, arch:'<form string="Partners">' + + '<field name="partner_ids" widget="many2many_tags" options="{\'color_field\': \'color\'}"/>' + '<field name="timmy" widget="many2many_tags"/>' + '</form>', mockRPC: function (route, args) { if (args.method ==='read' && args.model === 'partner_type') { assert.deepEqual(args.args , [[12], ['display_name']], "should not read any color field"); + } else if (args.method ==='read' && args.model === 'partner') { + assert.deepEqual(args.args , [[1], ['display_name', 'color']], "should read color field"); } return this._super.apply(this, arguments); } }); - var $input = form.$('.o_field_many2manytags input'); + + // add a tag on field partner_ids + var $input = form.$('.o_field_many2manytags[name="partner_ids"] input'); + $input.click(); // opens the dropdown + $input.autocomplete('widget').find('li:first()').click(); // adds a tag + + // add a tag on field timmy + $input = form.$('.o_field_many2manytags[name="timmy"] input'); $input.click(); // opens the dropdown assert.strictEqual($input.autocomplete('widget').find('li').length, 3, "autocomplete dropdown should have 3 entries (2 values + 'Search and Edit...')"); $input.autocomplete('widget').find('li:first()').click(); // adds a tag - assert.strictEqual(form.$('.o_field_many2manytags > span').length, 1, + assert.strictEqual(form.$('.o_field_many2manytags[name="timmy"] > span').length, 1, "should contain 1 tag"); - assert.ok(form.$('.o_field_many2manytags > span:contains("gold")').length, + assert.ok(form.$('.o_field_many2manytags[name="timmy"] > span:contains("gold")').length, "should contain newly added tag 'gold'"); + form.destroy(); }); @@ -6909,7 +6964,7 @@ QUnit.module('relational_fields', { "should do a do_action with correct parameters"); }); - assert.strictEqual(form.$('a.o_form_uri:contains(xphone)').length, 1, + assert.strictEqual(form.$('a.o_form_uri:contains(first record)').length, 1, "should contain a link"); form.$('a.o_form_uri').click(); // click on the link in readonly mode (should trigger do_action) @@ -6921,7 +6976,7 @@ QUnit.module('relational_fields', { "should contain one many2one"); assert.strictEqual(form.$('.o_field_widget select').val(), "product", "widget should contain one select with the model"); - assert.strictEqual(form.$('.o_field_widget input').val(), "xphone", + assert.strictEqual(form.$('.o_field_widget input').val(), "first record", "widget should contain one input with the record"); var options = _.map(form.$('.o_field_widget select > option'), function (el) { @@ -6930,7 +6985,6 @@ QUnit.module('relational_fields', { assert.deepEqual(options, ['', 'product', 'partner_type', 'partner'], "the options should be correctly set"); - form.$('.o_external_button').click(); // click on the external button (should do an RPC) assert.strictEqual($('.modal .modal-title').text().trim(), 'Open: custom label', @@ -6947,7 +7001,7 @@ QUnit.module('relational_fields', { $dropdown.find('li:first()').click(); form.$buttons.find('.o_form_button_save').click(); - assert.strictEqual(form.$('a.o_form_uri:contains(gold)').length, 1, + assert.strictEqual(form.$('a.o_form_uri').length, 1, "should contain a link with the new value"); form.destroy(); diff --git a/addons/web/static/tests/helpers/mock_server.js b/addons/web/static/tests/helpers/mock_server.js index 06b85dd8f9e..3f97df1d4bf 100644 --- a/addons/web/static/tests/helpers/mock_server.js +++ b/addons/web/static/tests/helpers/mock_server.js @@ -947,6 +947,8 @@ var MockServer = Class.extend({ self._mockWrite(field.relation, [[command[1]], command[2]]); } else if (command[0] === 2) { // DELETE ids = _.without(ids, command[1]); + } else if (command[0] === 3) { // FORGET + ids = _.without(ids, command[1]); } else if (command[0] === 4) { // LINK_TO if (!_.contains(ids, command[1])) { ids.push(command[1]); diff --git a/addons/web/static/tests/views/basic_model_tests.js b/addons/web/static/tests/views/basic_model_tests.js index 7f7547262da..9e8e64edde6 100644 --- a/addons/web/static/tests/views/basic_model_tests.js +++ b/addons/web/static/tests/views/basic_model_tests.js @@ -361,27 +361,27 @@ QUnit.module('Views', { assert.strictEqual(record.data.product_ids.count, 2, "there should be two records in the relation"); - // trigger a 'REMOVE' command on the existing record + // trigger a 'DELETE' command on the existing record var existingRecordID = record.data.product_ids.data[0].id; - model.notifyChanges(resultID, {product_ids: {operation: 'REMOVE', ids: [existingRecordID]}}); + model.notifyChanges(resultID, {product_ids: {operation: 'DELETE', ids: [existingRecordID]}}); assert.deepEqual(model.localData[x2mListID]._changes, [{ operation: 'ADD', id: newRecordID, }, { operation: 'UPDATE', id: newRecordID, }, { - operation: 'REMOVE', id: existingRecordID, + operation: 'DELETE', id: existingRecordID, }], "_changes should be correct"); record = model.get(resultID); assert.strictEqual(record.data.product_ids.count, 1, "there should be one record in the relation"); - // trigger a 'REMOVE' command on the new record - model.notifyChanges(resultID, {product_ids: {operation: 'REMOVE', ids: [newRecordID]}}); + // trigger a 'DELETE' command on the new record + model.notifyChanges(resultID, {product_ids: {operation: 'DELETE', ids: [newRecordID]}}); assert.deepEqual(model.localData[x2mListID]._changes, [{ - operation: 'REMOVE', id: existingRecordID, + operation: 'DELETE', id: existingRecordID, }], "_changes should be correct"); record = model.get(resultID); assert.strictEqual(record.data.product_ids.count, 0, @@ -827,7 +827,7 @@ QUnit.module('Views', { assert.ok(_.isObject(category_value), "category field should have been fetched"); assert.strictEqual(category_value.data.length, 1, "category field should contain one record"); model.notifyChanges(resultID, {category: { - operation: 'REMOVE', + operation: 'DELETE', ids: [category_value.data[0].id], }}); assert.ok(model.isDirty(resultID), "record should be considered dirty"); diff --git a/addons/web/static/tests/views/form_tests.js b/addons/web/static/tests/views/form_tests.js index 8a718ce01ec..4b499fe1c6f 100644 --- a/addons/web/static/tests/views/form_tests.js +++ b/addons/web/static/tests/views/form_tests.js @@ -2,6 +2,7 @@ odoo.define('web.form_tests', function (require) { "use strict"; var concurrency = require('web.concurrency'); +var config = require('web.config'); var core = require('web.core'); var FormView = require('web.FormView'); var pyeval = require('web.pyeval'); @@ -2561,6 +2562,42 @@ QUnit.module('Views', { form.destroy(); }); + QUnit.test('can create record even if onchange returns a warning', function (assert) { + assert.expect(2); + + this.data.partner.onchanges = { foo: true }; + + var form = createView({ + View: FormView, + model: 'partner', + data: this.data, + arch: '<form string="Partners">' + + '<group><field name="foo"/><field name="int_field"/></group>' + + '</form>', + mockRPC: function (route, args) { + if (args.method === 'onchange') { + return $.when({ + value: { int_field: 10 }, + warning: { + title: "Warning", + message: "You must first select a partner" + } + }); + } + return this._super.apply(this, arguments); + }, + intercepts: { + warning: function (event) { + assert.step('warning'); + }, + }, + }); + assert.strictEqual(form.$('input[name="int_field"]').val(), "10", + "record should have been created and rendered"); + + form.destroy(); + }); + QUnit.test('do nothing if add a line in one2many result in a onchange with a warning', function (assert) { assert.expect(2); @@ -5389,6 +5426,34 @@ QUnit.module('Views', { form.destroy(); }); + QUnit.test('display tooltips for buttons', function (assert) { + assert.expect(1); + + var initialDebugMode = config.debug; + config.debug = true; + + var form = createView({ + View: FormView, + model: 'partner', + data: this.data, + arch: '<form string="Partners">' + + '<header>' + + '<button name="some_method" class="oe_highlight" string="Button" type="object"/>' + + '</header>' + + '</form>', + }); + + var $button = form.$('.o_form_statusbar button'); + $button.tooltip('show', false); + $button.trigger($.Event('mouseenter')); + + assert.strictEqual($('.tooltip .oe_tooltip_string').length, 1, + "should have rendered a tooltip"); + + config.debug = initialDebugMode; + form.destroy(); + }); + QUnit.test('rainbowman attributes correctly passed on button click', function (assert) { assert.expect(1); |
