)]}'
{"watcher/common/exception.py":[{"author":{"_account_id":20515,"name":"Tomasz Kaczynski","email":"tomasz.kaczynski@intel.com","username":"tkaczynski"},"change_message_id":"d70d3fa4ec919ccbae8d880795481f3dff277a7d","unresolved":false,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"class InvalidGoal(Invalid):"},{"line_number":154,"context_line":"    msg_fmt \u003d _(\"Goal %(goal)s is invalid\")"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"class InvalidUUID(Invalid):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a18252c_ce9842c3","line":154,"updated":"2016-04-14 06:59:08.000000000","message":"What does it really mean that the goal is invalid? I suggest to put at least a comment in the code about possible reasons.","commit_id":"8efc9dccaf84e4c1b4c9920c09fcc64d768c9c0b"}],"watcher/db/api.py":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"f9456f98a2aa4d94b4d37e3d7bdaa20016959015","unresolved":false,"context_lines":[{"line_number":106,"context_line":"                          marker\u003dNone, sort_key\u003dNone, sort_dir\u003dNone):"},{"line_number":107,"context_line":"        \"\"\"Get specific columns for matching strategies."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        Return a list of the specified columns for all goals that"},{"line_number":110,"context_line":"        match the specified filters."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        :param context: The security context"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_0b236d06","line":109,"range":{"start_line":109,"start_character":55,"end_line":109,"end_character":60},"updated":"2016-03-30 10:17:56.000000000","message":"s/goals/strategies","commit_id":"746f86dcf68197bb1c0032a0fcab4c0a60b4e2ab"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"76c07cf0a01a40f67f0fb6dbadc8f4fb514d4f54","unresolved":false,"context_lines":[{"line_number":106,"context_line":"                          marker\u003dNone, sort_key\u003dNone, sort_dir\u003dNone):"},{"line_number":107,"context_line":"        \"\"\"Get specific columns for matching strategies."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        Return a list of the specified columns for all goals that"},{"line_number":110,"context_line":"        match the specified filters."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        :param context: The security context"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_e83b8dcf","line":109,"range":{"start_line":109,"start_character":55,"end_line":109,"end_character":60},"in_reply_to":"ba0121b8_0b236d06","updated":"2016-03-30 13:01:25.000000000","message":"Done","commit_id":"746f86dcf68197bb1c0032a0fcab4c0a60b4e2ab"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"f9456f98a2aa4d94b4d37e3d7bdaa20016959015","unresolved":false,"context_lines":[{"line_number":114,"context_line":"                        Defaults to \u0027id\u0027 column when columns \u003d\u003d None."},{"line_number":115,"context_line":"        :param filters: Filters to apply. Defaults to None."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        :param limit: Maximum number of goals to return."},{"line_number":118,"context_line":"        :param marker: the last item of the previous page; we return the next"},{"line_number":119,"context_line":"                       result set."},{"line_number":120,"context_line":"        :param sort_key: Attribute by which results should be sorted."}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_4b7445fc","line":117,"range":{"start_line":117,"start_character":40,"end_line":117,"end_character":45},"updated":"2016-03-30 10:17:56.000000000","message":"ditto","commit_id":"746f86dcf68197bb1c0032a0fcab4c0a60b4e2ab"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"76c07cf0a01a40f67f0fb6dbadc8f4fb514d4f54","unresolved":false,"context_lines":[{"line_number":114,"context_line":"                        Defaults to \u0027id\u0027 column when columns \u003d\u003d None."},{"line_number":115,"context_line":"        :param filters: Filters to apply. Defaults to None."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        :param limit: Maximum number of goals to return."},{"line_number":118,"context_line":"        :param marker: the last item of the previous page; we return the next"},{"line_number":119,"context_line":"                       result set."},{"line_number":120,"context_line":"        :param sort_key: Attribute by which results should be sorted."}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_c83689e6","line":117,"range":{"start_line":117,"start_character":40,"end_line":117,"end_character":45},"in_reply_to":"ba0121b8_4b7445fc","updated":"2016-03-30 13:01:25.000000000","message":"Done","commit_id":"746f86dcf68197bb1c0032a0fcab4c0a60b4e2ab"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"f9456f98a2aa4d94b4d37e3d7bdaa20016959015","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        \"\"\"Update properties of a strategy."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        :param strategy_id: The ID of a strategy"},{"line_number":167,"context_line":"        :returns: A goal"},{"line_number":168,"context_line":"        :raises: :py:class:`~.StrategyNotFound`"},{"line_number":169,"context_line":"        :raises: :py:class:`~.Invalid`"},{"line_number":170,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_6b50295e","line":167,"range":{"start_line":167,"start_character":20,"end_line":167,"end_character":24},"updated":"2016-03-30 10:17:56.000000000","message":"ditto","commit_id":"746f86dcf68197bb1c0032a0fcab4c0a60b4e2ab"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"76c07cf0a01a40f67f0fb6dbadc8f4fb514d4f54","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        \"\"\"Update properties of a strategy."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        :param strategy_id: The ID of a strategy"},{"line_number":167,"context_line":"        :returns: A goal"},{"line_number":168,"context_line":"        :raises: :py:class:`~.StrategyNotFound`"},{"line_number":169,"context_line":"        :raises: :py:class:`~.Invalid`"},{"line_number":170,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_0831a1ec","line":167,"range":{"start_line":167,"start_character":20,"end_line":167,"end_character":24},"in_reply_to":"ba0121b8_6b50295e","updated":"2016-03-30 13:01:25.000000000","message":"Done","commit_id":"746f86dcf68197bb1c0032a0fcab4c0a60b4e2ab"},{"author":{"_account_id":6437,"name":"Susanne Balle","email":"sleipnir012@gmail.com","username":"susanne-balle"},"change_message_id":"e28553bd16ae4dce8e5210ce880efa716bd5f35f","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        :param filters: Filters to apply. Defaults to None."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        :param limit: Maximum number of strategies to return."},{"line_number":118,"context_line":"        :param marker: the last item of the previous page; we return the next"},{"line_number":119,"context_line":"                       result set."},{"line_number":120,"context_line":"        :param sort_key: Attribute by which results should be sorted."},{"line_number":121,"context_line":"        :param sort_dir: direction in which results should be sorted."}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_77c0a750","line":118,"range":{"start_line":118,"start_character":23,"end_line":118,"end_character":24},"updated":"2016-03-31 18:50:27.000000000","message":"nit The","commit_id":"27a54f4ba60f09234125aa049a1e563fe4e2b23c"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"ee123ea44ecdacf7c2f86bf757f69177fd125719","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        :param filters: Filters to apply. Defaults to None."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        :param limit: Maximum number of strategies to return."},{"line_number":118,"context_line":"        :param marker: the last item of the previous page; we return the next"},{"line_number":119,"context_line":"                       result set."},{"line_number":120,"context_line":"        :param sort_key: Attribute by which results should be sorted."},{"line_number":121,"context_line":"        :param sort_dir: direction in which results should be sorted."}],"source_content_type":"text/x-python","patch_set":3,"id":"5a18252c_b13787e2","line":118,"range":{"start_line":118,"start_character":23,"end_line":118,"end_character":24},"in_reply_to":"ba0121b8_77c0a750","updated":"2016-04-12 16:25:22.000000000","message":"Done","commit_id":"27a54f4ba60f09234125aa049a1e563fe4e2b23c"},{"author":{"_account_id":6437,"name":"Susanne Balle","email":"sleipnir012@gmail.com","username":"susanne-balle"},"change_message_id":"e28553bd16ae4dce8e5210ce880efa716bd5f35f","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        :param marker: the last item of the previous page; we return the next"},{"line_number":119,"context_line":"                       result set."},{"line_number":120,"context_line":"        :param sort_key: Attribute by which results should be sorted."},{"line_number":121,"context_line":"        :param sort_dir: direction in which results should be sorted."},{"line_number":122,"context_line":"                         (asc, desc)"},{"line_number":123,"context_line":"        :returns: A list of tuples of the specified columns."},{"line_number":124,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_57c80374","line":121,"range":{"start_line":121,"start_character":25,"end_line":121,"end_character":26},"updated":"2016-03-31 18:50:27.000000000","message":"nit: Direction","commit_id":"27a54f4ba60f09234125aa049a1e563fe4e2b23c"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"ee123ea44ecdacf7c2f86bf757f69177fd125719","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        :param marker: the last item of the previous page; we return the next"},{"line_number":119,"context_line":"                       result set."},{"line_number":120,"context_line":"        :param sort_key: Attribute by which results should be sorted."},{"line_number":121,"context_line":"        :param sort_dir: direction in which results should be sorted."},{"line_number":122,"context_line":"                         (asc, desc)"},{"line_number":123,"context_line":"        :returns: A list of tuples of the specified columns."},{"line_number":124,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a18252c_f131ffed","line":121,"range":{"start_line":121,"start_character":25,"end_line":121,"end_character":26},"in_reply_to":"ba0121b8_57c80374","updated":"2016-04-12 16:25:22.000000000","message":"Done","commit_id":"27a54f4ba60f09234125aa049a1e563fe4e2b23c"},{"author":{"_account_id":6437,"name":"Susanne Balle","email":"sleipnir012@gmail.com","username":"susanne-balle"},"change_message_id":"e28553bd16ae4dce8e5210ce880efa716bd5f35f","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    def create_strategy(self, values):"},{"line_number":128,"context_line":"        \"\"\"Create a new strategy."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        :param values: A dict containing several items used to identify"},{"line_number":131,"context_line":"                       and track the strategy. For example:"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"                       ::"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_b7ad1f9d","line":130,"range":{"start_line":130,"start_character":41,"end_line":130,"end_character":48},"updated":"2016-03-31 18:50:27.000000000","message":"nit do we need \"several\"?","commit_id":"27a54f4ba60f09234125aa049a1e563fe4e2b23c"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"ee123ea44ecdacf7c2f86bf757f69177fd125719","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    def create_strategy(self, values):"},{"line_number":128,"context_line":"        \"\"\"Create a new strategy."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        :param values: A dict containing several items used to identify"},{"line_number":131,"context_line":"                       and track the strategy. For example:"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"                       ::"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a18252c_715ccf25","line":130,"range":{"start_line":130,"start_character":41,"end_line":130,"end_character":48},"in_reply_to":"ba0121b8_b7ad1f9d","updated":"2016-04-12 16:25:22.000000000","message":"Done","commit_id":"27a54f4ba60f09234125aa049a1e563fe4e2b23c"}],"watcher/db/sqlalchemy/api.py":[{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"5498a198bb6145d3990333e01a378ee0a072f432","unresolved":false,"context_lines":[{"line_number":447,"context_line":"            try:"},{"line_number":448,"context_line":"                query.one()"},{"line_number":449,"context_line":"            except exc.NoResultFound:"},{"line_number":450,"context_line":"                raise exception.StrategyNotFound(node\u003dstrategy_id)"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"            query.delete()"},{"line_number":453,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_fda766a4","line":450,"range":{"start_line":450,"start_character":49,"end_line":450,"end_character":53},"updated":"2016-04-01 05:12:55.000000000","message":"strategy","commit_id":"27a54f4ba60f09234125aa049a1e563fe4e2b23c"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"ee123ea44ecdacf7c2f86bf757f69177fd125719","unresolved":false,"context_lines":[{"line_number":447,"context_line":"            try:"},{"line_number":448,"context_line":"                query.one()"},{"line_number":449,"context_line":"            except exc.NoResultFound:"},{"line_number":450,"context_line":"                raise exception.StrategyNotFound(node\u003dstrategy_id)"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"            query.delete()"},{"line_number":453,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a18252c_b165c7e2","line":450,"range":{"start_line":450,"start_character":49,"end_line":450,"end_character":53},"in_reply_to":"ba0121b8_fda766a4","updated":"2016-04-12 16:25:22.000000000","message":"Done","commit_id":"27a54f4ba60f09234125aa049a1e563fe4e2b23c"},{"author":{"_account_id":6437,"name":"Susanne Balle","email":"sleipnir012@gmail.com","username":"susanne-balle"},"change_message_id":"e28553bd16ae4dce8e5210ce880efa716bd5f35f","unresolved":false,"context_lines":[{"line_number":458,"context_line":""},{"line_number":459,"context_line":"        return self._do_update_strategy(strategy_id, values)"},{"line_number":460,"context_line":""},{"line_number":461,"context_line":"    def _do_update_strategy(self, strategy_id, values):"},{"line_number":462,"context_line":"        session \u003d get_session()"},{"line_number":463,"context_line":"        with session.begin():"},{"line_number":464,"context_line":"            query \u003d model_query(models.Strategy, session\u003dsession)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_f76b171c","line":461,"range":{"start_line":461,"start_character":8,"end_line":461,"end_character":9},"updated":"2016-03-31 18:50:27.000000000","message":"Just curious: is there any rule that \"internal\" functions starting with _* should be at the end? I see the next one soft_delete_strategy is not an internal function.","commit_id":"27a54f4ba60f09234125aa049a1e563fe4e2b23c"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"5498a198bb6145d3990333e01a378ee0a072f432","unresolved":false,"context_lines":[{"line_number":458,"context_line":""},{"line_number":459,"context_line":"        return self._do_update_strategy(strategy_id, values)"},{"line_number":460,"context_line":""},{"line_number":461,"context_line":"    def _do_update_strategy(self, strategy_id, values):"},{"line_number":462,"context_line":"        session \u003d get_session()"},{"line_number":463,"context_line":"        with session.begin():"},{"line_number":464,"context_line":"            query \u003d model_query(models.Strategy, session\u003dsession)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_7db236e6","line":461,"range":{"start_line":461,"start_character":8,"end_line":461,"end_character":9},"in_reply_to":"ba0121b8_f76b171c","updated":"2016-04-01 05:12:55.000000000","message":"No, not really. Sometimes it makes sense to keep the internal helper method near the caller, but it doesn\u0027t really matter.","commit_id":"27a54f4ba60f09234125aa049a1e563fe4e2b23c"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"a4938d39527a62c5cbe4d91007e6e1911201019e","unresolved":false,"context_lines":[{"line_number":204,"context_line":"        if filters is None:"},{"line_number":205,"context_line":"            filters \u003d []"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"        if \u0027id\u0027 in filters:"},{"line_number":208,"context_line":"            query \u003d query.filter_by(id\u003dfilters[\u0027id\u0027])"},{"line_number":209,"context_line":"        if \u0027uuid\u0027 in filters:"},{"line_number":210,"context_line":"            query \u003d query.filter_by(uuid\u003dfilters[\u0027uuid\u0027])"},{"line_number":211,"context_line":"        if \u0027name\u0027 in filters:"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a122d0e_6e832a05","line":208,"range":{"start_line":207,"start_character":0,"end_line":208,"end_character":53},"updated":"2016-04-18 14:42:50.000000000","message":"IMH, remove this filter key.","commit_id":"6a0ae9b57b5937f66d2b8327dedfd4a35546062e"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"055cb846da042430c17c58def56b90b74e5563f6","unresolved":false,"context_lines":[{"line_number":204,"context_line":"        if filters is None:"},{"line_number":205,"context_line":"            filters \u003d []"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"        if \u0027id\u0027 in filters:"},{"line_number":208,"context_line":"            query \u003d query.filter_by(id\u003dfilters[\u0027id\u0027])"},{"line_number":209,"context_line":"        if \u0027uuid\u0027 in filters:"},{"line_number":210,"context_line":"            query \u003d query.filter_by(uuid\u003dfilters[\u0027uuid\u0027])"},{"line_number":211,"context_line":"        if \u0027name\u0027 in filters:"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a122d0e_e266c54f","line":208,"range":{"start_line":207,"start_character":0,"end_line":208,"end_character":53},"in_reply_to":"1a122d0e_6e832a05","updated":"2016-04-20 09:37:55.000000000","message":"Done","commit_id":"6a0ae9b57b5937f66d2b8327dedfd4a35546062e"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"a4938d39527a62c5cbe4d91007e6e1911201019e","unresolved":false,"context_lines":[{"line_number":212,"context_line":"            query \u003d query.filter_by(name\u003dfilters[\u0027name\u0027])"},{"line_number":213,"context_line":"        if \u0027display_name\u0027 in filters:"},{"line_number":214,"context_line":"            query \u003d query.filter_by(display_name\u003dfilters[\u0027display_name\u0027])"},{"line_number":215,"context_line":"        if \u0027goal_id\u0027 in filters:"},{"line_number":216,"context_line":"            query \u003d query.filter_by(goal_id\u003dfilters[\u0027goal_id\u0027])"},{"line_number":217,"context_line":"        if \u0027goal_uuid\u0027 in filters:"},{"line_number":218,"context_line":"            query \u003d query.join("},{"line_number":219,"context_line":"                models.Goal,"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a122d0e_ee773a38","line":216,"range":{"start_line":215,"start_character":0,"end_line":216,"end_character":63},"updated":"2016-04-18 14:42:50.000000000","message":"ditto","commit_id":"6a0ae9b57b5937f66d2b8327dedfd4a35546062e"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"4ac6c644099f92499764a3f9f79a2ec18c6f8d3c","unresolved":false,"context_lines":[{"line_number":212,"context_line":"            query \u003d query.filter_by(name\u003dfilters[\u0027name\u0027])"},{"line_number":213,"context_line":"        if \u0027display_name\u0027 in filters:"},{"line_number":214,"context_line":"            query \u003d query.filter_by(display_name\u003dfilters[\u0027display_name\u0027])"},{"line_number":215,"context_line":"        if \u0027goal_id\u0027 in filters:"},{"line_number":216,"context_line":"            query \u003d query.filter_by(goal_id\u003dfilters[\u0027goal_id\u0027])"},{"line_number":217,"context_line":"        if \u0027goal_uuid\u0027 in filters:"},{"line_number":218,"context_line":"            query \u003d query.join("},{"line_number":219,"context_line":"                models.Goal,"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a122d0e_ea0a0a25","line":216,"range":{"start_line":215,"start_character":0,"end_line":216,"end_character":63},"in_reply_to":"1a122d0e_0262e13d","updated":"2016-04-20 14:20:27.000000000","message":"Actually it is needed for the purge (https://review.openstack.org/#/c/299539/7/watcher/db/purge.py line 265)","commit_id":"6a0ae9b57b5937f66d2b8327dedfd4a35546062e"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"055cb846da042430c17c58def56b90b74e5563f6","unresolved":false,"context_lines":[{"line_number":212,"context_line":"            query \u003d query.filter_by(name\u003dfilters[\u0027name\u0027])"},{"line_number":213,"context_line":"        if \u0027display_name\u0027 in filters:"},{"line_number":214,"context_line":"            query \u003d query.filter_by(display_name\u003dfilters[\u0027display_name\u0027])"},{"line_number":215,"context_line":"        if \u0027goal_id\u0027 in filters:"},{"line_number":216,"context_line":"            query \u003d query.filter_by(goal_id\u003dfilters[\u0027goal_id\u0027])"},{"line_number":217,"context_line":"        if \u0027goal_uuid\u0027 in filters:"},{"line_number":218,"context_line":"            query \u003d query.join("},{"line_number":219,"context_line":"                models.Goal,"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a122d0e_0262e13d","line":216,"range":{"start_line":215,"start_character":0,"end_line":216,"end_character":63},"in_reply_to":"1a122d0e_ee773a38","updated":"2016-04-20 09:37:55.000000000","message":"Done","commit_id":"6a0ae9b57b5937f66d2b8327dedfd4a35546062e"},{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"6edfefda19e0c8b1eba0e226cfe355c12ca1bd73","unresolved":false,"context_lines":[{"line_number":204,"context_line":"        if filters is None:"},{"line_number":205,"context_line":"            filters \u003d []"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"        if \u0027uuid\u0027 in filters:"},{"line_number":208,"context_line":"            query \u003d query.filter_by(uuid\u003dfilters[\u0027uuid\u0027])"},{"line_number":209,"context_line":"        if \u0027name\u0027 in filters:"},{"line_number":210,"context_line":"            query \u003d query.filter_by(name\u003dfilters[\u0027name\u0027])"},{"line_number":211,"context_line":"        if \u0027display_name\u0027 in filters:"},{"line_number":212,"context_line":"            query \u003d query.filter_by(display_name\u003dfilters[\u0027display_name\u0027])"},{"line_number":213,"context_line":"        if \u0027goal_id\u0027 in filters:"},{"line_number":214,"context_line":"            query \u003d query.filter_by(goal_id\u003dfilters[\u0027goal_id\u0027])"},{"line_number":215,"context_line":"        if \u0027goal_uuid\u0027 in filters:"},{"line_number":216,"context_line":"            query \u003d query.join("},{"line_number":217,"context_line":"                models.Goal,"},{"line_number":218,"context_line":"                models.Strategy.goal_id \u003d\u003d models.Goal.id)"},{"line_number":219,"context_line":"            query \u003d query.filter("},{"line_number":220,"context_line":"                models.Goal.uuid \u003d\u003d filters[\u0027goal_uuid\u0027])"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        query \u003d self.__add_soft_delete_mixin_filters("},{"line_number":223,"context_line":"            query, filters, models.Strategy)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a122d0e_972e1f41","line":220,"range":{"start_line":207,"start_character":8,"end_line":220,"end_character":57},"updated":"2016-04-28 11:30:28.000000000","message":"It can be taken out to some internal function:\ndef _filter_strategies(query, filters):\n    valid_filters \u003d [\u0027name\u0027, \u0027uuid\u0027, \u0027display_name\u0027, \u0027goal_id\u0027, \u0027goal_uuid\u0027]\n    for filter in valid_filters:\n        if filter in filters:\n            if filter \u003d\u003d \u0027goal_uuid\u0027:\n                ...\n            else:\n                query \u003d query.filter_by(**{filter: filters[filter]})\n\nCorrect me if I missed smth.","commit_id":"ba0e6ee02d6b3b6e257b5045d4d12d22de2a0809"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"6f5a9299c30a69c53fc6e290946c461a8b666f41","unresolved":false,"context_lines":[{"line_number":204,"context_line":"        if filters is None:"},{"line_number":205,"context_line":"            filters \u003d []"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"        if \u0027uuid\u0027 in filters:"},{"line_number":208,"context_line":"            query \u003d query.filter_by(uuid\u003dfilters[\u0027uuid\u0027])"},{"line_number":209,"context_line":"        if \u0027name\u0027 in filters:"},{"line_number":210,"context_line":"            query \u003d query.filter_by(name\u003dfilters[\u0027name\u0027])"},{"line_number":211,"context_line":"        if \u0027display_name\u0027 in filters:"},{"line_number":212,"context_line":"            query \u003d query.filter_by(display_name\u003dfilters[\u0027display_name\u0027])"},{"line_number":213,"context_line":"        if \u0027goal_id\u0027 in filters:"},{"line_number":214,"context_line":"            query \u003d query.filter_by(goal_id\u003dfilters[\u0027goal_id\u0027])"},{"line_number":215,"context_line":"        if \u0027goal_uuid\u0027 in filters:"},{"line_number":216,"context_line":"            query \u003d query.join("},{"line_number":217,"context_line":"                models.Goal,"},{"line_number":218,"context_line":"                models.Strategy.goal_id \u003d\u003d models.Goal.id)"},{"line_number":219,"context_line":"            query \u003d query.filter("},{"line_number":220,"context_line":"                models.Goal.uuid \u003d\u003d filters[\u0027goal_uuid\u0027])"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        query \u003d self.__add_soft_delete_mixin_filters("},{"line_number":223,"context_line":"            query, filters, models.Strategy)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a122d0e_44ff8e33","line":220,"range":{"start_line":207,"start_character":8,"end_line":220,"end_character":57},"in_reply_to":"1a122d0e_972e1f41","updated":"2016-05-02 08:51:37.000000000","message":"Done","commit_id":"ba0e6ee02d6b3b6e257b5045d4d12d22de2a0809"}],"watcher/db/sqlalchemy/models.py":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"f9456f98a2aa4d94b4d37e3d7bdaa20016959015","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\u003dTrue)"},{"line_number":122,"context_line":"    goal_id \u003d Column(String(63), ForeignKey(\u0027goals.id\u0027), nullable\u003dFalse)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_cbba156e","line":121,"range":{"start_line":121,"start_character":38,"end_line":121,"end_character":51},"updated":"2016-03-30 10:17:56.000000000","message":"sure ?","commit_id":"746f86dcf68197bb1c0032a0fcab4c0a60b4e2ab"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"76c07cf0a01a40f67f0fb6dbadc8f4fb514d4f54","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\u003dTrue)"},{"line_number":122,"context_line":"    goal_id \u003d Column(String(63), ForeignKey(\u0027goals.id\u0027), nullable\u003dFalse)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_085fe10e","line":121,"range":{"start_line":121,"start_character":38,"end_line":121,"end_character":51},"in_reply_to":"ba0121b8_cbba156e","updated":"2016-03-30 13:01:25.000000000","message":"Done","commit_id":"746f86dcf68197bb1c0032a0fcab4c0a60b4e2ab"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"5498a198bb6145d3990333e01a378ee0a072f432","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":"    goal_id \u003d Column(String(63), ForeignKey(\u0027goals.id\u0027), nullable\u003dFalse)"},{"line_number":123,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_fdd5a6e4","line":120,"updated":"2016-04-01 05:12:55.000000000","message":"Same comment as with Goal... seems weird to have the ID be a string. No integer ID or UUID?","commit_id":"27a54f4ba60f09234125aa049a1e563fe4e2b23c"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"ee123ea44ecdacf7c2f86bf757f69177fd125719","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":"    goal_id \u003d Column(String(63), ForeignKey(\u0027goals.id\u0027), nullable\u003dFalse)"},{"line_number":123,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a18252c_917c0b74","line":120,"in_reply_to":"ba0121b8_fdd5a6e4","updated":"2016-04-12 16:25:22.000000000","message":"Done","commit_id":"27a54f4ba60f09234125aa049a1e563fe4e2b23c"},{"author":{"_account_id":20515,"name":"Tomasz Kaczynski","email":"tomasz.kaczynski@intel.com","username":"tkaczynski"},"change_message_id":"9fd7dab9366a83754b34a143944725add5d8a41f","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        schema.UniqueConstraint(\u0027uuid\u0027, name\u003d\u0027uniq_strategies0uuid\u0027),"},{"line_number":119,"context_line":"        table_args()"},{"line_number":120,"context_line":"    )"},{"line_number":121,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":122,"context_line":"    uuid \u003d Column(String(36))"},{"line_number":123,"context_line":"    name \u003d Column(String(63), nullable\u003dFalse)"},{"line_number":124,"context_line":"    display_name \u003d Column(String(63), nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a18252c_7f3eec8c","line":121,"updated":"2016-04-14 11:35:15.000000000","message":"BTW: What is the story with these id fields? Seems like it\u0027s kind of a duplicate for uuid, which is also unique and could serve as primary/foreign key. Is this some kind of optimization to avoid large primary keys? I\u0027m just wondering if there can be some problems with it. E.g. if somebody will remove a record (id1, uuid1) from the DB and then create a new one with (id2, uuid1) for example. Can these corner cases lead to some data inconsistency? Looks like this design is asking for troubles :)","commit_id":"8efc9dccaf84e4c1b4c9920c09fcc64d768c9c0b"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"2867d78f335cc0f40eeed8be8965426ded64ca76","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        schema.UniqueConstraint(\u0027uuid\u0027, name\u003d\u0027uniq_strategies0uuid\u0027),"},{"line_number":119,"context_line":"        table_args()"},{"line_number":120,"context_line":"    )"},{"line_number":121,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":122,"context_line":"    uuid \u003d Column(String(36))"},{"line_number":123,"context_line":"    name \u003d Column(String(63), nullable\u003dFalse)"},{"line_number":124,"context_line":"    display_name \u003d Column(String(63), nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a18252c_d0556ffa","line":121,"in_reply_to":"5a18252c_7f3eec8c","updated":"2016-04-14 16:00:44.000000000","message":"The ID is used to handle the soft_delete functionality. One would change it to point at the UUID, but the thing is that because this is provided by oslo.db, the incentive is to make it more standard even though if feels duplicate info.\n\nOther than that, I agree with you...","commit_id":"8efc9dccaf84e4c1b4c9920c09fcc64d768c9c0b"},{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"6edfefda19e0c8b1eba0e226cfe355c12ca1bd73","unresolved":false,"context_lines":[{"line_number":121,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":122,"context_line":"    uuid \u003d Column(String(36))"},{"line_number":123,"context_line":"    name \u003d Column(String(63), nullable\u003dFalse)"},{"line_number":124,"context_line":"    display_name \u003d Column(String(63), nullable\u003dFalse)"},{"line_number":125,"context_line":"    goal_id \u003d Column(Integer, ForeignKey(\u0027goals.id\u0027), nullable\u003dFalse)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1a122d0e_b47d196f","line":124,"range":{"start_line":124,"start_character":4,"end_line":124,"end_character":53},"updated":"2016-04-28 11:30:28.000000000","message":"Why display_name can\u0027t be nullable?","commit_id":"ba0e6ee02d6b3b6e257b5045d4d12d22de2a0809"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"6f5a9299c30a69c53fc6e290946c461a8b666f41","unresolved":false,"context_lines":[{"line_number":121,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":122,"context_line":"    uuid \u003d Column(String(36))"},{"line_number":123,"context_line":"    name \u003d Column(String(63), nullable\u003dFalse)"},{"line_number":124,"context_line":"    display_name \u003d Column(String(63), nullable\u003dFalse)"},{"line_number":125,"context_line":"    goal_id \u003d Column(Integer, ForeignKey(\u0027goals.id\u0027), nullable\u003dFalse)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1a122d0e_4a1cde69","line":124,"range":{"start_line":124,"start_character":4,"end_line":124,"end_character":53},"in_reply_to":"1a122d0e_b47d196f","updated":"2016-05-02 08:51:37.000000000","message":"Because each strategy has to have a display name via the get_display_name() class method that they all have to implement.","commit_id":"ba0e6ee02d6b3b6e257b5045d4d12d22de2a0809"}],"watcher/objects/strategy.py":[{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"ab4a05e061e82ec870dca9d84a2599a8534fccef","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        \u0027uuid\u0027: obj_utils.str_or_none,"},{"line_number":31,"context_line":"        \u0027name\u0027: obj_utils.str_or_none,"},{"line_number":32,"context_line":"        \u0027display_name\u0027: obj_utils.str_or_none,"},{"line_number":33,"context_line":"        \u0027goal_id\u0027: obj_utils.int_or_none,"},{"line_number":34,"context_line":"    }"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a122d0e_377bcbbf","line":33,"range":{"start_line":33,"start_character":9,"end_line":33,"end_character":16},"updated":"2016-04-28 11:42:09.000000000","message":"goal_uuid","commit_id":"ba0e6ee02d6b3b6e257b5045d4d12d22de2a0809"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"6f5a9299c30a69c53fc6e290946c461a8b666f41","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        \u0027uuid\u0027: obj_utils.str_or_none,"},{"line_number":31,"context_line":"        \u0027name\u0027: obj_utils.str_or_none,"},{"line_number":32,"context_line":"        \u0027display_name\u0027: obj_utils.str_or_none,"},{"line_number":33,"context_line":"        \u0027goal_id\u0027: obj_utils.int_or_none,"},{"line_number":34,"context_line":"    }"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a122d0e_0ab2e64b","line":33,"range":{"start_line":33,"start_character":9,"end_line":33,"end_character":16},"in_reply_to":"1a122d0e_377bcbbf","updated":"2016-05-02 08:51:37.000000000","message":"No it\u0027s goal_id here because these fields should reflect the ones we see within models.py. It\u0027s only at the API level that I convert the ID foreign key fields into UUIDs.","commit_id":"ba0e6ee02d6b3b6e257b5045d4d12d22de2a0809"}],"watcher/tests/db/test_strategy.py":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"f9456f98a2aa4d94b4d37e3d7bdaa20016959015","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        with freezegun.freeze_time(self.FAKE_TODAY):"},{"line_number":47,"context_line":"            self.strategy1 \u003d utils.create_test_strategy("},{"line_number":48,"context_line":"                id\u003dself.strategy1_id, display_name\u003d\"Goal 1\","},{"line_number":49,"context_line":"                goal_id\u003dself.goal.id)"},{"line_number":50,"context_line":"        with freezegun.freeze_time(self.FAKE_OLD_DATE):"},{"line_number":51,"context_line":"            self.strategy2 \u003d utils.create_test_strategy("}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_eb139964","line":48,"range":{"start_line":48,"start_character":52,"end_line":48,"end_character":56},"updated":"2016-03-30 10:17:56.000000000","message":"s/Goal/Strategy","commit_id":"746f86dcf68197bb1c0032a0fcab4c0a60b4e2ab"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"76c07cf0a01a40f67f0fb6dbadc8f4fb514d4f54","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        with freezegun.freeze_time(self.FAKE_TODAY):"},{"line_number":47,"context_line":"            self.strategy1 \u003d utils.create_test_strategy("},{"line_number":48,"context_line":"                id\u003dself.strategy1_id, display_name\u003d\"Goal 1\","},{"line_number":49,"context_line":"                goal_id\u003dself.goal.id)"},{"line_number":50,"context_line":"        with freezegun.freeze_time(self.FAKE_OLD_DATE):"},{"line_number":51,"context_line":"            self.strategy2 \u003d utils.create_test_strategy("}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_6883fd56","line":48,"range":{"start_line":48,"start_character":52,"end_line":48,"end_character":56},"in_reply_to":"ba0121b8_eb139964","updated":"2016-03-30 13:01:25.000000000","message":"Done","commit_id":"746f86dcf68197bb1c0032a0fcab4c0a60b4e2ab"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"f9456f98a2aa4d94b4d37e3d7bdaa20016959015","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                goal_id\u003dself.goal.id)"},{"line_number":50,"context_line":"        with freezegun.freeze_time(self.FAKE_OLD_DATE):"},{"line_number":51,"context_line":"            self.strategy2 \u003d utils.create_test_strategy("},{"line_number":52,"context_line":"                id\u003dself.strategy2_id, display_name\u003d\"Goal 2\","},{"line_number":53,"context_line":"                goal_id\u003dself.goal.id)"},{"line_number":54,"context_line":"        with freezegun.freeze_time(self.FAKE_OLDER_DATE):"},{"line_number":55,"context_line":"            self.strategy3 \u003d utils.create_test_strategy("}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_cb169554","line":52,"range":{"start_line":52,"start_character":52,"end_line":52,"end_character":56},"updated":"2016-03-30 10:17:56.000000000","message":"ditto","commit_id":"746f86dcf68197bb1c0032a0fcab4c0a60b4e2ab"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"76c07cf0a01a40f67f0fb6dbadc8f4fb514d4f54","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                goal_id\u003dself.goal.id)"},{"line_number":50,"context_line":"        with freezegun.freeze_time(self.FAKE_OLD_DATE):"},{"line_number":51,"context_line":"            self.strategy2 \u003d utils.create_test_strategy("},{"line_number":52,"context_line":"                id\u003dself.strategy2_id, display_name\u003d\"Goal 2\","},{"line_number":53,"context_line":"                goal_id\u003dself.goal.id)"},{"line_number":54,"context_line":"        with freezegun.freeze_time(self.FAKE_OLDER_DATE):"},{"line_number":55,"context_line":"            self.strategy3 \u003d utils.create_test_strategy("}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_4886f965","line":52,"range":{"start_line":52,"start_character":52,"end_line":52,"end_character":56},"in_reply_to":"ba0121b8_cb169554","updated":"2016-03-30 13:01:25.000000000","message":"Done","commit_id":"746f86dcf68197bb1c0032a0fcab4c0a60b4e2ab"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"f9456f98a2aa4d94b4d37e3d7bdaa20016959015","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                goal_id\u003dself.goal.id)"},{"line_number":54,"context_line":"        with freezegun.freeze_time(self.FAKE_OLDER_DATE):"},{"line_number":55,"context_line":"            self.strategy3 \u003d utils.create_test_strategy("},{"line_number":56,"context_line":"                id\u003dself.strategy3_id, display_name\u003d\"Goal 3\","},{"line_number":57,"context_line":"                goal_id\u003dself.goal.id)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def _soft_delete_strategys(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_6b08292d","line":56,"range":{"start_line":56,"start_character":52,"end_line":56,"end_character":56},"updated":"2016-03-30 10:17:56.000000000","message":"ditto","commit_id":"746f86dcf68197bb1c0032a0fcab4c0a60b4e2ab"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"76c07cf0a01a40f67f0fb6dbadc8f4fb514d4f54","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                goal_id\u003dself.goal.id)"},{"line_number":54,"context_line":"        with freezegun.freeze_time(self.FAKE_OLDER_DATE):"},{"line_number":55,"context_line":"            self.strategy3 \u003d utils.create_test_strategy("},{"line_number":56,"context_line":"                id\u003dself.strategy3_id, display_name\u003d\"Goal 3\","},{"line_number":57,"context_line":"                goal_id\u003dself.goal.id)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def _soft_delete_strategys(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_88801148","line":56,"range":{"start_line":56,"start_character":52,"end_line":56,"end_character":56},"in_reply_to":"ba0121b8_6b08292d","updated":"2016-03-30 13:01:25.000000000","message":"Done","commit_id":"746f86dcf68197bb1c0032a0fcab4c0a60b4e2ab"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"f9456f98a2aa4d94b4d37e3d7bdaa20016959015","unresolved":false,"context_lines":[{"line_number":240,"context_line":"        for i in range(1, 6):"},{"line_number":241,"context_line":"            strategy \u003d utils.create_test_strategy("},{"line_number":242,"context_line":"                id\u003d\"STRATEGY_ID_%s\" % i,"},{"line_number":243,"context_line":"                display_name\u003d\u0027My Goal {0}\u0027.format(i))"},{"line_number":244,"context_line":"            ids.append(six.text_type(strategy[\u0027id\u0027]))"},{"line_number":245,"context_line":"        res \u003d self.dbapi.get_strategy_list(self.context)"},{"line_number":246,"context_line":"        res_ids \u003d [r.display_name for r in res]"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_8b677d24","line":243,"range":{"start_line":243,"start_character":33,"end_line":243,"end_character":37},"updated":"2016-03-30 10:17:56.000000000","message":"s/Goal/Strategy","commit_id":"746f86dcf68197bb1c0032a0fcab4c0a60b4e2ab"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"76c07cf0a01a40f67f0fb6dbadc8f4fb514d4f54","unresolved":false,"context_lines":[{"line_number":240,"context_line":"        for i in range(1, 6):"},{"line_number":241,"context_line":"            strategy \u003d utils.create_test_strategy("},{"line_number":242,"context_line":"                id\u003d\"STRATEGY_ID_%s\" % i,"},{"line_number":243,"context_line":"                display_name\u003d\u0027My Goal {0}\u0027.format(i))"},{"line_number":244,"context_line":"            ids.append(six.text_type(strategy[\u0027id\u0027]))"},{"line_number":245,"context_line":"        res \u003d self.dbapi.get_strategy_list(self.context)"},{"line_number":246,"context_line":"        res_ids \u003d [r.display_name for r in res]"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_28e90515","line":243,"range":{"start_line":243,"start_character":33,"end_line":243,"end_character":37},"in_reply_to":"ba0121b8_8b677d24","updated":"2016-03-30 13:01:25.000000000","message":"Done","commit_id":"746f86dcf68197bb1c0032a0fcab4c0a60b4e2ab"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"f9456f98a2aa4d94b4d37e3d7bdaa20016959015","unresolved":false,"context_lines":[{"line_number":249,"context_line":"    def test_get_strategy_list_with_filters(self):"},{"line_number":250,"context_line":"        strategy1 \u003d self._create_test_strategy("},{"line_number":251,"context_line":"            id\u003d\"STRATEGY_ID_1\","},{"line_number":252,"context_line":"            display_name\u003d\u0027Goal 1\u0027,"},{"line_number":253,"context_line":"        )"},{"line_number":254,"context_line":"        strategy2 \u003d self._create_test_strategy("},{"line_number":255,"context_line":"            id\u003d\"STRATEGY_ID_2\","}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_cb7175e2","line":252,"range":{"start_line":252,"start_character":26,"end_line":252,"end_character":30},"updated":"2016-03-30 10:17:56.000000000","message":"ditto","commit_id":"746f86dcf68197bb1c0032a0fcab4c0a60b4e2ab"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"76c07cf0a01a40f67f0fb6dbadc8f4fb514d4f54","unresolved":false,"context_lines":[{"line_number":249,"context_line":"    def test_get_strategy_list_with_filters(self):"},{"line_number":250,"context_line":"        strategy1 \u003d self._create_test_strategy("},{"line_number":251,"context_line":"            id\u003d\"STRATEGY_ID_1\","},{"line_number":252,"context_line":"            display_name\u003d\u0027Goal 1\u0027,"},{"line_number":253,"context_line":"        )"},{"line_number":254,"context_line":"        strategy2 \u003d self._create_test_strategy("},{"line_number":255,"context_line":"            id\u003d\"STRATEGY_ID_2\","}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_08e40139","line":252,"range":{"start_line":252,"start_character":26,"end_line":252,"end_character":30},"in_reply_to":"ba0121b8_cb7175e2","updated":"2016-03-30 13:01:25.000000000","message":"Done","commit_id":"746f86dcf68197bb1c0032a0fcab4c0a60b4e2ab"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"f9456f98a2aa4d94b4d37e3d7bdaa20016959015","unresolved":false,"context_lines":[{"line_number":253,"context_line":"        )"},{"line_number":254,"context_line":"        strategy2 \u003d self._create_test_strategy("},{"line_number":255,"context_line":"            id\u003d\"STRATEGY_ID_2\","},{"line_number":256,"context_line":"            display_name\u003d\u0027Goal 2\u0027,"},{"line_number":257,"context_line":"        )"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"        res \u003d self.dbapi.get_strategy_list("}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_2b7911c9","line":256,"range":{"start_line":256,"start_character":26,"end_line":256,"end_character":30},"updated":"2016-03-30 10:17:56.000000000","message":"ditto","commit_id":"746f86dcf68197bb1c0032a0fcab4c0a60b4e2ab"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"76c07cf0a01a40f67f0fb6dbadc8f4fb514d4f54","unresolved":false,"context_lines":[{"line_number":253,"context_line":"        )"},{"line_number":254,"context_line":"        strategy2 \u003d self._create_test_strategy("},{"line_number":255,"context_line":"            id\u003d\"STRATEGY_ID_2\","},{"line_number":256,"context_line":"            display_name\u003d\u0027Goal 2\u0027,"},{"line_number":257,"context_line":"        )"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"        res \u003d self.dbapi.get_strategy_list("}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_a8cb55a4","line":256,"range":{"start_line":256,"start_character":26,"end_line":256,"end_character":30},"in_reply_to":"ba0121b8_2b7911c9","updated":"2016-03-30 13:01:25.000000000","message":"Done","commit_id":"746f86dcf68197bb1c0032a0fcab4c0a60b4e2ab"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"f9456f98a2aa4d94b4d37e3d7bdaa20016959015","unresolved":false,"context_lines":[{"line_number":257,"context_line":"        )"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"        res \u003d self.dbapi.get_strategy_list("},{"line_number":260,"context_line":"            self.context, filters\u003d{\u0027display_name\u0027: \u0027Goal 1\u0027})"},{"line_number":261,"context_line":"        self.assertEqual([strategy1[\u0027id\u0027]], [r.id for r in res])"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"        res \u003d self.dbapi.get_strategy_list("}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_0b740dcd","line":260,"range":{"start_line":260,"start_character":52,"end_line":260,"end_character":56},"updated":"2016-03-30 10:17:56.000000000","message":"ditto","commit_id":"746f86dcf68197bb1c0032a0fcab4c0a60b4e2ab"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"76c07cf0a01a40f67f0fb6dbadc8f4fb514d4f54","unresolved":false,"context_lines":[{"line_number":257,"context_line":"        )"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"        res \u003d self.dbapi.get_strategy_list("},{"line_number":260,"context_line":"            self.context, filters\u003d{\u0027display_name\u0027: \u0027Goal 1\u0027})"},{"line_number":261,"context_line":"        self.assertEqual([strategy1[\u0027id\u0027]], [r.id for r in res])"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"        res \u003d self.dbapi.get_strategy_list("}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_88ce51b2","line":260,"range":{"start_line":260,"start_character":52,"end_line":260,"end_character":56},"in_reply_to":"ba0121b8_0b740dcd","updated":"2016-03-30 13:01:25.000000000","message":"Done","commit_id":"746f86dcf68197bb1c0032a0fcab4c0a60b4e2ab"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"f9456f98a2aa4d94b4d37e3d7bdaa20016959015","unresolved":false,"context_lines":[{"line_number":261,"context_line":"        self.assertEqual([strategy1[\u0027id\u0027]], [r.id for r in res])"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"        res \u003d self.dbapi.get_strategy_list("},{"line_number":264,"context_line":"            self.context, filters\u003d{\u0027display_name\u0027: \u0027Goal 3\u0027})"},{"line_number":265,"context_line":"        self.assertEqual([], [r.id for r in res])"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        res \u003d self.dbapi.get_strategy_list("}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_ab4b6186","line":264,"range":{"start_line":264,"start_character":52,"end_line":264,"end_character":56},"updated":"2016-03-30 10:17:56.000000000","message":"ditto","commit_id":"746f86dcf68197bb1c0032a0fcab4c0a60b4e2ab"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"76c07cf0a01a40f67f0fb6dbadc8f4fb514d4f54","unresolved":false,"context_lines":[{"line_number":261,"context_line":"        self.assertEqual([strategy1[\u0027id\u0027]], [r.id for r in res])"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"        res \u003d self.dbapi.get_strategy_list("},{"line_number":264,"context_line":"            self.context, filters\u003d{\u0027display_name\u0027: \u0027Goal 3\u0027})"},{"line_number":265,"context_line":"        self.assertEqual([], [r.id for r in res])"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        res \u003d self.dbapi.get_strategy_list("}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_e8c54d8e","line":264,"range":{"start_line":264,"start_character":52,"end_line":264,"end_character":56},"in_reply_to":"ba0121b8_ab4b6186","updated":"2016-03-30 13:01:25.000000000","message":"Done","commit_id":"746f86dcf68197bb1c0032a0fcab4c0a60b4e2ab"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"f9456f98a2aa4d94b4d37e3d7bdaa20016959015","unresolved":false,"context_lines":[{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        res \u003d self.dbapi.get_strategy_list("},{"line_number":268,"context_line":"            self.context,"},{"line_number":269,"context_line":"            filters\u003d{\u0027strategy\u0027: \u0027DUMMY\u0027})"},{"line_number":270,"context_line":"        self.assertEqual([strategy1[\u0027id\u0027], strategy2[\u0027id\u0027]],"},{"line_number":271,"context_line":"                         [r.id for r in res])"},{"line_number":272,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_163ef0b7","line":269,"range":{"start_line":269,"start_character":12,"end_line":269,"end_character":42},"updated":"2016-03-30 10:17:56.000000000","message":"should not such filter return an empty list ?","commit_id":"746f86dcf68197bb1c0032a0fcab4c0a60b4e2ab"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"76c07cf0a01a40f67f0fb6dbadc8f4fb514d4f54","unresolved":false,"context_lines":[{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        res \u003d self.dbapi.get_strategy_list("},{"line_number":268,"context_line":"            self.context,"},{"line_number":269,"context_line":"            filters\u003d{\u0027strategy\u0027: \u0027DUMMY\u0027})"},{"line_number":270,"context_line":"        self.assertEqual([strategy1[\u0027id\u0027], strategy2[\u0027id\u0027]],"},{"line_number":271,"context_line":"                         [r.id for r in res])"},{"line_number":272,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_c8e32904","line":269,"range":{"start_line":269,"start_character":12,"end_line":269,"end_character":42},"in_reply_to":"ba0121b8_163ef0b7","updated":"2016-03-30 13:01:25.000000000","message":"Done","commit_id":"746f86dcf68197bb1c0032a0fcab4c0a60b4e2ab"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"f9456f98a2aa4d94b4d37e3d7bdaa20016959015","unresolved":false,"context_lines":[{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        res \u003d self.dbapi.get_strategy_list("},{"line_number":274,"context_line":"            self.context,"},{"line_number":275,"context_line":"            filters\u003d{\u0027display_name\u0027: \u0027Goal 2\u0027})"},{"line_number":276,"context_line":"        self.assertEqual([strategy2[\u0027id\u0027]], [r.id for r in res])"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"    def test_get_strategy_by_id(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_0b5b6d55","line":275,"range":{"start_line":275,"start_character":38,"end_line":275,"end_character":42},"updated":"2016-03-30 10:17:56.000000000","message":"ditto","commit_id":"746f86dcf68197bb1c0032a0fcab4c0a60b4e2ab"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"76c07cf0a01a40f67f0fb6dbadc8f4fb514d4f54","unresolved":false,"context_lines":[{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        res \u003d self.dbapi.get_strategy_list("},{"line_number":274,"context_line":"            self.context,"},{"line_number":275,"context_line":"            filters\u003d{\u0027display_name\u0027: \u0027Goal 2\u0027})"},{"line_number":276,"context_line":"        self.assertEqual([strategy2[\u0027id\u0027]], [r.id for r in res])"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"    def test_get_strategy_by_id(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_28f3c5d7","line":275,"range":{"start_line":275,"start_character":38,"end_line":275,"end_character":42},"in_reply_to":"ba0121b8_0b5b6d55","updated":"2016-03-30 13:01:25.000000000","message":"Done","commit_id":"746f86dcf68197bb1c0032a0fcab4c0a60b4e2ab"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"f9456f98a2aa4d94b4d37e3d7bdaa20016959015","unresolved":false,"context_lines":[{"line_number":297,"context_line":"                          self.dbapi.update_strategy,"},{"line_number":298,"context_line":"                          \u0027NOT_FOUND\u0027,"},{"line_number":299,"context_line":"                          {\u0027display_name\u0027: \u0027\u0027})"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"    def test_destroy_strategy(self):"},{"line_number":302,"context_line":"        strategy \u003d self._create_test_strategy()"},{"line_number":303,"context_line":"        self.dbapi.destroy_strategy(strategy[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_f6cb7ca3","line":300,"updated":"2016-03-30 10:17:56.000000000","message":"Could you add a test that raise an exception when we try to update the id of the strategy","commit_id":"746f86dcf68197bb1c0032a0fcab4c0a60b4e2ab"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"76c07cf0a01a40f67f0fb6dbadc8f4fb514d4f54","unresolved":false,"context_lines":[{"line_number":297,"context_line":"                          self.dbapi.update_strategy,"},{"line_number":298,"context_line":"                          \u0027NOT_FOUND\u0027,"},{"line_number":299,"context_line":"                          {\u0027display_name\u0027: \u0027\u0027})"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"    def test_destroy_strategy(self):"},{"line_number":302,"context_line":"        strategy \u003d self._create_test_strategy()"},{"line_number":303,"context_line":"        self.dbapi.destroy_strategy(strategy[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_48a559b3","line":300,"in_reply_to":"ba0121b8_f6cb7ca3","updated":"2016-03-30 13:01:25.000000000","message":"Done","commit_id":"746f86dcf68197bb1c0032a0fcab4c0a60b4e2ab"}]}
