)]}'
{"smaug/api/v1/plans.py":[{"author":{"_account_id":2023,"name":"Saggi Mizrahi","email":"ficoos+osreview@gmail.com","username":"ficoos"},"change_message_id":"83f7dec071e814c34cbf98cf122de99680527dcf","unresolved":false,"context_lines":[{"line_number":106,"context_line":"                                                 plans,"},{"line_number":107,"context_line":"                                                 coll_name,"},{"line_number":108,"context_line":"                                                 plan_count)"},{"line_number":109,"context_line":"        plans_dict \u003d dict(plans\u003dplans_list)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        if plans_links:"},{"line_number":112,"context_line":"            plans_dict[\u0027plans_links\u0027] \u003d plans_links"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_b69b8217","line":109,"range":{"start_line":109,"start_character":21,"end_line":109,"end_character":43},"updated":"2016-02-17 15:22:39.000000000","message":"Use dict literal. It\u0027s faster and more readable.","commit_id":"c881f80903d51cb29cb4b74f9caf5049420e962b"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"135ab77d1f07428bbc56834c26287d5e9bea4818","unresolved":false,"context_lines":[{"line_number":106,"context_line":"                                                 plans,"},{"line_number":107,"context_line":"                                                 coll_name,"},{"line_number":108,"context_line":"                                                 plan_count)"},{"line_number":109,"context_line":"        plans_dict \u003d dict(plans\u003dplans_list)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        if plans_links:"},{"line_number":112,"context_line":"            plans_dict[\u0027plans_links\u0027] \u003d plans_links"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_9d6f5bfb","line":109,"range":{"start_line":109,"start_character":21,"end_line":109,"end_character":43},"in_reply_to":"dae33548_b69b8217","updated":"2016-02-18 02:53:54.000000000","message":"Done","commit_id":"c881f80903d51cb29cb4b74f9caf5049420e962b"},{"author":{"_account_id":2023,"name":"Saggi Mizrahi","email":"ficoos+osreview@gmail.com","username":"ficoos"},"change_message_id":"83f7dec071e814c34cbf98cf122de99680527dcf","unresolved":false,"context_lines":[{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        LOG.info(_LI(\"Delete plan with id: %s\"), id, context\u003dcontext)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        if not uuidutils.is_uuid_like(id):"},{"line_number":152,"context_line":"            msg \u003d _(\"Invalid Plan Id provided.\")"},{"line_number":153,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"        try:"},{"line_number":156,"context_line":"            plan \u003d self._plan_get(context, id)"},{"line_number":157,"context_line":"        except exception.PlanNotFound as error:"},{"line_number":158,"context_line":"            raise exc.HTTPNotFound(explanation\u003derror.msg)"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        check_policy(context, \u0027delete\u0027, plan)"},{"line_number":161,"context_line":"        plan.destroy()"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_41c98e58","line":158,"range":{"start_line":151,"start_character":0,"end_line":158,"end_character":57},"updated":"2016-02-17 15:22:39.000000000","message":"Could maybe be extracted to a method?","commit_id":"c881f80903d51cb29cb4b74f9caf5049420e962b"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"135ab77d1f07428bbc56834c26287d5e9bea4818","unresolved":false,"context_lines":[{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        LOG.info(_LI(\"Delete plan with id: %s\"), id, context\u003dcontext)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        if not uuidutils.is_uuid_like(id):"},{"line_number":152,"context_line":"            msg \u003d _(\"Invalid Plan Id provided.\")"},{"line_number":153,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"        try:"},{"line_number":156,"context_line":"            plan \u003d self._plan_get(context, id)"},{"line_number":157,"context_line":"        except exception.PlanNotFound as error:"},{"line_number":158,"context_line":"            raise exc.HTTPNotFound(explanation\u003derror.msg)"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        check_policy(context, \u0027delete\u0027, plan)"},{"line_number":161,"context_line":"        plan.destroy()"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_fd7ae7bb","line":158,"range":{"start_line":151,"start_character":0,"end_line":158,"end_character":57},"in_reply_to":"dae33548_41c98e58","updated":"2016-02-18 02:53:54.000000000","message":"Done","commit_id":"c881f80903d51cb29cb4b74f9caf5049420e962b"},{"author":{"_account_id":2023,"name":"Saggi Mizrahi","email":"ficoos+osreview@gmail.com","username":"ficoos"},"change_message_id":"83f7dec071e814c34cbf98cf122de99680527dcf","unresolved":false,"context_lines":[{"line_number":197,"context_line":"        if filters is None:"},{"line_number":198,"context_line":"            filters \u003d {}"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        allTenants \u003d utils.get_bool_param(\u0027all_tenants\u0027, filters)"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"        try:"},{"line_number":203,"context_line":"            if limit is not None:"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_c1f47e5c","line":200,"range":{"start_line":200,"start_character":8,"end_line":200,"end_character":18},"updated":"2016-02-17 15:22:39.000000000","message":"s/allTenants/all_tenants","commit_id":"c881f80903d51cb29cb4b74f9caf5049420e962b"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"135ab77d1f07428bbc56834c26287d5e9bea4818","unresolved":false,"context_lines":[{"line_number":197,"context_line":"        if filters is None:"},{"line_number":198,"context_line":"            filters \u003d {}"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        allTenants \u003d utils.get_bool_param(\u0027all_tenants\u0027, filters)"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"        try:"},{"line_number":203,"context_line":"            if limit is not None:"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_3d81ef8f","line":200,"range":{"start_line":200,"start_character":8,"end_line":200,"end_character":18},"in_reply_to":"dae33548_c1f47e5c","updated":"2016-02-18 02:53:54.000000000","message":"Done","commit_id":"c881f80903d51cb29cb4b74f9caf5049420e962b"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"0207c6a81c8cd4e4910f464bce133713e2c31c87","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        self.operationengine_api \u003d operationengine_api.API()"},{"line_number":124,"context_line":"        super(PlansController, self).__init__()"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    def show(self, req, id):"},{"line_number":127,"context_line":"        \"\"\"Return data about the given plan.\"\"\""},{"line_number":128,"context_line":"        context \u003d req.environ[\u0027smaug.context\u0027]"},{"line_number":129,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_d83d712c","line":126,"updated":"2016-02-18 03:54:27.000000000","message":"Missing check_policy?","commit_id":"0a071840e52c9cacb9a639d2462d23405a87a0b9"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"830e7b5fb5eab42d2cb257e4de0e1378be9ecca5","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        self.operationengine_api \u003d operationengine_api.API()"},{"line_number":124,"context_line":"        super(PlansController, self).__init__()"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    def show(self, req, id):"},{"line_number":127,"context_line":"        \"\"\"Return data about the given plan.\"\"\""},{"line_number":128,"context_line":"        context \u003d req.environ[\u0027smaug.context\u0027]"},{"line_number":129,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_ab84900a","line":126,"in_reply_to":"dae33548_d83d712c","updated":"2016-02-18 07:03:28.000000000","message":"policy will be checked in method _plan_get.check_policy(context, \u0027get\u0027, plan)","commit_id":"0a071840e52c9cacb9a639d2462d23405a87a0b9"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"0207c6a81c8cd4e4910f464bce133713e2c31c87","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        LOG.info(_LI(\"Show plan with id: %s\"), id, context\u003dcontext)"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        if not uuidutils.is_uuid_like(id):"},{"line_number":133,"context_line":"            msg \u003d _(\"Invalid Plan Id provided.\")"},{"line_number":134,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_78a425b9","line":133,"range":{"start_line":133,"start_character":29,"end_line":133,"end_character":36},"updated":"2016-02-18 03:54:27.000000000","message":"plan id.","commit_id":"0a071840e52c9cacb9a639d2462d23405a87a0b9"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"830e7b5fb5eab42d2cb257e4de0e1378be9ecca5","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        LOG.info(_LI(\"Show plan with id: %s\"), id, context\u003dcontext)"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        if not uuidutils.is_uuid_like(id):"},{"line_number":133,"context_line":"            msg \u003d _(\"Invalid Plan Id provided.\")"},{"line_number":134,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_0bdf7cd9","line":133,"range":{"start_line":133,"start_character":29,"end_line":133,"end_character":36},"in_reply_to":"dae33548_78a425b9","updated":"2016-02-18 07:03:28.000000000","message":"I think it is OK. Not all messages is a complete sentence.","commit_id":"0a071840e52c9cacb9a639d2462d23405a87a0b9"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"0207c6a81c8cd4e4910f464bce133713e2c31c87","unresolved":false,"context_lines":[{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        return retval_plans"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def get_all(self, context, marker\u003dNone, limit\u003dNone, sort_keys\u003dNone,"},{"line_number":190,"context_line":"                sort_dirs\u003dNone, filters\u003dNone, offset\u003dNone):"},{"line_number":191,"context_line":"        check_policy(context, \u0027get_all\u0027)"},{"line_number":192,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_c3f2a205","line":189,"range":{"start_line":189,"start_character":8,"end_line":189,"end_character":15},"updated":"2016-02-18 03:54:27.000000000","message":"if this method is only used internally, please change name _get_all.","commit_id":"0a071840e52c9cacb9a639d2462d23405a87a0b9"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"830e7b5fb5eab42d2cb257e4de0e1378be9ecca5","unresolved":false,"context_lines":[{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        return retval_plans"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def get_all(self, context, marker\u003dNone, limit\u003dNone, sort_keys\u003dNone,"},{"line_number":190,"context_line":"                sort_dirs\u003dNone, filters\u003dNone, offset\u003dNone):"},{"line_number":191,"context_line":"        check_policy(context, \u0027get_all\u0027)"},{"line_number":192,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_ebd978f4","line":189,"range":{"start_line":189,"start_character":8,"end_line":189,"end_character":15},"in_reply_to":"dae33548_c3f2a205","updated":"2016-02-18 07:03:28.000000000","message":"Done","commit_id":"0a071840e52c9cacb9a639d2462d23405a87a0b9"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"0207c6a81c8cd4e4910f464bce133713e2c31c87","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        if filters is None:"},{"line_number":194,"context_line":"            filters \u003d {}"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        all_Tenants \u003d utils.get_bool_param(\u0027all_tenants\u0027, filters)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"        try:"},{"line_number":199,"context_line":"            if limit is not None:"}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_e3c24684","line":196,"range":{"start_line":196,"start_character":8,"end_line":196,"end_character":19},"updated":"2016-02-18 03:54:27.000000000","message":"all_tenants","commit_id":"0a071840e52c9cacb9a639d2462d23405a87a0b9"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"830e7b5fb5eab42d2cb257e4de0e1378be9ecca5","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        if filters is None:"},{"line_number":194,"context_line":"            filters \u003d {}"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        all_Tenants \u003d utils.get_bool_param(\u0027all_tenants\u0027, filters)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"        try:"},{"line_number":199,"context_line":"            if limit is not None:"}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_4be504a6","line":196,"range":{"start_line":196,"start_character":8,"end_line":196,"end_character":19},"in_reply_to":"dae33548_e3c24684","updated":"2016-02-18 07:03:28.000000000","message":"Done","commit_id":"0a071840e52c9cacb9a639d2462d23405a87a0b9"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"509d94760e2754b8e828208c397594f4fe3c59d8","unresolved":false,"context_lines":[{"line_number":225,"context_line":"        LOG.info(_LI(\"Get all plans completed successfully.\"))"},{"line_number":226,"context_line":"        return plans"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"    def _get_plan_filter_options(self):"},{"line_number":229,"context_line":"        \"\"\"Return plan search options allowed by non-admin.\"\"\""},{"line_number":230,"context_line":"        return CONF.query_plan_filters"},{"line_number":231,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"bae84128_657d071c","line":228,"updated":"2016-02-22 06:11:47.000000000","message":"This method seems no need to implement as a class method.\nSuggest moving it outside.","commit_id":"7c8d6ba17d590489a40a7cc3f71646e06932edda"},{"author":{"_account_id":2023,"name":"Saggi Mizrahi","email":"ficoos+osreview@gmail.com","username":"ficoos"},"change_message_id":"1a9b51d1c68bee4a3eebf9f51e1250919e043d3a","unresolved":false,"context_lines":[{"line_number":106,"context_line":"                                                 plans,"},{"line_number":107,"context_line":"                                                 coll_name,"},{"line_number":108,"context_line":"                                                 plan_count)"},{"line_number":109,"context_line":"        plans_dict \u003d {}"},{"line_number":110,"context_line":"        plans_dict[\u0027plans\u0027] \u003d plans_list"},{"line_number":111,"context_line":"        if plans_links:"},{"line_number":112,"context_line":"            plans_dict[\u0027plans_links\u0027] \u003d plans_links"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"bae84128_b04859cd","line":110,"range":{"start_line":109,"start_character":8,"end_line":110,"end_character":40},"updated":"2016-02-24 14:21:39.000000000","message":"Why not?\n\n plan_dict \u003d {\n     \u0027plans\u0027: plans_list,\n }","commit_id":"4c040b8d3a4ed6b709289993c3b95247a5a83a00"}],"smaug/utils.py":[{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"0207c6a81c8cd4e4910f464bce133713e2c31c87","unresolved":false,"context_lines":[{"line_number":100,"context_line":""},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"def check_filters(filters):"},{"line_number":103,"context_line":"    for k, v in filters.items():"},{"line_number":104,"context_line":"        try:"},{"line_number":105,"context_line":"            filters[k] \u003d ast.literal_eval(v)"},{"line_number":106,"context_line":"        except (ValueError, SyntaxError):"}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_235d4e15","line":103,"range":{"start_line":103,"start_character":24,"end_line":103,"end_character":29},"updated":"2016-02-18 03:54:27.000000000","message":"use six.iteritems instead","commit_id":"0a071840e52c9cacb9a639d2462d23405a87a0b9"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"830e7b5fb5eab42d2cb257e4de0e1378be9ecca5","unresolved":false,"context_lines":[{"line_number":100,"context_line":""},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"def check_filters(filters):"},{"line_number":103,"context_line":"    for k, v in filters.items():"},{"line_number":104,"context_line":"        try:"},{"line_number":105,"context_line":"            filters[k] \u003d ast.literal_eval(v)"},{"line_number":106,"context_line":"        except (ValueError, SyntaxError):"}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_2be08095","line":103,"range":{"start_line":103,"start_character":24,"end_line":103,"end_character":29},"in_reply_to":"dae33548_235d4e15","updated":"2016-02-18 07:03:28.000000000","message":"Done","commit_id":"0a071840e52c9cacb9a639d2462d23405a87a0b9"}]}
