diff --git a/docs/HISTORY.txt b/docs/HISTORY.txt index cf19166..b5d2b34 100644 --- a/docs/HISTORY.txt +++ b/docs/HISTORY.txt @@ -5,7 +5,7 @@ Changelog 3.0.8 (unreleased) ------------------ -- Nothing changed yet. +- Plone5.2/6 and Python3 compatibility. [gbastien] 3.0.7 (2022-07-01) diff --git a/ftw/referencewidget/browser/generate_pathbar.py b/ftw/referencewidget/browser/generate_pathbar.py index a697f8f..7348dff 100644 --- a/ftw/referencewidget/browser/generate_pathbar.py +++ b/ftw/referencewidget/browser/generate_pathbar.py @@ -8,6 +8,10 @@ from Products.CMFPlone.interfaces.siteroot import IPloneSiteRoot from Products.Five import BrowserView import json +import sys + +if sys.version_info.major == 3: + unicode = bytes class GeneratePathbar(BrowserView): diff --git a/ftw/referencewidget/browser/search.py b/ftw/referencewidget/browser/search.py index 9306a51..de62356 100644 --- a/ftw/referencewidget/browser/search.py +++ b/ftw/referencewidget/browser/search.py @@ -45,10 +45,8 @@ def __call__(self): if not uid: query = {'portal_type': search_types, 'Title': search_term, - 'sort_order': self.request.get('sort_order', - u'ascending').encode('utf-8'), - 'sort_on': self.request.get('sort_on', - u'modified').encode('utf-8')} + 'sort_order': self.request.get('sort_order') or u'ascending', + 'sort_on': self.request.get('sort_on') or u'modified'} if only_current_path and request_path: query['path'] = request_path diff --git a/ftw/referencewidget/locales/fr/LC_MESSAGES/ftw.referencewidget.po b/ftw/referencewidget/locales/fr/LC_MESSAGES/ftw.referencewidget.po new file mode 100644 index 0000000..ef16d36 --- /dev/null +++ b/ftw/referencewidget/locales/fr/LC_MESSAGES/ftw.referencewidget.po @@ -0,0 +1,66 @@ +# --- PLEASE EDIT THE LINES BELOW CORRECTLY --- +# SOME DESCRIPTIVE TITLE. +# FIRST AUTHOR , YEAR. +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2016-10-20 14:54+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0\n" +"Preferred-Encodings: utf-8 latin1\n" + +#: ./ftw/referencewidget/templates/referencewidget_input.pt:11 +msgid "Browse" +msgstr "Chercher" + +#: ./ftw/referencewidget/configure.zcml:33 +msgid "Register ftw.referencewidget generally" +msgstr "Register ftw.referencewidget generally" + +msgid "ascending" +msgstr "Ascendant" + +#. Default: "Close" +#: ./ftw/referencewidget/widget.py:71 +msgid "button_close" +msgstr "Fermer" + +#. Default: "Search" +#: ./ftw/referencewidget/widget.py:70 +msgid "button_seach" +msgstr "Chercher" + +msgid "created" +msgstr "Créé" + +msgid "descending" +msgstr "Descendant" + +#: ./ftw/referencewidget/configure.zcml:33 +msgid "ftw.referencewidget" +msgstr "ftw.referencewidget" + +#. Default: "Sort by" +#: ./ftw/referencewidget/widget.py:72 +msgid "label_sort_by" +msgstr "Trier par" + +msgid "modified" +msgstr "Modifié" + +msgid "no sort" +msgstr "Non trié" + +msgid "sortable_title" +msgstr "Titre" + +#. Default: "Search only in current path" +#: ./ftw/referencewidget/widget.py:82 +msgid "checkbox_search_current_path" +msgstr "Uniquement dans le dossier courant" + diff --git a/ftw/referencewidget/selectable.py b/ftw/referencewidget/selectable.py index b9addbd..d69b9b1 100644 --- a/ftw/referencewidget/selectable.py +++ b/ftw/referencewidget/selectable.py @@ -1,5 +1,5 @@ from ftw.referencewidget.browser.utils import get_selectable_types_by_source -from zope.interface import implements +from zope.interface import implementer from zope.interface import Interface @@ -16,8 +16,8 @@ def is_selectable(): """ +@implementer(ISelectable) class DefaultSelectable(object): - implements(ISelectable) def __init__(self, source, content): self.source = source diff --git a/ftw/referencewidget/sources.py b/ftw/referencewidget/sources.py index c9dae11..3756e06 100644 --- a/ftw/referencewidget/sources.py +++ b/ftw/referencewidget/sources.py @@ -3,15 +3,15 @@ from plone import api from Products.CMFCore.interfaces import IContentish from zope.component.hooks import getSite -from zope.interface import implements +from zope.interface import implementer from zope.interface.verify import verifyClass from zope.schema.interfaces import IContextSourceBinder from zope.schema.interfaces import ISource +@implementer(ISource) class ReferenceObjPathSource(object): - implements(ISource) def __init__(self, context, selectable_class, selectable, nonselectable, override, allow_nonsearched_types, root_path): @@ -38,8 +38,8 @@ def __contains__(self, value): raise TypeError('Not a ISelectable class provided') +@implementer(IContextSourceBinder) class ReferenceObjSourceBinder(object): - implements(IContextSourceBinder) def __init__(self, selectable_class=None, diff --git a/ftw/referencewidget/widget.py b/ftw/referencewidget/widget.py index 686fac1..9e5eb62 100644 --- a/ftw/referencewidget/widget.py +++ b/ftw/referencewidget/widget.py @@ -16,15 +16,15 @@ from zope.component import queryUtility from zope.i18n import translate from zope.interface import implementer -from zope.interface import implementsOnly +from zope.interface import implementer_only from zope.schema.interfaces import IList import json import os +@implementer_only(IReferenceWidget) class ReferenceBrowserWidget(widget.HTMLTextInputWidget, Widget): """ Datepicker widget. """ - implementsOnly(IReferenceWidget) klass = u'reference-widget' request = None