tryton 7.0.7__py3-none-any.whl → 7.2.13__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of tryton might be problematic. Click here for more details.

Files changed (100) hide show
  1. tryton/__init__.py +1 -1
  2. tryton/cache.py +34 -0
  3. tryton/common/common.py +137 -69
  4. tryton/common/completion.py +2 -2
  5. tryton/common/datetime_.py +3 -1
  6. tryton/common/domain_inversion.py +2 -1
  7. tryton/common/domain_parser.py +17 -7
  8. tryton/common/selection.py +6 -3
  9. tryton/common/tempfile.py +34 -0
  10. tryton/config.py +4 -5
  11. tryton/data/locale/bg/LC_MESSAGES/tryton.mo +0 -0
  12. tryton/data/locale/bg/LC_MESSAGES/tryton.po +42 -4
  13. tryton/data/locale/ca/LC_MESSAGES/tryton.mo +0 -0
  14. tryton/data/locale/ca/LC_MESSAGES/tryton.po +47 -8
  15. tryton/data/locale/cs/LC_MESSAGES/tryton.mo +0 -0
  16. tryton/data/locale/cs/LC_MESSAGES/tryton.po +42 -4
  17. tryton/data/locale/de/LC_MESSAGES/tryton.mo +0 -0
  18. tryton/data/locale/de/LC_MESSAGES/tryton.po +45 -6
  19. tryton/data/locale/es/LC_MESSAGES/tryton.mo +0 -0
  20. tryton/data/locale/es/LC_MESSAGES/tryton.po +46 -7
  21. tryton/data/locale/es_419/LC_MESSAGES/tryton.mo +0 -0
  22. tryton/data/locale/es_419/LC_MESSAGES/tryton.po +43 -5
  23. tryton/data/locale/et/LC_MESSAGES/tryton.mo +0 -0
  24. tryton/data/locale/et/LC_MESSAGES/tryton.po +46 -6
  25. tryton/data/locale/fa/LC_MESSAGES/tryton.mo +0 -0
  26. tryton/data/locale/fa/LC_MESSAGES/tryton.po +46 -7
  27. tryton/data/locale/fi/LC_MESSAGES/tryton.mo +0 -0
  28. tryton/data/locale/fi/LC_MESSAGES/tryton.po +41 -4
  29. tryton/data/locale/fr/LC_MESSAGES/tryton.mo +0 -0
  30. tryton/data/locale/fr/LC_MESSAGES/tryton.po +46 -7
  31. tryton/data/locale/hu/LC_MESSAGES/tryton.mo +0 -0
  32. tryton/data/locale/hu/LC_MESSAGES/tryton.po +46 -6
  33. tryton/data/locale/id/LC_MESSAGES/tryton.mo +0 -0
  34. tryton/data/locale/id/LC_MESSAGES/tryton.po +43 -4
  35. tryton/data/locale/it/LC_MESSAGES/tryton.mo +0 -0
  36. tryton/data/locale/it/LC_MESSAGES/tryton.po +45 -6
  37. tryton/data/locale/ja_JP/LC_MESSAGES/tryton.mo +0 -0
  38. tryton/data/locale/lo/LC_MESSAGES/tryton.mo +0 -0
  39. tryton/data/locale/lo/LC_MESSAGES/tryton.po +45 -6
  40. tryton/data/locale/lt/LC_MESSAGES/tryton.mo +0 -0
  41. tryton/data/locale/lt/LC_MESSAGES/tryton.po +46 -6
  42. tryton/data/locale/nl/LC_MESSAGES/tryton.mo +0 -0
  43. tryton/data/locale/nl/LC_MESSAGES/tryton.po +46 -7
  44. tryton/data/locale/pl/LC_MESSAGES/tryton.mo +0 -0
  45. tryton/data/locale/pl/LC_MESSAGES/tryton.po +84 -60
  46. tryton/data/locale/pt/LC_MESSAGES/tryton.mo +0 -0
  47. tryton/data/locale/pt/LC_MESSAGES/tryton.po +45 -6
  48. tryton/data/locale/ro/LC_MESSAGES/tryton.mo +0 -0
  49. tryton/data/locale/ro/LC_MESSAGES/tryton.po +57 -17
  50. tryton/data/locale/ru/LC_MESSAGES/tryton.mo +0 -0
  51. tryton/data/locale/ru/LC_MESSAGES/tryton.po +43 -6
  52. tryton/data/locale/sl/LC_MESSAGES/tryton.mo +0 -0
  53. tryton/data/locale/sl/LC_MESSAGES/tryton.po +46 -5
  54. tryton/data/locale/tr/LC_MESSAGES/tryton.mo +0 -0
  55. tryton/data/locale/tr/LC_MESSAGES/tryton.po +41 -4
  56. tryton/data/locale/uk/LC_MESSAGES/tryton.mo +0 -0
  57. tryton/data/locale/uk/LC_MESSAGES/tryton.po +46 -6
  58. tryton/data/locale/zh_CN/LC_MESSAGES/tryton.mo +0 -0
  59. tryton/data/locale/zh_CN/LC_MESSAGES/tryton.po +46 -5
  60. tryton/device_cookie.py +1 -1
  61. tryton/gui/main.py +3 -2
  62. tryton/gui/window/about.py +1 -1
  63. tryton/gui/window/dblogin.py +2 -2
  64. tryton/gui/window/email_.py +1 -1
  65. tryton/gui/window/form.py +6 -4
  66. tryton/gui/window/log.py +24 -2
  67. tryton/gui/window/view_form/model/field.py +84 -34
  68. tryton/gui/window/view_form/model/group.py +3 -1
  69. tryton/gui/window/view_form/model/record.py +64 -15
  70. tryton/gui/window/view_form/screen/screen.py +83 -46
  71. tryton/gui/window/view_form/view/calendar_gtk/calendar_.py +15 -9
  72. tryton/gui/window/view_form/view/form.py +6 -12
  73. tryton/gui/window/view_form/view/form_gtk/char.py +5 -6
  74. tryton/gui/window/view_form/view/form_gtk/dictionary.py +37 -24
  75. tryton/gui/window/view_form/view/form_gtk/document.py +9 -10
  76. tryton/gui/window/view_form/view/form_gtk/many2many.py +17 -7
  77. tryton/gui/window/view_form/view/form_gtk/many2one.py +21 -13
  78. tryton/gui/window/view_form/view/form_gtk/one2many.py +25 -6
  79. tryton/gui/window/view_form/view/form_gtk/state_widget.py +6 -2
  80. tryton/gui/window/view_form/view/graph_gtk/graph.py +3 -1
  81. tryton/gui/window/view_form/view/list.py +68 -35
  82. tryton/gui/window/view_form/view/list_gtk/editabletree.py +2 -1
  83. tryton/gui/window/view_form/view/list_gtk/widget.py +58 -23
  84. tryton/gui/window/view_form/view/screen_container.py +3 -5
  85. tryton/gui/window/win_export.py +1 -2
  86. tryton/gui/window/win_form.py +9 -7
  87. tryton/gui/window/win_import.py +9 -4
  88. tryton/gui/window/wizard.py +13 -10
  89. tryton/jsonrpc.py +46 -28
  90. tryton/plugins/__init__.py +5 -3
  91. tryton/pyson.py +55 -5
  92. tryton/rpc.py +18 -0
  93. tryton/tests/test_common_domain_parser.py +8 -0
  94. tryton/translate.py +5 -2
  95. {tryton-7.0.7.data → tryton-7.2.13.data}/scripts/tryton +8 -7
  96. {tryton-7.0.7.dist-info → tryton-7.2.13.dist-info}/METADATA +6 -6
  97. {tryton-7.0.7.dist-info → tryton-7.2.13.dist-info}/RECORD +100 -98
  98. {tryton-7.0.7.dist-info → tryton-7.2.13.dist-info}/WHEEL +1 -1
  99. {tryton-7.0.7.dist-info → tryton-7.2.13.dist-info}/LICENSE +0 -0
  100. {tryton-7.0.7.dist-info → tryton-7.2.13.dist-info}/top_level.txt +0 -0
