tryton 7.2.1__tar.gz → 7.2.3__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.1 → tryton-7.2.3}/CHANGELOG +10 -0
  2. {tryton-7.2.1 → tryton-7.2.3}/PKG-INFO +1 -1
  3. {tryton-7.2.1 → tryton-7.2.3}/bin/tryton +2 -1
  4. {tryton-7.2.1 → tryton-7.2.3}/tryton/__init__.py +1 -1
  5. {tryton-7.2.1 → tryton-7.2.3}/tryton/common/common.py +2 -1
  6. {tryton-7.2.1 → tryton-7.2.3}/tryton/common/tempfile.py +1 -1
  7. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/bg/LC_MESSAGES/tryton.mo +0 -0
  8. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/ca/LC_MESSAGES/tryton.mo +0 -0
  9. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/cs/LC_MESSAGES/tryton.mo +0 -0
  10. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/de/LC_MESSAGES/tryton.mo +0 -0
  11. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/es/LC_MESSAGES/tryton.mo +0 -0
  12. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/es_419/LC_MESSAGES/tryton.mo +0 -0
  13. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/es_419/LC_MESSAGES/tryton.po +2 -2
  14. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/et/LC_MESSAGES/tryton.mo +0 -0
  15. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/fa/LC_MESSAGES/tryton.mo +0 -0
  16. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/fi/LC_MESSAGES/tryton.mo +0 -0
  17. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/fr/LC_MESSAGES/tryton.mo +0 -0
  18. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/hu/LC_MESSAGES/tryton.mo +0 -0
  19. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/id/LC_MESSAGES/tryton.mo +0 -0
  20. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/id/LC_MESSAGES/tryton.po +2 -2
  21. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/it/LC_MESSAGES/tryton.mo +0 -0
  22. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/it/LC_MESSAGES/tryton.po +2 -2
  23. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/ja_JP/LC_MESSAGES/tryton.mo +0 -0
  24. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/lo/LC_MESSAGES/tryton.mo +0 -0
  25. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/lt/LC_MESSAGES/tryton.mo +0 -0
  26. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/nl/LC_MESSAGES/tryton.mo +0 -0
  27. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/pl/LC_MESSAGES/tryton.mo +0 -0
  28. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/pt/LC_MESSAGES/tryton.mo +0 -0
  29. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/ro/LC_MESSAGES/tryton.mo +0 -0
  30. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/ro/LC_MESSAGES/tryton.po +2 -2
  31. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/ru/LC_MESSAGES/tryton.mo +0 -0
  32. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/sl/LC_MESSAGES/tryton.mo +0 -0
  33. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/sl/LC_MESSAGES/tryton.po +2 -2
  34. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/tr/LC_MESSAGES/tryton.mo +0 -0
  35. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/uk/LC_MESSAGES/tryton.mo +0 -0
  36. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/uk/LC_MESSAGES/tryton.po +2 -2
  37. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/zh_CN/LC_MESSAGES/tryton.mo +0 -0
  38. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/zh_CN/LC_MESSAGES/tryton.po +2 -2
  39. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/model/field.py +48 -18
  40. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/model/record.py +3 -1
  41. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/calendar_gtk/calendar_.py +15 -9
  42. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/document.py +9 -10
  43. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/win_form.py +8 -6
  44. {tryton-7.2.1 → tryton-7.2.3}/tryton/translate.py +5 -2
  45. {tryton-7.2.1 → tryton-7.2.3}/tryton.egg-info/PKG-INFO +1 -1
  46. {tryton-7.2.1 → tryton-7.2.3}/COPYRIGHT +0 -0
  47. {tryton-7.2.1 → tryton-7.2.3}/LICENSE +0 -0
  48. {tryton-7.2.1 → tryton-7.2.3}/MANIFEST.in +0 -0
  49. {tryton-7.2.1 → tryton-7.2.3}/README.rst +0 -0
  50. {tryton-7.2.1 → tryton-7.2.3}/catalan.nsh +0 -0
  51. {tryton-7.2.1 → tryton-7.2.3}/darwin/gtk-3.0/gdk-pixbuf.loaders +0 -0
  52. {tryton-7.2.1 → tryton-7.2.3}/darwin/gtk-3.0/gtk.immodules +0 -0
  53. {tryton-7.2.1 → tryton-7.2.3}/doc/conf.py +0 -0
  54. {tryton-7.2.1 → tryton-7.2.3}/doc/glossary.rst +0 -0
  55. {tryton-7.2.1 → tryton-7.2.3}/doc/index.rst +0 -0
  56. {tryton-7.2.1 → tryton-7.2.3}/doc/installation.rst +0 -0
  57. {tryton-7.2.1 → tryton-7.2.3}/doc/releases.rst +0 -0
  58. {tryton-7.2.1 → tryton-7.2.3}/doc/requirements-doc.txt +0 -0
  59. {tryton-7.2.1 → tryton-7.2.3}/doc/usage.rst +0 -0
  60. {tryton-7.2.1 → tryton-7.2.3}/english.nsh +0 -0
  61. {tryton-7.2.1 → tryton-7.2.3}/farsi.nsh +0 -0
  62. {tryton-7.2.1 → tryton-7.2.3}/french.nsh +0 -0
  63. {tryton-7.2.1 → tryton-7.2.3}/german.nsh +0 -0
  64. {tryton-7.2.1 → tryton-7.2.3}/make-darwin-installer.sh +0 -0
  65. {tryton-7.2.1 → tryton-7.2.3}/make-win32-installer.sh +0 -0
  66. {tryton-7.2.1 → tryton-7.2.3}/portuguese.nsh +0 -0
  67. {tryton-7.2.1 → tryton-7.2.3}/setup-freeze.py +0 -0
  68. {tryton-7.2.1 → tryton-7.2.3}/setup.cfg +0 -0
  69. {tryton-7.2.1 → tryton-7.2.3}/setup.nsi +0 -0
  70. {tryton-7.2.1 → tryton-7.2.3}/setup.py +0 -0
  71. {tryton-7.2.1 → tryton-7.2.3}/slovenian.nsh +0 -0
  72. {tryton-7.2.1 → tryton-7.2.3}/spanish.nsh +0 -0
  73. {tryton-7.2.1 → tryton-7.2.3}/tox.ini +0 -0
  74. {tryton-7.2.1 → tryton-7.2.3}/tryton/action/__init__.py +0 -0
  75. {tryton-7.2.1 → tryton-7.2.3}/tryton/action/main.py +0 -0
  76. {tryton-7.2.1 → tryton-7.2.3}/tryton/bus.py +0 -0
  77. {tryton-7.2.1 → tryton-7.2.3}/tryton/cache.py +0 -0
  78. {tryton-7.2.1 → tryton-7.2.3}/tryton/client.py +0 -0
  79. {tryton-7.2.1 → tryton-7.2.3}/tryton/common/__init__.py +0 -0
  80. {tryton-7.2.1 → tryton-7.2.3}/tryton/common/button.py +0 -0
  81. {tryton-7.2.1 → tryton-7.2.3}/tryton/common/cellrendererbinary.py +0 -0
  82. {tryton-7.2.1 → tryton-7.2.3}/tryton/common/cellrendererbutton.py +0 -0
  83. {tryton-7.2.1 → tryton-7.2.3}/tryton/common/cellrendererclickablepixbuf.py +0 -0
  84. {tryton-7.2.1 → tryton-7.2.3}/tryton/common/cellrenderercombo.py +0 -0
  85. {tryton-7.2.1 → tryton-7.2.3}/tryton/common/cellrendererfloat.py +0 -0
  86. {tryton-7.2.1 → tryton-7.2.3}/tryton/common/cellrendererinteger.py +0 -0
  87. {tryton-7.2.1 → tryton-7.2.3}/tryton/common/cellrenderertext.py +0 -0
  88. {tryton-7.2.1 → tryton-7.2.3}/tryton/common/cellrenderertoggle.py +0 -0
  89. {tryton-7.2.1 → tryton-7.2.3}/tryton/common/completion.py +0 -0
  90. {tryton-7.2.1 → tryton-7.2.3}/tryton/common/datetime_.py +0 -0
  91. {tryton-7.2.1 → tryton-7.2.3}/tryton/common/domain_inversion.py +0 -0
  92. {tryton-7.2.1 → tryton-7.2.3}/tryton/common/domain_parser.py +0 -0
  93. {tryton-7.2.1 → tryton-7.2.3}/tryton/common/entry_position.py +0 -0
  94. {tryton-7.2.1 → tryton-7.2.3}/tryton/common/environment.py +0 -0
  95. {tryton-7.2.1 → tryton-7.2.3}/tryton/common/focus.py +0 -0
  96. {tryton-7.2.1 → tryton-7.2.3}/tryton/common/htmltextbuffer.py +0 -0
  97. {tryton-7.2.1 → tryton-7.2.3}/tryton/common/number_entry.py +0 -0
  98. {tryton-7.2.1 → tryton-7.2.3}/tryton/common/popup_menu.py +0 -0
  99. {tryton-7.2.1 → tryton-7.2.3}/tryton/common/richtext.py +0 -0
  100. {tryton-7.2.1 → tryton-7.2.3}/tryton/common/selection.py +0 -0
  101. {tryton-7.2.1 → tryton-7.2.3}/tryton/common/timedelta.py +0 -0
  102. {tryton-7.2.1 → tryton-7.2.3}/tryton/common/underline.py +0 -0
  103. {tryton-7.2.1 → tryton-7.2.3}/tryton/common/widget_style.py +0 -0
  104. {tryton-7.2.1 → tryton-7.2.3}/tryton/config.py +0 -0
  105. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/bg/LC_MESSAGES/tryton.po +0 -0
  106. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/ca/LC_MESSAGES/tryton.po +0 -0
  107. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/cs/LC_MESSAGES/tryton.po +0 -0
  108. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/de/LC_MESSAGES/tryton.po +0 -0
  109. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/es/LC_MESSAGES/tryton.po +0 -0
  110. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/et/LC_MESSAGES/tryton.po +0 -0
  111. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/fa/LC_MESSAGES/tryton.po +0 -0
  112. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/fi/LC_MESSAGES/tryton.po +0 -0
  113. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/fr/LC_MESSAGES/tryton.po +0 -0
  114. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/hu/LC_MESSAGES/tryton.po +0 -0
  115. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/ja_JP/LC_MESSAGES/tryton.po +0 -0
  116. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/lo/LC_MESSAGES/tryton.po +0 -0
  117. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/lt/LC_MESSAGES/tryton.po +0 -0
  118. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/nl/LC_MESSAGES/tryton.po +0 -0
  119. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/pl/LC_MESSAGES/tryton.po +0 -0
  120. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/pt/LC_MESSAGES/tryton.po +0 -0
  121. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/ru/LC_MESSAGES/tryton.po +0 -0
  122. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/tr/LC_MESSAGES/tryton.po +0 -0
  123. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/tryton.pot +0 -0
  124. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/LICENSE +0 -0
  125. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-add.svg +0 -0
  126. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-archive.svg +0 -0
  127. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-arrow-down.svg +0 -0
  128. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-arrow-left.svg +0 -0
  129. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-arrow-right.svg +0 -0
  130. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-arrow-up.svg +0 -0
  131. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-attach.svg +0 -0
  132. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-back.svg +0 -0
  133. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-barcode-scanner.svg +0 -0
  134. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-bookmark-border.svg +0 -0
  135. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-bookmark.svg +0 -0
  136. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-bookmarks.svg +0 -0
  137. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-cancel.svg +0 -0
  138. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-clear.svg +0 -0
  139. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-close.svg +0 -0
  140. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-copy.svg +0 -0
  141. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-create.svg +0 -0
  142. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-date.svg +0 -0
  143. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-delete.svg +0 -0
  144. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-download.svg +0 -0
  145. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-drag.svg +0 -0
  146. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-email.svg +0 -0
  147. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-error.svg +0 -0
  148. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-exit.svg +0 -0
  149. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-export.svg +0 -0
  150. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-filter.svg +0 -0
  151. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-format-align-center.svg +0 -0
  152. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-format-align-justify.svg +0 -0
  153. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-format-align-left.svg +0 -0
  154. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-format-align-right.svg +0 -0
  155. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-format-bold.svg +0 -0
  156. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-format-color-text.svg +0 -0
  157. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-format-italic.svg +0 -0
  158. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-format-underline.svg +0 -0
  159. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-forward.svg +0 -0
  160. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-history.svg +0 -0
  161. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-icon.png +0 -0
  162. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-icon.svg +0 -0
  163. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-import.svg +0 -0
  164. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-info.svg +0 -0
  165. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-launch.svg +0 -0
  166. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-link.svg +0 -0
  167. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-log.svg +0 -0
  168. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-menu.svg +0 -0
  169. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-note.svg +0 -0
  170. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-ok.svg +0 -0
  171. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-open.svg +0 -0
  172. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-print.svg +0 -0
  173. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-public.svg +0 -0
  174. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-question.svg +0 -0
  175. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-refresh.svg +0 -0
  176. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-remove.svg +0 -0
  177. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-save.svg +0 -0
  178. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-search.svg +0 -0
  179. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-send.svg +0 -0
  180. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-sound-off.svg +0 -0
  181. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-sound-on.svg +0 -0
  182. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-star-border.svg +0 -0
  183. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-star.svg +0 -0
  184. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-switch.svg +0 -0
  185. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-translate.svg +0 -0
  186. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-unarchive.svg +0 -0
  187. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-undo.svg +0 -0
  188. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-warning.svg +0 -0
  189. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton.icns +0 -0
  190. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton.ico +0 -0
  191. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton.svg +0 -0
  192. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/sounds/LICENSE +0 -0
  193. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/sounds/danger.wav +0 -0
  194. {tryton-7.2.1 → tryton-7.2.3}/tryton/data/sounds/success.wav +0 -0
  195. {tryton-7.2.1 → tryton-7.2.3}/tryton/device_cookie.py +0 -0
  196. {tryton-7.2.1 → tryton-7.2.3}/tryton/exceptions.py +0 -0
  197. {tryton-7.2.1 → tryton-7.2.3}/tryton/fingerprints.py +0 -0
  198. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/__init__.py +0 -0
  199. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/main.py +0 -0
  200. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/__init__.py +0 -0
  201. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/about.py +0 -0
  202. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/attachment.py +0 -0
  203. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/board.py +0 -0
  204. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/code_scanner.py +0 -0
  205. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/dblogin.py +0 -0
  206. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/email_.py +0 -0
  207. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/form.py +0 -0
  208. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/infobar.py +0 -0
  209. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/limit.py +0 -0
  210. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/log.py +0 -0
  211. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/nomodal.py +0 -0
  212. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/note.py +0 -0
  213. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/preference.py +0 -0
  214. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/revision.py +0 -0
  215. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/tabcontent.py +0 -0
  216. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_board/__init__.py +0 -0
  217. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_board/action.py +0 -0
  218. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_board/view_board.py +0 -0
  219. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/__init__.py +0 -0
  220. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/model/__init__.py +0 -0
  221. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/model/group.py +0 -0
  222. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/screen/__init__.py +0 -0
  223. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/screen/screen.py +0 -0
  224. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/__init__.py +0 -0
  225. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/calendar_.py +0 -0
  226. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/calendar_gtk/__init__.py +0 -0
  227. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/calendar_gtk/dates_period.py +0 -0
  228. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/calendar_gtk/toolbar.py +0 -0
  229. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form.py +0 -0
  230. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/__init__.py +0 -0
  231. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/binary.py +0 -0
  232. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/calendar_.py +0 -0
  233. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/char.py +0 -0
  234. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/checkbox.py +0 -0
  235. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/dictionary.py +0 -0
  236. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/float.py +0 -0
  237. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/image.py +0 -0
  238. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/integer.py +0 -0
  239. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/many2many.py +0 -0
  240. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/many2one.py +0 -0
  241. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/multiselection.py +0 -0
  242. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/one2many.py +0 -0
  243. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/one2one.py +0 -0
  244. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/progressbar.py +0 -0
  245. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/pyson.py +0 -0
  246. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/reference.py +0 -0
  247. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/richtextbox.py +0 -0
  248. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/selection.py +0 -0
  249. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/state_widget.py +0 -0
  250. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/textbox.py +0 -0
  251. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/timedelta.py +0 -0
  252. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/url.py +0 -0
  253. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/widget.py +0 -0
  254. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/graph.py +0 -0
  255. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/graph_gtk/__init__.py +0 -0
  256. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/graph_gtk/bar.py +0 -0
  257. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/graph_gtk/graph.py +0 -0
  258. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/graph_gtk/line.py +0 -0
  259. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/graph_gtk/pie.py +0 -0
  260. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/list.py +0 -0
  261. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/list_form.py +0 -0
  262. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/list_gtk/__init__.py +0 -0
  263. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/list_gtk/editabletree.py +0 -0
  264. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/list_gtk/widget.py +0 -0
  265. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/screen_container.py +0 -0
  266. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/win_csv.py +0 -0
  267. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/win_export.py +0 -0
  268. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/win_import.py +0 -0
  269. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/win_search.py +0 -0
  270. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/window.py +0 -0
  271. {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/wizard.py +0 -0
  272. {tryton-7.2.1 → tryton-7.2.3}/tryton/jsonrpc.py +0 -0
  273. {tryton-7.2.1 → tryton-7.2.3}/tryton/plugins/__init__.py +0 -0
  274. {tryton-7.2.1 → tryton-7.2.3}/tryton/plugins/translation/__init__.py +0 -0
  275. {tryton-7.2.1 → tryton-7.2.3}/tryton/pyson.py +0 -0
  276. {tryton-7.2.1 → tryton-7.2.3}/tryton/rpc.py +0 -0
  277. {tryton-7.2.1 → tryton-7.2.3}/tryton/tests/__init__.py +0 -0
  278. {tryton-7.2.1 → tryton-7.2.3}/tryton/tests/test_common.py +0 -0
  279. {tryton-7.2.1 → tryton-7.2.3}/tryton/tests/test_common_domain_parser.py +0 -0
  280. {tryton-7.2.1 → tryton-7.2.3}/tryton/tests/test_common_selection.py +0 -0
  281. {tryton-7.2.1 → tryton-7.2.3}/tryton/tests/test_common_timedelta.py +0 -0
  282. {tryton-7.2.1 → tryton-7.2.3}/tryton.desktop +0 -0
  283. {tryton-7.2.1 → tryton-7.2.3}/tryton.egg-info/SOURCES.txt +0 -0
  284. {tryton-7.2.1 → tryton-7.2.3}/tryton.egg-info/dependency_links.txt +0 -0
  285. {tryton-7.2.1 → tryton-7.2.3}/tryton.egg-info/not-zip-safe +0 -0
  286. {tryton-7.2.1 → tryton-7.2.3}/tryton.egg-info/requires.txt +0 -0
  287. {tryton-7.2.1 → tryton-7.2.3}/tryton.egg-info/top_level.txt +0 -0
  288. {tryton-7.2.1 → tryton-7.2.3}/win32/gtk-3.0/gdk-pixbuf.loaders +0 -0
  289. {tryton-7.2.1 → tryton-7.2.3}/win32/gtk-3.0/gtk.immodules +0 -0
@@ -1,4 +1,14 @@
1
1
 
2
+ Version 7.2.3 - 2024-07-01
3
+ --------------------------
4
+ * Bug fixes (see mercurial logs for details)
5
+
6
+
7
+ Version 7.2.2 - 2024-06-15
8
+ --------------------------
9
+ * Bug fixes (see mercurial logs for details)
10
+
11
+
2
12
  Version 7.2.1 - 2024-05-01
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.1
3
+ Version: 7.2.3
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.1"
3
+ __version__ = "7.2.3"
4
4
  import locale
5
5
 
6
6
  import gi
@@ -37,6 +37,7 @@ from string import Template
37
37
  from threading import Lock, Thread
38
38
 
39
39
  import tryton.rpc as rpc
40
+ import tryton.translate as translate
40
41
  from tryton.cache import CacheDict
41
42
  from tryton.config import CONFIG, PIXMAPS_DIR, SOUNDS_DIR, TRYTON_ICON
42
43
 
@@ -1528,7 +1529,7 @@ def get_align(float_, expand=True):
1528
1529
 
1529
1530
 
1530
1531
  def date_format(format_=None):
1531
- return format_ or rpc.CONTEXT.get('locale', {}).get('date', '%x')
1532
+ return format_ or translate.DATE or '%x'
1532
1533
 
1533
1534
 
1534
1535
  def idle_add(func):
@@ -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
 
@@ -140,9 +140,9 @@ msgstr "Excepción de concurrencia"
140
140
  msgid "Could not get a session."
141
141
  msgstr ""
142
142
 
143
- #, fuzzy, python-format
143
+ #, python-format
144
144
  msgid "Error: \"%s\". Try again later."
145
- msgstr "Demasiadas peticiones. Inténtalo de nuevo más tarde."
145
+ msgstr ""
146
146
 
147
147
  msgid "Too many requests. Try again later."
148
148
  msgstr "Demasiadas peticiones. Inténtalo de nuevo más tarde."
@@ -137,9 +137,9 @@ msgstr ""
137
137
  msgid "Could not get a session."
138
138
  msgstr "Tidak dapat terhubung ke server."
139
139
 
140
- #, fuzzy, python-format
140
+ #, python-format
141
141
  msgid "Error: \"%s\". Try again later."
142
- msgstr "Terlalu banyak permintaan. Coba lagi nanti."
142
+ msgstr ""
143
143
 
144
144
  msgid "Too many requests. Try again later."
145
145
  msgstr "Terlalu banyak permintaan. Coba lagi nanti."
@@ -142,9 +142,9 @@ msgstr "Eccezione di concorrenza"
142
142
  msgid "Could not get a session."
143
143
  msgstr "Impossibile connettersi al server."
144
144
 
145
- #, fuzzy, python-format
145
+ #, python-format
146
146
  msgid "Error: \"%s\". Try again later."
147
- msgstr "Troppe richieste. Riprovare più tardi."
147
+ msgstr ""
148
148
 
149
149
  msgid "Too many requests. Try again later."
150
150
  msgstr "Troppe richieste. Riprovare più tardi."
@@ -137,9 +137,9 @@ msgstr "Excepție de concurgență"
137
137
  msgid "Could not get a session."
138
138
  msgstr "Nu s-a putut găsi o sesiune."
139
139
 
140
- #, fuzzy, python-format
140
+ #, python-format
141
141
  msgid "Error: \"%s\". Try again later."
142
- msgstr "Prea multe cereri. Încercați mai târziu."
142
+ msgstr ""
143
143
 
144
144
  msgid "Too many requests. Try again later."
145
145
  msgstr "Prea multe cereri. Încercați mai târziu."
@@ -141,9 +141,9 @@ msgstr "Izjema sočasnega izvajanja"
141
141
  msgid "Could not get a session."
142
142
  msgstr "Ni mogoče vzpostaviti seje."
143
143
 
144
- #, fuzzy, python-format
144
+ #, python-format
145
145
  msgid "Error: \"%s\". Try again later."
146
- msgstr "Preveč poslanih zahtev. Poskusite kasneje."
146
+ msgstr ""
147
147
 
148
148
  msgid "Too many requests. Try again later."
149
149
  msgstr "Preveč poslanih zahtev. Poskusite kasneje."
@@ -138,9 +138,9 @@ msgstr "Виняток одночасного доступу"
138
138
  msgid "Could not get a session."
139
139
  msgstr "Не вдалося підключитися до сервера."
140
140
 
141
- #, fuzzy, python-format
141
+ #, python-format
142
142
  msgid "Error: \"%s\". Try again later."
143
- msgstr "Дуже багато запитів. Спробуйте ще раз пізніше."
143
+ msgstr ""
144
144
 
145
145
  msgid "Too many requests. Try again later."
146
146
  msgstr "Дуже багато запитів. Спробуйте ще раз пізніше."
@@ -140,9 +140,9 @@ msgstr "并行操作异常"
140
140
  msgid "Could not get a session."
141
141
  msgstr "无法获取会话。"
142
142
 
143
- #, fuzzy, python-format
143
+ #, python-format
144
144
  msgid "Error: \"%s\". Try again later."
145
- msgstr "请求太多,请稍后重试."
145
+ msgstr ""
146
146
 
147
147
  msgid "Too many requests. Try again later."
148
148
  msgstr "请求太多,请稍后重试."
@@ -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
 
@@ -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):
@@ -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):
@@ -12,6 +12,7 @@ from gi.repository import Gtk
12
12
  from tryton.config import CURRENT_DIR
13
13
 
14
14
  _ = gettext.gettext
15
+ DATE = None
15
16
 
16
17
  _LOCALE2WIN32 = {
17
18
  'af_ZA': 'Afrikaans_South Africa',
@@ -196,8 +197,10 @@ def setlang(lang=None, locale_dict=None):
196
197
  conv = locale.localeconv()
197
198
  for field in list(locale_dict.keys()):
198
199
  if field == 'date':
199
- continue
200
- conv[field] = locale_dict[field]
200
+ global DATE
201
+ DATE = locale_dict[field]
202
+ else:
203
+ conv[field] = locale_dict[field]
201
204
  locale.localeconv = lambda: conv
202
205
 
203
206
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: tryton
3
- Version: 7.2.1
3
+ Version: 7.2.3
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