tryton 7.0.23__tar.gz → 7.0.25__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 (284) hide show
  1. {tryton-7.0.23 → tryton-7.0.25}/CHANGELOG +10 -0
  2. {tryton-7.0.23 → tryton-7.0.25}/COPYRIGHT +1 -1
  3. {tryton-7.0.23 → tryton-7.0.25}/PKG-INFO +4 -3
  4. {tryton-7.0.23 → tryton-7.0.25}/setup.py +1 -1
  5. {tryton-7.0.23 → tryton-7.0.25}/tryton/__init__.py +1 -1
  6. {tryton-7.0.23 → tryton-7.0.25}/tryton/common/domain_parser.py +8 -6
  7. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/bg/LC_MESSAGES/tryton.mo +0 -0
  8. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/ca/LC_MESSAGES/tryton.mo +0 -0
  9. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/cs/LC_MESSAGES/tryton.mo +0 -0
  10. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/de/LC_MESSAGES/tryton.mo +0 -0
  11. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/es/LC_MESSAGES/tryton.mo +0 -0
  12. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/es_419/LC_MESSAGES/tryton.mo +0 -0
  13. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/et/LC_MESSAGES/tryton.mo +0 -0
  14. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/fa/LC_MESSAGES/tryton.mo +0 -0
  15. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/fi/LC_MESSAGES/tryton.mo +0 -0
  16. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/fr/LC_MESSAGES/tryton.mo +0 -0
  17. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/hu/LC_MESSAGES/tryton.mo +0 -0
  18. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/id/LC_MESSAGES/tryton.mo +0 -0
  19. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/it/LC_MESSAGES/tryton.mo +0 -0
  20. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/ja_JP/LC_MESSAGES/tryton.mo +0 -0
  21. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/lo/LC_MESSAGES/tryton.mo +0 -0
  22. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/lt/LC_MESSAGES/tryton.mo +0 -0
  23. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/nl/LC_MESSAGES/tryton.mo +0 -0
  24. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/pl/LC_MESSAGES/tryton.mo +0 -0
  25. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/pt/LC_MESSAGES/tryton.mo +0 -0
  26. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/ro/LC_MESSAGES/tryton.mo +0 -0
  27. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/ru/LC_MESSAGES/tryton.mo +0 -0
  28. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/sl/LC_MESSAGES/tryton.mo +0 -0
  29. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/tr/LC_MESSAGES/tryton.mo +0 -0
  30. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/uk/LC_MESSAGES/tryton.mo +0 -0
  31. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/zh_CN/LC_MESSAGES/tryton.mo +0 -0
  32. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/form.py +4 -1
  33. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/model/field.py +5 -1
  34. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/screen/screen.py +14 -3
  35. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/list.py +4 -1
  36. tryton-7.0.25/tryton/gui/window/view_form/view/list_gtk/generictreemodel.py +426 -0
  37. {tryton-7.0.23 → tryton-7.0.25}/tryton.egg-info/PKG-INFO +4 -3
  38. {tryton-7.0.23 → tryton-7.0.25}/tryton.egg-info/SOURCES.txt +1 -0
  39. {tryton-7.0.23 → tryton-7.0.25}/tryton.egg-info/requires.txt +1 -1
  40. {tryton-7.0.23 → tryton-7.0.25}/LICENSE +0 -0
  41. {tryton-7.0.23 → tryton-7.0.25}/MANIFEST.in +0 -0
  42. {tryton-7.0.23 → tryton-7.0.25}/README.rst +0 -0
  43. {tryton-7.0.23 → tryton-7.0.25}/bin/tryton +0 -0
  44. {tryton-7.0.23 → tryton-7.0.25}/catalan.nsh +0 -0
  45. {tryton-7.0.23 → tryton-7.0.25}/doc/conf.py +0 -0
  46. {tryton-7.0.23 → tryton-7.0.25}/doc/glossary.rst +0 -0
  47. {tryton-7.0.23 → tryton-7.0.25}/doc/index.rst +0 -0
  48. {tryton-7.0.23 → tryton-7.0.25}/doc/installation.rst +0 -0
  49. {tryton-7.0.23 → tryton-7.0.25}/doc/releases.rst +0 -0
  50. {tryton-7.0.23 → tryton-7.0.25}/doc/requirements-doc.txt +0 -0
  51. {tryton-7.0.23 → tryton-7.0.25}/doc/usage.rst +0 -0
  52. {tryton-7.0.23 → tryton-7.0.25}/english.nsh +0 -0
  53. {tryton-7.0.23 → tryton-7.0.25}/farsi.nsh +0 -0
  54. {tryton-7.0.23 → tryton-7.0.25}/french.nsh +0 -0
  55. {tryton-7.0.23 → tryton-7.0.25}/german.nsh +0 -0
  56. {tryton-7.0.23 → tryton-7.0.25}/make-darwin-installer.sh +0 -0
  57. {tryton-7.0.23 → tryton-7.0.25}/make-win32-installer.sh +0 -0
  58. {tryton-7.0.23 → tryton-7.0.25}/portuguese.nsh +0 -0
  59. {tryton-7.0.23 → tryton-7.0.25}/setup-freeze.py +0 -0
  60. {tryton-7.0.23 → tryton-7.0.25}/setup.cfg +0 -0
  61. {tryton-7.0.23 → tryton-7.0.25}/setup.nsi +0 -0
  62. {tryton-7.0.23 → tryton-7.0.25}/slovenian.nsh +0 -0
  63. {tryton-7.0.23 → tryton-7.0.25}/spanish.nsh +0 -0
  64. {tryton-7.0.23 → tryton-7.0.25}/tox.ini +0 -0
  65. {tryton-7.0.23 → tryton-7.0.25}/tryton/action/__init__.py +0 -0
  66. {tryton-7.0.23 → tryton-7.0.25}/tryton/action/main.py +0 -0
  67. {tryton-7.0.23 → tryton-7.0.25}/tryton/bus.py +0 -0
  68. {tryton-7.0.23 → tryton-7.0.25}/tryton/client.py +0 -0
  69. {tryton-7.0.23 → tryton-7.0.25}/tryton/common/__init__.py +0 -0
  70. {tryton-7.0.23 → tryton-7.0.25}/tryton/common/button.py +0 -0
  71. {tryton-7.0.23 → tryton-7.0.25}/tryton/common/cellrendererbinary.py +0 -0
  72. {tryton-7.0.23 → tryton-7.0.25}/tryton/common/cellrendererbutton.py +0 -0
  73. {tryton-7.0.23 → tryton-7.0.25}/tryton/common/cellrendererclickablepixbuf.py +0 -0
  74. {tryton-7.0.23 → tryton-7.0.25}/tryton/common/cellrenderercombo.py +0 -0
  75. {tryton-7.0.23 → tryton-7.0.25}/tryton/common/cellrendererfloat.py +0 -0
  76. {tryton-7.0.23 → tryton-7.0.25}/tryton/common/cellrendererinteger.py +0 -0
  77. {tryton-7.0.23 → tryton-7.0.25}/tryton/common/cellrenderertext.py +0 -0
  78. {tryton-7.0.23 → tryton-7.0.25}/tryton/common/cellrenderertoggle.py +0 -0
  79. {tryton-7.0.23 → tryton-7.0.25}/tryton/common/common.py +0 -0
  80. {tryton-7.0.23 → tryton-7.0.25}/tryton/common/completion.py +0 -0
  81. {tryton-7.0.23 → tryton-7.0.25}/tryton/common/datetime_.py +0 -0
  82. {tryton-7.0.23 → tryton-7.0.25}/tryton/common/domain_inversion.py +0 -0
  83. {tryton-7.0.23 → tryton-7.0.25}/tryton/common/entry_position.py +0 -0
  84. {tryton-7.0.23 → tryton-7.0.25}/tryton/common/environment.py +0 -0
  85. {tryton-7.0.23 → tryton-7.0.25}/tryton/common/focus.py +0 -0
  86. {tryton-7.0.23 → tryton-7.0.25}/tryton/common/htmltextbuffer.py +0 -0
  87. {tryton-7.0.23 → tryton-7.0.25}/tryton/common/number_entry.py +0 -0
  88. {tryton-7.0.23 → tryton-7.0.25}/tryton/common/popup_menu.py +0 -0
  89. {tryton-7.0.23 → tryton-7.0.25}/tryton/common/richtext.py +0 -0
  90. {tryton-7.0.23 → tryton-7.0.25}/tryton/common/selection.py +0 -0
  91. {tryton-7.0.23 → tryton-7.0.25}/tryton/common/timedelta.py +0 -0
  92. {tryton-7.0.23 → tryton-7.0.25}/tryton/common/underline.py +0 -0
  93. {tryton-7.0.23 → tryton-7.0.25}/tryton/common/widget_style.py +0 -0
  94. {tryton-7.0.23 → tryton-7.0.25}/tryton/config.py +0 -0
  95. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/bg/LC_MESSAGES/tryton.po +0 -0
  96. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/ca/LC_MESSAGES/tryton.po +0 -0
  97. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/cs/LC_MESSAGES/tryton.po +0 -0
  98. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/de/LC_MESSAGES/tryton.po +0 -0
  99. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/es/LC_MESSAGES/tryton.po +0 -0
  100. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/es_419/LC_MESSAGES/tryton.po +0 -0
  101. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/et/LC_MESSAGES/tryton.po +0 -0
  102. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/fa/LC_MESSAGES/tryton.po +0 -0
  103. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/fi/LC_MESSAGES/tryton.po +0 -0
  104. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/fr/LC_MESSAGES/tryton.po +0 -0
  105. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/hu/LC_MESSAGES/tryton.po +0 -0
  106. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/id/LC_MESSAGES/tryton.po +0 -0
  107. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/it/LC_MESSAGES/tryton.po +0 -0
  108. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/ja_JP/LC_MESSAGES/tryton.po +0 -0
  109. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/lo/LC_MESSAGES/tryton.po +0 -0
  110. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/lt/LC_MESSAGES/tryton.po +0 -0
  111. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/nl/LC_MESSAGES/tryton.po +0 -0
  112. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/pl/LC_MESSAGES/tryton.po +0 -0
  113. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/pt/LC_MESSAGES/tryton.po +0 -0
  114. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/ro/LC_MESSAGES/tryton.po +0 -0
  115. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/ru/LC_MESSAGES/tryton.po +0 -0
  116. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/sl/LC_MESSAGES/tryton.po +0 -0
  117. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/tr/LC_MESSAGES/tryton.po +0 -0
  118. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/tryton.pot +0 -0
  119. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/uk/LC_MESSAGES/tryton.po +0 -0
  120. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/locale/zh_CN/LC_MESSAGES/tryton.po +0 -0
  121. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/LICENSE +0 -0
  122. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-add.svg +0 -0
  123. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-archive.svg +0 -0
  124. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-arrow-down.svg +0 -0
  125. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-arrow-left.svg +0 -0
  126. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-arrow-right.svg +0 -0
  127. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-arrow-up.svg +0 -0
  128. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-attach.svg +0 -0
  129. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-back.svg +0 -0
  130. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-barcode-scanner.svg +0 -0
  131. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-bookmark-border.svg +0 -0
  132. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-bookmark.svg +0 -0
  133. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-bookmarks.svg +0 -0
  134. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-cancel.svg +0 -0
  135. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-clear.svg +0 -0
  136. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-close.svg +0 -0
  137. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-copy.svg +0 -0
  138. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-create.svg +0 -0
  139. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-date.svg +0 -0
  140. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-delete.svg +0 -0
  141. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-download.svg +0 -0
  142. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-drag.svg +0 -0
  143. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-email.svg +0 -0
  144. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-error.svg +0 -0
  145. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-exit.svg +0 -0
  146. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-export.svg +0 -0
  147. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-filter.svg +0 -0
  148. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-format-align-center.svg +0 -0
  149. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-format-align-justify.svg +0 -0
  150. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-format-align-left.svg +0 -0
  151. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-format-align-right.svg +0 -0
  152. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-format-bold.svg +0 -0
  153. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-format-color-text.svg +0 -0
  154. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-format-italic.svg +0 -0
  155. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-format-underline.svg +0 -0
  156. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-forward.svg +0 -0
  157. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-history.svg +0 -0
  158. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-icon.png +0 -0
  159. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-icon.svg +0 -0
  160. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-import.svg +0 -0
  161. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-info.svg +0 -0
  162. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-launch.svg +0 -0
  163. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-link.svg +0 -0
  164. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-log.svg +0 -0
  165. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-menu.svg +0 -0
  166. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-note.svg +0 -0
  167. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-ok.svg +0 -0
  168. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-open.svg +0 -0
  169. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-print.svg +0 -0
  170. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-public.svg +0 -0
  171. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-question.svg +0 -0
  172. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-refresh.svg +0 -0
  173. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-remove.svg +0 -0
  174. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-save.svg +0 -0
  175. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-search.svg +0 -0
  176. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-send.svg +0 -0
  177. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-sound-off.svg +0 -0
  178. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-sound-on.svg +0 -0
  179. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-star-border.svg +0 -0
  180. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-star.svg +0 -0
  181. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-switch.svg +0 -0
  182. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-translate.svg +0 -0
  183. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-unarchive.svg +0 -0
  184. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-undo.svg +0 -0
  185. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton-warning.svg +0 -0
  186. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton.icns +0 -0
  187. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton.ico +0 -0
  188. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/pixmaps/tryton/tryton.svg +0 -0
  189. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/sounds/LICENSE +0 -0
  190. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/sounds/danger.wav +0 -0
  191. {tryton-7.0.23 → tryton-7.0.25}/tryton/data/sounds/success.wav +0 -0
  192. {tryton-7.0.23 → tryton-7.0.25}/tryton/device_cookie.py +0 -0
  193. {tryton-7.0.23 → tryton-7.0.25}/tryton/exceptions.py +0 -0
  194. {tryton-7.0.23 → tryton-7.0.25}/tryton/fingerprints.py +0 -0
  195. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/__init__.py +0 -0
  196. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/main.py +0 -0
  197. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/__init__.py +0 -0
  198. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/about.py +0 -0
  199. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/attachment.py +0 -0
  200. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/board.py +0 -0
  201. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/code_scanner.py +0 -0
  202. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/dblogin.py +0 -0
  203. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/email_.py +0 -0
  204. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/infobar.py +0 -0
  205. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/limit.py +0 -0
  206. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/log.py +0 -0
  207. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/nomodal.py +0 -0
  208. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/note.py +0 -0
  209. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/preference.py +0 -0
  210. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/revision.py +0 -0
  211. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/tabcontent.py +0 -0
  212. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_board/__init__.py +0 -0
  213. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_board/action.py +0 -0
  214. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_board/view_board.py +0 -0
  215. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/__init__.py +0 -0
  216. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/model/__init__.py +0 -0
  217. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/model/group.py +0 -0
  218. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/model/record.py +0 -0
  219. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/screen/__init__.py +0 -0
  220. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/__init__.py +0 -0
  221. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/calendar_.py +0 -0
  222. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/calendar_gtk/__init__.py +0 -0
  223. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/calendar_gtk/calendar_.py +0 -0
  224. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/calendar_gtk/dates_period.py +0 -0
  225. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/calendar_gtk/toolbar.py +0 -0
  226. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/form.py +0 -0
  227. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/form_gtk/__init__.py +0 -0
  228. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/form_gtk/binary.py +0 -0
  229. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/form_gtk/calendar_.py +0 -0
  230. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/form_gtk/char.py +0 -0
  231. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/form_gtk/checkbox.py +0 -0
  232. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/form_gtk/dictionary.py +0 -0
  233. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/form_gtk/document.py +0 -0
  234. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/form_gtk/float.py +0 -0
  235. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/form_gtk/image.py +0 -0
  236. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/form_gtk/integer.py +0 -0
  237. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/form_gtk/many2many.py +0 -0
  238. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/form_gtk/many2one.py +0 -0
  239. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/form_gtk/multiselection.py +0 -0
  240. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/form_gtk/one2many.py +0 -0
  241. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/form_gtk/one2one.py +0 -0
  242. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/form_gtk/progressbar.py +0 -0
  243. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/form_gtk/pyson.py +0 -0
  244. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/form_gtk/reference.py +0 -0
  245. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/form_gtk/richtextbox.py +0 -0
  246. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/form_gtk/selection.py +0 -0
  247. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/form_gtk/state_widget.py +0 -0
  248. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/form_gtk/textbox.py +0 -0
  249. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/form_gtk/timedelta.py +0 -0
  250. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/form_gtk/url.py +0 -0
  251. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/form_gtk/widget.py +0 -0
  252. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/graph.py +0 -0
  253. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/graph_gtk/__init__.py +0 -0
  254. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/graph_gtk/bar.py +0 -0
  255. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/graph_gtk/graph.py +0 -0
  256. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/graph_gtk/line.py +0 -0
  257. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/graph_gtk/pie.py +0 -0
  258. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/list_form.py +0 -0
  259. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/list_gtk/__init__.py +0 -0
  260. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/list_gtk/editabletree.py +0 -0
  261. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/list_gtk/widget.py +0 -0
  262. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/view_form/view/screen_container.py +0 -0
  263. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/win_csv.py +0 -0
  264. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/win_export.py +0 -0
  265. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/win_form.py +0 -0
  266. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/win_import.py +0 -0
  267. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/win_search.py +0 -0
  268. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/window.py +0 -0
  269. {tryton-7.0.23 → tryton-7.0.25}/tryton/gui/window/wizard.py +0 -0
  270. {tryton-7.0.23 → tryton-7.0.25}/tryton/jsonrpc.py +0 -0
  271. {tryton-7.0.23 → tryton-7.0.25}/tryton/plugins/__init__.py +0 -0
  272. {tryton-7.0.23 → tryton-7.0.25}/tryton/plugins/translation/__init__.py +0 -0
  273. {tryton-7.0.23 → tryton-7.0.25}/tryton/pyson.py +0 -0
  274. {tryton-7.0.23 → tryton-7.0.25}/tryton/rpc.py +0 -0
  275. {tryton-7.0.23 → tryton-7.0.25}/tryton/tests/__init__.py +0 -0
  276. {tryton-7.0.23 → tryton-7.0.25}/tryton/tests/test_common.py +0 -0
  277. {tryton-7.0.23 → tryton-7.0.25}/tryton/tests/test_common_domain_parser.py +0 -0
  278. {tryton-7.0.23 → tryton-7.0.25}/tryton/tests/test_common_selection.py +0 -0
  279. {tryton-7.0.23 → tryton-7.0.25}/tryton/tests/test_common_timedelta.py +0 -0
  280. {tryton-7.0.23 → tryton-7.0.25}/tryton/translate.py +0 -0
  281. {tryton-7.0.23 → tryton-7.0.25}/tryton.desktop +0 -0
  282. {tryton-7.0.23 → tryton-7.0.25}/tryton.egg-info/dependency_links.txt +0 -0
  283. {tryton-7.0.23 → tryton-7.0.25}/tryton.egg-info/not-zip-safe +0 -0
  284. {tryton-7.0.23 → tryton-7.0.25}/tryton.egg-info/top_level.txt +0 -0
@@ -1,4 +1,14 @@
1
1
 
2
+ Version 7.0.25 - 2025-05-02
3
+ ---------------------------
4
+ * Bug fixes (see mercurial logs for details)
5
+
6
+
7
+ Version 7.0.24 - 2025-04-26
8
+ ---------------------------
9
+ * Bug fixes (see mercurial logs for details)
10
+
11
+
2
12
  Version 7.0.23 - 2025-04-02
3
13
  ---------------------------
4
14
  * Bug fixes (see mercurial logs for details)
@@ -5,7 +5,7 @@ Copyright (C) 2007-2025 Cédric Krier.
5
5
  Copyright (C) 2008-2011 Udo Spallek.
6
6
  Copyright (C) 2008-2011 virtual things - Preisler & Spallek GbR.
7
7
  Copyright (C) 2008-2025 B2CK SPRL.
8
- Copyright (C) 2010-2024 Nicolas Évrard.
8
+ Copyright (C) 2010-2025 Nicolas Évrard.
9
9
  Copyright (C) 2011-2012 Rodrigo Hübner.
10
10
  Copyright (C) 2012-2013 Antoine Smolders.
11
11
  Copyright (C) 2020-2021 Maxime Richez
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: tryton
3
- Version: 7.0.23
3
+ Version: 7.0.25
4
4
  Summary: Tryton desktop client
5
5
  Home-page: http://www.tryton.org/
6
6
  Download-URL: http://downloads.tryton.org/7.0/
@@ -52,7 +52,7 @@ Requires-Python: >=3.8
52
52
  License-File: LICENSE
53
53
  Requires-Dist: pycairo
54
54
  Requires-Dist: python-dateutil
55
- Requires-Dist: PyGObject<3.51,>=3.19
55
+ Requires-Dist: PyGObject>=3.19
56
56
  Provides-Extra: calendar
57
57
  Requires-Dist: GooCalendar>=0.7; extra == "calendar"
58
58
  Provides-Extra: sound
@@ -65,6 +65,7 @@ Dynamic: download-url
65
65
  Dynamic: home-page
66
66
  Dynamic: keywords
67
67
  Dynamic: license
68
+ Dynamic: license-file
68
69
  Dynamic: platform
69
70
  Dynamic: project-url
70
71
  Dynamic: provides-extra
@@ -137,7 +137,7 @@ dist = setup(name=name,
137
137
  install_requires=[
138
138
  'pycairo',
139
139
  "python-dateutil",
140
- 'PyGObject>=3.19,<3.51',
140
+ 'PyGObject>=3.19',
141
141
  ],
142
142
  extras_require={
143
143
  'calendar': ['GooCalendar>=0.7'],
@@ -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.0.23"
3
+ __version__ = "7.0.25"
4
4
  import locale
5
5
 
6
6
  import gi
@@ -5,6 +5,7 @@ import decimal
5
5
  import gettext
6
6
  import io
7
7
  import locale
8
+ import math
8
9
  from collections import OrderedDict
9
10
  from decimal import Decimal
10
11
  from shlex import shlex
@@ -336,17 +337,18 @@ def format_value(field, value, target=None, context=None, _quote_empty=False):
336
337
  or isinstance(value, bool))):
337
338
  return ''
338
339
  digit = 0
339
- if isinstance(value, Decimal):
340
- cast = Decimal
341
- else:
342
- cast = float
343
- factor = cast(field.get('factor', 1))
344
- string_ = str(value * factor)
340
+ string_ = str(value)
345
341
  if 'e' in string_:
346
342
  string_, exp = string_.split('e')
347
343
  digit -= int(exp)
348
344
  if '.' in string_:
349
345
  digit += len(string_.rstrip('0').split('.')[1])
346
+ if isinstance(value, Decimal):
347
+ cast = Decimal
348
+ else:
349
+ cast = float
350
+ factor = cast(field.get('factor', 1))
351
+ digit -= round(math.log10(factor))
350
352
  return locale.localize(
351
353
  '{0:.{1}f}'.format(value * factor or 0, digit), True)
352
354
 
@@ -578,6 +578,7 @@ class Form(TabContent):
578
578
  name = str(position) if position else '_'
579
579
  selected = len(self.screen.selected_records)
580
580
  view_type = self.screen.current_view.view_type
581
+ next_view_type = self.screen.next_view_type
581
582
  has_views = self.screen.number_of_views > 1
582
583
  if selected > 1:
583
584
  name += '#%i' % selected
@@ -593,7 +594,9 @@ class Form(TabContent):
593
594
  for b in self.screen.get_buttons())
594
595
  set_sensitive(button_id, bool(position) and can_be_sensitive)
595
596
  set_sensitive(
596
- 'switch', (position or view_type == 'form') and has_views)
597
+ 'switch',
598
+ (position or view_type == 'form' or next_view_type != 'form')
599
+ and has_views)
597
600
  set_sensitive('remove', self.screen.deletable)
598
601
  set_sensitive('previous', self.screen.has_prev())
599
602
  set_sensitive('next', self.screen.has_next())
@@ -833,6 +833,7 @@ class O2MField(Field):
833
833
  force_remove=False)
834
834
 
835
835
  if value and (value.get('add') or value.get('update', [])):
836
+ vals_to_set = {}
836
837
  # First set already added fields to prevent triggering a
837
838
  # second on_change call
838
839
  for vals in value.get('update', []):
@@ -860,7 +861,10 @@ class O2MField(Field):
860
861
  continue
861
862
  record2 = group.get(vals['id'])
862
863
  if record2 is not None:
863
- record2.set_on_change(vals)
864
+ to_set = {
865
+ k: v for k, v in vals.items
866
+ if k not in vals_to_set}
867
+ record2.set_on_change(to_set)
864
868
 
865
869
  def validation_domains(self, record, pre_validate=None):
866
870
  screen_domain, attr_domain = self.domains_get(record, pre_validate)
@@ -484,8 +484,6 @@ class Screen:
484
484
  return self.__current_record
485
485
 
486
486
  def __set_current_record(self, record):
487
- if self.__current_record == record and record:
488
- return
489
487
  self.__current_record = record
490
488
  if record:
491
489
  try:
@@ -536,6 +534,19 @@ class Screen:
536
534
  def number_of_views(self):
537
535
  return len(self.views) + len(self.view_to_load)
538
536
 
537
+ @property
538
+ def view_index(self):
539
+ return self.__current_view
540
+
541
+ @property
542
+ def next_view_type(self):
543
+ views = self.views + self.view_to_load
544
+ next_view_index = (self.view_index + 1) % len(views)
545
+ next_view = views[next_view_index]
546
+ if not isinstance(next_view, str):
547
+ next_view = next_view.view_type
548
+ return next_view
549
+
539
550
  def switch_view(
540
551
  self, view_type=None, view_id=None, creatable=None, display=True):
541
552
  if view_id is not None:
@@ -879,7 +890,7 @@ class Screen:
879
890
  view.expand_nodes(expanded_nodes)
880
891
  view.select_nodes(selected_nodes)
881
892
  else:
882
- if selected_nodes:
893
+ if selected_nodes and not self.current_record:
883
894
  record = None
884
895
  for node in selected_nodes[0]:
885
896
  new_record = self.group.get(node)
@@ -7,7 +7,6 @@ import sys
7
7
  from functools import wraps
8
8
 
9
9
  from gi.repository import Gdk, GLib, GObject, Gtk
10
- from pygtkcompat.generictreemodel import GenericTreeModel
11
10
 
12
11
  import tryton.common as common
13
12
  from tryton.common import (
@@ -21,6 +20,7 @@ from tryton.pyson import PYSONDecoder
21
20
 
22
21
  from . import View, XMLViewParser
23
22
  from .list_gtk.editabletree import EditableTreeView, TreeView
23
+ from .list_gtk.generictreemodel import GenericTreeModel
24
24
  from .list_gtk.widget import (
25
25
  M2M, M2O, O2M, O2O, URL, Affix, Binary, Boolean, Button, Char, Date, Dict,
26
26
  Float, Image, Int, MultiSelection, ProgressBar, Reference, Selection, Text,
@@ -1061,6 +1061,9 @@ class ViewTree(View):
1061
1061
  records.append(model.get_value(iter_, 0))
1062
1062
  if self.record not in records:
1063
1063
  self.record = records[0]
1064
+ else:
1065
+ # Force record_message
1066
+ self.record = self.record
1064
1067
  else:
1065
1068
  self.record = None
1066
1069