From 9435cb22d8c043e9b1ed21e93d3193307a94b4d9 Mon Sep 17 00:00:00 2001 From: Gil Forcada Date: Tue, 1 Mar 2016 01:18:28 +0100 Subject: [PATCH] Show which version of plone.api is required Fixes: https://github.com/gforcada/flake8-plone-api/issues/7 --- flake8_plone_api.py | 462 +++++++++++++++++++++++++++++--------------- 1 file changed, 302 insertions(+), 160 deletions(-) diff --git a/flake8_plone_api.py b/flake8_plone_api.py index f85df2d..cfbdcec 100644 --- a/flake8_plone_api.py +++ b/flake8_plone_api.py @@ -7,7 +7,8 @@ class PloneAPIChecker(object): name = 'flake8_plone_api' version = '0.1' - message = 'P001 found "{0}" consider replacing it with: {1}' + message = 'P001 found "{0}" consider replacing it with: {1} ' \ + '(since plone.api version {2})' character = re.compile(r'\w') @@ -20,12 +21,14 @@ def run(self): lines = f.readlines() for lineno, line in enumerate(lines, start=1): - for old_approach in self.mapping: + for old_approach in self.mapping['data']: found = self.check_line(line, old_approach) if found != -1: + new = self.mapping['data'][old_approach] msg = self.message.format( old_approach, - ' or '.join(self.mapping[old_approach]) + ' or '.join(new), + self.mapping['since'][new[0]] ) yield lineno, found, msg, type(self) @@ -62,172 +65,311 @@ def _get_mapping(): The output of this function is meant to be an easy way to find those replacements. """ - mapping = defaultdict(list) + mapping = { + 'data': defaultdict(list), + 'since': {}, + } for api_method in DATA: method_call = 'plone.api.{0}'.format(api_method) - for old_approach in DATA[api_method]: + for old_approach in DATA[api_method]['replace']: # do not add the empty entries if old_approach is None: continue - mapping[old_approach].append(method_call) + mapping['data'][old_approach].append(method_call) + mapping['since'][method_call] = DATA[api_method]['since'] return mapping DATA = { - 'content.create': [ - 'invokeFactory(', - 'createContentInContainer(', - ], - 'content.get': [ - 'restrictedTraverse(', - ], - 'content.move': [ - 'manage_cutObjects(', - 'manage_pasteObjects(', - ], - 'content.rename': [ - 'manage_renameObject(', - ], - 'content.copy': [ - 'manage_copyObjects(', - ], - 'content.delete': [ - 'manage_delObjects(', - ], - 'content.get_state': [ - 'getInfoFor(', - ], - 'content.transition': [ - 'doActionFor(', - ], - 'content.get_view': [ - None, - ], - 'content.get_uuid': [ - 'IUUID(', - ], - 'content.find': [ - '.catalog(', - 'searchResults(', - ], - 'user.create': [ - 'addMember(', - ], - 'user.get': [ - 'getMemberById(', - 'get_member_by_login_name(', - ], - 'user.get_current': [ - 'getAuthenticatedMember(', - ], - 'user.get_users': [ - 'listMembers(', - 'getGroupMembers(', - ], - 'user.delete': [ - 'deleteMembers(', - ], - 'user.is_anonymous': [ - 'isAnonymousUser(', - ], - 'user.get_roles': [ - 'getRolesInContext(', - 'getRoles(', - 'get_local_roles_for_userid(', - ], - 'user.get_permissions': [ - 'checkPermission(', - ], - 'user.has_permission': [ - 'checkPermission(', - ], - 'user.grant_roles': [ - 'setSecurityProfile(', - 'manage_setLocalRoles(', - ], - 'user.revoke_roles': [ - 'setSecurityProfile(', - 'manage_setLocalRoles(', - 'manage_delLocalRoles(', - ], - 'group.create': [ - 'addGroup(', - ], - 'group.get': [ - 'getGroupById(', - ], - 'group.get_groups': [ - 'getGroupsForPrincipal(', - 'listGroups(', - ], - 'group.delete': [ - 'removeGroup(', - ], - 'group.add_user': [ - 'addPrincipalToGroup(', - ], - 'group.remove_user': [ - 'removePrincipalFromGroup(', - ], - 'group.get_roles': [ - 'getRoles(', - 'getRolesInContext(', - ], - 'group.grant_roles': [ - 'setRolesForGroup(', - 'manage_setLocalRoles(', - ], - 'group.revoke_roles': [ - 'setRolesForGroup(', - 'manage_setLocalRoles(', - 'manage_delLocalRoles(', - ], - 'portal.get': [ - 'getSite(', - ], - 'portal.get_navigation_root': [ - 'getNavigationRootObject(', - ], - 'portal.get_tool': [ - 'getToolByName(', - ], - 'portal.send_email': [ - None, - ], - 'portal.get_localized_time': [ - 'ulocalized_time(', - ], - 'portal.show_message': [ - 'IStatusMessage(', - ], - 'portal.get_registry_record': [ - 'IRegistry(', - '.forInterface(', - ], - 'portal.set_registry_record': [ - 'IRegistry(', - '.forInterface(', - ], - 'env.adopt_user': [ - 'setSecurityManager(', - 'getSecurityManager(', - 'newSecurityManager(', - ], - 'env.adopt_roles': [ - 'getSecurityManager(', - ], - 'env.debug_mode': [ - 'DevelopmentMode(', - ], - 'env.test_mode': [ - None, - ], - 'env.plone_version': [ - None, - ], - 'env.zope_version': [ - None, - ], + 'content.create': { + 'since': '1.0', + 'replace': [ + 'invokeFactory(', + 'createContentInContainer(', + ], + }, + 'content.get': { + 'since': '1.0', + 'replace': [ + 'restrictedTraverse(', + ], + }, + 'content.move': { + 'since': '1.0', + 'replace': [ + 'manage_cutObjects(', + 'manage_pasteObjects(', + ], + }, + 'content.rename': { + 'since': '1.0', + 'replace': [ + 'manage_renameObject(', + ], + }, + 'content.copy': { + 'since': '1.0', + 'replace': [ + 'manage_copyObjects(', + ], + }, + 'content.delete': { + 'since': '1.0', + 'replace': [ + 'manage_delObjects(', + ], + }, + 'content.get_state': { + 'since': '1.0', + 'replace': [ + 'getInfoFor(', + ], + }, + 'content.transition': { + 'since': '1.0', + 'replace': [ + 'doActionFor(', + ], + }, + 'content.get_view': { + 'since': '1.0', + 'replace': [ + None, + ], + }, + 'content.get_uuid': { + 'since': '1.0', + 'replace': [ + 'IUUID(', + ], + }, + 'content.find': { + 'since': '1.3.3', + 'replace': [ + '.catalog(', + 'searchResults(', + ], + }, + 'user.create': { + 'since': '1.0', + 'replace': [ + 'addMember(', + ], + }, + 'user.get': { + 'since': '1.0', + 'replace': [ + 'getMemberById(', + 'get_member_by_login_name(', + ], + }, + 'user.get_current': { + 'since': '1.0', + 'replace': [ + 'getAuthenticatedMember(', + ], + }, + 'user.get_users': { + 'since': '1.0', + 'replace': [ + 'listMembers(', + 'getGroupMembers(', + ], + }, + 'user.delete': { + 'since': '1.0', + 'replace': [ + 'deleteMembers(', + ], + }, + 'user.is_anonymous': { + 'since': '1.0', + 'replace': [ + 'isAnonymousUser(', + ], + }, + 'user.get_roles': { + 'since': '1.0', + 'replace': [ + 'getRolesInContext(', + 'getRoles(', + 'get_local_roles_for_userid(', + ], + }, + 'user.get_permissions': { + 'since': '1.0', + 'replace': [ + 'checkPermission(', + ], + }, + 'user.has_permission': { + 'since': '1.3', + 'replace': [ + 'checkPermission(', + ], + }, + 'user.grant_roles': { + 'since': '1.0', + 'replace': [ + 'setSecurityProfile(', + 'manage_setLocalRoles(', + ], + }, + 'user.revoke_roles': { + 'since': '1.0', + 'replace': [ + 'setSecurityProfile(', + 'manage_setLocalRoles(', + 'manage_delLocalRoles(', + ], + }, + 'group.create': { + 'since': '1.0', + 'replace': [ + 'addGroup(', + ], + }, + 'group.get': { + 'since': '1.0', + 'replace': [ + 'getGroupById(', + ], + }, + 'group.get_groups': { + 'since': '1.0', + 'replace': [ + 'getGroupsForPrincipal(', + 'listGroups(', + ], + }, + 'group.delete': { + 'since': '1.0', + 'replace': [ + 'removeGroup(', + ], + }, + 'group.add_user': { + 'since': '1.0', + 'replace': [ + 'addPrincipalToGroup(', + ], + }, + 'group.remove_user': { + 'since': '1.0', + 'replace': [ + 'removePrincipalFromGroup(', + ], + }, + 'group.get_roles': { + 'since': '1.0', + 'replace': [ + 'getRoles(', + 'getRolesInContext(', + ], + }, + 'group.grant_roles': { + 'since': '1.0', + 'replace': [ + 'setRolesForGroup(', + 'manage_setLocalRoles(', + ], + }, + 'group.revoke_roles': { + 'since': '1.0', + 'replace': [ + 'setRolesForGroup(', + 'manage_setLocalRoles(', + 'manage_delLocalRoles(', + ], + }, + 'portal.get': { + 'since': '1.0', + 'replace': [ + 'getSite(', + ], + }, + 'portal.get_navigation_root': { + 'since': '1.0', + 'replace': [ + 'getNavigationRootObject(', + ], + }, + 'portal.get_tool': { + 'since': '1.0', + 'replace': [ + 'getToolByName(', + ], + }, + 'portal.send_email': { + 'since': '1.0', + 'replace': [ + None, + ], + }, + 'portal.get_localized_time': { + 'since': '1.0', + 'replace': [ + 'ulocalized_time(', + ], + }, + 'portal.show_message': { + 'since': '1.0', + 'replace': [ + 'IStatusMessage(', + ], + }, + 'portal.get_registry_record': { + 'since': '1.0', + 'replace': [ + 'IRegistry(', + '.forInterface(', + ], + }, + 'portal.set_registry_record': { + 'since': '1.0', + 'replace': [ + 'IRegistry(', + '.forInterface(', + ], + }, + 'env.adopt_user': { + 'since': '1.0', + 'replace': [ + 'setSecurityManager(', + 'getSecurityManager(', + 'newSecurityManager(', + ], + }, + 'env.adopt_roles': { + 'since': '1.0', + 'replace': [ + 'getSecurityManager(', + ], + }, + 'env.debug_mode': { + 'since': '1.0', + 'replace': [ + 'DevelopmentMode(', + ], + }, + 'env.test_mode': { + 'since': '1.0', + 'replace': [ + None, + ], + }, + 'env.plone_version': { + 'since': '1.2', + 'replace': [ + None, + ], + }, + 'env.zope_version': { + 'since': '1.2', + 'replace': [ + None, + ], + }, }