)]}'
{"watcher/db/api.py":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"68e80209a2ac6f184406579ad470e0a5d315f5b7","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"                       ::"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"                        {"},{"line_number":69,"context_line":"                         \u0027uuid\u0027: utils.generate_uuid(),"},{"line_number":70,"context_line":"                         \u0027name\u0027: \u0027example\u0027,"},{"line_number":71,"context_line":"                         \u0027description\u0027: \u0027free text description\u0027"},{"line_number":72,"context_line":"                         \u0027host_aggregate\u0027: \u0027nova aggregate name or id\u0027"},{"line_number":73,"context_line":"                         \u0027goal\u0027: \u0027DUMMY\u0027"},{"line_number":74,"context_line":"                         \u0027extra\u0027: {\u0027automatic\u0027: True}"},{"line_number":75,"context_line":"                        }"},{"line_number":76,"context_line":"        :returns: A goal"},{"line_number":77,"context_line":"        :raises: :py:class:`~.GoalAlreadyExists`"},{"line_number":78,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_7a7315b2","line":75,"range":{"start_line":68,"start_character":1,"end_line":75,"end_character":25},"updated":"2016-03-29 09:05:51.000000000","message":"not correct.","commit_id":"712326ff4dfc41ad6e3973d21352610a04aacd43"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"eededd28b716a387f96bbd819f196aac0f3b0a5b","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"                       ::"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"                        {"},{"line_number":69,"context_line":"                         \u0027uuid\u0027: utils.generate_uuid(),"},{"line_number":70,"context_line":"                         \u0027name\u0027: \u0027example\u0027,"},{"line_number":71,"context_line":"                         \u0027description\u0027: \u0027free text description\u0027"},{"line_number":72,"context_line":"                         \u0027host_aggregate\u0027: \u0027nova aggregate name or id\u0027"},{"line_number":73,"context_line":"                         \u0027goal\u0027: \u0027DUMMY\u0027"},{"line_number":74,"context_line":"                         \u0027extra\u0027: {\u0027automatic\u0027: True}"},{"line_number":75,"context_line":"                        }"},{"line_number":76,"context_line":"        :returns: A goal"},{"line_number":77,"context_line":"        :raises: :py:class:`~.GoalAlreadyExists`"},{"line_number":78,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_fe1a7216","line":75,"range":{"start_line":68,"start_character":1,"end_line":75,"end_character":25},"in_reply_to":"ba0121b8_7a7315b2","updated":"2016-03-29 12:04:03.000000000","message":"Done","commit_id":"712326ff4dfc41ad6e3973d21352610a04aacd43"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"588906df7caf426a3cdc9ddf7b6dfee0c6008724","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        match the specified filters."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        :param context: The security context"},{"line_number":46,"context_line":"        :param columns: List of column names to return."},{"line_number":47,"context_line":"                        Defaults to \u0027id\u0027 column when columns \u003d\u003d None."},{"line_number":48,"context_line":"        :param filters: Filters to apply. Defaults to None."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        :param limit: Maximum number of goals to return."}],"source_content_type":"text/x-python","patch_set":6,"id":"ba0121b8_d78d24d4","line":47,"range":{"start_line":46,"start_character":8,"end_line":47,"end_character":69},"updated":"2016-04-01 02:39:44.000000000","message":"This parameter doesn\u0027t exist.","commit_id":"1f02cd5ef467ff50fe1149d3f068d0759a53bb2f"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"588906df7caf426a3cdc9ddf7b6dfee0c6008724","unresolved":false,"context_lines":[{"line_number":142,"context_line":"                         \u0027extra\u0027: {\u0027automatic\u0027: True}"},{"line_number":143,"context_line":"                        }"},{"line_number":144,"context_line":"        :returns: An audit template."},{"line_number":145,"context_line":"        :raises: :py:class:`~.AuditTemplateAlreadyExists`"},{"line_number":146,"context_line":"        \"\"\""},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba0121b8_576f54fb","line":145,"range":{"start_line":145,"start_character":17,"end_line":145,"end_character":30},"updated":"2016-04-01 02:39:44.000000000","message":"What is this for? Sphinx?","commit_id":"1f02cd5ef467ff50fe1149d3f068d0759a53bb2f"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"1aaeb73381feca3f1df899512514d9ddf2ed3c5c","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        \"\"\""},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    @abc.abstractmethod"},{"line_number":113,"context_line":"    def update_goal(self, goal_uuid, values):"},{"line_number":114,"context_line":"        \"\"\"Update properties of a goal."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        :param goal_uuid: The UUID of a goal"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a122d0e_d55b8b84","line":113,"updated":"2016-04-27 15:23:58.000000000","message":"missing docstring values","commit_id":"41590769b903959ea42d095a8cfa090210630bcd"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"b39219c1caaab64f778f97731e5f1a8b0f2d1bde","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        \"\"\""},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    @abc.abstractmethod"},{"line_number":113,"context_line":"    def update_goal(self, goal_uuid, values):"},{"line_number":114,"context_line":"        \"\"\"Update properties of a goal."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        :param goal_uuid: The UUID of a goal"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a122d0e_421e635f","line":113,"in_reply_to":"1a122d0e_d55b8b84","updated":"2016-05-02 08:50:55.000000000","message":"Done","commit_id":"41590769b903959ea42d095a8cfa090210630bcd"}],"watcher/db/sqlalchemy/api.py":[{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"588906df7caf426a3cdc9ddf7b6dfee0c6008724","unresolved":false,"context_lines":[{"line_number":347,"context_line":"        session \u003d get_session()"},{"line_number":348,"context_line":"        with session.begin():"},{"line_number":349,"context_line":"            query \u003d model_query(models.Goal, session\u003dsession)"},{"line_number":350,"context_line":"            query \u003d query.filter_by(id\u003dgoal_id)"},{"line_number":351,"context_line":"            try:"},{"line_number":352,"context_line":"                query.one()"},{"line_number":353,"context_line":"            except exc.NoResultFound:"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba0121b8_2c1d3666","line":350,"range":{"start_line":350,"start_character":26,"end_line":350,"end_character":35},"updated":"2016-04-01 02:39:44.000000000","message":"Any reason to not use add_identity_filter here? I know right now we\u0027re assuming this is just an ID, but might end up allowing this to be a UUID in the future?","commit_id":"1f02cd5ef467ff50fe1149d3f068d0759a53bb2f"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"c6c6d1ae57ddefad1651e27be3e860588d5c69ec","unresolved":false,"context_lines":[{"line_number":347,"context_line":"        session \u003d get_session()"},{"line_number":348,"context_line":"        with session.begin():"},{"line_number":349,"context_line":"            query \u003d model_query(models.Goal, session\u003dsession)"},{"line_number":350,"context_line":"            query \u003d query.filter_by(id\u003dgoal_id)"},{"line_number":351,"context_line":"            try:"},{"line_number":352,"context_line":"                query.one()"},{"line_number":353,"context_line":"            except exc.NoResultFound:"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba0121b8_fdec86bc","line":350,"range":{"start_line":350,"start_character":26,"end_line":350,"end_character":35},"in_reply_to":"ba0121b8_2c1d3666","updated":"2016-04-01 05:13:56.000000000","message":"I see now that ID is not an integer at all, but rather a string.","commit_id":"1f02cd5ef467ff50fe1149d3f068d0759a53bb2f"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"588906df7caf426a3cdc9ddf7b6dfee0c6008724","unresolved":false,"context_lines":[{"line_number":351,"context_line":"            try:"},{"line_number":352,"context_line":"                query.one()"},{"line_number":353,"context_line":"            except exc.NoResultFound:"},{"line_number":354,"context_line":"                raise exception.GoalNotFound(node\u003dgoal_id)"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"            query.delete()"},{"line_number":357,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba0121b8_ec3dfec4","line":354,"range":{"start_line":354,"start_character":45,"end_line":354,"end_character":49},"updated":"2016-04-01 02:39:44.000000000","message":"s/node/goal","commit_id":"1f02cd5ef467ff50fe1149d3f068d0759a53bb2f"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"588906df7caf426a3cdc9ddf7b6dfee0c6008724","unresolved":false,"context_lines":[{"line_number":366,"context_line":"        session \u003d get_session()"},{"line_number":367,"context_line":"        with session.begin():"},{"line_number":368,"context_line":"            query \u003d model_query(models.Goal, session\u003dsession)"},{"line_number":369,"context_line":"            query \u003d query.filter_by(id\u003dgoal_id)"},{"line_number":370,"context_line":"            try:"},{"line_number":371,"context_line":"                ref \u003d query.with_lockmode(\u0027update\u0027).one()"},{"line_number":372,"context_line":"            except exc.NoResultFound:"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba0121b8_8c59e237","line":369,"range":{"start_line":369,"start_character":26,"end_line":369,"end_character":35},"updated":"2016-04-01 02:39:44.000000000","message":"Ditto: any reason to not use add_identity_filter here?","commit_id":"1f02cd5ef467ff50fe1149d3f068d0759a53bb2f"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"588906df7caf426a3cdc9ddf7b6dfee0c6008724","unresolved":false,"context_lines":[{"line_number":379,"context_line":"        session \u003d get_session()"},{"line_number":380,"context_line":"        with session.begin():"},{"line_number":381,"context_line":"            query \u003d model_query(models.Goal, session\u003dsession)"},{"line_number":382,"context_line":"            query \u003d query.filter_by(id\u003dgoal_id)"},{"line_number":383,"context_line":"            try:"},{"line_number":384,"context_line":"                query.one()"},{"line_number":385,"context_line":"            except exc.NoResultFound:"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba0121b8_ecb21e4b","line":382,"range":{"start_line":382,"start_character":26,"end_line":382,"end_character":35},"updated":"2016-04-01 02:39:44.000000000","message":"Same.","commit_id":"1f02cd5ef467ff50fe1149d3f068d0759a53bb2f"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"588906df7caf426a3cdc9ddf7b6dfee0c6008724","unresolved":false,"context_lines":[{"line_number":470,"context_line":"            try:"},{"line_number":471,"context_line":"                query.one()"},{"line_number":472,"context_line":"            except exc.NoResultFound:"},{"line_number":473,"context_line":"                raise exception.AuditTemplateNotFound(node\u003daudit_template_id)"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"            query.delete()"},{"line_number":476,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba0121b8_2c909694","line":473,"range":{"start_line":473,"start_character":54,"end_line":473,"end_character":58},"updated":"2016-04-01 02:39:44.000000000","message":"This is a bug, should be audit_template.","commit_id":"1f02cd5ef467ff50fe1149d3f068d0759a53bb2f"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"588906df7caf426a3cdc9ddf7b6dfee0c6008724","unresolved":false,"context_lines":[{"line_number":505,"context_line":"            try:"},{"line_number":506,"context_line":"                query.one()"},{"line_number":507,"context_line":"            except exc.NoResultFound:"},{"line_number":508,"context_line":"                raise exception.AuditTemplateNotFound(node\u003daudit_template_id)"},{"line_number":509,"context_line":""},{"line_number":510,"context_line":"            query.soft_delete()"},{"line_number":511,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba0121b8_4cefca1d","line":508,"range":{"start_line":508,"start_character":54,"end_line":508,"end_character":58},"updated":"2016-04-01 02:39:44.000000000","message":"Ditto","commit_id":"1f02cd5ef467ff50fe1149d3f068d0759a53bb2f"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"588906df7caf426a3cdc9ddf7b6dfee0c6008724","unresolved":false,"context_lines":[{"line_number":617,"context_line":"            try:"},{"line_number":618,"context_line":"                query.one()"},{"line_number":619,"context_line":"            except exc.NoResultFound:"},{"line_number":620,"context_line":"                raise exception.AuditNotFound(node\u003daudit_id)"},{"line_number":621,"context_line":""},{"line_number":622,"context_line":"            query.soft_delete()"},{"line_number":623,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba0121b8_8cf562ee","line":620,"range":{"start_line":620,"start_character":46,"end_line":620,"end_character":50},"updated":"2016-04-01 02:39:44.000000000","message":"s/node/audit","commit_id":"1f02cd5ef467ff50fe1149d3f068d0759a53bb2f"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"588906df7caf426a3cdc9ddf7b6dfee0c6008724","unresolved":false,"context_lines":[{"line_number":712,"context_line":"            try:"},{"line_number":713,"context_line":"                query.one()"},{"line_number":714,"context_line":"            except exc.NoResultFound:"},{"line_number":715,"context_line":"                raise exception.ActionNotFound(node\u003daction_id)"},{"line_number":716,"context_line":""},{"line_number":717,"context_line":"            query.soft_delete()"},{"line_number":718,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba0121b8_acc946ae","line":715,"range":{"start_line":715,"start_character":47,"end_line":715,"end_character":51},"updated":"2016-04-01 02:39:44.000000000","message":"s/node/action","commit_id":"1f02cd5ef467ff50fe1149d3f068d0759a53bb2f"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"588906df7caf426a3cdc9ddf7b6dfee0c6008724","unresolved":false,"context_lines":[{"line_number":825,"context_line":"            try:"},{"line_number":826,"context_line":"                query.one()"},{"line_number":827,"context_line":"            except exc.NoResultFound:"},{"line_number":828,"context_line":"                raise exception.ActionPlanNotFound(node\u003daction_plan_id)"},{"line_number":829,"context_line":""},{"line_number":830,"context_line":"            query.soft_delete()"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba0121b8_ecc7be93","line":828,"range":{"start_line":828,"start_character":51,"end_line":828,"end_character":55},"updated":"2016-04-01 02:39:44.000000000","message":"s/node/action_plan","commit_id":"1f02cd5ef467ff50fe1149d3f068d0759a53bb2f"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"92d564fa2d397980f4e8aa37b0052c97ec8d50c6","unresolved":false,"context_lines":[{"line_number":186,"context_line":"        if filters is None:"},{"line_number":187,"context_line":"            filters \u003d []"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"        if \u0027id\u0027 in filters:"},{"line_number":190,"context_line":"            query \u003d query.filter_by(id\u003dfilters[\u0027id\u0027])"},{"line_number":191,"context_line":"        if \u0027uuid\u0027 in filters:"},{"line_number":192,"context_line":"            query \u003d query.filter_by(uuid\u003dfilters[\u0027uuid\u0027])"},{"line_number":193,"context_line":"        if \u0027name\u0027 in filters:"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a122d0e_44273c64","line":190,"range":{"start_line":189,"start_character":8,"end_line":190,"end_character":53},"updated":"2016-04-18 09:54:24.000000000","message":"IMO, you can not filter with \u0027id\u0027 key, because this key is an internal key, not public.","commit_id":"21cdd65d52d9c8b501040ee07aad254a09855a60"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"d27b0e90167156d4403bae6a08fb4100ac8865d8","unresolved":false,"context_lines":[{"line_number":186,"context_line":"        if filters is None:"},{"line_number":187,"context_line":"            filters \u003d []"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"        if \u0027id\u0027 in filters:"},{"line_number":190,"context_line":"            query \u003d query.filter_by(id\u003dfilters[\u0027id\u0027])"},{"line_number":191,"context_line":"        if \u0027uuid\u0027 in filters:"},{"line_number":192,"context_line":"            query \u003d query.filter_by(uuid\u003dfilters[\u0027uuid\u0027])"},{"line_number":193,"context_line":"        if \u0027name\u0027 in filters:"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a122d0e_6fca1170","line":190,"range":{"start_line":189,"start_character":8,"end_line":190,"end_character":53},"in_reply_to":"1a122d0e_44273c64","updated":"2016-04-18 12:30:28.000000000","message":"True, that\u0027s a leftover from before. I removed it.","commit_id":"21cdd65d52d9c8b501040ee07aad254a09855a60"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"92d564fa2d397980f4e8aa37b0052c97ec8d50c6","unresolved":false,"context_lines":[{"line_number":388,"context_line":"    def update_goal(self, goal_uuid, values):"},{"line_number":389,"context_line":"        if \u0027uuid\u0027 in values:"},{"line_number":390,"context_line":"            raise exception.Invalid("},{"line_number":391,"context_line":"                message\u003d_(\"Cannot overwrite UUID for an existing Goal.\"))"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"        return self._do_update_goal(goal_uuid, values)"},{"line_number":394,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1a122d0e_e407687f","line":391,"range":{"start_line":391,"start_character":0,"end_line":391,"end_character":73},"updated":"2016-04-18 09:54:24.000000000","message":"missing .pot file in your patchset :)","commit_id":"21cdd65d52d9c8b501040ee07aad254a09855a60"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"d27b0e90167156d4403bae6a08fb4100ac8865d8","unresolved":false,"context_lines":[{"line_number":388,"context_line":"    def update_goal(self, goal_uuid, values):"},{"line_number":389,"context_line":"        if \u0027uuid\u0027 in values:"},{"line_number":390,"context_line":"            raise exception.Invalid("},{"line_number":391,"context_line":"                message\u003d_(\"Cannot overwrite UUID for an existing Goal.\"))"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"        return self._do_update_goal(goal_uuid, values)"},{"line_number":394,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1a122d0e_7845b06e","line":391,"range":{"start_line":391,"start_character":0,"end_line":391,"end_character":73},"in_reply_to":"1a122d0e_e407687f","updated":"2016-04-18 12:30:28.000000000","message":"I\u0027ve generate the translations in a separate PS right at the end to avoid having too many merge conflicts.","commit_id":"21cdd65d52d9c8b501040ee07aad254a09855a60"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"1aaeb73381feca3f1df899512514d9ddf2ed3c5c","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        if \u0027uuid\u0027 in filters:"},{"line_number":190,"context_line":"            query \u003d query.filter_by(uuid\u003dfilters[\u0027uuid\u0027])"},{"line_number":191,"context_line":"        if \u0027name\u0027 in filters:"},{"line_number":192,"context_line":"            query \u003d query.filter_by(name\u003dfilters[\u0027name\u0027])"},{"line_number":193,"context_line":"        if \u0027display_name\u0027 in filters:"},{"line_number":194,"context_line":"            query \u003d query.filter_by(display_name\u003dfilters[\u0027display_name\u0027])"},{"line_number":195,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a122d0e_1cd1ab57","line":192,"updated":"2016-04-27 15:23:58.000000000","message":"IMHO, We can factorize the code, if we take a look to the code bellow it is more or less the same.\nWe imagine a function on which we only  pass \u0027uuid\u0027,name,etc","commit_id":"41590769b903959ea42d095a8cfa090210630bcd"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"b39219c1caaab64f778f97731e5f1a8b0f2d1bde","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        if \u0027uuid\u0027 in filters:"},{"line_number":190,"context_line":"            query \u003d query.filter_by(uuid\u003dfilters[\u0027uuid\u0027])"},{"line_number":191,"context_line":"        if \u0027name\u0027 in filters:"},{"line_number":192,"context_line":"            query \u003d query.filter_by(name\u003dfilters[\u0027name\u0027])"},{"line_number":193,"context_line":"        if \u0027display_name\u0027 in filters:"},{"line_number":194,"context_line":"            query \u003d query.filter_by(display_name\u003dfilters[\u0027display_name\u0027])"},{"line_number":195,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a122d0e_42330362","line":192,"in_reply_to":"1a122d0e_1cd1ab57","updated":"2016-05-02 08:50:55.000000000","message":"Done","commit_id":"41590769b903959ea42d095a8cfa090210630bcd"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"1aaeb73381feca3f1df899512514d9ddf2ed3c5c","unresolved":false,"context_lines":[{"line_number":340,"context_line":"        query \u003d query.filter_by(id\u003dgoal_id)"},{"line_number":341,"context_line":"        try:"},{"line_number":342,"context_line":"            goal \u003d query.one()"},{"line_number":343,"context_line":"            if not context.show_deleted:"},{"line_number":344,"context_line":"                if goal.deleted_at is not None:"},{"line_number":345,"context_line":"                    raise exception.GoalNotFound(goal\u003dgoal_id)"},{"line_number":346,"context_line":"            return goal"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a122d0e_b5636f19","line":343,"updated":"2016-04-27 15:23:58.000000000","message":"IMHO, you can factorize the code for every get_goal_*","commit_id":"41590769b903959ea42d095a8cfa090210630bcd"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"b39219c1caaab64f778f97731e5f1a8b0f2d1bde","unresolved":false,"context_lines":[{"line_number":340,"context_line":"        query \u003d query.filter_by(id\u003dgoal_id)"},{"line_number":341,"context_line":"        try:"},{"line_number":342,"context_line":"            goal \u003d query.one()"},{"line_number":343,"context_line":"            if not context.show_deleted:"},{"line_number":344,"context_line":"                if goal.deleted_at is not None:"},{"line_number":345,"context_line":"                    raise exception.GoalNotFound(goal\u003dgoal_id)"},{"line_number":346,"context_line":"            return goal"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a122d0e_5d3e42b8","line":343,"in_reply_to":"1a122d0e_b5636f19","updated":"2016-05-02 08:50:55.000000000","message":"Done","commit_id":"41590769b903959ea42d095a8cfa090210630bcd"}],"watcher/db/sqlalchemy/models.py":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"68e80209a2ac6f184406579ad470e0a5d315f5b7","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"class Strategy(Base):"},{"line_number":114,"context_line":"    \"\"\"Represents a goal.\"\"\""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    __tablename__ \u003d \u0027strategies\u0027"},{"line_number":117,"context_line":"    __table_args__ \u003d ("}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_fa73a54b","line":114,"range":{"start_line":114,"start_character":20,"end_line":114,"end_character":24},"updated":"2016-03-29 09:05:51.000000000","message":"s/goal/strategy","commit_id":"712326ff4dfc41ad6e3973d21352610a04aacd43"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"eededd28b716a387f96bbd819f196aac0f3b0a5b","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"class Strategy(Base):"},{"line_number":114,"context_line":"    \"\"\"Represents a goal.\"\"\""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    __tablename__ \u003d \u0027strategies\u0027"},{"line_number":117,"context_line":"    __table_args__ \u003d ("}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_3ed34a3a","line":114,"range":{"start_line":114,"start_character":20,"end_line":114,"end_character":24},"in_reply_to":"ba0121b8_fa73a54b","updated":"2016-03-29 12:04:03.000000000","message":"I actually moved Strategy model to another changeset","commit_id":"712326ff4dfc41ad6e3973d21352610a04aacd43"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"5ba0e92ff4b3450a39e3247f63b646283f3de435","unresolved":false,"context_lines":[{"line_number":119,"context_line":"    )"},{"line_number":120,"context_line":"    id \u003d Column(String(63), primary_key\u003dTrue)"},{"line_number":121,"context_line":"    display_name \u003d Column(String(63), nullable\u003dTrue)"},{"line_number":122,"context_line":"    version \u003d Column(String(15), nullable\u003dTrue)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"class Goal(Base):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_a3e8e87d","line":122,"range":{"start_line":122,"start_character":0,"end_line":122,"end_character":47},"updated":"2016-03-29 09:33:44.000000000","message":"not described in the spec, and not use later. IMO, we can remove this field for now","commit_id":"712326ff4dfc41ad6e3973d21352610a04aacd43"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"eededd28b716a387f96bbd819f196aac0f3b0a5b","unresolved":false,"context_lines":[{"line_number":119,"context_line":"    )"},{"line_number":120,"context_line":"    id \u003d Column(String(63), primary_key\u003dTrue)"},{"line_number":121,"context_line":"    display_name \u003d Column(String(63), nullable\u003dTrue)"},{"line_number":122,"context_line":"    version \u003d Column(String(15), nullable\u003dTrue)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"class Goal(Base):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_7eddc241","line":122,"range":{"start_line":122,"start_character":0,"end_line":122,"end_character":47},"in_reply_to":"ba0121b8_a3e8e87d","updated":"2016-03-29 12:04:03.000000000","message":"Done","commit_id":"712326ff4dfc41ad6e3973d21352610a04aacd43"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"68e80209a2ac6f184406579ad470e0a5d315f5b7","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        table_args()"},{"line_number":131,"context_line":"    )"},{"line_number":132,"context_line":"    id \u003d Column(String(63), primary_key\u003dTrue)"},{"line_number":133,"context_line":"    display_name \u003d Column(String(63), nullable\u003dTrue)"},{"line_number":134,"context_line":"    version \u003d Column(String(15), nullable\u003dTrue)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_9a0c2996","line":133,"range":{"start_line":133,"start_character":33,"end_line":133,"end_character":35},"updated":"2016-03-29 09:05:51.000000000","message":"According to spec description (in the example), it could be longer.","commit_id":"712326ff4dfc41ad6e3973d21352610a04aacd43"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"eededd28b716a387f96bbd819f196aac0f3b0a5b","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        table_args()"},{"line_number":131,"context_line":"    )"},{"line_number":132,"context_line":"    id \u003d Column(String(63), primary_key\u003dTrue)"},{"line_number":133,"context_line":"    display_name \u003d Column(String(63), nullable\u003dTrue)"},{"line_number":134,"context_line":"    version \u003d Column(String(15), nullable\u003dTrue)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_9ee4160e","line":133,"range":{"start_line":133,"start_character":33,"end_line":133,"end_character":35},"in_reply_to":"ba0121b8_9a0c2996","updated":"2016-03-29 12:04:03.000000000","message":"I actually kept the same length as the Audit Template name to keep things consistent.","commit_id":"712326ff4dfc41ad6e3973d21352610a04aacd43"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"5ba0e92ff4b3450a39e3247f63b646283f3de435","unresolved":false,"context_lines":[{"line_number":131,"context_line":"    )"},{"line_number":132,"context_line":"    id \u003d Column(String(63), primary_key\u003dTrue)"},{"line_number":133,"context_line":"    display_name \u003d Column(String(63), nullable\u003dTrue)"},{"line_number":134,"context_line":"    version \u003d Column(String(15), nullable\u003dTrue)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"class AuditTemplate(Base):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_c3ffdc32","line":134,"range":{"start_line":134,"start_character":0,"end_line":134,"end_character":47},"updated":"2016-03-29 09:33:44.000000000","message":"ditto","commit_id":"712326ff4dfc41ad6e3973d21352610a04aacd43"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"eededd28b716a387f96bbd819f196aac0f3b0a5b","unresolved":false,"context_lines":[{"line_number":131,"context_line":"    )"},{"line_number":132,"context_line":"    id \u003d Column(String(63), primary_key\u003dTrue)"},{"line_number":133,"context_line":"    display_name \u003d Column(String(63), nullable\u003dTrue)"},{"line_number":134,"context_line":"    version \u003d Column(String(15), nullable\u003dTrue)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"class AuditTemplate(Base):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_7eb4a2f1","line":134,"range":{"start_line":134,"start_character":0,"end_line":134,"end_character":47},"in_reply_to":"ba0121b8_c3ffdc32","updated":"2016-03-29 12:04:03.000000000","message":"Done","commit_id":"712326ff4dfc41ad6e3973d21352610a04aacd43"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"588906df7caf426a3cdc9ddf7b6dfee0c6008724","unresolved":false,"context_lines":[{"line_number":117,"context_line":"    __table_args__ \u003d ("},{"line_number":118,"context_line":"        table_args()"},{"line_number":119,"context_line":"    )"},{"line_number":120,"context_line":"    id \u003d Column(String(63), primary_key\u003dTrue)"},{"line_number":121,"context_line":"    display_name \u003d Column(String(63), nullable\u003dFalse)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba0121b8_ccc2ba84","line":120,"range":{"start_line":120,"start_character":4,"end_line":120,"end_character":6},"updated":"2016-04-01 02:39:44.000000000","message":"Why is there no UUID?","commit_id":"1f02cd5ef467ff50fe1149d3f068d0759a53bb2f"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"7947ddbed8ae0b267c6bd45761c78c4333bbca24","unresolved":false,"context_lines":[{"line_number":117,"context_line":"    __table_args__ \u003d ("},{"line_number":118,"context_line":"        table_args()"},{"line_number":119,"context_line":"    )"},{"line_number":120,"context_line":"    id \u003d Column(String(63), primary_key\u003dTrue)"},{"line_number":121,"context_line":"    display_name \u003d Column(String(63), nullable\u003dFalse)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9a061dce_67ae8282","line":120,"range":{"start_line":120,"start_character":4,"end_line":120,"end_character":6},"in_reply_to":"ba0121b8_3d643eb7","updated":"2016-04-06 09:20:59.000000000","message":"Along with jed56, we actually decided to amend the specs. This spec change will add specify the need for a UUID and (integer) ID as we had to lay down the goals/strategies syncing workflow.","commit_id":"1f02cd5ef467ff50fe1149d3f068d0759a53bb2f"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"55d4707a07403cdfa808889eba14a848615556f0","unresolved":false,"context_lines":[{"line_number":117,"context_line":"    __table_args__ \u003d ("},{"line_number":118,"context_line":"        table_args()"},{"line_number":119,"context_line":"    )"},{"line_number":120,"context_line":"    id \u003d Column(String(63), primary_key\u003dTrue)"},{"line_number":121,"context_line":"    display_name \u003d Column(String(63), nullable\u003dFalse)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba0121b8_e2d5f342","line":120,"range":{"start_line":120,"start_character":4,"end_line":120,"end_character":6},"in_reply_to":"ba0121b8_3d643eb7","updated":"2016-04-01 13:34:07.000000000","message":"IMO, an ID doesn\u0027t have to be an integer: It depends of the context.","commit_id":"1f02cd5ef467ff50fe1149d3f068d0759a53bb2f"},{"author":{"_account_id":11235,"name":"Edwin Zhai","email":"edwin.zhai@intel.com","username":"gzhai"},"change_message_id":"a91bc39339b35aad91ba7b46d42db4a327b45e9d","unresolved":false,"context_lines":[{"line_number":117,"context_line":"    __table_args__ \u003d ("},{"line_number":118,"context_line":"        table_args()"},{"line_number":119,"context_line":"    )"},{"line_number":120,"context_line":"    id \u003d Column(String(63), primary_key\u003dTrue)"},{"line_number":121,"context_line":"    display_name \u003d Column(String(63), nullable\u003dFalse)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9a061dce_71a045f5","line":120,"range":{"start_line":120,"start_character":4,"end_line":120,"end_character":6},"in_reply_to":"ba0121b8_bd483ccd","updated":"2016-04-05 06:40:49.000000000","message":"Jean,\nEach goal will be loaded via stevedore? Goal object just contains name and description information without complicated method. Why load it as plugin?","commit_id":"1f02cd5ef467ff50fe1149d3f068d0759a53bb2f"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"e1fb1e6339c4d459f2b9f555095a70dba1539b0a","unresolved":false,"context_lines":[{"line_number":117,"context_line":"    __table_args__ \u003d ("},{"line_number":118,"context_line":"        table_args()"},{"line_number":119,"context_line":"    )"},{"line_number":120,"context_line":"    id \u003d Column(String(63), primary_key\u003dTrue)"},{"line_number":121,"context_line":"    display_name \u003d Column(String(63), nullable\u003dFalse)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba0121b8_3d643eb7","line":120,"range":{"start_line":120,"start_character":4,"end_line":120,"end_character":6},"in_reply_to":"ba0121b8_ccc2ba84","updated":"2016-04-01 04:56:06.000000000","message":"Also, when I think of ID, I think of an integer ID, not a string name acting as an ID.","commit_id":"1f02cd5ef467ff50fe1149d3f068d0759a53bb2f"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"55d4707a07403cdfa808889eba14a848615556f0","unresolved":false,"context_lines":[{"line_number":117,"context_line":"    __table_args__ \u003d ("},{"line_number":118,"context_line":"        table_args()"},{"line_number":119,"context_line":"    )"},{"line_number":120,"context_line":"    id \u003d Column(String(63), primary_key\u003dTrue)"},{"line_number":121,"context_line":"    display_name \u003d Column(String(63), nullable\u003dFalse)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba0121b8_bd483ccd","line":120,"range":{"start_line":120,"start_character":4,"end_line":120,"end_character":6},"in_reply_to":"ba0121b8_ccc2ba84","updated":"2016-04-01 13:34:07.000000000","message":"IMO, we didn\u0027t need to add an UUID. This table will be automatically populated by the decision_engine upon starting it. If we add an UUID field, we would have two IDs for the same thing. In fact, id is directly linked to the entry_points and by essence the entry_points are unique.\nif we add uuid, we would then have two \"primary key\" for a single table and I don\u0027t see the added value.\n\nWe want to merge this blueprint today or at worse on Monday  because many other current work are depending on this great work :","commit_id":"1f02cd5ef467ff50fe1149d3f068d0759a53bb2f"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"689b2721f5b558f65c027b68da81dd4ac6ce3322","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        table_args()"},{"line_number":119,"context_line":"    )"},{"line_number":120,"context_line":"    id \u003d Column(String(63), primary_key\u003dTrue)"},{"line_number":121,"context_line":"    display_name \u003d Column(String(63), nullable\u003dFalse)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"class AuditTemplate(Base):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a061dce_74301ce9","line":121,"updated":"2016-04-05 13:54:15.000000000","message":"We need to add an UUID to handle soft_delete.","commit_id":"1f02cd5ef467ff50fe1149d3f068d0759a53bb2f"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"588906df7caf426a3cdc9ddf7b6dfee0c6008724","unresolved":false,"context_lines":[{"line_number":119,"context_line":"    )"},{"line_number":120,"context_line":"    id \u003d Column(String(63), primary_key\u003dTrue)"},{"line_number":121,"context_line":"    display_name \u003d Column(String(63), nullable\u003dFalse)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"class AuditTemplate(Base):"},{"line_number":125,"context_line":"    \"\"\"Represents an audit template.\"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba0121b8_6c3a8e9a","line":122,"updated":"2016-04-01 02:39:44.000000000","message":"What about a description / short explanation?","commit_id":"1f02cd5ef467ff50fe1149d3f068d0759a53bb2f"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"fae1c010b2d4ddfea7d92398a3c772c1187a5bff","unresolved":false,"context_lines":[{"line_number":119,"context_line":"    )"},{"line_number":120,"context_line":"    id \u003d Column(String(63), primary_key\u003dTrue)"},{"line_number":121,"context_line":"    display_name \u003d Column(String(63), nullable\u003dFalse)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"class AuditTemplate(Base):"},{"line_number":125,"context_line":"    \"\"\"Represents an audit template.\"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba0121b8_043d90dc","line":122,"in_reply_to":"ba0121b8_3808ba27","updated":"2016-04-01 15:14:28.000000000","message":"+1, we should adress all this description translation in the same BP.","commit_id":"1f02cd5ef467ff50fe1149d3f068d0759a53bb2f"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"55d4707a07403cdfa808889eba14a848615556f0","unresolved":false,"context_lines":[{"line_number":119,"context_line":"    )"},{"line_number":120,"context_line":"    id \u003d Column(String(63), primary_key\u003dTrue)"},{"line_number":121,"context_line":"    display_name \u003d Column(String(63), nullable\u003dFalse)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"class AuditTemplate(Base):"},{"line_number":125,"context_line":"    \"\"\"Represents an audit template.\"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba0121b8_3808ba27","line":122,"in_reply_to":"ba0121b8_6c3a8e9a","updated":"2016-04-01 13:34:07.000000000","message":"yes it\u0027s a good idea. It is the same feature as https://blueprints.launchpad.net/watcher/+spec/dynamic-action-description\nWe could generalize the blueprint. What do you think ?","commit_id":"1f02cd5ef467ff50fe1149d3f068d0759a53bb2f"}],"watcher/tests/db/test_goal.py":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"68e80209a2ac6f184406579ad470e0a5d315f5b7","unresolved":false,"context_lines":[{"line_number":261,"context_line":""},{"line_number":262,"context_line":"        res \u003d self.dbapi.get_goal_list("},{"line_number":263,"context_line":"            self.context,"},{"line_number":264,"context_line":"            filters\u003d{\u0027goal\u0027: \u0027DUMMY\u0027})"},{"line_number":265,"context_line":"        self.assertEqual([goal1[\u0027id\u0027], goal2[\u0027id\u0027]],"},{"line_number":266,"context_line":"                         [r.id for r in res])"},{"line_number":267,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_880ea332","line":264,"range":{"start_line":264,"start_character":0,"end_line":264,"end_character":38},"updated":"2016-03-29 09:05:51.000000000","message":"What is this filter ?","commit_id":"712326ff4dfc41ad6e3973d21352610a04aacd43"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"eededd28b716a387f96bbd819f196aac0f3b0a5b","unresolved":false,"context_lines":[{"line_number":261,"context_line":""},{"line_number":262,"context_line":"        res \u003d self.dbapi.get_goal_list("},{"line_number":263,"context_line":"            self.context,"},{"line_number":264,"context_line":"            filters\u003d{\u0027goal\u0027: \u0027DUMMY\u0027})"},{"line_number":265,"context_line":"        self.assertEqual([goal1[\u0027id\u0027], goal2[\u0027id\u0027]],"},{"line_number":266,"context_line":"                         [r.id for r in res])"},{"line_number":267,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_fead5289","line":264,"range":{"start_line":264,"start_character":0,"end_line":264,"end_character":38},"in_reply_to":"ba0121b8_880ea332","updated":"2016-03-29 12:04:03.000000000","message":"Done","commit_id":"712326ff4dfc41ad6e3973d21352610a04aacd43"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"68e80209a2ac6f184406579ad470e0a5d315f5b7","unresolved":false,"context_lines":[{"line_number":281,"context_line":"                          self.dbapi.get_goal_by_id,"},{"line_number":282,"context_line":"                          self.context, \u0027NOT_FOUND\u0027)"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"    def test_update_goal(self):"},{"line_number":285,"context_line":"        goal \u003d self._create_test_goal()"},{"line_number":286,"context_line":"        res \u003d self.dbapi.update_goal(goal[\u0027id\u0027],"},{"line_number":287,"context_line":"                                     {\u0027display_name\u0027: \u0027updated-model\u0027})"},{"line_number":288,"context_line":"        self.assertEqual(\u0027updated-model\u0027, res.display_name)"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"    def test_update_goal_that_does_not_exist(self):"},{"line_number":291,"context_line":"        self.assertRaises(exception.GoalNotFound,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_4852cb14","line":288,"range":{"start_line":284,"start_character":0,"end_line":288,"end_character":59},"updated":"2016-03-29 09:05:51.000000000","message":"missing test : update goal ID should generate an exception","commit_id":"712326ff4dfc41ad6e3973d21352610a04aacd43"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"3af50c5db34287b3e092c4c9a8c07b1f82e84de4","unresolved":false,"context_lines":[{"line_number":281,"context_line":"                          self.dbapi.get_goal_by_id,"},{"line_number":282,"context_line":"                          self.context, \u0027NOT_FOUND\u0027)"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"    def test_update_goal(self):"},{"line_number":285,"context_line":"        goal \u003d self._create_test_goal()"},{"line_number":286,"context_line":"        res \u003d self.dbapi.update_goal(goal[\u0027id\u0027],"},{"line_number":287,"context_line":"                                     {\u0027display_name\u0027: \u0027updated-model\u0027})"},{"line_number":288,"context_line":"        self.assertEqual(\u0027updated-model\u0027, res.display_name)"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"    def test_update_goal_that_does_not_exist(self):"},{"line_number":291,"context_line":"        self.assertRaises(exception.GoalNotFound,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_3f55cf1c","line":288,"range":{"start_line":284,"start_character":0,"end_line":288,"end_character":59},"in_reply_to":"ba0121b8_2a6304b3","updated":"2016-03-30 08:58:49.000000000","message":"Vincent, you should add also a test in order to verify this part of code : \n\n    def update_goal(self, goal_id, values):\n        if \u0027id\u0027 in values:\n            raise exception.Invalid(\n                message\u003d_(\"Cannot overwrite ID for an existing Goal.\"))","commit_id":"712326ff4dfc41ad6e3973d21352610a04aacd43"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"eededd28b716a387f96bbd819f196aac0f3b0a5b","unresolved":false,"context_lines":[{"line_number":281,"context_line":"                          self.dbapi.get_goal_by_id,"},{"line_number":282,"context_line":"                          self.context, \u0027NOT_FOUND\u0027)"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"    def test_update_goal(self):"},{"line_number":285,"context_line":"        goal \u003d self._create_test_goal()"},{"line_number":286,"context_line":"        res \u003d self.dbapi.update_goal(goal[\u0027id\u0027],"},{"line_number":287,"context_line":"                                     {\u0027display_name\u0027: \u0027updated-model\u0027})"},{"line_number":288,"context_line":"        self.assertEqual(\u0027updated-model\u0027, res.display_name)"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"    def test_update_goal_that_does_not_exist(self):"},{"line_number":291,"context_line":"        self.assertRaises(exception.GoalNotFound,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_2a6304b3","line":288,"range":{"start_line":284,"start_character":0,"end_line":288,"end_character":59},"in_reply_to":"ba0121b8_4852cb14","updated":"2016-03-29 12:04:03.000000000","message":"Done","commit_id":"712326ff4dfc41ad6e3973d21352610a04aacd43"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"588906df7caf426a3cdc9ddf7b6dfee0c6008724","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"\"\"\"Tests for manipulating Goal via the DB API\"\"\""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import freezegun"},{"line_number":19,"context_line":"import six"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from watcher.common import exception"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba0121b8_6c08ceda","line":18,"range":{"start_line":18,"start_character":7,"end_line":18,"end_character":16},"updated":"2016-04-01 02:39:44.000000000","message":"Cool, this is a neat little library.","commit_id":"1f02cd5ef467ff50fe1149d3f068d0759a53bb2f"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"588906df7caf426a3cdc9ddf7b6dfee0c6008724","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        self._data_setup()"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def _data_setup(self):"},{"line_number":39,"context_line":"        gen_goal_id \u003d lambda: \"GOAL_ID_%s\" % w_utils.generate_uuid()"},{"line_number":40,"context_line":"        self.goal1_id \u003d gen_goal_id()"},{"line_number":41,"context_line":"        self.goal2_id \u003d gen_goal_id()"},{"line_number":42,"context_line":"        self.goal3_id \u003d gen_goal_id()"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba0121b8_ecea1eda","line":39,"range":{"start_line":39,"start_character":53,"end_line":39,"end_character":66},"updated":"2016-04-01 02:39:44.000000000","message":"When I think ID I think 1, 2, 3, ..., not UUIDs.","commit_id":"1f02cd5ef467ff50fe1149d3f068d0759a53bb2f"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"588906df7caf426a3cdc9ddf7b6dfee0c6008724","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def _data_setup(self):"},{"line_number":39,"context_line":"        gen_goal_id \u003d lambda: \"GOAL_ID_%s\" % w_utils.generate_uuid()"},{"line_number":40,"context_line":"        self.goal1_id \u003d gen_goal_id()"},{"line_number":41,"context_line":"        self.goal2_id \u003d gen_goal_id()"},{"line_number":42,"context_line":"        self.goal3_id \u003d gen_goal_id()"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba0121b8_ec985e7a","line":40,"range":{"start_line":40,"start_character":8,"end_line":40,"end_character":21},"updated":"2016-04-01 02:39:44.000000000","message":"These don\u0027t need to be self variables, they aren\u0027t used anywhere else.","commit_id":"1f02cd5ef467ff50fe1149d3f068d0759a53bb2f"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"588906df7caf426a3cdc9ddf7b6dfee0c6008724","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        res \u003d self.dbapi.get_goal_list("},{"line_number":78,"context_line":"            self.context, filters\u003d{\u0027deleted\u0027: True})"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        self.assertEqual([self.goal1[\u0027id\u0027]], [r.id for r in res])"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def test_get_goal_list_filter_deleted_false(self):"},{"line_number":83,"context_line":"        with freezegun.freeze_time(self.FAKE_TODAY):"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba0121b8_2cc89673","line":80,"range":{"start_line":80,"start_character":25,"end_line":80,"end_character":64},"updated":"2016-04-01 02:39:44.000000000","message":"self.assertEqual(self.goal1.id, res[0].id)\n\nis clearer IMO. Have this same comment for the other tests.\n\nAlso, why use dictionary access here but not in other places?","commit_id":"1f02cd5ef467ff50fe1149d3f068d0759a53bb2f"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"588906df7caf426a3cdc9ddf7b6dfee0c6008724","unresolved":false,"context_lines":[{"line_number":272,"context_line":""},{"line_number":273,"context_line":"    def test_get_goal_by_id(self):"},{"line_number":274,"context_line":"        goal \u003d self._create_test_goal()"},{"line_number":275,"context_line":"        goal \u003d self.dbapi.get_goal_by_id("},{"line_number":276,"context_line":"            self.context, goal[\u0027id\u0027])"},{"line_number":277,"context_line":"        self.assertEqual(goal[\u0027id\u0027], goal.id)"},{"line_number":278,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba0121b8_4cbceaba","line":275,"range":{"start_line":275,"start_character":8,"end_line":275,"end_character":12},"updated":"2016-04-01 02:39:44.000000000","message":"Needs to be a different variable name, such as goal_from_db.","commit_id":"1f02cd5ef467ff50fe1149d3f068d0759a53bb2f"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"588906df7caf426a3cdc9ddf7b6dfee0c6008724","unresolved":false,"context_lines":[{"line_number":289,"context_line":""},{"line_number":290,"context_line":"    def test_update_goal_no_id(self):"},{"line_number":291,"context_line":"        goal \u003d self._create_test_goal()"},{"line_number":292,"context_line":"        del goal[\u0027id\u0027]"},{"line_number":293,"context_line":"        self.assertRaises(exception.GoalNotFound,"},{"line_number":294,"context_line":"                          self.dbapi.update_goal, None,"},{"line_number":295,"context_line":"                          {\u0027display_name\u0027: \u0027updated-model\u0027})"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba0121b8_eccdfe66","line":292,"range":{"start_line":292,"start_character":8,"end_line":292,"end_character":22},"updated":"2016-04-01 02:39:44.000000000","message":"Why is this needed if we\u0027re passing None to update_goal anyways?","commit_id":"1f02cd5ef467ff50fe1149d3f068d0759a53bb2f"}],"watcher/tests/db/utils.py":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"68e80209a2ac6f184406579ad470e0a5d315f5b7","unresolved":false,"context_lines":[{"line_number":154,"context_line":""},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"def create_test_goal(**kwargs):"},{"line_number":157,"context_line":"    \"\"\"Create test action plan entry in DB and return Action DB object."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    Function to be used to create test Action objects in the database."},{"line_number":160,"context_line":"    :param kwargs: kwargsargs with overriding values for action\u0027s attributes."},{"line_number":161,"context_line":"    :returns: Test Action DB object."},{"line_number":162,"context_line":"    \"\"\""},{"line_number":163,"context_line":"    action \u003d get_test_goal(**kwargs)"},{"line_number":164,"context_line":"    dbapi \u003d db_api.get_instance()"},{"line_number":165,"context_line":"    return dbapi.create_goal(action)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_fd90bfee","line":162,"range":{"start_line":157,"start_character":0,"end_line":162,"end_character":7},"updated":"2016-03-29 09:05:51.000000000","message":"bad docstring","commit_id":"712326ff4dfc41ad6e3973d21352610a04aacd43"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"eededd28b716a387f96bbd819f196aac0f3b0a5b","unresolved":false,"context_lines":[{"line_number":154,"context_line":""},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"def create_test_goal(**kwargs):"},{"line_number":157,"context_line":"    \"\"\"Create test action plan entry in DB and return Action DB object."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    Function to be used to create test Action objects in the database."},{"line_number":160,"context_line":"    :param kwargs: kwargsargs with overriding values for action\u0027s attributes."},{"line_number":161,"context_line":"    :returns: Test Action DB object."},{"line_number":162,"context_line":"    \"\"\""},{"line_number":163,"context_line":"    action \u003d get_test_goal(**kwargs)"},{"line_number":164,"context_line":"    dbapi \u003d db_api.get_instance()"},{"line_number":165,"context_line":"    return dbapi.create_goal(action)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_0af280d2","line":162,"range":{"start_line":157,"start_character":0,"end_line":162,"end_character":7},"in_reply_to":"ba0121b8_fd90bfee","updated":"2016-03-29 12:04:03.000000000","message":"Done","commit_id":"712326ff4dfc41ad6e3973d21352610a04aacd43"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"588906df7caf426a3cdc9ddf7b6dfee0c6008724","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"def get_test_goal(**kwargs):"},{"line_number":146,"context_line":"    return {"},{"line_number":147,"context_line":"        \u0027id\u0027: kwargs.get(\u0027id\u0027, \u0027GOAL_ID\u0027),"},{"line_number":148,"context_line":"        \u0027display_name\u0027: kwargs.get(\u0027display_name\u0027, \u0027test goal\u0027),"},{"line_number":149,"context_line":"        \u0027version\u0027: kwargs.get(\u0027version\u0027, \u0027v1\u0027),"},{"line_number":150,"context_line":"        \u0027created_at\u0027: kwargs.get(\u0027created_at\u0027),"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba0121b8_ecd4deec","line":147,"range":{"start_line":147,"start_character":32,"end_line":147,"end_character":39},"updated":"2016-04-01 02:39:44.000000000","message":"s/GOAL_ID/1 to be more realistic?","commit_id":"1f02cd5ef467ff50fe1149d3f068d0759a53bb2f"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"588906df7caf426a3cdc9ddf7b6dfee0c6008724","unresolved":false,"context_lines":[{"line_number":160,"context_line":"    :param kwargs: kwargs which override default goal values of its attributes."},{"line_number":161,"context_line":"    :returns: Test Goal DB object."},{"line_number":162,"context_line":"    \"\"\""},{"line_number":163,"context_line":"    action \u003d get_test_goal(**kwargs)"},{"line_number":164,"context_line":"    dbapi \u003d db_api.get_instance()"},{"line_number":165,"context_line":"    return dbapi.create_goal(action)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba0121b8_0cd672f0","line":163,"range":{"start_line":163,"start_character":4,"end_line":163,"end_character":10},"updated":"2016-04-01 02:39:44.000000000","message":"goal","commit_id":"1f02cd5ef467ff50fe1149d3f068d0759a53bb2f"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"588906df7caf426a3cdc9ddf7b6dfee0c6008724","unresolved":false,"context_lines":[{"line_number":162,"context_line":"    \"\"\""},{"line_number":163,"context_line":"    action \u003d get_test_goal(**kwargs)"},{"line_number":164,"context_line":"    dbapi \u003d db_api.get_instance()"},{"line_number":165,"context_line":"    return dbapi.create_goal(action)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba0121b8_6c072e82","line":165,"range":{"start_line":165,"start_character":29,"end_line":165,"end_character":35},"updated":"2016-04-01 02:39:44.000000000","message":"goal","commit_id":"1f02cd5ef467ff50fe1149d3f068d0759a53bb2f"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"92d564fa2d397980f4e8aa37b0052c97ec8d50c6","unresolved":false,"context_lines":[{"line_number":130,"context_line":"def create_test_action_plan(**kwargs):"},{"line_number":131,"context_line":"    \"\"\"Create test action plan entry in DB and return Action DB object."},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    Function to be used to create test Action objects in the database."},{"line_number":134,"context_line":"    :param kwargs: kwargsargs with overriding values for action\u0027s attributes."},{"line_number":135,"context_line":"    :returns: Test Action DB object."},{"line_number":136,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"1a122d0e_0fea7d0f","line":133,"range":{"start_line":133,"start_character":39,"end_line":133,"end_character":45},"updated":"2016-04-18 09:54:24.000000000","message":"Action Plan","commit_id":"21cdd65d52d9c8b501040ee07aad254a09855a60"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"d27b0e90167156d4403bae6a08fb4100ac8865d8","unresolved":false,"context_lines":[{"line_number":130,"context_line":"def create_test_action_plan(**kwargs):"},{"line_number":131,"context_line":"    \"\"\"Create test action plan entry in DB and return Action DB object."},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    Function to be used to create test Action objects in the database."},{"line_number":134,"context_line":"    :param kwargs: kwargsargs with overriding values for action\u0027s attributes."},{"line_number":135,"context_line":"    :returns: Test Action DB object."},{"line_number":136,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"1a122d0e_181c7c76","line":133,"range":{"start_line":133,"start_character":39,"end_line":133,"end_character":45},"in_reply_to":"1a122d0e_0fea7d0f","updated":"2016-04-18 12:30:28.000000000","message":"Done","commit_id":"21cdd65d52d9c8b501040ee07aad254a09855a60"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"92d564fa2d397980f4e8aa37b0052c97ec8d50c6","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        \u0027uuid\u0027: kwargs.get(\u0027uuid\u0027, \u0027f7ad87ae-4298-91cf-93a0-f35a852e3652\u0027),"},{"line_number":148,"context_line":"        \u0027name\u0027: kwargs.get(\u0027name\u0027, \u0027TEST\u0027),"},{"line_number":149,"context_line":"        \u0027display_name\u0027: kwargs.get(\u0027display_name\u0027, \u0027test goal\u0027),"},{"line_number":150,"context_line":"        \u0027version\u0027: kwargs.get(\u0027version\u0027, \u0027v1\u0027),"},{"line_number":151,"context_line":"        \u0027created_at\u0027: kwargs.get(\u0027created_at\u0027),"},{"line_number":152,"context_line":"        \u0027updated_at\u0027: kwargs.get(\u0027updated_at\u0027),"},{"line_number":153,"context_line":"        \u0027deleted_at\u0027: kwargs.get(\u0027deleted_at\u0027),"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a122d0e_6f64d1e4","line":150,"range":{"start_line":150,"start_character":9,"end_line":150,"end_character":16},"updated":"2016-04-18 09:54:24.000000000","message":"What is version ?","commit_id":"21cdd65d52d9c8b501040ee07aad254a09855a60"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"d27b0e90167156d4403bae6a08fb4100ac8865d8","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        \u0027uuid\u0027: kwargs.get(\u0027uuid\u0027, \u0027f7ad87ae-4298-91cf-93a0-f35a852e3652\u0027),"},{"line_number":148,"context_line":"        \u0027name\u0027: kwargs.get(\u0027name\u0027, \u0027TEST\u0027),"},{"line_number":149,"context_line":"        \u0027display_name\u0027: kwargs.get(\u0027display_name\u0027, \u0027test goal\u0027),"},{"line_number":150,"context_line":"        \u0027version\u0027: kwargs.get(\u0027version\u0027, \u0027v1\u0027),"},{"line_number":151,"context_line":"        \u0027created_at\u0027: kwargs.get(\u0027created_at\u0027),"},{"line_number":152,"context_line":"        \u0027updated_at\u0027: kwargs.get(\u0027updated_at\u0027),"},{"line_number":153,"context_line":"        \u0027deleted_at\u0027: kwargs.get(\u0027deleted_at\u0027),"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a122d0e_afa9c97d","line":150,"range":{"start_line":150,"start_character":9,"end_line":150,"end_character":16},"in_reply_to":"1a122d0e_6f64d1e4","updated":"2016-04-18 12:30:28.000000000","message":"Done","commit_id":"21cdd65d52d9c8b501040ee07aad254a09855a60"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"1aaeb73381feca3f1df899512514d9ddf2ed3c5c","unresolved":false,"context_lines":[{"line_number":143,"context_line":""},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"def get_test_goal(**kwargs):"},{"line_number":146,"context_line":"    return {"},{"line_number":147,"context_line":"        \u0027uuid\u0027: kwargs.get(\u0027uuid\u0027, \u0027f7ad87ae-4298-91cf-93a0-f35a852e3652\u0027),"},{"line_number":148,"context_line":"        \u0027name\u0027: kwargs.get(\u0027name\u0027, \u0027TEST\u0027),"},{"line_number":149,"context_line":"        \u0027display_name\u0027: kwargs.get(\u0027display_name\u0027, \u0027test goal\u0027),"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a122d0e_7966f1ed","line":146,"updated":"2016-04-27 15:23:58.000000000","message":"The field id is missing :\n\u0027id\u0027: kwargs.get(\u0027id\u0027, 1)","commit_id":"41590769b903959ea42d095a8cfa090210630bcd"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"b39219c1caaab64f778f97731e5f1a8b0f2d1bde","unresolved":false,"context_lines":[{"line_number":143,"context_line":""},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"def get_test_goal(**kwargs):"},{"line_number":146,"context_line":"    return {"},{"line_number":147,"context_line":"        \u0027uuid\u0027: kwargs.get(\u0027uuid\u0027, \u0027f7ad87ae-4298-91cf-93a0-f35a852e3652\u0027),"},{"line_number":148,"context_line":"        \u0027name\u0027: kwargs.get(\u0027name\u0027, \u0027TEST\u0027),"},{"line_number":149,"context_line":"        \u0027display_name\u0027: kwargs.get(\u0027display_name\u0027, \u0027test goal\u0027),"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a122d0e_7dc69e9a","line":146,"in_reply_to":"1a122d0e_7966f1ed","updated":"2016-05-02 08:50:55.000000000","message":"Done","commit_id":"41590769b903959ea42d095a8cfa090210630bcd"}]}
