)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"9360868514dc039932acac77d7c49cac3d87d85c","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add \"prev\" to instance list pagination"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"At the current moment there is no link"},{"line_number":10,"context_line":"to previous page on instances list view."},{"line_number":11,"context_line":"This patch eliminates that issue by"},{"line_number":12,"context_line":"re-using pagination code for flavors and"},{"line_number":13,"context_line":"introduces common pagination functionality"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"1af94dfe_908acb19","line":10,"updated":"2016-03-17 19:22:14.000000000","message":"at paginated instances table.","commit_id":"40bd6349497eb1e324285146329576fe896ed360"},{"author":{"_account_id":15637,"name":"Dmitry Ratushnyy","email":"d.ratushnyy@gmail.com","username":"dratushnyy"},"change_message_id":"ebb39cf6aca083fbdf5aa06d52ba735bf1190187","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add \"prev\" to instance list pagination"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"At the current moment there is no link"},{"line_number":10,"context_line":"to previous page on instances list view."},{"line_number":11,"context_line":"This patch eliminates that issue by"},{"line_number":12,"context_line":"re-using pagination code for flavors and"},{"line_number":13,"context_line":"introduces common pagination functionality"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"1af94dfe_3073f716","line":10,"in_reply_to":"1af94dfe_908acb19","updated":"2016-03-17 19:26:37.000000000","message":"Done","commit_id":"40bd6349497eb1e324285146329576fe896ed360"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"9360868514dc039932acac77d7c49cac3d87d85c","unresolved":false,"context_lines":[{"line_number":11,"context_line":"This patch eliminates that issue by"},{"line_number":12,"context_line":"re-using pagination code for flavors and"},{"line_number":13,"context_line":"introduces common pagination functionality"},{"line_number":14,"context_line":"for all table-view based pages."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Closes-Bug: #1514678"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"1af94dfe_f0c98f5a","line":14,"updated":"2016-03-17 19:22:14.000000000","message":"in the view class common for all tables, thus preparing a foundation for the unification of pagination methods.","commit_id":"40bd6349497eb1e324285146329576fe896ed360"},{"author":{"_account_id":15637,"name":"Dmitry Ratushnyy","email":"d.ratushnyy@gmail.com","username":"dratushnyy"},"change_message_id":"ebb39cf6aca083fbdf5aa06d52ba735bf1190187","unresolved":false,"context_lines":[{"line_number":11,"context_line":"This patch eliminates that issue by"},{"line_number":12,"context_line":"re-using pagination code for flavors and"},{"line_number":13,"context_line":"introduces common pagination functionality"},{"line_number":14,"context_line":"for all table-view based pages."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Closes-Bug: #1514678"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"1af94dfe_9062cb3c","line":14,"in_reply_to":"1af94dfe_f0c98f5a","updated":"2016-03-17 19:26:37.000000000","message":"Done","commit_id":"40bd6349497eb1e324285146329576fe896ed360"},{"author":{"_account_id":6763,"name":"jingliuqing","email":"jing.liuqing@99cloud.net","username":"jing"},"change_message_id":"84f9308c50ff2181d7e253c81cf340f511579fae","unresolved":false,"context_lines":[{"line_number":15,"context_line":"thus preparing a foundation for the unification"},{"line_number":16,"context_line":"of pagination methods."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Closes-Bug: #1514678"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: I58fe982dc443b1a446c133f4400637ace62740f0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":36,"id":"dab17558_dec8db57","line":18,"updated":"2016-05-16 10:54:34.000000000","message":"Partially-implements: blueprint pagination-add-prev-link  \nhow about add the bp link?","commit_id":"cdd45f4f8f96023145fbb55343f8e94b65ba314e"},{"author":{"_account_id":15637,"name":"Dmitry Ratushnyy","email":"d.ratushnyy@gmail.com","username":"dratushnyy"},"change_message_id":"d9bc3901a2103d536924f84a6c5b0b05351253e9","unresolved":false,"context_lines":[{"line_number":15,"context_line":"thus preparing a foundation for the unification"},{"line_number":16,"context_line":"of pagination methods."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Closes-Bug: #1514678"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: I58fe982dc443b1a446c133f4400637ace62740f0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":36,"id":"dab17558_499d5365","line":18,"in_reply_to":"dab17558_dec8db57","updated":"2016-05-16 11:02:33.000000000","message":"Done","commit_id":"cdd45f4f8f96023145fbb55343f8e94b65ba314e"},{"author":{"_account_id":9178,"name":"Sayali Lunkad","email":"sayali.lunkad@suse.com","username":"sayalilunkad"},"change_message_id":"2f85d2f6608d88f353c944b132eb3615ecf44b2e","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add \"prev\" to instance list pagination"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"At the current moment there is no link"},{"line_number":10,"context_line":"to previous page at paginated instances table."},{"line_number":11,"context_line":"This patch eliminates that issue by"},{"line_number":12,"context_line":"re-using pagination code for flavors and"},{"line_number":13,"context_line":"introduces common pagination functionality"},{"line_number":14,"context_line":"in the view class common for all tables,"},{"line_number":15,"context_line":"thus preparing a foundation for the unification"},{"line_number":16,"context_line":"of pagination methods."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Closes-Bug: #1514678"},{"line_number":19,"context_line":"Partially Implements: blueprint pagination-add-prev-link"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":37,"id":"ba5da102_e0efc184","line":16,"range":{"start_line":9,"start_character":0,"end_line":16,"end_character":22},"updated":"2016-11-02 16:39:16.000000000","message":"Please keep line wrap to 72 characters not lesser. Check https://wiki.openstack.org/wiki/GitCommitMessages","commit_id":"4887140ee43f6dfa6b4cd15f5a8da5c05860666f"},{"author":{"_account_id":9178,"name":"Sayali Lunkad","email":"sayali.lunkad@suse.com","username":"sayalilunkad"},"change_message_id":"2f85d2f6608d88f353c944b132eb3615ecf44b2e","unresolved":false,"context_lines":[{"line_number":16,"context_line":"of pagination methods."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Closes-Bug: #1514678"},{"line_number":19,"context_line":"Partially Implements: blueprint pagination-add-prev-link"},{"line_number":20,"context_line":"Change-Id: I58fe982dc443b1a446c133f4400637ace62740f0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":37,"id":"ba5da102_a09149f3","line":19,"updated":"2016-11-02 16:39:16.000000000","message":"Not sure why but this should link to the bp. Syntax looks fine though.","commit_id":"4887140ee43f6dfa6b4cd15f5a8da5c05860666f"}],"horizon/tables/views.py":[{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"ad34a42dc6e7f63ea482a0b89a7df6c9fe1900f8","unresolved":false,"context_lines":[{"line_number":272,"context_line":"            if filter_info[\u0027field_param\u0027]:"},{"line_number":273,"context_line":"                setattr(action, \u0027filter_field\u0027, filter_info[\u0027field\u0027])"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    def get_pagination_markers(self):"},{"line_number":276,"context_line":"        prev_marker \u003d self.request.GET.get("},{"line_number":277,"context_line":"            self.table_class._meta.prev_pagination_param, None)"},{"line_number":278,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_b0baab21","line":275,"updated":"2016-03-14 13:38:04.000000000","message":"If you\u0027re going to abstract away this logic, you don\u0027t need to return prev_marker - it is not used by this function consumers.","commit_id":"61595757310fdd8cf92358637becc9f8469186f3"},{"author":{"_account_id":15637,"name":"Dmitry Ratushnyy","email":"d.ratushnyy@gmail.com","username":"dratushnyy"},"change_message_id":"7f8fd8f96ee1749eb0103ea575cf46a82112d1dd","unresolved":false,"context_lines":[{"line_number":272,"context_line":"            if filter_info[\u0027field_param\u0027]:"},{"line_number":273,"context_line":"                setattr(action, \u0027filter_field\u0027, filter_info[\u0027field\u0027])"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    def get_pagination_markers(self):"},{"line_number":276,"context_line":"        prev_marker \u003d self.request.GET.get("},{"line_number":277,"context_line":"            self.table_class._meta.prev_pagination_param, None)"},{"line_number":278,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_97bfa1fa","line":275,"in_reply_to":"3afc51ec_7ce3dc33","updated":"2016-03-14 14:46:51.000000000","message":"Good point. Done","commit_id":"61595757310fdd8cf92358637becc9f8469186f3"},{"author":{"_account_id":15637,"name":"Dmitry Ratushnyy","email":"d.ratushnyy@gmail.com","username":"dratushnyy"},"change_message_id":"8ceb8691ade2aeec1cdcb67dca65651e77e13dee","unresolved":false,"context_lines":[{"line_number":272,"context_line":"            if filter_info[\u0027field_param\u0027]:"},{"line_number":273,"context_line":"                setattr(action, \u0027filter_field\u0027, filter_info[\u0027field\u0027])"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    def get_pagination_markers(self):"},{"line_number":276,"context_line":"        prev_marker \u003d self.request.GET.get("},{"line_number":277,"context_line":"            self.table_class._meta.prev_pagination_param, None)"},{"line_number":278,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_c1616baa","line":275,"in_reply_to":"3afc51ec_b0baab21","updated":"2016-03-14 14:19:17.000000000","message":"Actually it is used to check if it None or not. (dashboards/admin/instances/views.py:80,dashboards/project/instances/views.py:73)","commit_id":"61595757310fdd8cf92358637becc9f8469186f3"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"b8e8df137c1cc1af901dd9e4af5490f9208b9c38","unresolved":false,"context_lines":[{"line_number":272,"context_line":"            if filter_info[\u0027field_param\u0027]:"},{"line_number":273,"context_line":"                setattr(action, \u0027filter_field\u0027, filter_info[\u0027field\u0027])"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    def get_pagination_markers(self):"},{"line_number":276,"context_line":"        prev_marker \u003d self.request.GET.get("},{"line_number":277,"context_line":"            self.table_class._meta.prev_pagination_param, None)"},{"line_number":278,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_7ce3dc33","line":275,"in_reply_to":"3afc51ec_c1616baa","updated":"2016-03-14 14:32:35.000000000","message":"Then what if renamed the function to \u0027get_pagination_params\u0027 and return \u0027reversed_order\u0027 as the second value right from this function? One action less in consumers.","commit_id":"61595757310fdd8cf92358637becc9f8469186f3"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"dd8cd12cbfa0b9e93a71672e798a07d01417bbe6","unresolved":false,"context_lines":[{"line_number":272,"context_line":"            if filter_info[\u0027field_param\u0027]:"},{"line_number":273,"context_line":"                setattr(action, \u0027filter_field\u0027, filter_info[\u0027field\u0027])"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    def get_pagination_markers(self):"},{"line_number":276,"context_line":"        reversed_order \u003d False"},{"line_number":277,"context_line":"        prev_marker \u003d self.request.GET.get("},{"line_number":278,"context_line":"            self.table_class._meta.prev_pagination_param, None)"}],"source_content_type":"text/x-python","patch_set":15,"id":"1af94dfe_9a7b0af5","line":275,"updated":"2016-03-17 18:50:12.000000000","message":"Nitpicking: actually this function returns just one marker, so it would be clearer to name it `get_pagination_parameters`.","commit_id":"e2cb020599a034c673dfea4d4e78148bc25c3295"},{"author":{"_account_id":15637,"name":"Dmitry Ratushnyy","email":"d.ratushnyy@gmail.com","username":"dratushnyy"},"change_message_id":"4b7fc429e7799bb32788ab2f81d25b7febbdefc8","unresolved":false,"context_lines":[{"line_number":272,"context_line":"            if filter_info[\u0027field_param\u0027]:"},{"line_number":273,"context_line":"                setattr(action, \u0027filter_field\u0027, filter_info[\u0027field\u0027])"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    def get_pagination_markers(self):"},{"line_number":276,"context_line":"        reversed_order \u003d False"},{"line_number":277,"context_line":"        prev_marker \u003d self.request.GET.get("},{"line_number":278,"context_line":"            self.table_class._meta.prev_pagination_param, None)"}],"source_content_type":"text/x-python","patch_set":15,"id":"1af94dfe_9560fda6","line":275,"in_reply_to":"1af94dfe_9a7b0af5","updated":"2016-03-17 19:00:28.000000000","message":"Done","commit_id":"e2cb020599a034c673dfea4d4e78148bc25c3295"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"dd8cd12cbfa0b9e93a71672e798a07d01417bbe6","unresolved":false,"context_lines":[{"line_number":283,"context_line":"        else:"},{"line_number":284,"context_line":"            marker \u003d self.request.GET.get("},{"line_number":285,"context_line":"                self.table_class._meta.pagination_param, None)"},{"line_number":286,"context_line":"        return reversed_order, marker"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"class MixedDataTableView(DataTableView):"}],"source_content_type":"text/x-python","patch_set":15,"id":"1af94dfe_fa532e69","line":286,"updated":"2016-03-17 18:50:12.000000000","message":"Perhaps it\u0027s a matter of taste, yet if I wrote this, I\u0027d put marker to be a first value :).","commit_id":"e2cb020599a034c673dfea4d4e78148bc25c3295"},{"author":{"_account_id":15637,"name":"Dmitry Ratushnyy","email":"d.ratushnyy@gmail.com","username":"dratushnyy"},"change_message_id":"4b7fc429e7799bb32788ab2f81d25b7febbdefc8","unresolved":false,"context_lines":[{"line_number":283,"context_line":"        else:"},{"line_number":284,"context_line":"            marker \u003d self.request.GET.get("},{"line_number":285,"context_line":"                self.table_class._meta.pagination_param, None)"},{"line_number":286,"context_line":"        return reversed_order, marker"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"class MixedDataTableView(DataTableView):"}],"source_content_type":"text/x-python","patch_set":15,"id":"1af94dfe_95d59d1d","line":286,"in_reply_to":"1af94dfe_fa532e69","updated":"2016-03-17 19:00:28.000000000","message":"Done","commit_id":"e2cb020599a034c673dfea4d4e78148bc25c3295"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"ad3b25a65c86509174dee8cd992252a3f4626c2c","unresolved":false,"context_lines":[{"line_number":278,"context_line":"            return shortcuts.redirect(self.get_table().get_absolute_url())"},{"line_number":279,"context_line":"        return self.get(request, *args, **kwargs)"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    def get_server_filter_info(self, request, table\u003dNone):"},{"line_number":282,"context_line":"        if not table:"},{"line_number":283,"context_line":"            table \u003d self.get_table()"},{"line_number":284,"context_line":"        filter_action \u003d table._meta._filter_action"},{"line_number":285,"context_line":"        if filter_action is None or filter_action.filter_type !\u003d \u0027server\u0027:"},{"line_number":286,"context_line":"            return None"},{"line_number":287,"context_line":"        param_name \u003d filter_action.get_param_name()"},{"line_number":288,"context_line":"        filter_string \u003d request.POST.get(param_name)"},{"line_number":289,"context_line":"        filter_string_session \u003d request.session.get(param_name, \"\")"},{"line_number":290,"context_line":"        changed \u003d (filter_string is not None"},{"line_number":291,"context_line":"                   and filter_string !\u003d filter_string_session)"},{"line_number":292,"context_line":"        if filter_string is None:"},{"line_number":293,"context_line":"            filter_string \u003d filter_string_session"},{"line_number":294,"context_line":"        filter_field_param \u003d param_name + \u0027_field\u0027"},{"line_number":295,"context_line":"        filter_field \u003d request.POST.get(filter_field_param)"},{"line_number":296,"context_line":"        filter_field_session \u003d request.session.get(filter_field_param)"},{"line_number":297,"context_line":"        if filter_field is None and filter_field_session is not None:"},{"line_number":298,"context_line":"            filter_field \u003d filter_field_session"},{"line_number":299,"context_line":"        filter_info \u003d {"},{"line_number":300,"context_line":"            \u0027action\u0027: filter_action,"},{"line_number":301,"context_line":"            \u0027value_param\u0027: param_name,"},{"line_number":302,"context_line":"            \u0027value\u0027: filter_string,"},{"line_number":303,"context_line":"            \u0027field_param\u0027: filter_field_param,"},{"line_number":304,"context_line":"            \u0027field\u0027: filter_field,"},{"line_number":305,"context_line":"            \u0027changed\u0027: changed"},{"line_number":306,"context_line":"        }"},{"line_number":307,"context_line":"        return filter_info"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    def handle_server_filter(self, request):"},{"line_number":310,"context_line":"        \"\"\"Update the table server filter information in the session and"}],"source_content_type":"text/x-python","patch_set":37,"id":"5a9d85d2_ede72fe2","line":307,"range":{"start_line":281,"start_character":0,"end_line":307,"end_character":26},"updated":"2016-06-21 11:43:33.000000000","message":"Why do we need if it\u0027s identical to https://github.com/openstack/horizon/blob/master/horizon/tables/views.py#L128 ?","commit_id":"4887140ee43f6dfa6b4cd15f5a8da5c05860666f"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"ad3b25a65c86509174dee8cd992252a3f4626c2c","unresolved":false,"context_lines":[{"line_number":306,"context_line":"        }"},{"line_number":307,"context_line":"        return filter_info"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    def handle_server_filter(self, request):"},{"line_number":310,"context_line":"        \"\"\"Update the table server filter information in the session and"},{"line_number":311,"context_line":"        determine if the filter has been changed."},{"line_number":312,"context_line":"        \"\"\""},{"line_number":313,"context_line":"        filter_info \u003d self.get_server_filter_info(request)"},{"line_number":314,"context_line":"        if filter_info is None:"},{"line_number":315,"context_line":"            return False"},{"line_number":316,"context_line":"        request.session[filter_info[\u0027value_param\u0027]] \u003d filter_info[\u0027value\u0027]"},{"line_number":317,"context_line":"        if filter_info[\u0027field_param\u0027]:"},{"line_number":318,"context_line":"            request.session[filter_info[\u0027field_param\u0027]] \u003d filter_info[\u0027field\u0027]"},{"line_number":319,"context_line":"        return filter_info[\u0027changed\u0027]"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"    def get_pagination_parameters(self):"},{"line_number":322,"context_line":"        reversed_order \u003d False"}],"source_content_type":"text/x-python","patch_set":37,"id":"5a9d85d2_ed356f46","line":319,"range":{"start_line":309,"start_character":4,"end_line":319,"end_character":37},"updated":"2016-06-21 11:43:33.000000000","message":"Same question here.","commit_id":"4887140ee43f6dfa6b4cd15f5a8da5c05860666f"}],"openstack_dashboard/api/base.py":[{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"5954d60dfa797ccb66ad18c4e094d11022339e9d","unresolved":false,"context_lines":[{"line_number":362,"context_line":"        if marker is not None:"},{"line_number":363,"context_line":"            has_prev_data \u003d True"},{"line_number":364,"context_line":"    # first page condition when reached via prev back"},{"line_number":365,"context_line":"    elif reversed_order and marker is not None or \\"},{"line_number":366,"context_line":"            (sort_dir \u003d\u003d \u0027asc\u0027 and marker is not None):"},{"line_number":367,"context_line":"        has_more_data \u003d True"},{"line_number":368,"context_line":"    # last page condition"}],"source_content_type":"text/x-python","patch_set":12,"id":"3afc51ec_fe9ed6b6","line":365,"updated":"2016-03-14 08:48:01.000000000","message":"It seems to me that you\u0027ve combined here 2 conditions: one from https://github.com/openstack/horizon/blob/master/openstack_dashboard/api/glance.py#L173 and another from https://github.com/openstack/horizon/blob/master/openstack_dashboard/api/cinder.py#L213\n\nI think it\u0027s redundant (actually, you don\u0027t need `marker is not None` condition to be specified second time). Condition from api.cinder with `sort_dir \u003d\u003d \"asc\"` was specified only because `reversed_order` flag was not implemented for cinder. I suggest you to split the change into 2 commits: first one changes instances pagination behavior (but doesn\u0027t introduce functions generalized for glance/cinder/nova), while second change generalizes these functions, but doesn\u0027t introduce any new behavior. This way it will be also easier for us to detect regressions.","commit_id":"a299a39658110db1a4d9c1aa2c9386e1a87b2c07"},{"author":{"_account_id":15637,"name":"Dmitry Ratushnyy","email":"d.ratushnyy@gmail.com","username":"dratushnyy"},"change_message_id":"15d2fa6d670458e39182292bcd0fddc6be89a542","unresolved":false,"context_lines":[{"line_number":362,"context_line":"        if marker is not None:"},{"line_number":363,"context_line":"            has_prev_data \u003d True"},{"line_number":364,"context_line":"    # first page condition when reached via prev back"},{"line_number":365,"context_line":"    elif reversed_order and marker is not None or \\"},{"line_number":366,"context_line":"            (sort_dir \u003d\u003d \u0027asc\u0027 and marker is not None):"},{"line_number":367,"context_line":"        has_more_data \u003d True"},{"line_number":368,"context_line":"    # last page condition"}],"source_content_type":"text/x-python","patch_set":12,"id":"3afc51ec_b4f8ed4a","line":365,"in_reply_to":"3afc51ec_fe9ed6b6","updated":"2016-03-14 09:43:59.000000000","message":"Done","commit_id":"a299a39658110db1a4d9c1aa2c9386e1a87b2c07"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"ad34a42dc6e7f63ea482a0b89a7df6c9fe1900f8","unresolved":false,"context_lines":[{"line_number":353,"context_line":"    return endpoint.get(\u0027region_id\u0027) or endpoint.get(\u0027region\u0027)"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"def update_pagination(entities, page_size, marker, sort_dir, sort_key,"},{"line_number":357,"context_line":"                      reversed_order\u003dFalse):"},{"line_number":358,"context_line":"    has_more_data \u003d has_prev_data \u003d False"},{"line_number":359,"context_line":"    if len(entities) \u003e page_size:"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_90ba0f09","line":356,"updated":"2016-03-14 13:38:04.000000000","message":"Why do you moving this function into a common code, if neither glance, nor cinder pagination APIs use it?","commit_id":"61595757310fdd8cf92358637becc9f8469186f3"},{"author":{"_account_id":15637,"name":"Dmitry Ratushnyy","email":"d.ratushnyy@gmail.com","username":"dratushnyy"},"change_message_id":"8ceb8691ade2aeec1cdcb67dca65651e77e13dee","unresolved":false,"context_lines":[{"line_number":353,"context_line":"    return endpoint.get(\u0027region_id\u0027) or endpoint.get(\u0027region\u0027)"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"def update_pagination(entities, page_size, marker, sort_dir, sort_key,"},{"line_number":357,"context_line":"                      reversed_order\u003dFalse):"},{"line_number":358,"context_line":"    has_more_data \u003d has_prev_data \u003d False"},{"line_number":359,"context_line":"    if len(entities) \u003e page_size:"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_46d731bf","line":356,"in_reply_to":"3afc51ec_90ba0f09","updated":"2016-03-14 14:19:17.000000000","message":"Done","commit_id":"61595757310fdd8cf92358637becc9f8469186f3"}],"openstack_dashboard/api/nova.py":[{"author":{"_account_id":9622,"name":"Cindy Lu","email":"clu@us.ibm.com","username":"clu14"},"change_message_id":"8aeec4346f703c94f2c52cad1259b65de32f8faf","unresolved":false,"context_lines":[{"line_number":512,"context_line":"    return flavor"},{"line_number":513,"context_line":""},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"def update_pagination(entities, page_size, marker):"},{"line_number":516,"context_line":"    has_more_data \u003d False"},{"line_number":517,"context_line":"    has_prev_data \u003d False"},{"line_number":518,"context_line":"    if len(entities) \u003e page_size:"}],"source_content_type":"text/x-python","patch_set":9,"id":"5aef4532_4246f4bf","line":515,"updated":"2016-03-08 20:19:33.000000000","message":"https://github.com/openstack/python-novaclient/blob/master/novaclient/v2/servers.py#L679\n\nWe should be using the sort_key and sort_dir to help us with prev pagination. See Cinder Volume list for example: https://github.com/openstack/horizon/blob/master/openstack_dashboard/api/cinder.py#L222-L258","commit_id":"dcaacf8abc22a607b3825c7146748b4efee36770"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"f9a0aa42be87408326e7fcc5dfbc0e58963fa9f1","unresolved":false,"context_lines":[{"line_number":512,"context_line":"    return flavor"},{"line_number":513,"context_line":""},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"def update_pagination(entities, page_size, marker):"},{"line_number":516,"context_line":"    has_more_data \u003d False"},{"line_number":517,"context_line":"    has_prev_data \u003d False"},{"line_number":518,"context_line":"    if len(entities) \u003e page_size:"}],"source_content_type":"text/x-python","patch_set":9,"id":"5aef4532_cd44d9b8","line":515,"in_reply_to":"5aef4532_4246f4bf","updated":"2016-03-09 09:39:04.000000000","message":"Agree, why not add `sort_dir` here?","commit_id":"dcaacf8abc22a607b3825c7146748b4efee36770"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"a085809b38892cea9262af835ff9785d234f15c7","unresolved":false,"context_lines":[{"line_number":522,"context_line":"            has_prev_data \u003d True"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"    # last page condition"},{"line_number":525,"context_line":"    elif marker is not None:"},{"line_number":526,"context_line":"        has_prev_data \u003d True"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"    return entities, has_more_data, has_prev_data"}],"source_content_type":"text/x-python","patch_set":9,"id":"5aef4532_7f83b004","line":525,"updated":"2016-03-09 08:41:52.000000000","message":"In spite of any result in the condition of L518, the processes of L521-522 seems to be needed.\nThus, we can delete L521-522 and just write about below.\n\n    # last page condition\n    if marker is not None:\n       has_prev_data \u003d True","commit_id":"dcaacf8abc22a607b3825c7146748b4efee36770"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"f9a0aa42be87408326e7fcc5dfbc0e58963fa9f1","unresolved":false,"context_lines":[{"line_number":522,"context_line":"            has_prev_data \u003d True"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"    # last page condition"},{"line_number":525,"context_line":"    elif marker is not None:"},{"line_number":526,"context_line":"        has_prev_data \u003d True"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"    return entities, has_more_data, has_prev_data"}],"source_content_type":"text/x-python","patch_set":9,"id":"5aef4532_ad6fcd29","line":525,"in_reply_to":"5aef4532_7f83b004","updated":"2016-03-09 09:39:04.000000000","message":"W/o `sort_dir` here we cannot reliably test for previous page condition.","commit_id":"dcaacf8abc22a607b3825c7146748b4efee36770"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"f9a0aa42be87408326e7fcc5dfbc0e58963fa9f1","unresolved":false,"context_lines":[{"line_number":673,"context_line":"    else:"},{"line_number":674,"context_line":"        search_opts[\u0027project_id\u0027] \u003d request.user.tenant_id"},{"line_number":675,"context_line":""},{"line_number":676,"context_line":"    for server in c_nova.servers.list(True, search_opts):"},{"line_number":677,"context_line":"        servers.append(Server(server, request))"},{"line_number":678,"context_line":""},{"line_number":679,"context_line":"    if paginate:"}],"source_content_type":"text/x-python","patch_set":9,"id":"5aef4532_4d70c9dc","line":676,"updated":"2016-03-09 09:39:04.000000000","message":"I see that you changed list comprehension to iteration+.append(). Was that purposeful?\n\nAlso, we should pass `sort_dir` and `sort_key` here to list() method.","commit_id":"dcaacf8abc22a607b3825c7146748b4efee36770"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"ad34a42dc6e7f63ea482a0b89a7df6c9fe1900f8","unresolved":false,"context_lines":[{"line_number":522,"context_line":"    return flavors"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":""},{"line_number":525,"context_line":"def update_pagination(entities, page_size, marker, sort_dir, sort_key,"},{"line_number":526,"context_line":"                      reversed_order):"},{"line_number":527,"context_line":"    has_more_data \u003d has_prev_data \u003d False"},{"line_number":528,"context_line":"    if len(entities) \u003e page_size:"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_506ec796","side":"PARENT","line":525,"updated":"2016-03-14 13:38:04.000000000","message":"I\u0027m inclined to leave this code here for the time being.","commit_id":"6b8ee3364a27e1415f72c33593d3eb45b33f33a4"},{"author":{"_account_id":15637,"name":"Dmitry Ratushnyy","email":"d.ratushnyy@gmail.com","username":"dratushnyy"},"change_message_id":"8ceb8691ade2aeec1cdcb67dca65651e77e13dee","unresolved":false,"context_lines":[{"line_number":522,"context_line":"    return flavors"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":""},{"line_number":525,"context_line":"def update_pagination(entities, page_size, marker, sort_dir, sort_key,"},{"line_number":526,"context_line":"                      reversed_order):"},{"line_number":527,"context_line":"    has_more_data \u003d has_prev_data \u003d False"},{"line_number":528,"context_line":"    if len(entities) \u003e page_size:"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_e612bdb3","side":"PARENT","line":525,"in_reply_to":"3afc51ec_506ec796","updated":"2016-03-14 14:19:17.000000000","message":"Done","commit_id":"6b8ee3364a27e1415f72c33593d3eb45b33f33a4"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"ad34a42dc6e7f63ea482a0b89a7df6c9fe1900f8","unresolved":false,"context_lines":[{"line_number":644,"context_line":"def server_list_paged(request, search_opts\u003dNone, all_tenants\u003dFalse,"},{"line_number":645,"context_line":"                      paginate\u003dFalse, marker\u003dNone, sort_dir\u003d\u0027asc\u0027,"},{"line_number":646,"context_line":"                      sort_key\u003d\u0027id\u0027, reversed_order\u003dFalse):"},{"line_number":647,"context_line":"    c_nova \u003d novaclient(request)"},{"line_number":648,"context_line":"    page_size \u003d utils.get_page_size(request)"},{"line_number":649,"context_line":"    servers \u003d []"},{"line_number":650,"context_line":"    has_prev_data \u003d False"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_f0a1d3aa","line":647,"updated":"2016-03-14 13:38:04.000000000","message":"I still don\u0027t see the reason behind renaming c -\u003e nova and changes at lines 671-673.","commit_id":"61595757310fdd8cf92358637becc9f8469186f3"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"f2df90ae3751d1b770a23c969c8b4b929254b59a","unresolved":false,"context_lines":[{"line_number":537,"context_line":"        has_prev_data \u003d True"},{"line_number":538,"context_line":""},{"line_number":539,"context_line":"    # restore the original ordering here"},{"line_number":540,"context_line":"    if reversed_order:"},{"line_number":541,"context_line":"        def get_key(entity):"},{"line_number":542,"context_line":"            if isinstance(sort_key, list):"},{"line_number":543,"context_line":"                return ((getattr(entity, key) or \u0027\u0027).lower()"}],"source_content_type":"text/x-python","patch_set":24,"id":"ba0121b8_4f75a3f7","line":540,"updated":"2016-03-29 13:39:15.000000000","message":"If you\u0027re using sorted() to compensate for lack of multiple key sorting in nova, you should call it regardless of `reversed_order` and use this flag inside sorted\u0027s `reverse` arg (instead of sort_dir\u003d\u003d\u0027asc\u0027).","commit_id":"cded756994165f3cc4c9c97cd29fe6c3d82eaf0a"},{"author":{"_account_id":15637,"name":"Dmitry Ratushnyy","email":"d.ratushnyy@gmail.com","username":"dratushnyy"},"change_message_id":"250a6835db756279504d4ca54bf0b94b0fc2e925","unresolved":false,"context_lines":[{"line_number":537,"context_line":"        has_prev_data \u003d True"},{"line_number":538,"context_line":""},{"line_number":539,"context_line":"    # restore the original ordering here"},{"line_number":540,"context_line":"    if reversed_order:"},{"line_number":541,"context_line":"        def get_key(entity):"},{"line_number":542,"context_line":"            if isinstance(sort_key, list):"},{"line_number":543,"context_line":"                return ((getattr(entity, key) or \u0027\u0027).lower()"}],"source_content_type":"text/x-python","patch_set":24,"id":"ba0121b8_ba5c7b26","line":540,"in_reply_to":"ba0121b8_4f75a3f7","updated":"2016-03-29 13:45:00.000000000","message":"This code was introduced by liyingjun in \nChange-Id: I3111e929c59077a0e52bf8f84a512ee18eee5f12\n And it is used for volumes pagination","commit_id":"cded756994165f3cc4c9c97cd29fe6c3d82eaf0a"},{"author":{"_account_id":6763,"name":"jingliuqing","email":"jing.liuqing@99cloud.net","username":"jing"},"change_message_id":"84f9308c50ff2181d7e253c81cf340f511579fae","unresolved":false,"context_lines":[{"line_number":521,"context_line":"    return flavors"},{"line_number":522,"context_line":""},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"def update_pagination(entities, page_size, marker, reversed_order\u003dFalse):"},{"line_number":525,"context_line":"    has_more_data \u003d has_prev_data \u003d False"},{"line_number":526,"context_line":"    if len(entities) \u003e page_size:"},{"line_number":527,"context_line":"        has_more_data \u003d True"}],"source_content_type":"text/x-python","patch_set":36,"id":"dab17558_be419765","line":524,"updated":"2016-05-16 10:54:34.000000000","message":"see update_pagination() twice and how about refactor one common function to handle update_pagination firstly, that make life easy:- )","commit_id":"cdd45f4f8f96023145fbb55343f8e94b65ba314e"},{"author":{"_account_id":15637,"name":"Dmitry Ratushnyy","email":"d.ratushnyy@gmail.com","username":"dratushnyy"},"change_message_id":"d9bc3901a2103d536924f84a6c5b0b05351253e9","unresolved":false,"context_lines":[{"line_number":521,"context_line":"    return flavors"},{"line_number":522,"context_line":""},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"def update_pagination(entities, page_size, marker, reversed_order\u003dFalse):"},{"line_number":525,"context_line":"    has_more_data \u003d has_prev_data \u003d False"},{"line_number":526,"context_line":"    if len(entities) \u003e page_size:"},{"line_number":527,"context_line":"        has_more_data \u003d True"}],"source_content_type":"text/x-python","patch_set":36,"id":"dab17558_693db78e","line":524,"in_reply_to":"dab17558_be419765","updated":"2016-05-16 11:02:33.000000000","message":"As I spoke with Timur Sufiev, refactoring should be in separate commit.","commit_id":"cdd45f4f8f96023145fbb55343f8e94b65ba314e"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"ad3b25a65c86509174dee8cd992252a3f4626c2c","unresolved":false,"context_lines":[{"line_number":674,"context_line":"        return servers, has_more_data, has_prev_data"},{"line_number":675,"context_line":"    if search_opts is None:"},{"line_number":676,"context_line":"        search_opts \u003d {}"},{"line_number":677,"context_line":"    if \u0027paginate\u0027 in search_opts.keys():"},{"line_number":678,"context_line":"        paginate \u003d search_opts.pop(\u0027paginate\u0027)"},{"line_number":679,"context_line":"    if paginate:"},{"line_number":680,"context_line":"        search_opts[\u0027limit\u0027] \u003d page_size + 1"}],"source_content_type":"text/x-python","patch_set":37,"id":"5a9d85d2_c85b41f5","line":677,"range":{"start_line":677,"start_character":4,"end_line":677,"end_character":6},"updated":"2016-06-21 11:43:33.000000000","message":"Is there any special need to change `elif` -\u003e `if`?","commit_id":"4887140ee43f6dfa6b4cd15f5a8da5c05860666f"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"ad3b25a65c86509174dee8cd992252a3f4626c2c","unresolved":false,"context_lines":[{"line_number":674,"context_line":"        return servers, has_more_data, has_prev_data"},{"line_number":675,"context_line":"    if search_opts is None:"},{"line_number":676,"context_line":"        search_opts \u003d {}"},{"line_number":677,"context_line":"    if \u0027paginate\u0027 in search_opts.keys():"},{"line_number":678,"context_line":"        paginate \u003d search_opts.pop(\u0027paginate\u0027)"},{"line_number":679,"context_line":"    if paginate:"},{"line_number":680,"context_line":"        search_opts[\u0027limit\u0027] \u003d page_size + 1"}],"source_content_type":"text/x-python","patch_set":37,"id":"5a9d85d2_c8f6a1f8","line":677,"range":{"start_line":677,"start_character":32,"end_line":677,"end_character":39},"updated":"2016-06-21 11:43:33.000000000","message":"Search in a list is less efficient that search in dictionary. Why did you make this change?","commit_id":"4887140ee43f6dfa6b4cd15f5a8da5c05860666f"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"ad3b25a65c86509174dee8cd992252a3f4626c2c","unresolved":false,"context_lines":[{"line_number":676,"context_line":"        search_opts \u003d {}"},{"line_number":677,"context_line":"    if \u0027paginate\u0027 in search_opts.keys():"},{"line_number":678,"context_line":"        paginate \u003d search_opts.pop(\u0027paginate\u0027)"},{"line_number":679,"context_line":"    if paginate:"},{"line_number":680,"context_line":"        search_opts[\u0027limit\u0027] \u003d page_size + 1"},{"line_number":681,"context_line":"        if reversed_order:"},{"line_number":682,"context_line":"            sort_dir \u003d \u0027desc\u0027 if sort_dir \u003d\u003d \u0027asc\u0027 else \u0027asc\u0027"},{"line_number":683,"context_line":"    if all_tenants:"},{"line_number":684,"context_line":"        search_opts[\u0027all_tenants\u0027] \u003d True"},{"line_number":685,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":37,"id":"5a9d85d2_0847091e","line":682,"range":{"start_line":679,"start_character":4,"end_line":682,"end_character":61},"updated":"2016-06-21 11:43:33.000000000","message":"Why did you move this block out of previous conditional, where `paginate` could be undefined?","commit_id":"4887140ee43f6dfa6b4cd15f5a8da5c05860666f"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"ad3b25a65c86509174dee8cd992252a3f4626c2c","unresolved":false,"context_lines":[{"line_number":684,"context_line":"        search_opts[\u0027all_tenants\u0027] \u003d True"},{"line_number":685,"context_line":"    else:"},{"line_number":686,"context_line":"        search_opts[\u0027project_id\u0027] \u003d request.user.tenant_id"},{"line_number":687,"context_line":"    if marker:"},{"line_number":688,"context_line":"        search_opts[\u0027marker\u0027] \u003d marker"},{"line_number":689,"context_line":"    search_opts[\u0027sort_key\u0027] \u003d sort_key"},{"line_number":690,"context_line":"    search_opts[\u0027sort_dir\u0027] \u003d sort_dir"},{"line_number":691,"context_line":""},{"line_number":692,"context_line":"    _servers \u003d c_nova.servers.list(True, search_opts\u003dsearch_opts)"},{"line_number":693,"context_line":"    if paginate:"}],"source_content_type":"text/x-python","patch_set":37,"id":"5a9d85d2_888bf91d","line":690,"range":{"start_line":687,"start_character":4,"end_line":690,"end_character":38},"updated":"2016-06-21 11:43:33.000000000","message":"Why not this into\n\n  if paginate:\n    ...\n\nblock, where they belong?","commit_id":"4887140ee43f6dfa6b4cd15f5a8da5c05860666f"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"ad3b25a65c86509174dee8cd992252a3f4626c2c","unresolved":false,"context_lines":[{"line_number":694,"context_line":"        _servers, has_more_data, has_prev_data \u003d update_pagination("},{"line_number":695,"context_line":"            _servers, page_size, marker, reversed_order)"},{"line_number":696,"context_line":""},{"line_number":697,"context_line":"    for server in _servers:"},{"line_number":698,"context_line":"        servers.append(Server(server, request))"},{"line_number":699,"context_line":""},{"line_number":700,"context_line":"    return servers, has_more_data, has_prev_data"},{"line_number":701,"context_line":""}],"source_content_type":"text/x-python","patch_set":37,"id":"5a9d85d2_a8d35537","line":698,"range":{"start_line":697,"start_character":4,"end_line":698,"end_character":47},"updated":"2016-06-21 11:43:33.000000000","message":"Why use this construction when\n\n  servers \u003d [Server(server, request) for s in _servers]\n\nstill works for us?","commit_id":"4887140ee43f6dfa6b4cd15f5a8da5c05860666f"}],"openstack_dashboard/dashboards/admin/flavors/views.py":[{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"ad34a42dc6e7f63ea482a0b89a7df6c9fe1900f8","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def get_data(self):"},{"line_number":49,"context_line":"        request \u003d self.request"},{"line_number":50,"context_line":"        prev_marker \u003d request.GET.get("},{"line_number":51,"context_line":"            project_tables.FlavorsTable._meta.prev_pagination_param, None)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        if prev_marker is not None:"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_90a96f7e","side":"PARENT","line":50,"updated":"2016-03-14 13:38:04.000000000","message":"It\u0027s better left as it is, since the policy \u0027one major change - one commit\u0027 helps us to avoid many breakages at once.","commit_id":"6b8ee3364a27e1415f72c33593d3eb45b33f33a4"},{"author":{"_account_id":15637,"name":"Dmitry Ratushnyy","email":"d.ratushnyy@gmail.com","username":"dratushnyy"},"change_message_id":"8ceb8691ade2aeec1cdcb67dca65651e77e13dee","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def get_data(self):"},{"line_number":49,"context_line":"        request \u003d self.request"},{"line_number":50,"context_line":"        prev_marker \u003d request.GET.get("},{"line_number":51,"context_line":"            project_tables.FlavorsTable._meta.prev_pagination_param, None)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        if prev_marker is not None:"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_a621d5fd","side":"PARENT","line":50,"in_reply_to":"3afc51ec_90a96f7e","updated":"2016-03-14 14:19:17.000000000","message":"Done","commit_id":"6b8ee3364a27e1415f72c33593d3eb45b33f33a4"}],"openstack_dashboard/dashboards/admin/instances/tables.py":[{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"5954d60dfa797ccb66ad18c4e094d11022339e9d","unresolved":false,"context_lines":[{"line_number":188,"context_line":"                       project_tables.SoftRebootInstance,"},{"line_number":189,"context_line":"                       project_tables.RebootInstance,"},{"line_number":190,"context_line":"                       project_tables.DeleteInstance)"},{"line_number":191,"context_line":"        pagination_param \u003d \u0027last_inst\u0027"},{"line_number":192,"context_line":"        prev_pagination_param \u003d \u0027prev_inst\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"3afc51ec_fed3765d","line":191,"updated":"2016-03-14 08:48:01.000000000","message":"Do we really need to override standard marker names for an Instances table? Given that we have only one table on a page (contrary to Volumes/Volume Snapshots/Volume Backups), we don\u0027t need to distinguish between different tables\u0027 markers.","commit_id":"a299a39658110db1a4d9c1aa2c9386e1a87b2c07"},{"author":{"_account_id":15637,"name":"Dmitry Ratushnyy","email":"d.ratushnyy@gmail.com","username":"dratushnyy"},"change_message_id":"15d2fa6d670458e39182292bcd0fddc6be89a542","unresolved":false,"context_lines":[{"line_number":188,"context_line":"                       project_tables.SoftRebootInstance,"},{"line_number":189,"context_line":"                       project_tables.RebootInstance,"},{"line_number":190,"context_line":"                       project_tables.DeleteInstance)"},{"line_number":191,"context_line":"        pagination_param \u003d \u0027last_inst\u0027"},{"line_number":192,"context_line":"        prev_pagination_param \u003d \u0027prev_inst\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"3afc51ec_3eaf9e95","line":191,"in_reply_to":"3afc51ec_fed3765d","updated":"2016-03-14 09:43:59.000000000","message":"Done","commit_id":"a299a39658110db1a4d9c1aa2c9386e1a87b2c07"}],"openstack_dashboard/dashboards/admin/instances/tests.py":[{"author":{"_account_id":9622,"name":"Cindy Lu","email":"clu@us.ibm.com","username":"clu14"},"change_message_id":"8aeec4346f703c94f2c52cad1259b65de32f8faf","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from collections import OrderedDict"},{"line_number":16,"context_line":"import uuid"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from django.conf import settings"},{"line_number":19,"context_line":"from django.core.urlresolvers import reverse"},{"line_number":20,"context_line":"from django import http"},{"line_number":21,"context_line":"from django.test import override_settings"}],"source_content_type":"text/x-python","patch_set":9,"id":"5aef4532_82359cf8","line":18,"updated":"2016-03-08 20:19:33.000000000","message":"not used","commit_id":"dcaacf8abc22a607b3825c7146748b4efee36770"},{"author":{"_account_id":15637,"name":"Dmitry Ratushnyy","email":"d.ratushnyy@gmail.com","username":"dratushnyy"},"change_message_id":"cad29dbccde6398862e86a0e45fa34b15ef8d9cf","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from collections import OrderedDict"},{"line_number":16,"context_line":"import uuid"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from django.conf import settings"},{"line_number":19,"context_line":"from django.core.urlresolvers import reverse"},{"line_number":20,"context_line":"from django import http"},{"line_number":21,"context_line":"from django.test import override_settings"}],"source_content_type":"text/x-python","patch_set":9,"id":"5aef4532_b3610c3c","line":18,"in_reply_to":"5aef4532_82359cf8","updated":"2016-03-08 20:29:10.000000000","message":"Used in lines:\n422 (test_servers_index_paginated)\n453 (test_servers_index_paginated_prev)\n\nBesides, pep8 on gate passed, so all imports are ok.","commit_id":"dcaacf8abc22a607b3825c7146748b4efee36770"},{"author":{"_account_id":9622,"name":"Cindy Lu","email":"clu@us.ibm.com","username":"clu14"},"change_message_id":"8aeec4346f703c94f2c52cad1259b65de32f8faf","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from django.conf import settings"},{"line_number":19,"context_line":"from django.core.urlresolvers import reverse"},{"line_number":20,"context_line":"from django import http"},{"line_number":21,"context_line":"from django.test import override_settings"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from mox3.mox import IgnoreArg  # noqa"},{"line_number":24,"context_line":"from mox3.mox import IsA  # noqa"}],"source_content_type":"text/x-python","patch_set":9,"id":"5aef4532_625a1051","line":21,"updated":"2016-03-08 20:19:33.000000000","message":"not used","commit_id":"dcaacf8abc22a607b3825c7146748b4efee36770"},{"author":{"_account_id":15637,"name":"Dmitry Ratushnyy","email":"d.ratushnyy@gmail.com","username":"dratushnyy"},"change_message_id":"cad29dbccde6398862e86a0e45fa34b15ef8d9cf","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from django.conf import settings"},{"line_number":19,"context_line":"from django.core.urlresolvers import reverse"},{"line_number":20,"context_line":"from django import http"},{"line_number":21,"context_line":"from django.test import override_settings"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from mox3.mox import IgnoreArg  # noqa"},{"line_number":24,"context_line":"from mox3.mox import IsA  # noqa"}],"source_content_type":"text/x-python","patch_set":9,"id":"5aef4532_5346c8bf","line":21,"in_reply_to":"5aef4532_625a1051","updated":"2016-03-08 20:29:10.000000000","message":"Used in line 420\nBesides, pep8 on gate passed, so all imports are ok.","commit_id":"dcaacf8abc22a607b3825c7146748b4efee36770"}],"openstack_dashboard/test/api_tests/network_tests.py":[{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"5954d60dfa797ccb66ad18c4e094d11022339e9d","unresolved":false,"context_lines":[{"line_number":202,"context_line":"        servers \u003d self.servers.list()"},{"line_number":203,"context_line":"        novaclient \u003d self.stub_novaclient()"},{"line_number":204,"context_line":"        novaclient.servers \u003d self.mox.CreateMockAnything()"},{"line_number":205,"context_line":"        novaclient.servers.list()\\"},{"line_number":206,"context_line":"            .AndReturn(servers)"},{"line_number":207,"context_line":"        self.mox.ReplayAll()"},{"line_number":208,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3afc51ec_7e47661d","line":205,"updated":"2016-03-14 08:48:01.000000000","message":"not necessary","commit_id":"a299a39658110db1a4d9c1aa2c9386e1a87b2c07"},{"author":{"_account_id":15637,"name":"Dmitry Ratushnyy","email":"d.ratushnyy@gmail.com","username":"dratushnyy"},"change_message_id":"15d2fa6d670458e39182292bcd0fddc6be89a542","unresolved":false,"context_lines":[{"line_number":202,"context_line":"        servers \u003d self.servers.list()"},{"line_number":203,"context_line":"        novaclient \u003d self.stub_novaclient()"},{"line_number":204,"context_line":"        novaclient.servers \u003d self.mox.CreateMockAnything()"},{"line_number":205,"context_line":"        novaclient.servers.list()\\"},{"line_number":206,"context_line":"            .AndReturn(servers)"},{"line_number":207,"context_line":"        self.mox.ReplayAll()"},{"line_number":208,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3afc51ec_dec95a7a","line":205,"in_reply_to":"3afc51ec_7e47661d","updated":"2016-03-14 09:43:59.000000000","message":"Done","commit_id":"a299a39658110db1a4d9c1aa2c9386e1a87b2c07"}]}
