tryton 7.2.2__tar.gz → 7.2.4__tar.gz

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 (289) hide show
  1. {tryton-7.2.2 → tryton-7.2.4}/CHANGELOG +10 -0
  2. {tryton-7.2.2 → tryton-7.2.4}/PKG-INFO +1 -1
  3. {tryton-7.2.2 → tryton-7.2.4}/bin/tryton +2 -1
  4. {tryton-7.2.2 → tryton-7.2.4}/tryton/__init__.py +1 -1
  5. {tryton-7.2.2 → tryton-7.2.4}/tryton/common/tempfile.py +1 -1
  6. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/bg/LC_MESSAGES/tryton.mo +0 -0
  7. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/ca/LC_MESSAGES/tryton.mo +0 -0
  8. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/cs/LC_MESSAGES/tryton.mo +0 -0
  9. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/de/LC_MESSAGES/tryton.mo +0 -0
  10. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/es/LC_MESSAGES/tryton.mo +0 -0
  11. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/es_419/LC_MESSAGES/tryton.mo +0 -0
  12. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/et/LC_MESSAGES/tryton.mo +0 -0
  13. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/fa/LC_MESSAGES/tryton.mo +0 -0
  14. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/fi/LC_MESSAGES/tryton.mo +0 -0
  15. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/fr/LC_MESSAGES/tryton.mo +0 -0
  16. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/hu/LC_MESSAGES/tryton.mo +0 -0
  17. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/id/LC_MESSAGES/tryton.mo +0 -0
  18. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/it/LC_MESSAGES/tryton.mo +0 -0
  19. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/ja_JP/LC_MESSAGES/tryton.mo +0 -0
  20. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/lo/LC_MESSAGES/tryton.mo +0 -0
  21. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/lt/LC_MESSAGES/tryton.mo +0 -0
  22. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/nl/LC_MESSAGES/tryton.mo +0 -0
  23. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/pl/LC_MESSAGES/tryton.mo +0 -0
  24. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/pt/LC_MESSAGES/tryton.mo +0 -0
  25. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/ro/LC_MESSAGES/tryton.mo +0 -0
  26. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/ru/LC_MESSAGES/tryton.mo +0 -0
  27. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/sl/LC_MESSAGES/tryton.mo +0 -0
  28. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/tr/LC_MESSAGES/tryton.mo +0 -0
  29. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/uk/LC_MESSAGES/tryton.mo +0 -0
  30. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/zh_CN/LC_MESSAGES/tryton.mo +0 -0
  31. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/model/field.py +50 -20
  32. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/model/record.py +3 -1
  33. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/calendar_gtk/calendar_.py +15 -9
  34. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/form_gtk/dictionary.py +5 -3
  35. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/form_gtk/document.py +9 -10
  36. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/win_form.py +8 -6
  37. {tryton-7.2.2 → tryton-7.2.4}/tryton.egg-info/PKG-INFO +1 -1
  38. {tryton-7.2.2 → tryton-7.2.4}/COPYRIGHT +0 -0
  39. {tryton-7.2.2 → tryton-7.2.4}/LICENSE +0 -0
  40. {tryton-7.2.2 → tryton-7.2.4}/MANIFEST.in +0 -0
  41. {tryton-7.2.2 → tryton-7.2.4}/README.rst +0 -0
  42. {tryton-7.2.2 → tryton-7.2.4}/catalan.nsh +0 -0
  43. {tryton-7.2.2 → tryton-7.2.4}/darwin/gtk-3.0/gdk-pixbuf.loaders +0 -0
  44. {tryton-7.2.2 → tryton-7.2.4}/darwin/gtk-3.0/gtk.immodules +0 -0
  45. {tryton-7.2.2 → tryton-7.2.4}/doc/conf.py +0 -0
  46. {tryton-7.2.2 → tryton-7.2.4}/doc/glossary.rst +0 -0
  47. {tryton-7.2.2 → tryton-7.2.4}/doc/index.rst +0 -0
  48. {tryton-7.2.2 → tryton-7.2.4}/doc/installation.rst +0 -0
  49. {tryton-7.2.2 → tryton-7.2.4}/doc/releases.rst +0 -0
  50. {tryton-7.2.2 → tryton-7.2.4}/doc/requirements-doc.txt +0 -0
  51. {tryton-7.2.2 → tryton-7.2.4}/doc/usage.rst +0 -0
  52. {tryton-7.2.2 → tryton-7.2.4}/english.nsh +0 -0
  53. {tryton-7.2.2 → tryton-7.2.4}/farsi.nsh +0 -0
  54. {tryton-7.2.2 → tryton-7.2.4}/french.nsh +0 -0
  55. {tryton-7.2.2 → tryton-7.2.4}/german.nsh +0 -0
  56. {tryton-7.2.2 → tryton-7.2.4}/make-darwin-installer.sh +0 -0
  57. {tryton-7.2.2 → tryton-7.2.4}/make-win32-installer.sh +0 -0
  58. {tryton-7.2.2 → tryton-7.2.4}/portuguese.nsh +0 -0
  59. {tryton-7.2.2 → tryton-7.2.4}/setup-freeze.py +0 -0
  60. {tryton-7.2.2 → tryton-7.2.4}/setup.cfg +0 -0
  61. {tryton-7.2.2 → tryton-7.2.4}/setup.nsi +0 -0
  62. {tryton-7.2.2 → tryton-7.2.4}/setup.py +0 -0
  63. {tryton-7.2.2 → tryton-7.2.4}/slovenian.nsh +0 -0
  64. {tryton-7.2.2 → tryton-7.2.4}/spanish.nsh +0 -0
  65. {tryton-7.2.2 → tryton-7.2.4}/tox.ini +0 -0
  66. {tryton-7.2.2 → tryton-7.2.4}/tryton/action/__init__.py +0 -0
  67. {tryton-7.2.2 → tryton-7.2.4}/tryton/action/main.py +0 -0
  68. {tryton-7.2.2 → tryton-7.2.4}/tryton/bus.py +0 -0
  69. {tryton-7.2.2 → tryton-7.2.4}/tryton/cache.py +0 -0
  70. {tryton-7.2.2 → tryton-7.2.4}/tryton/client.py +0 -0
  71. {tryton-7.2.2 → tryton-7.2.4}/tryton/common/__init__.py +0 -0
  72. {tryton-7.2.2 → tryton-7.2.4}/tryton/common/button.py +0 -0
  73. {tryton-7.2.2 → tryton-7.2.4}/tryton/common/cellrendererbinary.py +0 -0
  74. {tryton-7.2.2 → tryton-7.2.4}/tryton/common/cellrendererbutton.py +0 -0
  75. {tryton-7.2.2 → tryton-7.2.4}/tryton/common/cellrendererclickablepixbuf.py +0 -0
  76. {tryton-7.2.2 → tryton-7.2.4}/tryton/common/cellrenderercombo.py +0 -0
  77. {tryton-7.2.2 → tryton-7.2.4}/tryton/common/cellrendererfloat.py +0 -0
  78. {tryton-7.2.2 → tryton-7.2.4}/tryton/common/cellrendererinteger.py +0 -0
  79. {tryton-7.2.2 → tryton-7.2.4}/tryton/common/cellrenderertext.py +0 -0
  80. {tryton-7.2.2 → tryton-7.2.4}/tryton/common/cellrenderertoggle.py +0 -0
  81. {tryton-7.2.2 → tryton-7.2.4}/tryton/common/common.py +0 -0
  82. {tryton-7.2.2 → tryton-7.2.4}/tryton/common/completion.py +0 -0
  83. {tryton-7.2.2 → tryton-7.2.4}/tryton/common/datetime_.py +0 -0
  84. {tryton-7.2.2 → tryton-7.2.4}/tryton/common/domain_inversion.py +0 -0
  85. {tryton-7.2.2 → tryton-7.2.4}/tryton/common/domain_parser.py +0 -0
  86. {tryton-7.2.2 → tryton-7.2.4}/tryton/common/entry_position.py +0 -0
  87. {tryton-7.2.2 → tryton-7.2.4}/tryton/common/environment.py +0 -0
  88. {tryton-7.2.2 → tryton-7.2.4}/tryton/common/focus.py +0 -0
  89. {tryton-7.2.2 → tryton-7.2.4}/tryton/common/htmltextbuffer.py +0 -0
  90. {tryton-7.2.2 → tryton-7.2.4}/tryton/common/number_entry.py +0 -0
  91. {tryton-7.2.2 → tryton-7.2.4}/tryton/common/popup_menu.py +0 -0
  92. {tryton-7.2.2 → tryton-7.2.4}/tryton/common/richtext.py +0 -0
  93. {tryton-7.2.2 → tryton-7.2.4}/tryton/common/selection.py +0 -0
  94. {tryton-7.2.2 → tryton-7.2.4}/tryton/common/timedelta.py +0 -0
  95. {tryton-7.2.2 → tryton-7.2.4}/tryton/common/underline.py +0 -0
  96. {tryton-7.2.2 → tryton-7.2.4}/tryton/common/widget_style.py +0 -0
  97. {tryton-7.2.2 → tryton-7.2.4}/tryton/config.py +0 -0
  98. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/bg/LC_MESSAGES/tryton.po +0 -0
  99. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/ca/LC_MESSAGES/tryton.po +0 -0
  100. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/cs/LC_MESSAGES/tryton.po +0 -0
  101. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/de/LC_MESSAGES/tryton.po +0 -0
  102. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/es/LC_MESSAGES/tryton.po +0 -0
  103. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/es_419/LC_MESSAGES/tryton.po +0 -0
  104. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/et/LC_MESSAGES/tryton.po +0 -0
  105. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/fa/LC_MESSAGES/tryton.po +0 -0
  106. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/fi/LC_MESSAGES/tryton.po +0 -0
  107. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/fr/LC_MESSAGES/tryton.po +0 -0
  108. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/hu/LC_MESSAGES/tryton.po +0 -0
  109. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/id/LC_MESSAGES/tryton.po +0 -0
  110. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/it/LC_MESSAGES/tryton.po +0 -0
  111. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/ja_JP/LC_MESSAGES/tryton.po +0 -0
  112. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/lo/LC_MESSAGES/tryton.po +0 -0
  113. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/lt/LC_MESSAGES/tryton.po +0 -0
  114. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/nl/LC_MESSAGES/tryton.po +0 -0
  115. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/pl/LC_MESSAGES/tryton.po +0 -0
  116. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/pt/LC_MESSAGES/tryton.po +0 -0
  117. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/ro/LC_MESSAGES/tryton.po +0 -0
  118. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/ru/LC_MESSAGES/tryton.po +0 -0
  119. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/sl/LC_MESSAGES/tryton.po +0 -0
  120. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/tr/LC_MESSAGES/tryton.po +0 -0
  121. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/tryton.pot +0 -0
  122. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/uk/LC_MESSAGES/tryton.po +0 -0
  123. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/locale/zh_CN/LC_MESSAGES/tryton.po +0 -0
  124. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/LICENSE +0 -0
  125. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-add.svg +0 -0
  126. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-archive.svg +0 -0
  127. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-arrow-down.svg +0 -0
  128. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-arrow-left.svg +0 -0
  129. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-arrow-right.svg +0 -0
  130. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-arrow-up.svg +0 -0
  131. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-attach.svg +0 -0
  132. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-back.svg +0 -0
  133. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-barcode-scanner.svg +0 -0
  134. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-bookmark-border.svg +0 -0
  135. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-bookmark.svg +0 -0
  136. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-bookmarks.svg +0 -0
  137. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-cancel.svg +0 -0
  138. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-clear.svg +0 -0
  139. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-close.svg +0 -0
  140. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-copy.svg +0 -0
  141. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-create.svg +0 -0
  142. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-date.svg +0 -0
  143. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-delete.svg +0 -0
  144. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-download.svg +0 -0
  145. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-drag.svg +0 -0
  146. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-email.svg +0 -0
  147. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-error.svg +0 -0
  148. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-exit.svg +0 -0
  149. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-export.svg +0 -0
  150. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-filter.svg +0 -0
  151. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-format-align-center.svg +0 -0
  152. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-format-align-justify.svg +0 -0
  153. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-format-align-left.svg +0 -0
  154. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-format-align-right.svg +0 -0
  155. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-format-bold.svg +0 -0
  156. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-format-color-text.svg +0 -0
  157. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-format-italic.svg +0 -0
  158. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-format-underline.svg +0 -0
  159. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-forward.svg +0 -0
  160. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-history.svg +0 -0
  161. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-icon.png +0 -0
  162. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-icon.svg +0 -0
  163. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-import.svg +0 -0
  164. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-info.svg +0 -0
  165. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-launch.svg +0 -0
  166. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-link.svg +0 -0
  167. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-log.svg +0 -0
  168. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-menu.svg +0 -0
  169. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-note.svg +0 -0
  170. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-ok.svg +0 -0
  171. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-open.svg +0 -0
  172. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-print.svg +0 -0
  173. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-public.svg +0 -0
  174. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-question.svg +0 -0
  175. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-refresh.svg +0 -0
  176. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-remove.svg +0 -0
  177. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-save.svg +0 -0
  178. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-search.svg +0 -0
  179. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-send.svg +0 -0
  180. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-sound-off.svg +0 -0
  181. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-sound-on.svg +0 -0
  182. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-star-border.svg +0 -0
  183. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-star.svg +0 -0
  184. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-switch.svg +0 -0
  185. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-translate.svg +0 -0
  186. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-unarchive.svg +0 -0
  187. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-undo.svg +0 -0
  188. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton-warning.svg +0 -0
  189. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton.icns +0 -0
  190. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton.ico +0 -0
  191. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/pixmaps/tryton/tryton.svg +0 -0
  192. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/sounds/LICENSE +0 -0
  193. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/sounds/danger.wav +0 -0
  194. {tryton-7.2.2 → tryton-7.2.4}/tryton/data/sounds/success.wav +0 -0
  195. {tryton-7.2.2 → tryton-7.2.4}/tryton/device_cookie.py +0 -0
  196. {tryton-7.2.2 → tryton-7.2.4}/tryton/exceptions.py +0 -0
  197. {tryton-7.2.2 → tryton-7.2.4}/tryton/fingerprints.py +0 -0
  198. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/__init__.py +0 -0
  199. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/main.py +0 -0
  200. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/__init__.py +0 -0
  201. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/about.py +0 -0
  202. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/attachment.py +0 -0
  203. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/board.py +0 -0
  204. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/code_scanner.py +0 -0
  205. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/dblogin.py +0 -0
  206. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/email_.py +0 -0
  207. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/form.py +0 -0
  208. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/infobar.py +0 -0
  209. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/limit.py +0 -0
  210. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/log.py +0 -0
  211. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/nomodal.py +0 -0
  212. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/note.py +0 -0
  213. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/preference.py +0 -0
  214. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/revision.py +0 -0
  215. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/tabcontent.py +0 -0
  216. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_board/__init__.py +0 -0
  217. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_board/action.py +0 -0
  218. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_board/view_board.py +0 -0
  219. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/__init__.py +0 -0
  220. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/model/__init__.py +0 -0
  221. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/model/group.py +0 -0
  222. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/screen/__init__.py +0 -0
  223. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/screen/screen.py +0 -0
  224. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/__init__.py +0 -0
  225. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/calendar_.py +0 -0
  226. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/calendar_gtk/__init__.py +0 -0
  227. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/calendar_gtk/dates_period.py +0 -0
  228. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/calendar_gtk/toolbar.py +0 -0
  229. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/form.py +0 -0
  230. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/form_gtk/__init__.py +0 -0
  231. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/form_gtk/binary.py +0 -0
  232. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/form_gtk/calendar_.py +0 -0
  233. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/form_gtk/char.py +0 -0
  234. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/form_gtk/checkbox.py +0 -0
  235. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/form_gtk/float.py +0 -0
  236. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/form_gtk/image.py +0 -0
  237. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/form_gtk/integer.py +0 -0
  238. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/form_gtk/many2many.py +0 -0
  239. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/form_gtk/many2one.py +0 -0
  240. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/form_gtk/multiselection.py +0 -0
  241. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/form_gtk/one2many.py +0 -0
  242. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/form_gtk/one2one.py +0 -0
  243. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/form_gtk/progressbar.py +0 -0
  244. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/form_gtk/pyson.py +0 -0
  245. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/form_gtk/reference.py +0 -0
  246. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/form_gtk/richtextbox.py +0 -0
  247. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/form_gtk/selection.py +0 -0
  248. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/form_gtk/state_widget.py +0 -0
  249. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/form_gtk/textbox.py +0 -0
  250. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/form_gtk/timedelta.py +0 -0
  251. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/form_gtk/url.py +0 -0
  252. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/form_gtk/widget.py +0 -0
  253. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/graph.py +0 -0
  254. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/graph_gtk/__init__.py +0 -0
  255. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/graph_gtk/bar.py +0 -0
  256. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/graph_gtk/graph.py +0 -0
  257. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/graph_gtk/line.py +0 -0
  258. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/graph_gtk/pie.py +0 -0
  259. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/list.py +0 -0
  260. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/list_form.py +0 -0
  261. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/list_gtk/__init__.py +0 -0
  262. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/list_gtk/editabletree.py +0 -0
  263. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/list_gtk/widget.py +0 -0
  264. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/view_form/view/screen_container.py +0 -0
  265. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/win_csv.py +0 -0
  266. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/win_export.py +0 -0
  267. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/win_import.py +0 -0
  268. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/win_search.py +0 -0
  269. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/window.py +0 -0
  270. {tryton-7.2.2 → tryton-7.2.4}/tryton/gui/window/wizard.py +0 -0
  271. {tryton-7.2.2 → tryton-7.2.4}/tryton/jsonrpc.py +0 -0
  272. {tryton-7.2.2 → tryton-7.2.4}/tryton/plugins/__init__.py +0 -0
  273. {tryton-7.2.2 → tryton-7.2.4}/tryton/plugins/translation/__init__.py +0 -0
  274. {tryton-7.2.2 → tryton-7.2.4}/tryton/pyson.py +0 -0
  275. {tryton-7.2.2 → tryton-7.2.4}/tryton/rpc.py +0 -0
  276. {tryton-7.2.2 → tryton-7.2.4}/tryton/tests/__init__.py +0 -0
  277. {tryton-7.2.2 → tryton-7.2.4}/tryton/tests/test_common.py +0 -0
  278. {tryton-7.2.2 → tryton-7.2.4}/tryton/tests/test_common_domain_parser.py +0 -0
  279. {tryton-7.2.2 → tryton-7.2.4}/tryton/tests/test_common_selection.py +0 -0
  280. {tryton-7.2.2 → tryton-7.2.4}/tryton/tests/test_common_timedelta.py +0 -0
  281. {tryton-7.2.2 → tryton-7.2.4}/tryton/translate.py +0 -0
  282. {tryton-7.2.2 → tryton-7.2.4}/tryton.desktop +0 -0
  283. {tryton-7.2.2 → tryton-7.2.4}/tryton.egg-info/SOURCES.txt +0 -0
  284. {tryton-7.2.2 → tryton-7.2.4}/tryton.egg-info/dependency_links.txt +0 -0
  285. {tryton-7.2.2 → tryton-7.2.4}/tryton.egg-info/not-zip-safe +0 -0
  286. {tryton-7.2.2 → tryton-7.2.4}/tryton.egg-info/requires.txt +0 -0
  287. {tryton-7.2.2 → tryton-7.2.4}/tryton.egg-info/top_level.txt +0 -0
  288. {tryton-7.2.2 → tryton-7.2.4}/win32/gtk-3.0/gdk-pixbuf.loaders +0 -0
  289. {tryton-7.2.2 → tryton-7.2.4}/win32/gtk-3.0/gtk.immodules +0 -0
