summaryrefslogtreecommitdiff
path: root/addons/web
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2017-07-26 23:35:06 +0200
committerChristophe Simonis <chs@odoo.com>2017-07-26 23:35:06 +0200
commit8a1311bca17bd93a87f94579698adddc416f78f0 (patch)
treebac0ac044fd643927466dc5eb32d0359d9b37bde /addons/web
parentfaf72250221e0eb2fc711b9168c75b1dc70120e7 (diff)
parent3d4238f71e48de14afd0072a8309f2bb6fc46eb6 (diff)
[MERGE] forward port branch saas-17 up to 3d4238f71e4
Diffstat (limited to 'addons/web')
-rw-r--r--addons/web/i18n/web.pot1293
-rw-r--r--addons/web/static/src/js/chrome/search_menus.js8
-rw-r--r--addons/web/static/src/js/chrome/search_view.js2
-rw-r--r--addons/web/static/src/js/fields/relational_fields.js34
-rw-r--r--addons/web/static/src/js/services/data_manager.js2
-rw-r--r--addons/web/static/src/js/views/basic/basic_model.js36
-rw-r--r--addons/web/static/src/js/views/form/form_renderer.js15
-rw-r--r--addons/web/static/src/less/form_view.less21
-rw-r--r--addons/web/static/src/xml/base.xml49
-rw-r--r--addons/web/static/tests/fields/relational_fields_tests.js72
-rw-r--r--addons/web/static/tests/helpers/mock_server.js2
-rw-r--r--addons/web/static/tests/views/basic_model_tests.js14
-rw-r--r--addons/web/static/tests/views/form_tests.js65
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);