@@ -31,6 +31,10 @@ msgstr "укажите имя сервера"
31
31
  msgid "disable thread usage"
32
32
  msgstr ""
33
33
 
34
+ #, python-format
35
+ msgid "Invalid response id (%s) expected %s"
36
+ msgstr ""
37
+
34
38
  #, python-format
35
39
  msgid "Unable to set locale %s"
36
40
  msgstr "Не удается установить локализацию %s"
@@ -84,7 +88,8 @@ msgstr ""
84
88
  msgid "Yes"
85
89
  msgstr ""
86
90
 
87
- msgid "Concurrency Exception"
91
+ #, fuzzy
92
+ msgid "Concurrency Warning"
88
93
  msgstr "Прерывание конкурентных записей"
89
94
 
90
95
  msgid "This record has been modified while you were editing it."
@@ -116,6 +121,9 @@ msgstr ""
116
121
  msgid "Application Error"
117
122
  msgstr "Ошибка приложения!"
118
123
 
124
+ msgid "Details"
125
+ msgstr ""
126
+
119
127
  msgid "Report Bug"
120
128
  msgstr "Сообщить об ошибке"
121
129
 
@@ -132,21 +140,35 @@ msgstr ""
132
140
  msgid "Download"
133
141
  msgstr ""
134
142
 
