diff --git a/CHANGES.rst b/CHANGES.rst
index e690b5b..3b05f7e 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -21,6 +21,9 @@ Bug fixes:
- Allow defaults to be set on dexterity type fields via the web UI (@@fields)
[ezvirtual]
+- Fix tests in py3 and some py3 issues.
+ [pbauer]
+
2.0.19 (2018-02-02)
-------------------
diff --git a/plone/schemaeditor/browser/schema/add_field.py b/plone/schemaeditor/browser/schema/add_field.py
index bcaff20..679f2ea 100644
--- a/plone/schemaeditor/browser/schema/add_field.py
+++ b/plone/schemaeditor/browser/schema/add_field.py
@@ -46,7 +46,7 @@ def create(self, data):
factory = data.pop('factory')
# split regular attributes and extra ones
- for key in data.keys():
+ for key in list(data.keys()):
if key not in self._schema:
extra[key] = data[key]
data.pop(key)
diff --git a/plone/schemaeditor/browser/schema/traversal.py b/plone/schemaeditor/browser/schema/traversal.py
index effefff..ebf87a5 100644
--- a/plone/schemaeditor/browser/schema/traversal.py
+++ b/plone/schemaeditor/browser/schema/traversal.py
@@ -6,6 +6,8 @@
from zope.publisher.interfaces.browser import IBrowserPublisher
from ZPublisher.BaseRequest import DefaultPublishTraverse
+import six
+
@implementer(ISchemaContext, IBrowserPublisher)
class SchemaContext(SimpleItem):
@@ -21,7 +23,6 @@ class SchemaContext(SimpleItem):
enableFieldsets = True
def __init__(self, context, request, name=u'schema', title=None):
- super(SchemaContext, self).__init__(context, request)
self.schema = context
self.request = request
diff --git a/plone/schemaeditor/tests/choice.rst b/plone/schemaeditor/tests/choice.rst
index d2d665e..d3c2a07 100644
--- a/plone/schemaeditor/tests/choice.rst
+++ b/plone/schemaeditor/tests/choice.rst
@@ -58,7 +58,7 @@ If duplicate values are entered an error is raised.
... ['Alaska', 'Russia', 'United States', 'United States',
... 'Other'])
>>> browser.getControl('Save').click()
- >>> print browser.contents
+ >>> print(browser.contents)
<...
The 'United States' vocabulary value conflicts with 'United States'.
...
@@ -118,7 +118,7 @@ We can't set a vocabulary name AND values.
>>> browser.getLink(url='country').click()
>>> browser.getControl('values').value = "oups"
>>> browser.getControl('Save').click()
- >>> print browser.contents
+ >>> print(browser.contents)
<...
You can not set a vocabulary name AND vocabulary values....
...
@@ -166,7 +166,7 @@ If duplicate values are entered an error is raised.
>>> ctl.value = '\n'.join(
... ['Lisp', 'Plone', 'Python', 'Lisp'])
>>> browser.getControl('Save').click()
- >>> print browser.contents
+ >>> print(browser.contents)
<...
The 'Lisp' vocabulary value conflicts with 'Lisp'.
...
@@ -210,7 +210,7 @@ Back to the edit form, vocabulary name is selected.
>>> browser.open(portal_url + '/@@schemaeditor')
>>> browser.getLink(url='categories').click()
- >>> print browser.contents
+ >>> print(browser.contents)
<...
... selected>plone.schemaeditor.test.Categories>> browser.open(portal_url + '/@@schemaeditor')
Traceback (most recent call last):
...
- Unauthorized: ...You are not authorized to access this resource...
+ zExceptions.unauthorized.Unauthorized: ...You are not authorized to access this resource...
We need to log in as a manager, because by default only managers get the 'Manage Schemata' permission::
@@ -62,11 +62,11 @@ normalized form of the title)::
>>> isinstance(IDummySchema['favorite_color'], TextLine)
True
>>> IDummySchema['favorite_color'].title
- u'Favorite Color'
+ 'Favorite Color'
>>> IDummySchema['favorite_color'].required
True
>>> IDummySchema['favorite_color'].description
- u'Select your favorite color'
+ 'Select your favorite color'
Editing a schema field attribute
@@ -98,7 +98,7 @@ of schema fields, which should reflect the change::
Let's confirm that the new default value was correctly saved to the actual schema::
>>> IDummySchema['favorite_color'].description
- u'Enter your favorite color.'
+ 'Enter your favorite color.'
If the schema is edited to have internationalized attributes::
@@ -130,11 +130,11 @@ value was set::
>>> type(IDummySchema['favorite_color'].description)
<... 'zope.i18nmessageid.message.Message'>
>>> IDummySchema['favorite_color'].description
- u'favorite_color'
+ 'favorite_color'
>>> IDummySchema['favorite_color'].description.domain
'plone'
>>> IDummySchema['favorite_color'].description.default
- u'Enter your favorite color.'
+ 'Enter your favorite color.'
Let's also check that the support for editing i18n Message values does not
persist its marker interface::
@@ -193,7 +193,7 @@ testbrowser doesn't support Javascript)::
[event: ContainerModifiedEvent on InterfaceClass]
[event: SchemaModifiedEvent on DummySchemaContext]
>>> browser.contents
- ''
+ b''
Now the field should be the third field of the schema::
@@ -220,7 +220,7 @@ They are moved to the end of the new fieldset::
[event: ContainerModifiedEvent on InterfaceClass]
[event: SchemaModifiedEvent on DummySchemaContext]
>>> browser.contents
- ''
+ b''
Now the field should be the seventh field of the schema::
@@ -236,7 +236,7 @@ They can be ordered into a fieldset::
[event: ContainerModifiedEvent on InterfaceClass]
[event: SchemaModifiedEvent on DummySchemaContext]
>>> browser.contents
- ''
+ b''
>>> get_field_fieldset(IDummySchema, 'favorite_color')