)]}'
{"keystone/identity/backends/ldap/core.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"49bba26fe27bf67ca08b3e780299239ffd5d9daf","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        self.user.update(user_id, user, old_obj)"},{"line_number":117,"context_line":"        return self.user.get_filtered(user_id)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    def change_password(self, user_id, new_password):"},{"line_number":120,"context_line":"        raise exception.NotImplemented("},{"line_number":121,"context_line":"            _(\u0027Self-service user password changes are not implemented for \u0027"},{"line_number":122,"context_line":"              \u0027LDAP.\u0027))"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def delete_user(self, user_id):"},{"line_number":125,"context_line":"        msg \u003d _DEPRECATION_MSG % \"delete_user\""}],"source_content_type":"text/x-python","patch_set":3,"id":"3ac371cc_fd2c27ad","line":122,"range":{"start_line":119,"start_character":0,"end_line":122,"end_character":23},"updated":"2016-08-15 14:23:16.000000000","message":"nice addition","commit_id":"3a40c8ce359b25cb74ecee4d61526807bc0a89c8"}],"keystone/identity/backends/sql.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"7db0e0bcd11ccb4d1931f7ca87b3b885a7477b1a","unresolved":false,"context_lines":[{"line_number":197,"context_line":"            user_ref.password_ref.self_service \u003d True"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    def _validate_minimum_password_age(self, user_ref):"},{"line_number":200,"context_line":"        min_age_days \u003d CONF.security_compliance.minimum_password_age"},{"line_number":201,"context_line":"        min_age \u003d (user_ref.password_created_at +"},{"line_number":202,"context_line":"                   datetime.timedelta(days\u003dmin_age_days))"},{"line_number":203,"context_line":"        if datetime.datetime.utcnow() \u003c min_age:"},{"line_number":204,"context_line":"            days_left \u003d (min_age - datetime.datetime.utcnow().date()).days"},{"line_number":205,"context_line":"            raise exception.PasswordAgeValidationError("}],"source_content_type":"text/x-python","patch_set":1,"id":"7ac969e8_1041490c","line":202,"range":{"start_line":200,"start_character":8,"end_line":202,"end_character":57},"updated":"2016-08-13 01:57:45.000000000","message":"basically \"min_age\" becomes \"password_created_at\" if the option is not set","commit_id":"dc90e351d1eb48289e23f45d59ef088d4520f132"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"e15a429917d3fd9295c54998147f2b2ed5306d4b","unresolved":false,"context_lines":[{"line_number":202,"context_line":"                   datetime.timedelta(days\u003dmin_age_days))"},{"line_number":203,"context_line":"        if datetime.datetime.utcnow() \u003c min_age:"},{"line_number":204,"context_line":"            days_left \u003d (min_age - datetime.datetime.utcnow().date()).days"},{"line_number":205,"context_line":"            raise exception.PasswordAgeValidationError("},{"line_number":206,"context_line":"                min_age_days\u003dmin_age_days, days_left\u003ddays_left)"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    def add_user_to_group(self, user_id, group_id):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ac665da_65aa861b","line":205,"updated":"2016-08-13 17:16:29.000000000","message":"Nice","commit_id":"dc90e351d1eb48289e23f45d59ef088d4520f132"}],"keystone/identity/backends/sql_model.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"e39892e42c7ca9710561318fa2279931c1e6a557","unresolved":false,"context_lines":[{"line_number":236,"context_line":"    created_at \u003d sql.Column(sql.DateTime, nullable\u003dFalse,"},{"line_number":237,"context_line":"                            default\u003ddatetime.datetime.utcnow)"},{"line_number":238,"context_line":"    expires_at \u003d sql.Column(sql.DateTime, nullable\u003dTrue)"},{"line_number":239,"context_line":"    self_service \u003d sql.Column(sql.Boolean, default\u003dFalse, nullable\u003dFalse,"},{"line_number":240,"context_line":"                              server_default\u003dFalse)"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"class FederatedUser(sql.ModelBase, sql.ModelDictMixin):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7ac969e8_f0b8ede7","line":240,"range":{"start_line":239,"start_character":4,"end_line":240,"end_character":51},"updated":"2016-08-13 01:59:05.000000000","message":"i think this change is causing the gate to mess up","commit_id":"dc90e351d1eb48289e23f45d59ef088d4520f132"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"e15a429917d3fd9295c54998147f2b2ed5306d4b","unresolved":false,"context_lines":[{"line_number":236,"context_line":"    created_at \u003d sql.Column(sql.DateTime, nullable\u003dFalse,"},{"line_number":237,"context_line":"                            default\u003ddatetime.datetime.utcnow)"},{"line_number":238,"context_line":"    expires_at \u003d sql.Column(sql.DateTime, nullable\u003dTrue)"},{"line_number":239,"context_line":"    self_service \u003d sql.Column(sql.Boolean, default\u003dFalse, nullable\u003dFalse,"},{"line_number":240,"context_line":"                              server_default\u003dFalse)"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"class FederatedUser(sql.ModelBase, sql.ModelDictMixin):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ac665da_c5ba5a6e","line":240,"range":{"start_line":239,"start_character":4,"end_line":240,"end_character":51},"in_reply_to":"7ac969e8_f0b8ede7","updated":"2016-08-13 17:16:29.000000000","message":"++ I thought this was wrong in the original patch, but it looks like it really does need to be a string.","commit_id":"dc90e351d1eb48289e23f45d59ef088d4520f132"}]}