@@ -1,4 +1,14 @@
1
1
 
2
+ Version 7.2.4 - 2024-08-01
3
+ --------------------------
4
+ * Bug fixes (see mercurial logs for details)
5
+
6
+
7
+ Version 7.2.3 - 2024-07-01
8
+ --------------------------
9
+ * Bug fixes (see mercurial logs for details)
10
+
11
+
2
12
  Version 7.2.2 - 2024-06-15
3
13
  --------------------------
4
14
  * Bug fixes (see mercurial logs for details)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: tryton
3
- Version: 7.2.2
3
+ Version: 7.2.4
4
4
  Summary: Tryton desktop client
5
5
  Home-page: http://www.tryton.org/
6
6
  Download-URL: http://downloads.tryton.org/7.2/
@@ -15,7 +15,8 @@ if hasattr(sys, 'frozen'):
15
15
  share = os.path.join(prefix, 'share')
16
16
  os.environ['GTK_EXE_PREFIX'] = prefix
17
17
  os.environ['GTK_DATA_PREFIX'] = prefix
18
- os.environ['EV_BACKENDS_DIR'] = prefix
18
+ os.environ['EV_BACKENDS_DIR'] = os.path.join(
19
+ prefix, 'lib', 'evince', '4', 'backends')
19
20
  os.environ['XDG_DATA_DIRS'] = share