143
+ msgid "Concurrency Exception"
144
+ msgstr "Прерывание конкурентных записей"
145
+
135
146
  #, fuzzy
136
147
  msgid "Could not get a session."
137
148
  msgstr "Не удается подключиться к серверу!"
138
149
 
139
- msgid "Too many requests. Try again later."
150
+ #, python-format
151
+ msgid "Error: \"%s\". Try again later."
140
152
  msgstr ""
141
153
 
142
- #, fuzzy
143
- msgid "Not found."
144
- msgstr "Ничего не найдено."
154
+ msgid "Too many requests. Try again later."
155
+ msgstr ""
145
156
 
146
157
  #, fuzzy
147
158
  msgid "Not Found."
148
159
  msgstr "Ничего не найдено."
149
160
 
161
+ msgid "Reset forgotten password"
162
+ msgstr ""
163
+
164
+ msgid "Send you an email to reset your password."
165
+ msgstr ""
166
+
167
+ msgid ""
168
+ "A request to reset your password has been sent.\n"
169
+ "Please check your mailbox."
170
+ msgstr ""
171
+
150
172
  #, fuzzy
151
173
  msgid "..."
152
174
  msgstr "..."
@@ -761,6 +783,12 @@ msgstr "Модель:"
761
783
  msgid "ID:"
762
784
  msgstr "Номер строки"
763
785
 
786
+ msgid "Module:"
787
+ msgstr ""
788
+
789
+ msgid "XML ID:"
790
+ msgstr ""
791
+
764
792
  #, fuzzy
765
793
  msgid "Created by:"
766
794
  msgstr "Дата создания"
@@ -1160,7 +1188,16 @@ msgstr "Размер изображения слишком большой!"
1160
1188
  msgid "Copy"
1161
1189
  msgstr ""
1162
1190
 
1163
- msgid "Paste"
1191
+ msgid "Copy Row"
1192
+ msgstr ""
1193
+
1194
+ msgid "Copy Rows"
1195
+ msgstr ""
1196
+
1197
+ msgid "Copy Column"
1198
+ msgstr ""
1199
+
1200
+ msgid "Paste Rows"
1164
1201
  msgstr ""
1165
1202
 
1166
1203
  msgid ".."
Binary file
@@ -29,6 +29,10 @@ msgstr "določi ime in vrata strežniškega gostitelja"
29
29
  msgid "disable thread usage"
30
30
  msgstr "onemogoči uporabo niti"
31
31
 
32
+ #, python-format
33
+ msgid "Invalid response id (%s) expected %s"
34
+ msgstr ""
35
+
32
36
  #, python-format
33
37
  msgid "Unable to set locale %s"
34
38
  msgstr "Ni možno nastaviti krajevnih nastavitev %s"
@@ -80,7 +84,8 @@ msgstr "Ne"
80
84
  msgid "Yes"
81
85
  msgstr "Da"
82
86
 
83
- msgid "Concurrency Exception"
87
+ #, fuzzy
88
+ msgid "Concurrency Warning"
84
89
  msgstr "Izjema sočasnega izvajanja"
85
90
 
86
91
  msgid "This record has been modified while you were editing it."
@@ -111,6 +116,9 @@ msgstr "Zapri"
111
116
  msgid "Application Error"
112
117
  msgstr "Programska napaka"
113
118
 
119
+ msgid "Details"
120
+ msgstr ""
121
+
114
122
  msgid "Report Bug"
115
123
  msgstr "Prijava programske napake"
116
124
 
@@ -127,18 +135,33 @@ msgstr "Nova različica programa je na voljo!"
127
135
  msgid "Download"
128
136
  msgstr "Prenesi"
129
137
 
138
+ msgid "Concurrency Exception"
139
+ msgstr "Izjema sočasnega izvajanja"
140
+
130
141
  msgid "Could not get a session."
131
142
  msgstr "Ni mogoče vzpostaviti seje."
132
143
 
144
+ #, python-format
145
+ msgid "Error: \"%s\". Try again later."
146
+ msgstr ""
147
+
133
148
  msgid "Too many requests. Try again later."
134
149
  msgstr "Preveč poslanih zahtev. Poskusite kasneje."
135
150
 
136
- msgid "Not found."
137
- msgstr "Ni najdeno."
138
-
139
151
  msgid "Not Found."
140
152
  msgstr "Ni najdeno."
141
153
 
154
+ msgid "Reset forgotten password"
155
+ msgstr ""
156
+
157
+ msgid "Send you an email to reset your password."
158
+ msgstr ""
159
+
160
+ msgid ""
161
+ "A request to reset your password has been sent.\n"
162
+ "Please check your mailbox."
163
+ msgstr ""
164
+
142
165
  msgid "..."
143
166
  msgstr "..."
144
167
 
@@ -712,6 +735,12 @@ msgstr "Model:"
712
735
  msgid "ID:"
713
736
  msgstr "ID:"
714
737
 
738
+ msgid "Module:"
739
+ msgstr ""
740
+
741
+ msgid "XML ID:"
742
+ msgstr ""
743
+
715
744
  msgid "Created by:"
716
745
  msgstr "Ustvaril:"
717
746
 
@@ -1085,7 +1114,19 @@ msgstr "Podoba je prevelika."
1085
1114
  msgid "Copy"
1086
1115
  msgstr "Kopiraj"
1087
1116
 
1088
- msgid "Paste"
1117
+ #, fuzzy
1118
+ msgid "Copy Row"
1119
+ msgstr "_Kopiraj URL"
1120
+
1121
+ #, fuzzy
1122
+ msgid "Copy Rows"
1123
+ msgstr "_Kopiraj URL"
1124
+
1125
+ msgid "Copy Column"
1126
+ msgstr ""
1127
+
1128
+ #, fuzzy
1129
+ msgid "Paste Rows"
1089
1130
  msgstr "Prilepi"
1090
1131
 
1091
1132
  msgid ".."
Binary file
@@ -29,6 +29,10 @@ msgstr "Server hostname belirle: port"
29
29
  msgid "disable thread usage"
30
30
  msgstr ""
31
31
 
32
+ #, python-format
33
+ msgid "Invalid response id (%s) expected %s"
34
+ msgstr ""
35
+
32
36
  #, python-format
33
37
  msgid "Unable to set locale %s"
34
38
  msgstr "Lokal %s ayarlanamadı"
@@ -80,7 +84,7 @@ msgstr ""
80
84
  msgid "Yes"
81
85
  msgstr ""
82
86
 
83
- msgid "Concurrency Exception"
87
+ msgid "Concurrency Warning"
84
88
  msgstr ""
85
89
 
86
90
  msgid "This record has been modified while you were editing it."
@@ -112,6 +116,9 @@ msgstr ""
112
116
  msgid "Application Error"
113
117
  msgstr "Uygulama Hatası."
114
118
 
119
+ msgid "Details"
120
+ msgstr ""
121
+
115
122
  msgid "Report Bug"
116
123
  msgstr "Hatayı Raporla"
117
124
 
@@ -128,18 +135,33 @@ msgstr ""
128
135
  msgid "Download"
129
136
  msgstr ""
130
137
 
138
+ msgid "Concurrency Exception"
139
+ msgstr ""
140
+
131
141
  msgid "Could not get a session."
132
142
  msgstr ""
133
143
 
134
- msgid "Too many requests. Try again later."
144
+ #, python-format
145
+ msgid "Error: \"%s\". Try again later."
135
146
  msgstr ""
136
147
 
137
- msgid "Not found."
148
+ msgid "Too many requests. Try again later."
138
149
  msgstr ""
139
150
 
140
151
  msgid "Not Found."
141
152
  msgstr ""
142
153
 
154
+ msgid "Reset forgotten password"
155
+ msgstr ""
156
+
157
+ msgid "Send you an email to reset your password."
158
+ msgstr ""
159
+
160
+ msgid ""
161
+ "A request to reset your password has been sent.\n"
162
+ "Please check your mailbox."
163
+ msgstr ""
164
+
143
165
  msgid "..."
144
166
  msgstr "..."
145
167
 
@@ -711,6 +733,12 @@ msgstr ""
711
733
  msgid "ID:"
712
734
  msgstr ""
713
735
 
736
+ msgid "Module:"
737
+ msgstr ""
738
+
739
+ msgid "XML ID:"
740
+ msgstr ""
741
+
714
742
  msgid "Created by:"
715
743
  msgstr ""
716
744
 
@@ -1084,7 +1112,16 @@ msgstr ""
1084
1112
  msgid "Copy"
1085
1113
  msgstr ""
1086
1114
 
1087
- msgid "Paste"
1115
+ msgid "Copy Row"
1116
+ msgstr ""
1117
+
1118
+ msgid "Copy Rows"
1119
+ msgstr ""
1120
+
1121
+ msgid "Copy Column"
1122
+ msgstr ""
1123
+
1124
+ msgid "Paste Rows"
1088
1125
  msgstr ""
1089
1126
 
1090
1127
  msgid ".."
Binary file
@@ -26,6 +26,10 @@ msgstr "вкажіть ім'я сервера:порт"
26
26
  msgid "disable thread usage"
27
27
  msgstr ""
28
28
 
29
+ #, python-format
30
+ msgid "Invalid response id (%s) expected %s"
31
+ msgstr ""
32
+
29
33
  #, python-format
30
34
  msgid "Unable to set locale %s"
31
35
  msgstr "Неможливо встановити локалізацію %s"
@@ -76,7 +80,8 @@ msgstr "Ні"
76
80
  msgid "Yes"
77
81
  msgstr "Так"
78
82
 
79
- msgid "Concurrency Exception"
83
+ #, fuzzy
84
+ msgid "Concurrency Warning"
80
85
  msgstr "Виняток одночасного доступу"
81
86
 
82
87
  msgid "This record has been modified while you were editing it."
@@ -107,6 +112,9 @@ msgstr "Закрити"
107
112
  msgid "Application Error"
108
113
  msgstr "Помилка програми"
109
114
 
115
+ msgid "Details"
116
+ msgstr ""
117
+
110
118
  msgid "Report Bug"
111
119
  msgstr "Повідомити про помилку"
112
120
 
@@ -123,21 +131,35 @@ msgstr "Доступна нова версія!"
123
131
  msgid "Download"
124
132
  msgstr "Завантажити"
125
133
 
134
+ msgid "Concurrency Exception"
135
+ msgstr "Виняток одночасного доступу"
136
+
126
137
  #, fuzzy
127
138
  msgid "Could not get a session."
128
139
  msgstr "Не вдалося підключитися до сервера."
129
140
 
141
+ #, python-format
142
+ msgid "Error: \"%s\". Try again later."
143
+ msgstr ""
144
+
130
145
  msgid "Too many requests. Try again later."
131
146
  msgstr "Дуже багато запитів. Спробуйте ще раз пізніше."
132
147
 
133
- #, fuzzy
134
- msgid "Not found."
135
- msgstr "Нічого не знайдено."
136
-
137
148
  #, fuzzy
138
149
  msgid "Not Found."
139
150
  msgstr "Нічого не знайдено."
140
151
 
152
+ msgid "Reset forgotten password"
153
+ msgstr ""
154
+
155
+ msgid "Send you an email to reset your password."
156
+ msgstr ""
157
+
158
+ msgid ""
159
+ "A request to reset your password has been sent.\n"
160
+ "Please check your mailbox."
161
+ msgstr ""
162
+
141
163
  msgid "..."
142
164
  msgstr "..."
143
165
 
@@ -716,6 +738,12 @@ msgstr "Модель:"
716
738
  msgid "ID:"
717
739
  msgstr "ID:"
718
740
 
741
+ msgid "Module:"
742
+ msgstr ""
743
+
744
+ msgid "XML ID:"
745
+ msgstr ""
746
+
719
747
  msgid "Created by:"
720
748
  msgstr "Ким створено:"
721
749
 
@@ -1090,7 +1118,19 @@ msgstr "Розмір зображення завеликий."
1090
1118
  msgid "Copy"
1091
1119
  msgstr "Копіювати"
1092
1120
 
1093
- msgid "Paste"
1121
+ #, fuzzy
1122
+ msgid "Copy Row"
1123
+ msgstr "_Копіювати URL"
1124
+
1125
+ #, fuzzy
1126
+ msgid "Copy Rows"
1127
+ msgstr "_Копіювати URL"
1128
+
1129
+ msgid "Copy Column"
1130
+ msgstr ""
1131
+
1132
+ #, fuzzy
1133
+ msgid "Paste Rows"
1094
1134
  msgstr "Вставити"
1095
1135
 
1096
1136
  msgid ".."
@@ -29,6 +29,10 @@ msgstr "设置服务器主机名:端口号"
29
29
  msgid "disable thread usage"
30
30
  msgstr "禁用线程"
31
31
 
32
+ #, python-format
33
+ msgid "Invalid response id (%s) expected %s"
34
+ msgstr ""
35
+
32
36
  #, python-format
33
37
  msgid "Unable to set locale %s"
34
38
  msgstr "无法设置 locale %s"
@@ -79,7 +83,8 @@ msgstr "否"
79
83
  msgid "Yes"
80
84
  msgstr "是"
81
85
 
82
- msgid "Concurrency Exception"
86
+ #, fuzzy
87
+ msgid "Concurrency Warning"
83
88
  msgstr "并行操作异常"
84
89
 
85
90
  msgid "This record has been modified while you were editing it."
@@ -110,6 +115,9 @@ msgstr "关闭"
110
115
  msgid "Application Error"
111
116
  msgstr "程序错误"
112
117
 
118
+ msgid "Details"
119
+ msgstr ""
120
+
113
121
  msgid "Report Bug"
114
122
  msgstr "报告Bug"
115
123
 
@@ -126,18 +134,33 @@ msgstr "有新版本可用!"
126
134
  msgid "Download"
127
135
  msgstr "下载"
128
136
 
137
+ msgid "Concurrency Exception"
138
+ msgstr "并行操作异常"
139
+
129
140
  msgid "Could not get a session."
130
141
  msgstr "无法获取会话。"
131
142
 
143
+ #, python-format
144
+ msgid "Error: \"%s\". Try again later."
145
+ msgstr ""
146
+
132
147
  msgid "Too many requests. Try again later."
133
148
  msgstr "请求太多,请稍后重试."
134
149
 
135
- msgid "Not found."
136
- msgstr "无符合条件的数据."
137
-
138
150
  msgid "Not Found."
139
151
  msgstr "无符合条件的数据."
140
152
 
153
+ msgid "Reset forgotten password"
154
+ msgstr ""
155
+
156
+ msgid "Send you an email to reset your password."
157
+ msgstr ""
158
+
159
+ msgid ""
160
+ "A request to reset your password has been sent.\n"
161
+ "Please check your mailbox."
162
+ msgstr ""
163
+
141
164
  msgid "..."
142
165
  msgstr "..."
143
166
 
@@ -710,6 +733,12 @@ msgstr "模型:"
710
733
  msgid "ID:"
711
734
  msgstr "标识:"
712
735
 
736
+ msgid "Module:"
737
+ msgstr ""
738
+
739
+ msgid "XML ID:"
740
+ msgstr ""
741
+
713
742
  msgid "Created by:"
714
743
  msgstr "创建者:"
715
744
 
@@ -1083,7 +1112,19 @@ msgstr "图片尺寸过大."
1083
1112
  msgid "Copy"
1084
1113
  msgstr "复制"
1085
1114
 
1086
- msgid "Paste"
1115
+ #, fuzzy
1116
+ msgid "Copy Row"
1117
+ msgstr "复制(_C)URL"
1118
+
1119
+ #, fuzzy
1120
+ msgid "Copy Rows"
1121
+ msgstr "复制(_C)URL"
1122
+
1123
+ msgid "Copy Column"
1124
+ msgstr ""
1125
+
1126
+ #, fuzzy
1127
+ msgid "Paste Rows"
1087
1128
  msgstr "粘贴"
1088
1129
 
1089
1130
  msgid ".."
tryton/device_cookie.py CHANGED
@@ -20,7 +20,7 @@ def renew():
20
20
  def set_cookie(new_cookie):
21
21
  try:
22
22
  new_cookie = new_cookie()
23
- except Exception:
23
+ except common.RPCException:
24
24
  logger.error("Cannot renew device cookie", exc_info=True)
25
25
  else:
26
26
  _set(new_cookie)
tryton/gui/main.py CHANGED
@@ -401,7 +401,8 @@ class Main(Gtk.Application):
401
401
 
402
402
  RPCExecute('model', 'ir.model', 'global_search', search_text,
403
403
  CONFIG['client.limit'], self.menu_screen.model_name,
404
- context=self.menu_screen.context, callback=set_result)
404
+ context=self.menu_screen.context, callback=set_result,
405
+ process_exception=False)
405
406
  return False
406
407
 
407
408
  def changed(widget):
@@ -470,7 +471,7 @@ class Main(Gtk.Application):
470
471
  favorites = RPCExecute('model',
471
472
  self.menu_screen.model_name + '.favorite', 'get',
472
473
  process_exception=False)
473
- except Exception:
474
+ except RPCException:
474
475
  return False
475
476
  for id_, name, icon in favorites:
476
477
  menuitem = Gtk.MenuItem(label=name)
@@ -11,7 +11,7 @@ from tryton.common import get_toplevel_window
11
11
  from tryton.config import CONFIG, PIXMAPS_DIR
12
12
 
13
13
  COPYRIGHT = '''\
14
- Copyright (C) 2004-2024 Tryton.
14
+ Copyright (C) 2004-2025 Tryton.
15
15
  '''
16
16
  AUTHORS = [
17
17
  'Bertrand Chenal <bertrand.chenal@b2ck.com>',
@@ -7,8 +7,8 @@ import logging
7
7
  import os
8
8
  import re
9
9
  import shutil
10
- import tempfile
11
10
  import threading
11
+ from tempfile import NamedTemporaryFile
12
12
 
13
13
  from gi.repository import GLib, GObject, Gtk
14
14
 
@@ -501,7 +501,7 @@ class DBLogin(object):
501
501
  # reset self.profiles as parsing errors may leave wrong data in
502
502
  # the parser
503
503
  self.profiles = configparser.ConfigParser()
504
- with tempfile.NamedTemporaryFile(
504
+ with NamedTemporaryFile(
505
505
  delete=False, prefix='profiles_', suffix='.cfg',
506
506
  dir=config_dir) as temp_file:
507
507
  temp_name = temp_file.name
@@ -74,7 +74,7 @@ class EmailEntry(Gtk.Entry):
74
74
  RPCExecute(
75
75
  'model', 'ir.email', 'complete', text, CONFIG['client.limit'],
76
76
  process_exception=False, callback=callback)
77
- except Exception:
77
+ except RPCException:
78
78
  logger.warning(
79
79
  _("Unable to complete email entry"), exc_info=True)
80
80
  return False
tryton/gui/window/form.py CHANGED
@@ -5,7 +5,6 @@ import csv
5
5
  import gettext
6
6
  import locale
7
7
  import os
8
- import tempfile
9
8
  from itertools import zip_longest
10
9
 
11
10
  from gi.repository import Gdk, GLib, Gtk
@@ -13,7 +12,7 @@ from gi.repository import Gdk, GLib, Gtk
13
12
  import tryton.common as common
14
13
  from tryton import plugins
15
14
  from tryton.action import Action
16
- from tryton.common import RPCException, RPCExecute, sur, sur_3b
15
+ from tryton.common import RPCException, RPCExecute, sur, sur_3b, tempfile
17
16
  from tryton.common.common import selection as selection_
18
17
  from tryton.common.popup_menu import popup
19
18
  from tryton.common.underline import set_underline
@@ -66,7 +65,8 @@ class Form(TabContent):
66
65
  if isinstance(res_id, int):
67
66
  res_id = [res_id]
68
67
  self.screen.load(res_id)
69
- self.screen.current_record = self.screen.group.get(res_id[0])
68
+ if res_id:
69
+ self.screen.current_record = self.screen.group.get(res_id[0])
70
70
  self.screen.display()
71
71
  else:
72
72
  if self.screen.current_view.view_type == 'form':
@@ -105,7 +105,9 @@ class Form(TabContent):
105
105
  def compare(self, model, attributes):
106
106
  if not attributes:
107
107
  return False
108
- return (self.model == model
108
+ return (
109
+ self.screen.view_index == 0
110
+ and self.model == model
109
111
  and self.res_id == attributes.get('res_id')
110
112
  and self.attributes.get('domain') == attributes.get('domain')
111
113
  and self.attributes.get('view_ids') == attributes.get('view_ids')
tryton/gui/window/log.py CHANGED
@@ -24,7 +24,8 @@ class Log(WinForm):
24
24
  log, = RPCExecute(
25
25
  'model', record.model_name, 'read', [record.id],
26
26
  ['create_uid.rec_name', 'create_date',
27
- 'write_uid.rec_name', 'write_date'], context=context)
27
+ 'write_uid.rec_name', 'write_date',
28
+ 'xml_id'], context=context)
28
29
  except RPCException:
29
30
  return
30
31
 
@@ -53,11 +54,32 @@ class Log(WinForm):
53
54
  label_id.set_mnemonic_widget(entry_id)
54
55
  grid.attach(label_id, 2, 1, 1, 1)
55
56
 
57
+ if log.get('xml_id'):
58
+ module, xml_id = log['xml_id'].split('.', 1)
59
+
60
+ entry_module = Gtk.Entry(editable=False)
61
+ entry_module.set_text(module)
62
+ grid.attach(entry_module, 1, 2, 1, 1)
63
+ label_module = Gtk.Label(
64
+ label=set_underline(_("Module:")),
65
+ use_underline=True, halign=Gtk.Align.END)
66
+ label_module.set_mnemonic_widget(entry_module)
67
+ grid.attach(label_module, 0, 2, 1, 1)
68
+
69
+ entry_xml_id = Gtk.Entry(editable=False)
70
+ entry_xml_id.set_text(xml_id)
71
+ grid.attach(entry_xml_id, 3, 2, 1, 1)
72
+ label_xml_id = Gtk.Label(
73
+ label=set_underline(_("XML ID:")),
74
+ use_underline=True, halign=Gtk.Align.END)
75
+ label_xml_id.set_mnemonic_widget(entry_xml_id)
76
+ grid.attach(label_xml_id, 2, 2, 1, 1)
77
+
56
78
  for i, (user, user_label, date, date_label) in enumerate([
57
79
  ('create_uid.', _("Created by:"),
58
80
  'create_date', _("Created at:")),
59
81
  ('write_uid.', _("Last Modified by:"),
60
- 'write_date', _("Last Modified at:"))], 2):
82
+ 'write_date', _("Last Modified at:"))], 3):
61
83
  entry_user = Gtk.Entry(editable=False, width_chars=50)
62
84
  user = log.get(user)
63
85
  if user: