)]}'
{"neutron/objects/base.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ca1f6c0ce4d1f4679c47764e1b6f27562dddaeec","unresolved":false,"context_lines":[{"line_number":376,"context_line":"        keys \u003d {}"},{"line_number":377,"context_line":"        for key in self.primary_keys:"},{"line_number":378,"context_line":"            keys[key] \u003d getattr(self, key)"},{"line_number":379,"context_line":"        return keys"},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"    def update_nonidentifying_fields(self, obj_data, reset_changes\u003dFalse):"},{"line_number":382,"context_line":"        \"\"\"Updates non-identifying fields of an object."}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_21b251e5","line":379,"updated":"2016-06-08 21:39:38.000000000","message":"Need to check that one, maybe it\u0027s not needed (with two changes below).","commit_id":"258ac558aa3d14e24f7102ae65d2879ce3dbd776"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"adf4545a1590f97800bc7f8172fa94ebb9b5a301","unresolved":false,"context_lines":[{"line_number":376,"context_line":"        keys \u003d {}"},{"line_number":377,"context_line":"        for key in self.primary_keys:"},{"line_number":378,"context_line":"            keys[key] \u003d getattr(self, key)"},{"line_number":379,"context_line":"        return keys"},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"    def update_nonidentifying_fields(self, obj_data, reset_changes\u003dFalse):"},{"line_number":382,"context_line":"        \"\"\"Updates non-identifying fields of an object."}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_23a1a394","line":379,"range":{"start_line":379,"start_character":8,"end_line":379,"end_character":19},"updated":"2016-06-09 08:49:44.000000000","message":"Is this change just to make better semantics of _get_composite_keys?","commit_id":"a16e04a76a6112da919dd0e7606e39458e703a6e"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"b9205505b6477d2d65279b6f5736676f2ea190f8","unresolved":false,"context_lines":[{"line_number":376,"context_line":"        keys \u003d {}"},{"line_number":377,"context_line":"        for key in self.primary_keys:"},{"line_number":378,"context_line":"            keys[key] \u003d getattr(self, key)"},{"line_number":379,"context_line":"        return keys"},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"    def update_nonidentifying_fields(self, obj_data, reset_changes\u003dFalse):"},{"line_number":382,"context_line":"        \"\"\"Updates non-identifying fields of an object."}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_e3d2fbcf","line":379,"range":{"start_line":379,"start_character":8,"end_line":379,"end_character":19},"in_reply_to":"7aa08908_23a1a394","updated":"2016-06-09 08:52:55.000000000","message":"Yes. The method is probably supposed to operate on object fields, not db attributes.","commit_id":"a16e04a76a6112da919dd0e7606e39458e703a6e"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"2484a8d87fc504e7a364c28b96658af562684ca4","unresolved":false,"context_lines":[{"line_number":405,"context_line":"                db_obj \u003d obj_db_api.update_object("},{"line_number":406,"context_line":"                    self.obj_context, self.db_model,"},{"line_number":407,"context_line":"                    self.modify_fields_to_db(updates),"},{"line_number":408,"context_line":"                    **self.modify_fields_to_db("},{"line_number":409,"context_line":"                        self._get_composite_keys()))"},{"line_number":410,"context_line":"                self.from_db_object(db_obj)"},{"line_number":411,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_3b934efc","line":408,"updated":"2016-06-10 07:50:31.000000000","message":"oh you moved it here...I was just commented that we still need to translate the keys...","commit_id":"d4012705de27a04048b080c062095d6322a9694d"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"42e4ed432abb093087f0bbb3ee376acfc4ca6c39","unresolved":false,"context_lines":[{"line_number":405,"context_line":"                db_obj \u003d obj_db_api.update_object("},{"line_number":406,"context_line":"                    self.obj_context, self.db_model,"},{"line_number":407,"context_line":"                    self.modify_fields_to_db(updates),"},{"line_number":408,"context_line":"                    **self.modify_fields_to_db("},{"line_number":409,"context_line":"                        self._get_composite_keys()))"},{"line_number":410,"context_line":"                self.from_db_object(db_obj)"},{"line_number":411,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_5178b98f","line":408,"in_reply_to":"7aa08908_3b934efc","updated":"2016-06-10 08:13:12.000000000","message":"Yeah. I do it right before passing it into db_api. All other code in the class should work with fields, not model attrs.","commit_id":"d4012705de27a04048b080c062095d6322a9694d"}],"neutron/objects/subnetpool.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ca1f6c0ce4d1f4679c47764e1b6f27562dddaeec","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        return fields"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    @classmethod"},{"line_number":67,"context_line":"    def modify_fields_to_db(cls, fields):"},{"line_number":68,"context_line":"        result \u003d super(SubnetPool, cls).modify_fields_to_db(fields)"},{"line_number":69,"context_line":"        if \u0027prefixes\u0027 in result:"},{"line_number":70,"context_line":"            result[\u0027prefixes\u0027] \u003d ["}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_a1be41ab","line":67,"updated":"2016-06-08 21:39:38.000000000","message":"This one is actually twisted since we rely on the first argument to be an object, not class. Should we extract id from fields?","commit_id":"258ac558aa3d14e24f7102ae65d2879ce3dbd776"}],"neutron/tests/unit/objects/test_base.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"adf4545a1590f97800bc7f8172fa94ebb9b5a301","unresolved":false,"context_lines":[{"line_number":310,"context_line":"            if field not in obj_cls.synthetic_fields:"},{"line_number":311,"context_line":"                generator \u003d FIELD_TYPE_VALUE_GENERATOR_MAP[type(field_obj)]"},{"line_number":312,"context_line":"                fields[field] \u003d get_value(generator, ip_version)"},{"line_number":313,"context_line":"        obj \u003d obj_cls(None, **fields)"},{"line_number":314,"context_line":"        return obj_cls.modify_fields_to_db(fields)"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_e3831b01","line":313,"range":{"start_line":313,"start_character":8,"end_line":313,"end_character":37},"updated":"2016-06-09 08:49:44.000000000","message":"Do we need to instantiate object now?","commit_id":"a16e04a76a6112da919dd0e7606e39458e703a6e"},{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"d0a65866f28054301ec052e932fdf342fec04d46","unresolved":false,"context_lines":[{"line_number":310,"context_line":"            if field not in obj_cls.synthetic_fields:"},{"line_number":311,"context_line":"                generator \u003d FIELD_TYPE_VALUE_GENERATOR_MAP[type(field_obj)]"},{"line_number":312,"context_line":"                fields[field] \u003d get_value(generator, ip_version)"},{"line_number":313,"context_line":"        obj \u003d obj_cls(None, **fields)"},{"line_number":314,"context_line":"        return obj_cls.modify_fields_to_db(fields)"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_83acd78c","line":313,"range":{"start_line":313,"start_character":8,"end_line":313,"end_character":37},"updated":"2016-06-09 08:48:39.000000000","message":"is this line needed after conversion of modified_fields_to_db to class method?","commit_id":"a16e04a76a6112da919dd0e7606e39458e703a6e"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"b9205505b6477d2d65279b6f5736676f2ea190f8","unresolved":false,"context_lines":[{"line_number":310,"context_line":"            if field not in obj_cls.synthetic_fields:"},{"line_number":311,"context_line":"                generator \u003d FIELD_TYPE_VALUE_GENERATOR_MAP[type(field_obj)]"},{"line_number":312,"context_line":"                fields[field] \u003d get_value(generator, ip_version)"},{"line_number":313,"context_line":"        obj \u003d obj_cls(None, **fields)"},{"line_number":314,"context_line":"        return obj_cls.modify_fields_to_db(fields)"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_631a8bc7","line":313,"range":{"start_line":313,"start_character":8,"end_line":313,"end_character":37},"in_reply_to":"7aa08908_e3831b01","updated":"2016-06-09 08:52:55.000000000","message":"Oh right.","commit_id":"a16e04a76a6112da919dd0e7606e39458e703a6e"}]}