20
21
  os.environ['GDK_PIXBUF_MODULE_FILE'] = os.path.join(
21
22
  share, 'gtk-3.0', 'gdk-pixbuf.loaders')
@@ -1,6 +1,6 @@
1
1
  # This file is part of Tryton. The COPYRIGHT file at the top level of
2
2
  # this repository contains the full copyright notices and license terms.
3
- __version__ = "7.2.2"
3
+ __version__ = "7.2.4"
4
4
  import locale
5
5
 
6
6
  import gi
@@ -25,7 +25,7 @@ def clean():
25
25
  for fname in _files:
26
26
  try:
27
27
  os.remove(fname)
28
- except FileNotFoundError:
28
+ except (FileNotFoundError, PermissionError):
29
29
  pass
30
30
  _files.clear()
31
31
 
@@ -10,6 +10,7 @@ import operator
10
10
  import os
11
11
  from decimal import Decimal
12
12
  from itertools import chain
13
+ from pathlib import Path
13
14
 
14
15
  import tryton.common as common
15
16
  from tryton.common import (
@@ -1070,26 +1071,56 @@ class ReferenceField(Field):
1070
1071
 
1071
1072
 
1072
1073
  class _FileCache(object):
1073
- def __init__(self, path):
1074
- self.path = path
1074
+ def __init__(self, data=None):
1075
+ _, filename = tempfile.mkstemp(prefix='tryton_')
1076
+ self.path = Path(filename)
1077
+ self.suffixes = {}
1078
+ if data:
1079
+ with open(self.path, 'wb') as fp:
1080
+ fp.write(data)
1081
+
1082
+ @property
1083
+ def data(self):
1084
+ with open(self.path, 'rb') as fp:
1085
+ return fp.read()
1075
1086
 
1076
1087
  def __del__(self):
1077
1088
  try:
1078
1089
  os.remove(self.path)
1079
1090
  except IOError:
1080
1091
  pass
1092
+ for path in self.suffixes.values():
1093
+ try:
1094
+ os.remove(path)
1095
+ except IOError:
1096
+ pass
1097
+
1098
+ def with_suffix(self, suffix):
1099
+ if suffix in self.suffixes:
1100
+ return self.suffixes[suffix]
1101
+ _, filename = tempfile.mkstemp(prefix='tryton_', suffix=suffix)
1102
+ self.suffixes[suffix] = path = Path(filename)
1103
+ with open(path, 'wb') as fp:
1104
+ fp.write(self.data)
1105
+ return path
1081
1106
 
1082
1107
 
1083
1108
  class BinaryField(Field):
1084
1109
 
1085
1110
  _default = None
1086
1111
 
1112
+ def _set_file_cache(self, record, data):
1113
+ if isinstance(data, str):
1114
+ data = data.encode('utf-8')
1115
+ file_cache = _FileCache(data)
1116
+ self.set(record, file_cache)
1117
+ return file_cache
1118
+
1087
1119
  def get(self, record):
1088
1120
  result = record.value.get(self.name, self._default)
1089
1121
  if isinstance(result, _FileCache):
1090
1122
  try:
1091
- with open(result.path, 'rb') as fp:
1092
- result = fp.read()
1123
+ result = result.data
1093
1124
  except IOError:
1094
1125
  result = self.get_data(record)
1095
1126
  return result
@@ -1098,13 +1129,7 @@ class BinaryField(Field):
1098
1129
  return self.get(record)
1099
1130
 
1100
1131
  def set_client(self, record, value, force_change=False):
1101
- _, filename = tempfile.mkstemp(prefix='tryton_')
1102
- data = value or b''
1103
- if isinstance(data, str):
1104
- data = data.encode('utf-8')
1105
- with open(filename, 'wb') as fp:
1106
- fp.write(data)
1107
- self.set(record, _FileCache(filename))
1132
+ self._set_file_cache(record, value or b'')
1108
1133
  self.sig_changed(record)
1109
1134
  record.validate(softvalidation=True)
1110
1135
  record.set_modified(self.name)
@@ -1128,15 +1153,20 @@ class BinaryField(Field):
1128
1153
  [record.id], [self.name], context=context)
