)]}'
{"watcher/api/controllers/v1/audit_template.py":[{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"ec9e65de5ec362504e19c9878e9e1f7dcfe73c0d","unresolved":false,"context_lines":[{"line_number":166,"context_line":"        available_strategies \u003d objects.Strategy.list("},{"line_number":167,"context_line":"            context_utils.make_context())"},{"line_number":168,"context_line":"        available_strategies \u003d [s.id for s in available_strategies]"},{"line_number":169,"context_line":"        if new_strategy and new_strategy not in available_strategies:"},{"line_number":170,"context_line":"            raise exception.InvalidStrategy(strategy_id\u003dnew_strategy)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_dd29c2e7","line":169,"range":{"start_line":169,"start_character":8,"end_line":169,"end_character":23},"updated":"2016-04-01 05:19:50.000000000","message":"What happens if new_strategy is None? Wouldn\u0027t this still be considered an invalid strategy?","commit_id":"3176bb5a2c8cc8949d9441401910821f559b54db"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"34ea7d1df274ed1780ce4bef9961ffc94dc5d091","unresolved":false,"context_lines":[{"line_number":166,"context_line":"        available_strategies \u003d objects.Strategy.list("},{"line_number":167,"context_line":"            context_utils.make_context())"},{"line_number":168,"context_line":"        available_strategies \u003d [s.id for s in available_strategies]"},{"line_number":169,"context_line":"        if new_strategy and new_strategy not in available_strategies:"},{"line_number":170,"context_line":"            raise exception.InvalidStrategy(strategy_id\u003dnew_strategy)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_6c5c474b","line":169,"range":{"start_line":169,"start_character":8,"end_line":169,"end_character":23},"in_reply_to":"ba0121b8_dd29c2e7","updated":"2016-04-12 16:25:33.000000000","message":"Actually no, this would still be a valid audit template. The idea here is that the admin can either explicitly choose the strategy to perform or simply choose a goal and let Watcher itself decide which one out of the strategies available for this goals suits best (based on efficacy indicator?).\nThe way I did it for now is that if you do not set a strategy, the StrategySelector will pick the first strategy available for this goal.","commit_id":"3176bb5a2c8cc8949d9441401910821f559b54db"}],"watcher/common/exception.py":[{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"ec9e65de5ec362504e19c9878e9e1f7dcfe73c0d","unresolved":false,"context_lines":[{"line_number":150,"context_line":"    msg_fmt \u003d _(\"Expected an uuid or int but received %(identity)s\")"},{"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 not available\")"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"class InvalidStrategy(Invalid):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_5d7c92eb","line":154,"range":{"start_line":153,"start_character":0,"end_line":154,"end_character":49},"updated":"2016-04-01 05:19:50.000000000","message":"Should this be GoalNotAvailable then?","commit_id":"3176bb5a2c8cc8949d9441401910821f559b54db"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"34ea7d1df274ed1780ce4bef9961ffc94dc5d091","unresolved":false,"context_lines":[{"line_number":150,"context_line":"    msg_fmt \u003d _(\"Expected an uuid or int but received %(identity)s\")"},{"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 not available\")"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"class InvalidStrategy(Invalid):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_ac293f9d","line":154,"range":{"start_line":153,"start_character":0,"end_line":154,"end_character":49},"in_reply_to":"ba0121b8_5d7c92eb","updated":"2016-04-12 16:25:33.000000000","message":"I\u0027ll change the message then","commit_id":"3176bb5a2c8cc8949d9441401910821f559b54db"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"ec9e65de5ec362504e19c9878e9e1f7dcfe73c0d","unresolved":false,"context_lines":[{"line_number":154,"context_line":"    msg_fmt \u003d _(\"Goal %(goal)s is not available\")"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"class InvalidStrategy(Invalid):"},{"line_number":158,"context_line":"    msg_fmt \u003d _(\"Strategy %(strategy_id)s is not available\")"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_3d7f1ee1","line":157,"range":{"start_line":157,"start_character":6,"end_line":157,"end_character":21},"updated":"2016-04-01 05:19:50.000000000","message":"Ditto","commit_id":"3176bb5a2c8cc8949d9441401910821f559b54db"}],"watcher/db/purge.py":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"156c1f40b877a1c26c561dfd4822fa5d87054ab2","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        orphans.audit_templates \u003d ["},{"line_number":202,"context_line":"            audit_template for audit_template in audit_templates"},{"line_number":203,"context_line":"            if audit_template.goal_id not in goal_ids or"},{"line_number":204,"context_line":"            audit_template.strategy_id not in strategy_ids]"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"        audit_template_ids \u003d [at.id for at in ("},{"line_number":207,"context_line":"            at for at in audit_templates if at not in orphans.audit_templates)]"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_d94e2b6e","line":204,"range":{"start_line":204,"start_character":12,"end_line":204,"end_character":58},"updated":"2016-03-31 09:46:34.000000000","message":"is it not : \n\n(audit_template.strategy_id and audit_template.strategy_id not in strategy_ids) ?","commit_id":"b32ec5de4adb52e00afbe1973ae409da327bce46"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"82fd061fab9d9b104a973802c371ee5193ec8f5c","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        orphans.audit_templates \u003d ["},{"line_number":202,"context_line":"            audit_template for audit_template in audit_templates"},{"line_number":203,"context_line":"            if audit_template.goal_id not in goal_ids or"},{"line_number":204,"context_line":"            audit_template.strategy_id not in strategy_ids]"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"        audit_template_ids \u003d [at.id for at in ("},{"line_number":207,"context_line":"            at for at in audit_templates if at not in orphans.audit_templates)]"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_9698f6c1","line":204,"range":{"start_line":204,"start_character":12,"end_line":204,"end_character":58},"in_reply_to":"ba0121b8_d94e2b6e","updated":"2016-03-31 12:36:02.000000000","message":"Done","commit_id":"b32ec5de4adb52e00afbe1973ae409da327bce46"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"156c1f40b877a1c26c561dfd4822fa5d87054ab2","unresolved":false,"context_lines":[{"line_number":203,"context_line":"            if audit_template.goal_id not in goal_ids or"},{"line_number":204,"context_line":"            audit_template.strategy_id not in strategy_ids]"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"        audit_template_ids \u003d [at.id for at in ("},{"line_number":207,"context_line":"            at for at in audit_templates if at not in orphans.audit_templates)]"},{"line_number":208,"context_line":"        orphans.audits \u003d ["},{"line_number":209,"context_line":"            audit for audit in audits"},{"line_number":210,"context_line":"            if audit.audit_template_id not in audit_template_ids]"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_f9adef9b","line":207,"range":{"start_line":206,"start_character":8,"end_line":207,"end_character":79},"updated":"2016-03-31 09:46:34.000000000","message":"why not :\n\naudit_template_ids \u003d [at.id for at in audit_templates if at not in orphans.audit_templates] ?","commit_id":"b32ec5de4adb52e00afbe1973ae409da327bce46"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"82fd061fab9d9b104a973802c371ee5193ec8f5c","unresolved":false,"context_lines":[{"line_number":203,"context_line":"            if audit_template.goal_id not in goal_ids or"},{"line_number":204,"context_line":"            audit_template.strategy_id not in strategy_ids]"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"        audit_template_ids \u003d [at.id for at in ("},{"line_number":207,"context_line":"            at for at in audit_templates if at not in orphans.audit_templates)]"},{"line_number":208,"context_line":"        orphans.audits \u003d ["},{"line_number":209,"context_line":"            audit for audit in audits"},{"line_number":210,"context_line":"            if audit.audit_template_id not in audit_template_ids]"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_764a8227","line":207,"range":{"start_line":206,"start_character":8,"end_line":207,"end_character":79},"in_reply_to":"ba0121b8_f9adef9b","updated":"2016-03-31 12:36:02.000000000","message":"Done","commit_id":"b32ec5de4adb52e00afbe1973ae409da327bce46"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"156c1f40b877a1c26c561dfd4822fa5d87054ab2","unresolved":false,"context_lines":[{"line_number":267,"context_line":"            filters.update(dict(goal_id\u003dgoal.id))"},{"line_number":268,"context_line":"            related_objs \u003d WatcherObjectsMap()"},{"line_number":269,"context_line":"            related_objs.strategies \u003d self._find_strategies(filters)"},{"line_number":270,"context_line":"            related_objs.audit_templates \u003d self._find_audit_templates(filters)"},{"line_number":271,"context_line":"            objects_map +\u003d related_objs"},{"line_number":272,"context_line":"        for strategy in objects_map.strategies:"},{"line_number":273,"context_line":"            filters \u003d {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_39f7678c","line":270,"range":{"start_line":270,"start_character":0,"end_line":270,"end_character":78},"updated":"2016-03-31 09:46:34.000000000","message":"really need here? don\u0027t we have the same thing below with objects_map.strategies ?","commit_id":"b32ec5de4adb52e00afbe1973ae409da327bce46"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"82fd061fab9d9b104a973802c371ee5193ec8f5c","unresolved":false,"context_lines":[{"line_number":267,"context_line":"            filters.update(dict(goal_id\u003dgoal.id))"},{"line_number":268,"context_line":"            related_objs \u003d WatcherObjectsMap()"},{"line_number":269,"context_line":"            related_objs.strategies \u003d self._find_strategies(filters)"},{"line_number":270,"context_line":"            related_objs.audit_templates \u003d self._find_audit_templates(filters)"},{"line_number":271,"context_line":"            objects_map +\u003d related_objs"},{"line_number":272,"context_line":"        for strategy in objects_map.strategies:"},{"line_number":273,"context_line":"            filters \u003d {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_76f8c2c3","line":270,"range":{"start_line":270,"start_character":0,"end_line":270,"end_character":78},"in_reply_to":"ba0121b8_39f7678c","updated":"2016-03-31 12:36:02.000000000","message":"Yes because here we filter if by goal_id whereas below, audit_templates are then filtered by strategy_id.\n\nWe currently cannot express an OR statement using filters.","commit_id":"b32ec5de4adb52e00afbe1973ae409da327bce46"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"156c1f40b877a1c26c561dfd4822fa5d87054ab2","unresolved":false,"context_lines":[{"line_number":347,"context_line":"                strategy.id for strategy in related_objs.strategies]"},{"line_number":348,"context_line":"            related_objs.audit_templates \u003d ["},{"line_number":349,"context_line":"                at for at in self._objects_map.audit_templates"},{"line_number":350,"context_line":"                if at.goal_id in goal_ids or at.strategy_id in strategy_ids"},{"line_number":351,"context_line":"            ]"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"            # audits"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_f985efce","line":350,"range":{"start_line":350,"start_character":45,"end_line":350,"end_character":75},"updated":"2016-03-31 09:46:34.000000000","message":"strategy_id is optional: \n(at.strategy_id and at.strategy_id in strategy_ids)","commit_id":"b32ec5de4adb52e00afbe1973ae409da327bce46"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"82fd061fab9d9b104a973802c371ee5193ec8f5c","unresolved":false,"context_lines":[{"line_number":347,"context_line":"                strategy.id for strategy in related_objs.strategies]"},{"line_number":348,"context_line":"            related_objs.audit_templates \u003d ["},{"line_number":349,"context_line":"                at for at in self._objects_map.audit_templates"},{"line_number":350,"context_line":"                if at.goal_id in goal_ids or at.strategy_id in strategy_ids"},{"line_number":351,"context_line":"            ]"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"            # audits"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_56977e39","line":350,"range":{"start_line":350,"start_character":45,"end_line":350,"end_character":75},"in_reply_to":"ba0121b8_f985efce","updated":"2016-03-31 12:36:02.000000000","message":"Done","commit_id":"b32ec5de4adb52e00afbe1973ae409da327bce46"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"6825e15cf00703705ff24cf94893651867ab2465","unresolved":false,"context_lines":[{"line_number":211,"context_line":"            if audit.audit_template_id not in audit_template_ids]"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        # Objects with orphan parents are themselves orphans"},{"line_number":214,"context_line":"        audit_ids \u003d [audit.id for audit in (a for a in audits"},{"line_number":215,"context_line":"                                            if a not in orphans.audits)]"},{"line_number":216,"context_line":"        orphans.action_plans \u003d ["},{"line_number":217,"context_line":"            ap for ap in action_plans"},{"line_number":218,"context_line":"            if ap.audit_id not in audit_ids]"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_ade952b9","line":215,"range":{"start_line":214,"start_character":20,"end_line":215,"end_character":72},"updated":"2016-03-31 19:23:29.000000000","message":"imo, you can simplify it","commit_id":"3176bb5a2c8cc8949d9441401910821f559b54db"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"34ea7d1df274ed1780ce4bef9961ffc94dc5d091","unresolved":false,"context_lines":[{"line_number":211,"context_line":"            if audit.audit_template_id not in audit_template_ids]"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        # Objects with orphan parents are themselves orphans"},{"line_number":214,"context_line":"        audit_ids \u003d [audit.id for audit in (a for a in audits"},{"line_number":215,"context_line":"                                            if a not in orphans.audits)]"},{"line_number":216,"context_line":"        orphans.action_plans \u003d ["},{"line_number":217,"context_line":"            ap for ap in action_plans"},{"line_number":218,"context_line":"            if ap.audit_id not in audit_ids]"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a18252c_56b6e9dc","line":215,"range":{"start_line":214,"start_character":20,"end_line":215,"end_character":72},"in_reply_to":"ba0121b8_ade952b9","updated":"2016-04-12 16:25:33.000000000","message":"Done","commit_id":"3176bb5a2c8cc8949d9441401910821f559b54db"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"6825e15cf00703705ff24cf94893651867ab2465","unresolved":false,"context_lines":[{"line_number":218,"context_line":"            if ap.audit_id not in audit_ids]"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"        # Objects with orphan parents are themselves orphans"},{"line_number":221,"context_line":"        action_plan_ids \u003d [ap.id for ap in (a for a in action_plans"},{"line_number":222,"context_line":"                                            if a not in orphans.action_plans)]"},{"line_number":223,"context_line":"        orphans.actions \u003d ["},{"line_number":224,"context_line":"            action for action in actions"},{"line_number":225,"context_line":"            if action.action_plan_id not in action_plan_ids]"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_cdfda66f","line":222,"range":{"start_line":221,"start_character":27,"end_line":222,"end_character":78},"updated":"2016-03-31 19:23:29.000000000","message":"ditto\nplease check other similar loops ;)","commit_id":"3176bb5a2c8cc8949d9441401910821f559b54db"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"34ea7d1df274ed1780ce4bef9961ffc94dc5d091","unresolved":false,"context_lines":[{"line_number":218,"context_line":"            if ap.audit_id not in audit_ids]"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"        # Objects with orphan parents are themselves orphans"},{"line_number":221,"context_line":"        action_plan_ids \u003d [ap.id for ap in (a for a in action_plans"},{"line_number":222,"context_line":"                                            if a not in orphans.action_plans)]"},{"line_number":223,"context_line":"        orphans.actions \u003d ["},{"line_number":224,"context_line":"            action for action in actions"},{"line_number":225,"context_line":"            if action.action_plan_id not in action_plan_ids]"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a18252c_36bb6dc6","line":222,"range":{"start_line":221,"start_character":27,"end_line":222,"end_character":78},"in_reply_to":"ba0121b8_cdfda66f","updated":"2016-04-12 16:25:33.000000000","message":"Done","commit_id":"3176bb5a2c8cc8949d9441401910821f559b54db"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"7de27cdddd73907638362b19c798feba7a55e877","unresolved":false,"context_lines":[{"line_number":264,"context_line":"            related_objs \u003d WatcherObjectsMap()"},{"line_number":265,"context_line":"            related_objs.strategies \u003d self._find_strategies(filters)"},{"line_number":266,"context_line":"            related_objs.audit_templates \u003d self._find_audit_templates(filters)"},{"line_number":267,"context_line":"            objects_map +\u003d related_objs"},{"line_number":268,"context_line":"        for strategy in objects_map.strategies:"},{"line_number":269,"context_line":"            filters \u003d {}"},{"line_number":270,"context_line":"            filters.update(base_filters)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a122d0e_28126109","line":267,"updated":"2016-04-20 09:19:40.000000000","message":"please add a blank line","commit_id":"cfca236918ceade76f750b464a3d23d5a1b16d97"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"4cdec37953acc01e9c1d689f94248ae977369d07","unresolved":false,"context_lines":[{"line_number":264,"context_line":"            related_objs \u003d WatcherObjectsMap()"},{"line_number":265,"context_line":"            related_objs.strategies \u003d self._find_strategies(filters)"},{"line_number":266,"context_line":"            related_objs.audit_templates \u003d self._find_audit_templates(filters)"},{"line_number":267,"context_line":"            objects_map +\u003d related_objs"},{"line_number":268,"context_line":"        for strategy in objects_map.strategies:"},{"line_number":269,"context_line":"            filters \u003d {}"},{"line_number":270,"context_line":"            filters.update(base_filters)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a122d0e_3a20d5f6","line":267,"in_reply_to":"1a122d0e_28126109","updated":"2016-04-20 13:37:39.000000000","message":"Done","commit_id":"cfca236918ceade76f750b464a3d23d5a1b16d97"}],"watcher/tests/db/test_purge.py":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"156c1f40b877a1c26c561dfd4822fa5d87054ab2","unresolved":false,"context_lines":[{"line_number":244,"context_line":"        with freezegun.freeze_time(self.fake_today):"},{"line_number":245,"context_line":"            # orphan audit"},{"line_number":246,"context_line":"            audit_template4 \u003d obj_utils.create_test_audit("},{"line_number":247,"context_line":"                self.context, goal_id\u003d\"404_NOT_FOUND\",  # Does not exist"},{"line_number":248,"context_line":"                name\u003dself.generate_unique_name(prefix\u003d\"Audit Template 4 \"),"},{"line_number":249,"context_line":"                strategy_id\u003dNone, id\u003dself._generate_id(), uuid\u003dNone)"},{"line_number":250,"context_line":"            audit4 \u003d obj_utils.create_test_audit_template("}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_b969b7fb","line":247,"range":{"start_line":247,"start_character":39,"end_line":247,"end_character":52},"updated":"2016-03-31 09:46:34.000000000","message":"IMO, it is not a very good ID :) it is a HTTP error code.","commit_id":"b32ec5de4adb52e00afbe1973ae409da327bce46"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"82fd061fab9d9b104a973802c371ee5193ec8f5c","unresolved":false,"context_lines":[{"line_number":244,"context_line":"        with freezegun.freeze_time(self.fake_today):"},{"line_number":245,"context_line":"            # orphan audit"},{"line_number":246,"context_line":"            audit_template4 \u003d obj_utils.create_test_audit("},{"line_number":247,"context_line":"                self.context, goal_id\u003d\"404_NOT_FOUND\",  # Does not exist"},{"line_number":248,"context_line":"                name\u003dself.generate_unique_name(prefix\u003d\"Audit Template 4 \"),"},{"line_number":249,"context_line":"                strategy_id\u003dNone, id\u003dself._generate_id(), uuid\u003dNone)"},{"line_number":250,"context_line":"            audit4 \u003d obj_utils.create_test_audit_template("}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_d656ee28","line":247,"range":{"start_line":247,"start_character":39,"end_line":247,"end_character":52},"in_reply_to":"ba0121b8_b969b7fb","updated":"2016-03-31 12:36:02.000000000","message":"Done","commit_id":"b32ec5de4adb52e00afbe1973ae409da327bce46"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"7de27cdddd73907638362b19c798feba7a55e877","unresolved":false,"context_lines":[{"line_number":202,"context_line":"            self.cmd.execute()"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        # The 1\u0027s and the 2\u0027s are purgeable (due to age of day set to 0),"},{"line_number":205,"context_line":"        # but max_number \u003d 5, and because of no Db integrity violation, we"},{"line_number":206,"context_line":"        # should be able to purge only 4 objects."},{"line_number":207,"context_line":"        self.assertEqual(m_destroy_goal.call_count, 1)"},{"line_number":208,"context_line":"        self.assertEqual(m_destroy_strategy.call_count, 1)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a122d0e_73cd6a84","line":205,"range":{"start_line":205,"start_character":27,"end_line":205,"end_character":28},"updated":"2016-04-20 09:19:40.000000000","message":"10","commit_id":"cfca236918ceade76f750b464a3d23d5a1b16d97"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"4cdec37953acc01e9c1d689f94248ae977369d07","unresolved":false,"context_lines":[{"line_number":202,"context_line":"            self.cmd.execute()"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        # The 1\u0027s and the 2\u0027s are purgeable (due to age of day set to 0),"},{"line_number":205,"context_line":"        # but max_number \u003d 5, and because of no Db integrity violation, we"},{"line_number":206,"context_line":"        # should be able to purge only 4 objects."},{"line_number":207,"context_line":"        self.assertEqual(m_destroy_goal.call_count, 1)"},{"line_number":208,"context_line":"        self.assertEqual(m_destroy_strategy.call_count, 1)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a122d0e_ba598590","line":205,"range":{"start_line":205,"start_character":27,"end_line":205,"end_character":28},"in_reply_to":"1a122d0e_73cd6a84","updated":"2016-04-20 13:37:39.000000000","message":"Done","commit_id":"cfca236918ceade76f750b464a3d23d5a1b16d97"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"7de27cdddd73907638362b19c798feba7a55e877","unresolved":false,"context_lines":[{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        # The 1\u0027s and the 2\u0027s are purgeable (due to age of day set to 0),"},{"line_number":205,"context_line":"        # but max_number \u003d 5, and because of no Db integrity violation, we"},{"line_number":206,"context_line":"        # should be able to purge only 4 objects."},{"line_number":207,"context_line":"        self.assertEqual(m_destroy_goal.call_count, 1)"},{"line_number":208,"context_line":"        self.assertEqual(m_destroy_strategy.call_count, 1)"},{"line_number":209,"context_line":"        self.assertEqual(m_destroy_audit_template.call_count, 1)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a122d0e_b3c38256","line":206,"range":{"start_line":206,"start_character":39,"end_line":206,"end_character":40},"updated":"2016-04-20 09:19:40.000000000","message":"6","commit_id":"cfca236918ceade76f750b464a3d23d5a1b16d97"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"4cdec37953acc01e9c1d689f94248ae977369d07","unresolved":false,"context_lines":[{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        # The 1\u0027s and the 2\u0027s are purgeable (due to age of day set to 0),"},{"line_number":205,"context_line":"        # but max_number \u003d 5, and because of no Db integrity violation, we"},{"line_number":206,"context_line":"        # should be able to purge only 4 objects."},{"line_number":207,"context_line":"        self.assertEqual(m_destroy_goal.call_count, 1)"},{"line_number":208,"context_line":"        self.assertEqual(m_destroy_strategy.call_count, 1)"},{"line_number":209,"context_line":"        self.assertEqual(m_destroy_audit_template.call_count, 1)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a122d0e_3a773503","line":206,"range":{"start_line":206,"start_character":39,"end_line":206,"end_character":40},"in_reply_to":"1a122d0e_b3c38256","updated":"2016-04-20 13:37:39.000000000","message":"Done","commit_id":"cfca236918ceade76f750b464a3d23d5a1b16d97"}]}
