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.
- {tryton-7.2.1 → tryton-7.2.3}/CHANGELOG +10 -0
- {tryton-7.2.1 → tryton-7.2.3}/PKG-INFO +1 -1
- {tryton-7.2.1 → tryton-7.2.3}/bin/tryton +2 -1
- {tryton-7.2.1 → tryton-7.2.3}/tryton/__init__.py +1 -1
- {tryton-7.2.1 → tryton-7.2.3}/tryton/common/common.py +2 -1
- {tryton-7.2.1 → tryton-7.2.3}/tryton/common/tempfile.py +1 -1
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/bg/LC_MESSAGES/tryton.mo +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/ca/LC_MESSAGES/tryton.mo +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/cs/LC_MESSAGES/tryton.mo +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/de/LC_MESSAGES/tryton.mo +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/es/LC_MESSAGES/tryton.mo +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/es_419/LC_MESSAGES/tryton.mo +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/es_419/LC_MESSAGES/tryton.po +2 -2
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/et/LC_MESSAGES/tryton.mo +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/fa/LC_MESSAGES/tryton.mo +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/fi/LC_MESSAGES/tryton.mo +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/fr/LC_MESSAGES/tryton.mo +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/hu/LC_MESSAGES/tryton.mo +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/id/LC_MESSAGES/tryton.mo +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/id/LC_MESSAGES/tryton.po +2 -2
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/it/LC_MESSAGES/tryton.mo +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/it/LC_MESSAGES/tryton.po +2 -2
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/ja_JP/LC_MESSAGES/tryton.mo +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/lo/LC_MESSAGES/tryton.mo +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/lt/LC_MESSAGES/tryton.mo +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/nl/LC_MESSAGES/tryton.mo +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/pl/LC_MESSAGES/tryton.mo +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/pt/LC_MESSAGES/tryton.mo +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/ro/LC_MESSAGES/tryton.mo +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/ro/LC_MESSAGES/tryton.po +2 -2
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/ru/LC_MESSAGES/tryton.mo +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/sl/LC_MESSAGES/tryton.mo +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/sl/LC_MESSAGES/tryton.po +2 -2
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/tr/LC_MESSAGES/tryton.mo +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/uk/LC_MESSAGES/tryton.mo +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/uk/LC_MESSAGES/tryton.po +2 -2
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/zh_CN/LC_MESSAGES/tryton.mo +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/zh_CN/LC_MESSAGES/tryton.po +2 -2
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/model/field.py +48 -18
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/model/record.py +3 -1
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/calendar_gtk/calendar_.py +15 -9
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/document.py +9 -10
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/win_form.py +8 -6
- {tryton-7.2.1 → tryton-7.2.3}/tryton/translate.py +5 -2
- {tryton-7.2.1 → tryton-7.2.3}/tryton.egg-info/PKG-INFO +1 -1
- {tryton-7.2.1 → tryton-7.2.3}/COPYRIGHT +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/LICENSE +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/MANIFEST.in +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/README.rst +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/catalan.nsh +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/darwin/gtk-3.0/gdk-pixbuf.loaders +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/darwin/gtk-3.0/gtk.immodules +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/doc/conf.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/doc/glossary.rst +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/doc/index.rst +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/doc/installation.rst +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/doc/releases.rst +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/doc/requirements-doc.txt +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/doc/usage.rst +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/english.nsh +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/farsi.nsh +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/french.nsh +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/german.nsh +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/make-darwin-installer.sh +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/make-win32-installer.sh +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/portuguese.nsh +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/setup-freeze.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/setup.cfg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/setup.nsi +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/setup.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/slovenian.nsh +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/spanish.nsh +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tox.ini +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/action/__init__.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/action/main.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/bus.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/cache.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/client.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/common/__init__.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/common/button.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/common/cellrendererbinary.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/common/cellrendererbutton.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/common/cellrendererclickablepixbuf.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/common/cellrenderercombo.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/common/cellrendererfloat.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/common/cellrendererinteger.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/common/cellrenderertext.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/common/cellrenderertoggle.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/common/completion.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/common/datetime_.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/common/domain_inversion.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/common/domain_parser.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/common/entry_position.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/common/environment.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/common/focus.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/common/htmltextbuffer.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/common/number_entry.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/common/popup_menu.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/common/richtext.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/common/selection.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/common/timedelta.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/common/underline.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/common/widget_style.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/config.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/bg/LC_MESSAGES/tryton.po +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/ca/LC_MESSAGES/tryton.po +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/cs/LC_MESSAGES/tryton.po +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/de/LC_MESSAGES/tryton.po +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/es/LC_MESSAGES/tryton.po +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/et/LC_MESSAGES/tryton.po +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/fa/LC_MESSAGES/tryton.po +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/fi/LC_MESSAGES/tryton.po +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/fr/LC_MESSAGES/tryton.po +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/hu/LC_MESSAGES/tryton.po +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/ja_JP/LC_MESSAGES/tryton.po +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/lo/LC_MESSAGES/tryton.po +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/lt/LC_MESSAGES/tryton.po +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/nl/LC_MESSAGES/tryton.po +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/pl/LC_MESSAGES/tryton.po +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/pt/LC_MESSAGES/tryton.po +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/ru/LC_MESSAGES/tryton.po +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/tr/LC_MESSAGES/tryton.po +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/locale/tryton.pot +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/LICENSE +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-add.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-archive.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-arrow-down.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-arrow-left.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-arrow-right.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-arrow-up.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-attach.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-back.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-barcode-scanner.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-bookmark-border.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-bookmark.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-bookmarks.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-cancel.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-clear.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-close.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-copy.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-create.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-date.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-delete.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-download.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-drag.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-email.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-error.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-exit.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-export.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-filter.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-format-align-center.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-format-align-justify.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-format-align-left.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-format-align-right.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-format-bold.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-format-color-text.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-format-italic.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-format-underline.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-forward.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-history.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-icon.png +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-icon.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-import.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-info.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-launch.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-link.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-log.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-menu.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-note.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-ok.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-open.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-print.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-public.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-question.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-refresh.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-remove.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-save.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-search.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-send.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-sound-off.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-sound-on.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-star-border.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-star.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-switch.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-translate.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-unarchive.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-undo.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton-warning.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton.icns +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton.ico +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/pixmaps/tryton/tryton.svg +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/sounds/LICENSE +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/sounds/danger.wav +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/data/sounds/success.wav +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/device_cookie.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/exceptions.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/fingerprints.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/__init__.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/main.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/__init__.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/about.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/attachment.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/board.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/code_scanner.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/dblogin.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/email_.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/form.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/infobar.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/limit.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/log.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/nomodal.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/note.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/preference.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/revision.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/tabcontent.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_board/__init__.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_board/action.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_board/view_board.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/__init__.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/model/__init__.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/model/group.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/screen/__init__.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/screen/screen.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/__init__.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/calendar_.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/calendar_gtk/__init__.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/calendar_gtk/dates_period.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/calendar_gtk/toolbar.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/__init__.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/binary.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/calendar_.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/char.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/checkbox.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/dictionary.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/float.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/image.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/integer.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/many2many.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/many2one.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/multiselection.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/one2many.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/one2one.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/progressbar.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/pyson.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/reference.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/richtextbox.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/selection.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/state_widget.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/textbox.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/timedelta.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/url.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/form_gtk/widget.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/graph.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/graph_gtk/__init__.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/graph_gtk/bar.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/graph_gtk/graph.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/graph_gtk/line.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/graph_gtk/pie.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/list.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/list_form.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/list_gtk/__init__.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/list_gtk/editabletree.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/list_gtk/widget.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/view_form/view/screen_container.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/win_csv.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/win_export.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/win_import.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/win_search.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/window.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/gui/window/wizard.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/jsonrpc.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/plugins/__init__.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/plugins/translation/__init__.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/pyson.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/rpc.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/tests/__init__.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/tests/test_common.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/tests/test_common_domain_parser.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/tests/test_common_selection.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton/tests/test_common_timedelta.py +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton.desktop +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton.egg-info/SOURCES.txt +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton.egg-info/dependency_links.txt +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton.egg-info/not-zip-safe +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton.egg-info/requires.txt +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/tryton.egg-info/top_level.txt +0 -0
- {tryton-7.2.1 → tryton-7.2.3}/win32/gtk-3.0/gdk-pixbuf.loaders +0 -0
- {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)
|
|
@@ -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'] =
|
|
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')
|
|
@@ -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
|
|
1532
|
+
return format_ or translate.DATE or '%x'
|
|
1532
1533
|
|
|
1533
1534
|
|
|
1534
1535
|
def idle_add(func):
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -140,9 +140,9 @@ msgstr "Excepción de concurrencia"
|
|
|
140
140
|
msgid "Could not get a session."
|
|
141
141
|
msgstr ""
|
|
142
142
|
|
|
143
|
-
#,
|
|
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 "Demasiadas peticiones. Inténtalo de nuevo más tarde."
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -137,9 +137,9 @@ msgstr ""
|
|
|
137
137
|
msgid "Could not get a session."
|
|
138
138
|
msgstr "Tidak dapat terhubung ke server."
|
|
139
139
|
|
|
140
|
-
#,
|
|
140
|
+
#, python-format
|
|
141
141
|
msgid "Error: \"%s\". Try again later."
|
|
142
|
-
msgstr "
|
|
142
|
+
msgstr ""
|
|
143
143
|
|
|
144
144
|
msgid "Too many requests. Try again later."
|
|
145
145
|
msgstr "Terlalu banyak permintaan. Coba lagi nanti."
|
|
Binary file
|
|
@@ -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
|
-
#,
|
|
145
|
+
#, python-format
|
|
146
146
|
msgid "Error: \"%s\". Try again later."
|
|
147
|
-
msgstr "
|
|
147
|
+
msgstr ""
|
|
148
148
|
|
|
149
149
|
msgid "Too many requests. Try again later."
|
|
150
150
|
msgstr "Troppe richieste. Riprovare più tardi."
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -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
|
-
#,
|
|
140
|
+
#, python-format
|
|
141
141
|
msgid "Error: \"%s\". Try again later."
|
|
142
|
-
msgstr "
|
|
142
|
+
msgstr ""
|
|
143
143
|
|
|
144
144
|
msgid "Too many requests. Try again later."
|
|
145
145
|
msgstr "Prea multe cereri. Încercați mai târziu."
|
|
Binary file
|
|
Binary file
|
|
@@ -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
|
-
#,
|
|
144
|
+
#, python-format
|
|
145
145
|
msgid "Error: \"%s\". Try again later."
|
|
146
|
-
msgstr "
|
|
146
|
+
msgstr ""
|
|
147
147
|
|
|
148
148
|
msgid "Too many requests. Try again later."
|
|
149
149
|
msgstr "Preveč poslanih zahtev. Poskusite kasneje."
|
|
Binary file
|
|
Binary file
|
|
@@ -138,9 +138,9 @@ msgstr "Виняток одночасного доступу"
|
|
|
138
138
|
msgid "Could not get a session."
|
|
139
139
|
msgstr "Не вдалося підключитися до сервера."
|
|
140
140
|
|
|
141
|
-
#,
|
|
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 "Дуже багато запитів. Спробуйте ще раз пізніше."
|
|
Binary file
|
|
@@ -140,9 +140,9 @@ msgstr "并行操作异常"
|
|
|
140
140
|
msgid "Could not get a session."
|
|
141
141
|
msgstr "无法获取会话。"
|
|
142
142
|
|
|
143
|
-
#,
|
|
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,
|
|
1074
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
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
|
-
|
|
81
|
-
|
|
82
|
-
|
|
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
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
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.
|
|
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.
|
|
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
|
-
|
|
377
|
-
|
|
378
|
-
|
|
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.
|
|
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
|
-
|
|
200
|
-
|
|
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
|
|
|
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
|
|
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
|