1129
1154
  except RPCException:
1130
1155
  return b''
1131
- _, filename = tempfile.mkstemp(prefix='tryton_')
1132
- data = values[self.name] or b''
1133
- if isinstance(data, str):
1134
- data = data.encode('utf-8')
1135
- with open(filename, 'wb') as fp:
1136
- fp.write(data)
1137
- self.set(record, _FileCache(filename))
1156
+ self._set_file_cache(record, values[self.name] or b'')
1138
1157
  return self.get(record)
1139
1158
 
1159
+ def get_filename(self, record, suffix=None):
1160
+ data = self.get_data(record)
1161
+ file_cache = record.value.get(self.name)
1162
+ if not isinstance(file_cache, _FileCache):
1163
+ file_cache = self._set_file_cache(record, data)
1164
+ if suffix:
1165
+ filename = file_cache.with_suffix(suffix)
1166
+ else:
1167
+ filename = file_cache.path
1168
+ return filename
1169
+
1140
1170
 
1141
1171
  class DictField(Field):
1142
1172
 
@@ -1148,10 +1178,10 @@ class DictField(Field):
1148
1178
  self.keys = {}
1149
1179
 
1150
1180
  def get(self, record):
1151
- return super(DictField, self).get(record) or self._default
1181
+ return (super().get(record) or self._default).copy()
1152
1182
 
1153
1183
  def get_client(self, record):
1154
- return super(DictField, self).get_client(record) or self._default
1184
+ return super().get_client(record)
1155
1185
 
1156
1186
  def validation_domains(self, record, pre_validate=None):
1157
1187
  screen_domain, attr_domain = self.domains_get(record, pre_validate)
@@ -99,12 +99,14 @@ class Record:
99
99
  fields = ((fname, field)
100
100
  for fname, field in self.group.fields.items()
101
101
  if field.attrs.get('loading', 'eager') == 'eager')
102
+ views_operator = set.issubset
102
103
  else:
103
104
  fields = self.group.fields.items()
105
+ views_operator = set.intersection
104
106
 
105
107
  fnames = [fname for fname, field in fields
106
108
  if fname not in self._loaded
107
- and (not views or (views & field.views))]
109
+ and (not views or views_operator(views, field.views))]
108
110
  related_read_limit = 0
109
111
  for fname in list(fnames):
110
112
  f_attrs = self.group.fields[fname].attrs
@@ -63,17 +63,23 @@ class Calendar_(goocalendar.Calendar):
63
63
  return False
64
64
 
65
65
  def current_domain(self):
66
- first_datetime, last_datetime = \
67
- self.current_domain_period.get_dates(True)
66
+ start, end = self.current_domain_period.get_dates(True)
68
67
  dtstart = self.attrs['dtstart']
69
68
  dtend = self.attrs.get('dtend') or dtstart
70
- domain = ['OR',
71
- ['AND', (dtstart, '>=', first_datetime),
72
- (dtstart, '<', last_datetime)],
73
- ['AND', (dtend, '>=', first_datetime),
74
- (dtend, '<', last_datetime)],
75
- ['AND', (dtstart, '<', first_datetime),
76
- (dtend, '>', last_datetime)]]
69
+ fields = self.view_calendar.screen.group.fields
70
+ if fields[dtstart].attrs['type'] == 'date':
71
+ start = start.date()
72
+ if fields[dtend].attrs['type'] == 'date':
73
+ end = end.date()
74
+ domain = [
75
+ (dtstart, '!=', None),
76
+ (dtend, '!=', None),
77
+ ['OR',
78
+ ['AND', (dtstart, '>=', start), (dtstart, '<', end)],
79
+ ['AND', (dtend, '>=', start), (dtend, '<', end)],
80
+ ['AND', (dtstart, '<', start), (dtend, '>', end)],
81
+ ],
82
+ ]
77
83
  return domain
78
84
 
79
85
  def get_colors(self, record):
@@ -241,9 +241,10 @@ class DictMultiSelectionEntry(DictEntry):
241
241
  selection.handler_block_by_func(self._changed)
