)]}'
{"keystone/identity/backends/ldap.py":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"2aff1f5662e8633bef4860da87598d2ad46c383d","unresolved":false,"context_lines":[{"line_number":328,"context_line":"    def list_user_groups(self, user_dn):"},{"line_number":329,"context_line":"        \"\"\"Return a list of groups for which the user is a member.\"\"\""},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"        user_dn_esc \u003d ldap.filter.escape_filter_chars(user_dn)"},{"line_number":332,"context_line":"        query \u003d \u0027(\u0026(objectClass\u003d%s)(%s\u003d%s)%s)\u0027 % (self.object_class,"},{"line_number":333,"context_line":"                                                  self.member_attribute,"},{"line_number":334,"context_line":"                                                  user_dn_esc,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F9aKU%3D","line":331,"updated":"2014-04-04 18:09:08.000000000","message":"Is there a test missing? This shouldn\u0027t work because ldap.filter isn\u0027t imported. In my version of ldap I have to explicitly \u0027import ldap.filter\u0027.","commit_id":"e464b86a4c9bdde04c77b0d598e051e3d0781041"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"9ff029501fe9062e259a44d540e42f83d3e7a08f","unresolved":false,"context_lines":[{"line_number":328,"context_line":"    def list_user_groups(self, user_dn):"},{"line_number":329,"context_line":"        \"\"\"Return a list of groups for which the user is a member.\"\"\""},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"        user_dn_esc \u003d ldap.filter.escape_filter_chars(user_dn)"},{"line_number":332,"context_line":"        query \u003d \u0027(\u0026(objectClass\u003d%s)(%s\u003d%s)%s)\u0027 % (self.object_class,"},{"line_number":333,"context_line":"                                                  self.member_attribute,"},{"line_number":334,"context_line":"                                                  user_dn_esc,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F9aLg%3D","line":331,"updated":"2014-04-04 18:06:36.000000000","message":"should this not use escape_mode\u003d1 ? http://pasteraw.com/g9hrd46szkix6aw7ek64s2fisahumm1","commit_id":"e464b86a4c9bdde04c77b0d598e051e3d0781041"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"0786b0191575e678c1c645f248147a8c772d568f","unresolved":false,"context_lines":[{"line_number":328,"context_line":"    def list_user_groups(self, user_dn):"},{"line_number":329,"context_line":"        \"\"\"Return a list of groups for which the user is a member.\"\"\""},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"        user_dn_esc \u003d ldap.filter.escape_filter_chars(user_dn)"},{"line_number":332,"context_line":"        query \u003d \u0027(\u0026(objectClass\u003d%s)(%s\u003d%s)%s)\u0027 % (self.object_class,"},{"line_number":333,"context_line":"                                                  self.member_attribute,"},{"line_number":334,"context_line":"                                                  user_dn_esc,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F9Z7k%3D","line":331,"in_reply_to":"AAAAWH%2F9aAE%3D","updated":"2014-04-04 18:37:49.000000000","message":"I tried escape_mode\u003d1 and that also looks like it works (against OpenLDAP) --\n\n (Pdb) p user_dn_esc\n u\u0027cn\u003dDoe\\\\5c\\\\2c\\\\20John\\\\2cou\u003dUsers\\\\2cdc\u003dopenstack\\\\2cdc\u003dorg\u0027","commit_id":"e464b86a4c9bdde04c77b0d598e051e3d0781041"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"694c331f38702c2bb89b13f7780b5056ecf9a5da","unresolved":false,"context_lines":[{"line_number":328,"context_line":"    def list_user_groups(self, user_dn):"},{"line_number":329,"context_line":"        \"\"\"Return a list of groups for which the user is a member.\"\"\""},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"        user_dn_esc \u003d ldap.filter.escape_filter_chars(user_dn)"},{"line_number":332,"context_line":"        query \u003d \u0027(\u0026(objectClass\u003d%s)(%s\u003d%s)%s)\u0027 % (self.object_class,"},{"line_number":333,"context_line":"                                                  self.member_attribute,"},{"line_number":334,"context_line":"                                                  user_dn_esc,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F9aAE%3D","line":331,"in_reply_to":"AAAAWH%2F9aIo%3D","updated":"2014-04-04 18:31:10.000000000","message":"Dolph - the string that\u0027s getting escaped is actually \n\n (Pdb) p user_dn\n u\u0027cn\u003dDoe\\\\, John,ou\u003dUsers,dc\u003dopenstack,dc\u003dorg\u0027\n (Pdb) ldap.filter.escape_filter_chars(user_dn)\n u\u0027cn\u003dDoe\\\\5c, John,ou\u003dUsers,dc\u003dopenstack,dc\u003dorg\u0027\n (Pdb) ldap.filter.escape_filter_chars(user_dn) \u003d\u003d user_dn\n False","commit_id":"e464b86a4c9bdde04c77b0d598e051e3d0781041"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"694c331f38702c2bb89b13f7780b5056ecf9a5da","unresolved":false,"context_lines":[{"line_number":328,"context_line":"    def list_user_groups(self, user_dn):"},{"line_number":329,"context_line":"        \"\"\"Return a list of groups for which the user is a member.\"\"\""},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"        user_dn_esc \u003d ldap.filter.escape_filter_chars(user_dn)"},{"line_number":332,"context_line":"        query \u003d \u0027(\u0026(objectClass\u003d%s)(%s\u003d%s)%s)\u0027 % (self.object_class,"},{"line_number":333,"context_line":"                                                  self.member_attribute,"},{"line_number":334,"context_line":"                                                  user_dn_esc,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F9Z%2FQ%3D","line":331,"in_reply_to":"AAAAWH%2F9aKU%3D","updated":"2014-04-04 18:31:10.000000000","message":"David -\n\nThere is a test missing -- fakeldap doesn\u0027t support dn with a ,. I\u0027ll look into it.\n\nI\u0027ve been running this and have not hit an import error... not sure why.","commit_id":"e464b86a4c9bdde04c77b0d598e051e3d0781041"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"224f9428563cdd67b038cd2d2560057d5749c07b","unresolved":false,"context_lines":[{"line_number":328,"context_line":"    def list_user_groups(self, user_dn):"},{"line_number":329,"context_line":"        \"\"\"Return a list of groups for which the user is a member.\"\"\""},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"        user_dn_esc \u003d ldap.filter.escape_filter_chars(user_dn)"},{"line_number":332,"context_line":"        query \u003d \u0027(\u0026(objectClass\u003d%s)(%s\u003d%s)%s)\u0027 % (self.object_class,"},{"line_number":333,"context_line":"                                                  self.member_attribute,"},{"line_number":334,"context_line":"                                                  user_dn_esc,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F9aIo%3D","line":331,"in_reply_to":"AAAAWH%2F9aLg%3D","updated":"2014-04-04 18:12:32.000000000","message":"or i guess this would be a better example:\n\n  \u003e\u003e\u003e import ldap.filter\n  \u003e\u003e\u003e dn \u003d \u0027cn\u003dDoe, John,ou\u003dUsers,dc\u003dopenstack,dc\u003dorg\u0027;\n  \u003e\u003e\u003e ldap.filter.escape_filter_chars(dn) \u003d\u003d dn\n  True\n  \u003e\u003e\u003e ldap.filter.escape_filter_chars(dn, escape_mode\u003d0) \u003d\u003d dn\n  True\n  \u003e\u003e\u003e ldap.filter.escape_filter_chars(dn, escape_mode\u003d1) \u003d\u003d dn\n  False\n  \u003e\u003e\u003e ldap.filter.escape_filter_chars(dn, escape_mode\u003d2) \u003d\u003d dn\n  False\n\nif this change has an impact on the intended use case, shouldn\u0027t it use one of the escape_modes that produces False?","commit_id":"e464b86a4c9bdde04c77b0d598e051e3d0781041"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"09cb77b1d11254b62c819267eda21ca0dd4f770e","unresolved":false,"context_lines":[{"line_number":15,"context_line":"import uuid"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import ldap"},{"line_number":18,"context_line":"import ldap.filter"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from keystone import clean"},{"line_number":21,"context_line":"from keystone.common import dependency"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F9ZqM%3D","line":18,"updated":"2014-04-04 19:30:22.000000000","message":"++ this is how i was importing it when testing\n\nif keystone was importing this somewhere else, i suspect it may have been an available attribute of \u0027ldap\u0027","commit_id":"594024a4413560dc433ccfeea869493b23100cc7"}]}
