Skip to content

Commit

Permalink
Python2 specific check for casting to unicode
Browse files Browse the repository at this point in the history
The earlier implementation used builtins.str, which is a dependency we don't want.
  • Loading branch information
janjaapdriessen committed Sep 30, 2016
1 parent 4f14b7d commit 3f4505f
Showing 1 changed file with 12 additions and 7 deletions.
19 changes: 12 additions & 7 deletions src/grokcore/security/meta/permission.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,17 @@
#
##############################################################################
"""Grokkers for security-related components."""
from builtins import str

import sys
import martian
import grokcore.component
import grokcore.security

from zope.security.interfaces import IPermission
from martian.error import GrokError

PY2 = sys.version_info[0] == 2


def default_fallback_to_name(factory, module, name, **data):
return name
Expand All @@ -38,12 +40,15 @@ def execute(self, factory, config, name, title, description, **kw):
raise GrokError(
"A permission needs to have a dotted name for its id. Use "
"grok.name to specify one.", factory)
# We can safely convert to unicode, since the directives make sure
# it is either unicode already or ASCII.
permission = factory(
u'{}'.format(str(name)), # python2 and 3
u'{}'.format(str(title)),
u'{}'.format(str(description)))
if PY2:
# We can safely convert to unicode, since the directives make sure
# it is either unicode already or ASCII.
permission = factory(
unicode(name),
unicode(title),
unicode(description))
else:
permission = factory(name, title, description)

config.action(
discriminator=('utility', IPermission, name),
Expand Down

0 comments on commit 3f4505f

Please sign in to comment.