242
242
  try:
243
243
  selection.unselect_all()
244
- for v in value:
245
- if v in value2path:
246
- selection.select_path(value2path[v])
244
+ if value:
245
+ for v in value:
246
+ if v in value2path:
247
+ selection.select_path(value2path[v])
247
248
  finally:
248
249
  selection.handler_unblock_by_func(self._changed)
249
250
 
@@ -513,6 +514,7 @@ class DictWidget(Widget):
513
514
  self.send_modified()
514
515
  value = self.field.get_client(self.record)
515
516
  value.update({k: None for k in new_keys})
517
+ self.field.set_client(self.record, value)
516
518
  self.display()
517
519
 
518
520
  # Use idle add because it can be called from the callback
@@ -1,7 +1,6 @@
1
1
  # This file is part of Tryton. The COPYRIGHT file at the top level of
2
2
  # this repository contains the full copyright notices and license terms.
3
3
  from pathlib import Path
4
- from tempfile import NamedTemporaryFile
5
4
 
6
5
  from gi.repository import Gdk, GLib, Gtk
7
6
 
@@ -76,17 +75,17 @@ class Document(BinaryMixin, Widget):
76
75
  self.image.hide()
77
76
  if self.evince_view:
78
77
  self.evince_scroll.show()
78
+ suffix = None
79
79
  if self.filename_field:
80
- suffix = self.filename_field.get(self.record)
81
- else:
82
- suffix = None
80
+ filename = self.filename_field.get(self.record)
81
+ if filename:
82
+ suffix = Path(filename).suffix
83
+ filename = Path(self.field.get_filename(self.record, suffix))
83
84
  try:
84
- with NamedTemporaryFile(suffix=suffix) as fp:
85
- fp.write(data)
86
- path = Path(fp.name)
87
- document = (
88
- EvinceDocument.Document.factory_get_document(
89
- path.as_uri()))
85
+ document = (
86
+ EvinceDocument.Document.factory_get_document_full(
87
+ filename.as_uri(),
88
+ EvinceDocument.DocumentLoadFlags.NONE))
90
89
  model = EvinceView.DocumentModel()
91
90
  model.set_document(document)
92
91
  self.evince_view.set_model(model)
@@ -69,7 +69,7 @@ class WinForm(NoModal, InfoBar):
69
69
  self.accel_group = Gtk.AccelGroup()
70
70
  self.win.add_accel_group(self.accel_group)
71
71
 
72
- readonly = self.screen.readonly or self.screen.group.readonly
72
+ readonly = self.screen.group.readonly
73
73
 
74
74
  self.but_ok = None
75
75
  self.but_new = None
@@ -360,7 +360,7 @@ class WinForm(NoModal, InfoBar):
360
360
  deletable = True
361
361
  if self.screen.current_record:
362
362
  deletable = self.screen.current_record.deletable
363
- readonly = self.screen.readonly or self.screen.group.readonly
363
+ readonly = self.screen.group.readonly
364
364
  if position >= 1:
365
365
  name = str(position)
366
366
  if self.domain is not None:
@@ -373,9 +373,11 @@ class WinForm(NoModal, InfoBar):
373
373
  self.but_pre.set_sensitive(True)
374
374
  else:
375
375
  self.but_pre.set_sensitive(False)
376
- if access['delete'] and not readonly and deletable:
377
- self.but_del.set_sensitive(True)
378
- self.but_undel.set_sensitive(True)
376
+ self.but_del.set_sensitive(bool(
377
+ not readonly
378
+ and access['delete']
379
+ and deletable))
380
+ self.but_undel.set_sensitive(bool(not readonly))
379
381
  else:
380
382
  self.but_del.set_sensitive(False)
381
383
  self.but_undel.set_sensitive(False)
@@ -399,7 +401,7 @@ class WinForm(NoModal, InfoBar):
399
401
  cancel_responses = [
400
402
  Gtk.ResponseType.CANCEL, Gtk.ResponseType.DELETE_EVENT]
401
403
  self.screen.current_view.set_value()
402
- readonly = self.screen.readonly or self.screen.group.readonly
404
+ readonly = self.screen.group.readonly
403
405
  if (response_id not in cancel_responses
404
406
  and not readonly
405
407
  and self.screen.current_record is not None):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: tryton
3
- Version: 7.2.2
3
+ Version: 7.2.4
4
4
  Summary: Tryton desktop client
5
5
  Home-page: http://www.tryton.org/
6
6
  Download-URL: http://downloads.tryton.org/7.2/
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes