)]}'
{"horizon/templates/auth/_login.html":[{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"c5c39992253413090c09956168191201ade4811a","unresolved":false,"context_lines":[{"line_number":18,"context_line":"      \u003c/span\u003e"},{"line_number":19,"context_line":"    \u003c/div\u003e"},{"line_number":20,"context_line":"    {% endif %}"},{"line_number":21,"context_line":"    {% for message in messages %}"},{"line_number":22,"context_line":"    \u003cdiv class\u003d\"control-group clearfix success\"\u003e"},{"line_number":23,"context_line":"      \u003cspan class\u003d\"help-inline\"\u003e"},{"line_number":24,"context_line":"        \u003cp\u003e{{ message }}\u003c/p\u003e"}],"source_content_type":"text/html","patch_set":16,"id":"AAAAOH%2F%2F4qk%3D","line":21,"updated":"2013-03-22 04:11:03.000000000","message":"Is still needed with the new code change in views.py?\n\nAlso the code here always display messages as success. There is already a module that display messages -\u003e horizon.messages.js","commit_id":"93c76b3cfcbc16751e56de88f328118318ee17bf"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"34c45e504aa78799535b66fb03c5629643b6dfe4","unresolved":false,"context_lines":[{"line_number":18,"context_line":"      \u003c/span\u003e"},{"line_number":19,"context_line":"    \u003c/div\u003e"},{"line_number":20,"context_line":"    {% endif %}"},{"line_number":21,"context_line":"    {% for message in messages %}"},{"line_number":22,"context_line":"    \u003cdiv class\u003d\"control-group clearfix success\"\u003e"},{"line_number":23,"context_line":"      \u003cspan class\u003d\"help-inline\"\u003e"},{"line_number":24,"context_line":"        \u003cp\u003e{{ message }}\u003c/p\u003e"}],"source_content_type":"text/html","patch_set":16,"id":"AAAAOH%2F%2F4ik%3D","line":21,"in_reply_to":"AAAAOH%2F%2F4jQ%3D","updated":"2013-03-22 07:04:43.000000000","message":"Yes, I have tested that, the login page does not support messaging.","commit_id":"93c76b3cfcbc16751e56de88f328118318ee17bf"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"57523220f75285a0335661b9abe67460e30862fb","unresolved":false,"context_lines":[{"line_number":18,"context_line":"      \u003c/span\u003e"},{"line_number":19,"context_line":"    \u003c/div\u003e"},{"line_number":20,"context_line":"    {% endif %}"},{"line_number":21,"context_line":"    {% for message in messages %}"},{"line_number":22,"context_line":"    \u003cdiv class\u003d\"control-group clearfix success\"\u003e"},{"line_number":23,"context_line":"      \u003cspan class\u003d\"help-inline\"\u003e"},{"line_number":24,"context_line":"        \u003cp\u003e{{ message }}\u003c/p\u003e"}],"source_content_type":"text/html","patch_set":16,"id":"AAAAOH%2F%2F4jQ%3D","line":21,"in_reply_to":"AAAAOH%2F%2F4jw%3D","updated":"2013-03-22 06:35:53.000000000","message":"The change you made in views.py to have success_url of logout will redirect the user to a login page that supports messaging.\n\nThere are other situation where login page will show error, for example: the token is expired. \n\nHave you tested the last change in views.py without the code change in this html?","commit_id":"93c76b3cfcbc16751e56de88f328118318ee17bf"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"b3ac9f6939344f7980e165bfa45ae7a5e1e8db9a","unresolved":false,"context_lines":[{"line_number":18,"context_line":"      \u003c/span\u003e"},{"line_number":19,"context_line":"    \u003c/div\u003e"},{"line_number":20,"context_line":"    {% endif %}"},{"line_number":21,"context_line":"    {% for message in messages %}"},{"line_number":22,"context_line":"    \u003cdiv class\u003d\"control-group clearfix success\"\u003e"},{"line_number":23,"context_line":"      \u003cspan class\u003d\"help-inline\"\u003e"},{"line_number":24,"context_line":"        \u003cp\u003e{{ message }}\u003c/p\u003e"}],"source_content_type":"text/html","patch_set":16,"id":"AAAAOH%2F%2F4jw%3D","line":21,"in_reply_to":"AAAAOH%2F%2F4qk%3D","updated":"2013-03-22 06:11:54.000000000","message":"why should I change views.py?\n\nalways display messages as success just like above:\n\n\"{% if request.user.is_authenticated and \u0027next\u0027 in request.GET %}\n\u003cdiv class\u003d\"control-group clearfix error\"\u003e\"\n\nI think there is no other situation passing messages to login page.","commit_id":"93c76b3cfcbc16751e56de88f328118318ee17bf"}],"openstack_dashboard/api/keystone.py":[{"author":{"_account_id":4978,"name":"Julie Pichon","email":"jpichon@redhat.com","username":"jpichon"},"change_message_id":"73234b8336d417932242b8a526130e32df38b46c","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        conn \u003d getattr(request, cache_attr)"},{"line_number":115,"context_line":"    else:"},{"line_number":116,"context_line":"        endpoint \u003d _get_endpoint_url(request, endpoint_type)"},{"line_number":117,"context_line":"        auth_url \u003d _get_endpoint_url(request, \u0027internalURL\u0027)"},{"line_number":118,"context_line":"        insecure \u003d getattr(settings, \u0027OPENSTACK_SSL_NO_VERIFY\u0027, False)"},{"line_number":119,"context_line":"        LOG.debug(\"Creating a new keystoneclient connection to %s.\" % endpoint)"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAN3%2F%2FyLI%3D","line":117,"updated":"2013-03-12 18:00:52.000000000","message":"This doesn\u0027t look right to me, we let the administrator choose which endpoint_type to use to avoid hard-coding it","commit_id":"44955ef1c941cffd3572b4c86fd2a346c305f56e"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"ce9d3087cda65c1d06a60b15b7e06924cd5cf564","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        conn \u003d getattr(request, cache_attr)"},{"line_number":115,"context_line":"    else:"},{"line_number":116,"context_line":"        endpoint \u003d _get_endpoint_url(request, endpoint_type)"},{"line_number":117,"context_line":"        auth_url \u003d _get_endpoint_url(request, \u0027internalURL\u0027)"},{"line_number":118,"context_line":"        insecure \u003d getattr(settings, \u0027OPENSTACK_SSL_NO_VERIFY\u0027, False)"},{"line_number":119,"context_line":"        LOG.debug(\"Creating a new keystoneclient connection to %s.\" % endpoint)"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAN3%2F%2FxTI%3D","line":117,"in_reply_to":"AAAAN3%2F%2FyLI%3D","updated":"2013-03-21 14:42:32.000000000","message":"The purpose of update_own_password was to allow users to change their own password via the auth_url. The user-crud middleware isn\u0027t part of the admin pipeline.\nuser_crud_extension is part of [pipeline:public_api], so auth_url should use internalURL.","commit_id":"44955ef1c941cffd3572b4c86fd2a346c305f56e"},{"author":{"_account_id":5623,"name":"David Lyle","email":"dklyle0@gmail.com","username":"david-lyle"},"change_message_id":"cee325037b7255e94499cad4765c085588a00379","unresolved":false,"context_lines":[{"line_number":318,"context_line":""},{"line_number":319,"context_line":"def user_update_own_password(request, origpassword, password, admin\u003dFalse):"},{"line_number":320,"context_line":"    client \u003d keystoneclient(request, admin\u003dadmin)"},{"line_number":321,"context_line":"    user \u003d client.user_id \u003d request.user.id"},{"line_number":322,"context_line":"    if VERSIONS.active \u003c 3:"},{"line_number":323,"context_line":"        return client.users.update_own_password(origpassword, password)"},{"line_number":324,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAOn%2F%2FbZc%3D","line":321,"updated":"2013-05-09 22:36:00.000000000","message":"I don\u0027t think you need \u0027user\u0027 here","commit_id":"0623e54fba79e265343dc0e4a81ec5dc4cb3f359"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"d1c210118ce1bbeb7fcda057d5fe679571d7dbbc","unresolved":false,"context_lines":[{"line_number":318,"context_line":""},{"line_number":319,"context_line":"def user_update_own_password(request, origpassword, password, admin\u003dFalse):"},{"line_number":320,"context_line":"    client \u003d keystoneclient(request, admin\u003dadmin)"},{"line_number":321,"context_line":"    user \u003d client.user_id \u003d request.user.id"},{"line_number":322,"context_line":"    if VERSIONS.active \u003c 3:"},{"line_number":323,"context_line":"        return client.users.update_own_password(origpassword, password)"},{"line_number":324,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAOn%2F%2FbVg%3D","line":321,"in_reply_to":"AAAAOn%2F%2FbZc%3D","updated":"2013-05-09 22:56:05.000000000","message":"Done","commit_id":"0623e54fba79e265343dc0e4a81ec5dc4cb3f359"},{"author":{"_account_id":5623,"name":"David Lyle","email":"dklyle0@gmail.com","username":"david-lyle"},"change_message_id":"cee325037b7255e94499cad4765c085588a00379","unresolved":false,"context_lines":[{"line_number":322,"context_line":"    if VERSIONS.active \u003c 3:"},{"line_number":323,"context_line":"        return client.users.update_own_password(origpassword, password)"},{"line_number":324,"context_line":"    else:"},{"line_number":325,"context_line":"        return client.users.update(user, password\u003dpassword)"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"def user_update_tenant(request, user, project, admin\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAOn%2F%2FbZY%3D","line":325,"updated":"2013-05-09 22:36:00.000000000","message":"client.user_id","commit_id":"0623e54fba79e265343dc0e4a81ec5dc4cb3f359"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"d1c210118ce1bbeb7fcda057d5fe679571d7dbbc","unresolved":false,"context_lines":[{"line_number":322,"context_line":"    if VERSIONS.active \u003c 3:"},{"line_number":323,"context_line":"        return client.users.update_own_password(origpassword, password)"},{"line_number":324,"context_line":"    else:"},{"line_number":325,"context_line":"        return client.users.update(user, password\u003dpassword)"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"def user_update_tenant(request, user, project, admin\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAOn%2F%2FbVc%3D","line":325,"in_reply_to":"AAAAOn%2F%2FbZY%3D","updated":"2013-05-09 22:56:05.000000000","message":"Done","commit_id":"0623e54fba79e265343dc0e4a81ec5dc4cb3f359"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"4d80d79b6342bcd30b62ad0103c0f682dd8a1a43","unresolved":false,"context_lines":[{"line_number":316,"context_line":"        return manager.update(user, password\u003dpassword)"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"def user_update_own_password(request, origpassword, password, admin\u003dFalse):"},{"line_number":320,"context_line":"    client \u003d keystoneclient(request, admin\u003dadmin)"},{"line_number":321,"context_line":"    client.user_id \u003d request.user.id"},{"line_number":322,"context_line":"    if VERSIONS.active \u003c 3:"}],"source_content_type":"text/x-python","patch_set":29,"id":"AAAAOn%2F%2Fa04%3D","line":319,"updated":"2013-05-10 04:58:27.000000000","message":"The admin parameter seems unnecessary, the user will be updating their own password.  Admin should be False all the time.","commit_id":"73e7fe4977b06d6b6f164e97adada189c6be17c0"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"16b9b3e794bb067105559053d16059b2b76df8ab","unresolved":false,"context_lines":[{"line_number":316,"context_line":"        return manager.update(user, password\u003dpassword)"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"def user_update_own_password(request, origpassword, password, admin\u003dFalse):"},{"line_number":320,"context_line":"    client \u003d keystoneclient(request, admin\u003dadmin)"},{"line_number":321,"context_line":"    client.user_id \u003d request.user.id"},{"line_number":322,"context_line":"    if VERSIONS.active \u003c 3:"}],"source_content_type":"text/x-python","patch_set":29,"id":"AAAAOn%2F%2Fa0U%3D","line":319,"in_reply_to":"AAAAOn%2F%2Fa04%3D","updated":"2013-05-10 05:25:25.000000000","message":"ok, i will remove the admin parameter.","commit_id":"73e7fe4977b06d6b6f164e97adada189c6be17c0"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"4d80d79b6342bcd30b62ad0103c0f682dd8a1a43","unresolved":false,"context_lines":[{"line_number":317,"context_line":""},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"def user_update_own_password(request, origpassword, password, admin\u003dFalse):"},{"line_number":320,"context_line":"    client \u003d keystoneclient(request, admin\u003dadmin)"},{"line_number":321,"context_line":"    client.user_id \u003d request.user.id"},{"line_number":322,"context_line":"    if VERSIONS.active \u003c 3:"},{"line_number":323,"context_line":"        return client.users.update_own_password(origpassword, password)"}],"source_content_type":"text/x-python","patch_set":29,"id":"AAAAOn%2F%2Fa0s%3D","line":320,"updated":"2013-05-10 04:58:27.000000000","message":"Just a minor knit, can you also use \"manager\" as variable   name for consistency.","commit_id":"73e7fe4977b06d6b6f164e97adada189c6be17c0"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"16b9b3e794bb067105559053d16059b2b76df8ab","unresolved":false,"context_lines":[{"line_number":317,"context_line":""},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"def user_update_own_password(request, origpassword, password, admin\u003dFalse):"},{"line_number":320,"context_line":"    client \u003d keystoneclient(request, admin\u003dadmin)"},{"line_number":321,"context_line":"    client.user_id \u003d request.user.id"},{"line_number":322,"context_line":"    if VERSIONS.active \u003c 3:"},{"line_number":323,"context_line":"        return client.users.update_own_password(origpassword, password)"}],"source_content_type":"text/x-python","patch_set":29,"id":"AAAAOn%2F%2Fa0Q%3D","line":320,"in_reply_to":"AAAAOn%2F%2Fa0s%3D","updated":"2013-05-10 05:25:25.000000000","message":"I have to set client.user_id in the \u003c 3 case, so here shoud use client","commit_id":"73e7fe4977b06d6b6f164e97adada189c6be17c0"},{"author":{"_account_id":5733,"name":"Kieran Spear","email":"kispear@gmail.com","username":"kspear"},"change_message_id":"74c03e9d0dfd530a623b74b581fe11b842debc96","unresolved":false,"context_lines":[{"line_number":318,"context_line":""},{"line_number":319,"context_line":"def user_update_own_password(request, origpassword, password, admin\u003dFalse):"},{"line_number":320,"context_line":"    client \u003d keystoneclient(request, admin\u003dadmin)"},{"line_number":321,"context_line":"    client.user_id \u003d request.user.id"},{"line_number":322,"context_line":"    if VERSIONS.active \u003c 3:"},{"line_number":323,"context_line":"        return client.users.update_own_password(origpassword, password)"},{"line_number":324,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":29,"id":"AAAAOn%2F%2Fa7A%3D","line":321,"updated":"2013-05-10 03:34:48.000000000","message":"We shouldn\u0027t be fiddling with the client unless absolutely necessary, so I\u0027d move this into the \u003c 3 case.","commit_id":"73e7fe4977b06d6b6f164e97adada189c6be17c0"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"16b9b3e794bb067105559053d16059b2b76df8ab","unresolved":false,"context_lines":[{"line_number":318,"context_line":""},{"line_number":319,"context_line":"def user_update_own_password(request, origpassword, password, admin\u003dFalse):"},{"line_number":320,"context_line":"    client \u003d keystoneclient(request, admin\u003dadmin)"},{"line_number":321,"context_line":"    client.user_id \u003d request.user.id"},{"line_number":322,"context_line":"    if VERSIONS.active \u003c 3:"},{"line_number":323,"context_line":"        return client.users.update_own_password(origpassword, password)"},{"line_number":324,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":29,"id":"AAAAOn%2F%2Fa0g%3D","line":321,"in_reply_to":"AAAAOn%2F%2Fa7A%3D","updated":"2013-05-10 05:25:25.000000000","message":"Done","commit_id":"73e7fe4977b06d6b6f164e97adada189c6be17c0"},{"author":{"_account_id":1816,"name":"Gabriel Hurley","email":"gabriel.hurley@nebula.com","username":"gabriel-hurley"},"change_message_id":"42839def01e586370175d967912dce4870da2fbb","unresolved":false,"context_lines":[{"line_number":164,"context_line":"                                            endpoint\u003dendpoint,"},{"line_number":165,"context_line":"                                            original_ip\u003dremote_addr,"},{"line_number":166,"context_line":"                                            insecure\u003dinsecure,"},{"line_number":167,"context_line":"                                            auth_url\u003dauth_url,"},{"line_number":168,"context_line":"                                            debug\u003dsettings.DEBUG)"},{"line_number":169,"context_line":"        setattr(request, cache_attr, conn)"},{"line_number":170,"context_line":"    return conn"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAOn%2F%2FUeg%3D","line":167,"updated":"2013-05-14 19:38:58.000000000","message":"Why is this being added? It shouldn\u0027t be necessary, and hard-coding it to \"internalURL\" above is going to break various installation scenarios. Do we need this at all?","commit_id":"2be0c1ce51deccd9f7246d8d10b38fc600b703b1"},{"author":{"_account_id":5733,"name":"Kieran Spear","email":"kispear@gmail.com","username":"kspear"},"change_message_id":"f94e7f20eab475c29c5c52d7d507e3addf3a1d8b","unresolved":false,"context_lines":[{"line_number":164,"context_line":"                                            endpoint\u003dendpoint,"},{"line_number":165,"context_line":"                                            original_ip\u003dremote_addr,"},{"line_number":166,"context_line":"                                            insecure\u003dinsecure,"},{"line_number":167,"context_line":"                                            auth_url\u003dauth_url,"},{"line_number":168,"context_line":"                                            debug\u003dsettings.DEBUG)"},{"line_number":169,"context_line":"        setattr(request, cache_attr, conn)"},{"line_number":170,"context_line":"    return conn"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAPH%2F%2F4P8%3D","line":167,"in_reply_to":"AAAAOn%2F%2FT6I%3D","updated":"2013-05-21 04:16:13.000000000","message":"Okay, but the admin pipeline does have admin_crud, so in the v2 API an admin has access to users.update_password. Maybe user_update_own_password should just defer to user_update_password for the admin\u003dTrue case (and probably the general V3 case too since the code is the same).","commit_id":"2be0c1ce51deccd9f7246d8d10b38fc600b703b1"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"53914943e51aa15c11ad22e9bf42c926b07b8d96","unresolved":false,"context_lines":[{"line_number":164,"context_line":"                                            endpoint\u003dendpoint,"},{"line_number":165,"context_line":"                                            original_ip\u003dremote_addr,"},{"line_number":166,"context_line":"                                            insecure\u003dinsecure,"},{"line_number":167,"context_line":"                                            auth_url\u003dauth_url,"},{"line_number":168,"context_line":"                                            debug\u003dsettings.DEBUG)"},{"line_number":169,"context_line":"        setattr(request, cache_attr, conn)"},{"line_number":170,"context_line":"    return conn"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAOn%2F%2FT6I%3D","line":167,"in_reply_to":"AAAAOn%2F%2FUeg%3D","updated":"2013-05-15 01:07:36.000000000","message":"for v3 this is not necessary. but in v2 situation. the purpose of update_own_password was to allow users to change their own password via the auth_url. The user-crud middleware isn\u0027t part of the admin pipeline. according to the code\n\nhttps://github.com/openstack/keystone/blob/83d08cfc7bec00f2f82cff2a5101e63f52b1402b/etc/keystone.conf.sample#L260\n\nuser_crud_extension is part of [pipeline:public_api]","commit_id":"2be0c1ce51deccd9f7246d8d10b38fc600b703b1"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"unresolved":false,"context_lines":[{"line_number":164,"context_line":"                                            endpoint\u003dendpoint,"},{"line_number":165,"context_line":"                                            original_ip\u003dremote_addr,"},{"line_number":166,"context_line":"                                            insecure\u003dinsecure,"},{"line_number":167,"context_line":"                                            auth_url\u003dauth_url,"},{"line_number":168,"context_line":"                                            debug\u003dsettings.DEBUG)"},{"line_number":169,"context_line":"        setattr(request, cache_attr, conn)"},{"line_number":170,"context_line":"    return conn"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAPH%2F%2F1Y8%3D","line":167,"in_reply_to":"AAAAPH%2F%2F1vA%3D","updated":"2013-05-22 01:33:33.000000000","message":"Okay, I will remove the hardcoding internalURL.","commit_id":"2be0c1ce51deccd9f7246d8d10b38fc600b703b1"},{"author":{"_account_id":5733,"name":"Kieran Spear","email":"kispear@gmail.com","username":"kspear"},"change_message_id":"748b498a1287aefeb0deb1bf48ac4285d6bf5f01","unresolved":false,"context_lines":[{"line_number":164,"context_line":"                                            endpoint\u003dendpoint,"},{"line_number":165,"context_line":"                                            original_ip\u003dremote_addr,"},{"line_number":166,"context_line":"                                            insecure\u003dinsecure,"},{"line_number":167,"context_line":"                                            auth_url\u003dauth_url,"},{"line_number":168,"context_line":"                                            debug\u003dsettings.DEBUG)"},{"line_number":169,"context_line":"        setattr(request, cache_attr, conn)"},{"line_number":170,"context_line":"    return conn"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAPH%2F%2F33s%3D","line":167,"in_reply_to":"AAAAPH%2F%2F3%2Bg%3D","updated":"2013-05-21 08:34:22.000000000","message":"So we can remove this code then?","commit_id":"2be0c1ce51deccd9f7246d8d10b38fc600b703b1"},{"author":{"_account_id":5733,"name":"Kieran Spear","email":"kispear@gmail.com","username":"kspear"},"change_message_id":"57e3d88946ad06915909402a91a8f7e2db16890c","unresolved":false,"context_lines":[{"line_number":164,"context_line":"                                            endpoint\u003dendpoint,"},{"line_number":165,"context_line":"                                            original_ip\u003dremote_addr,"},{"line_number":166,"context_line":"                                            insecure\u003dinsecure,"},{"line_number":167,"context_line":"                                            auth_url\u003dauth_url,"},{"line_number":168,"context_line":"                                            debug\u003dsettings.DEBUG)"},{"line_number":169,"context_line":"        setattr(request, cache_attr, conn)"},{"line_number":170,"context_line":"    return conn"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAPH%2F%2F1vA%3D","line":167,"in_reply_to":"AAAAPH%2F%2F31A%3D","updated":"2013-05-21 22:34:35.000000000","message":"So after running this myself, it seems the original issue is that keystoneclient uses self.auth_url instead of self.management_url for this particular call. When we login with token+endpoint, self.management_url is set to the endpoint, but self.auth_url is not.\n\nSee also:\nhttps://review.openstack.org/#/c/23675/\n\nThe keystoneclient behavior here seems broken, but setting auth_url\u003dendpoint here (instead of hardcoding internalURL) looks safe as a workaround, since it\u0027s ignored when authenticating with a token and isn\u0027t used elsewhere after authenticating.","commit_id":"2be0c1ce51deccd9f7246d8d10b38fc600b703b1"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"eb80b9c43901a4fe837ca9faf68f9712e3737c71","unresolved":false,"context_lines":[{"line_number":164,"context_line":"                                            endpoint\u003dendpoint,"},{"line_number":165,"context_line":"                                            original_ip\u003dremote_addr,"},{"line_number":166,"context_line":"                                            insecure\u003dinsecure,"},{"line_number":167,"context_line":"                                            auth_url\u003dauth_url,"},{"line_number":168,"context_line":"                                            debug\u003dsettings.DEBUG)"},{"line_number":169,"context_line":"        setattr(request, cache_attr, conn)"},{"line_number":170,"context_line":"    return conn"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAPH%2F%2F31A%3D","line":167,"in_reply_to":"AAAAPH%2F%2F33s%3D","updated":"2013-05-21 08:59:16.000000000","message":"? we can\u0027t remove this auth_url here, we use user_crud_extension not admin_curd.","commit_id":"2be0c1ce51deccd9f7246d8d10b38fc600b703b1"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"b365c4566a5a5243460521f6e72dc807ac748adc","unresolved":false,"context_lines":[{"line_number":164,"context_line":"                                            endpoint\u003dendpoint,"},{"line_number":165,"context_line":"                                            original_ip\u003dremote_addr,"},{"line_number":166,"context_line":"                                            insecure\u003dinsecure,"},{"line_number":167,"context_line":"                                            auth_url\u003dauth_url,"},{"line_number":168,"context_line":"                                            debug\u003dsettings.DEBUG)"},{"line_number":169,"context_line":"        setattr(request, cache_attr, conn)"},{"line_number":170,"context_line":"    return conn"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAPH%2F%2F3%2Bg%3D","line":167,"in_reply_to":"AAAAPH%2F%2F4K4%3D","updated":"2013-05-21 07:28:43.000000000","message":"Sorry, I misunderstand your suggestion here. update_own_password works for both regular users and admin users. and this changing password is mostly used by regular users. IMO, it\u0027s no need to use user_update_password for the admin\u003dTrue case here.","commit_id":"2be0c1ce51deccd9f7246d8d10b38fc600b703b1"},{"author":{"_account_id":5733,"name":"Kieran Spear","email":"kispear@gmail.com","username":"kspear"},"change_message_id":"d9e1ec2cd70ed41a07633f4be314c7e5270a53bc","unresolved":false,"context_lines":[{"line_number":164,"context_line":"                                            endpoint\u003dendpoint,"},{"line_number":165,"context_line":"                                            original_ip\u003dremote_addr,"},{"line_number":166,"context_line":"                                            insecure\u003dinsecure,"},{"line_number":167,"context_line":"                                            auth_url\u003dauth_url,"},{"line_number":168,"context_line":"                                            debug\u003dsettings.DEBUG)"},{"line_number":169,"context_line":"        setattr(request, cache_attr, conn)"},{"line_number":170,"context_line":"    return conn"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAPH%2F%2F4K4%3D","line":167,"in_reply_to":"AAAAPH%2F%2F4Mw%3D","updated":"2013-05-21 05:51:38.000000000","message":"Could you explain the original problem again? From your description above, I understand that without this change in keystoneclient(), password changing works for regular users but not for admin users?\n\nI\u0027m suggesting using user_update_password for admin users only.","commit_id":"2be0c1ce51deccd9f7246d8d10b38fc600b703b1"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"41dfd65c436c1331c17d6f5fa6ec9be37f2d7b73","unresolved":false,"context_lines":[{"line_number":164,"context_line":"                                            endpoint\u003dendpoint,"},{"line_number":165,"context_line":"                                            original_ip\u003dremote_addr,"},{"line_number":166,"context_line":"                                            insecure\u003dinsecure,"},{"line_number":167,"context_line":"                                            auth_url\u003dauth_url,"},{"line_number":168,"context_line":"                                            debug\u003dsettings.DEBUG)"},{"line_number":169,"context_line":"        setattr(request, cache_attr, conn)"},{"line_number":170,"context_line":"    return conn"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAPH%2F%2F4Mw%3D","line":167,"in_reply_to":"AAAAPH%2F%2F4P8%3D","updated":"2013-05-21 04:56:17.000000000","message":"Okay, if you defer user_update_own_password to user_update_password for admin\u003dTrue will just return an error \u0027can not accsess resources\u0027 for non admin user.","commit_id":"2be0c1ce51deccd9f7246d8d10b38fc600b703b1"}],"openstack_dashboard/dashboards/settings/password/forms.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"ec526594977fec486eda9947547a0b607379a7ed","unresolved":false,"context_lines":[{"line_number":65,"context_line":"            except:"},{"line_number":66,"context_line":"                redirect \u003d reverse(\"horizon:settings:password:index\")"},{"line_number":67,"context_line":"                exceptions.handle(request,"},{"line_number":68,"context_line":"                                  _(\u0027Unable to reset password.\u0027),"},{"line_number":69,"context_line":"                                  redirect\u003dredirect)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAN3%2F%2F1hw%3D","line":68,"updated":"2013-03-10 10:03:23.000000000","message":"How about changing \"reset\" to \"change\"? In other places \"change\" is used.","commit_id":"ddaa5290b2c77754873bfcd1faee0ee639b089fe"},{"author":{"_account_id":4978,"name":"Julie Pichon","email":"jpichon@redhat.com","username":"jpichon"},"change_message_id":"73234b8336d417932242b8a526130e32df38b46c","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def clean_confirm_password(self):"},{"line_number":42,"context_line":"        \u0027\u0027\u0027Check to make sure password fields match.\u0027\u0027\u0027"},{"line_number":43,"context_line":"        data \u003d super(forms.Form, self).clean()"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        new_password \u003d data.get(\u0027new_password\u0027)"},{"line_number":46,"context_line":"        confirm_password \u003d data.get(\u0027confirm_password\u0027, None)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAN3%2F%2FyJg%3D","line":43,"updated":"2013-03-12 18:00:52.000000000","message":"This should be done inside the clean() method, otherwise the form will be validated twice.\n\nSee:\n\nhttps://docs.djangoproject.com/en/1.4/ref/forms/validation/#cleaning-and-validating-fields-that-depend-on-each-other\n\nhttps://github.com/openstack/horizon/blob/master/openstack_dashboard/dashboards/admin/users/forms.py#L49","commit_id":"44955ef1c941cffd3572b4c86fd2a346c305f56e"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"ce9d3087cda65c1d06a60b15b7e06924cd5cf564","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def clean_confirm_password(self):"},{"line_number":42,"context_line":"        \u0027\u0027\u0027Check to make sure password fields match.\u0027\u0027\u0027"},{"line_number":43,"context_line":"        data \u003d super(forms.Form, self).clean()"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        new_password \u003d data.get(\u0027new_password\u0027)"},{"line_number":46,"context_line":"        confirm_password \u003d data.get(\u0027confirm_password\u0027, None)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAN3%2F%2FxJ8%3D","line":43,"in_reply_to":"AAAAN3%2F%2FyJg%3D","updated":"2013-03-21 14:42:32.000000000","message":"Done","commit_id":"44955ef1c941cffd3572b4c86fd2a346c305f56e"},{"author":{"_account_id":4978,"name":"Julie Pichon","email":"jpichon@redhat.com","username":"jpichon"},"change_message_id":"73234b8336d417932242b8a526130e32df38b46c","unresolved":false,"context_lines":[{"line_number":60,"context_line":"                                                   data[\u0027current_password\u0027],"},{"line_number":61,"context_line":"                                                   data[\u0027new_password\u0027])"},{"line_number":62,"context_line":"                messages.success(request,"},{"line_number":63,"context_line":"                             translation.ugettext(\"password changed. Please\""},{"line_number":64,"context_line":"                                                  \"relogin to continue.\"))"},{"line_number":65,"context_line":"            except:"},{"line_number":66,"context_line":"                redirect \u003d reverse(\"horizon:settings:password:index\")"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAN3%2F%2FyKU%3D","line":63,"updated":"2013-03-12 18:00:52.000000000","message":"Why not use the _() syntax like above for the translated string?\n\nAlso the capitalisation and spaces are a bit off. It would be better as e.g.  \"Password changed. Please login again to continue.\"","commit_id":"44955ef1c941cffd3572b4c86fd2a346c305f56e"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"ce9d3087cda65c1d06a60b15b7e06924cd5cf564","unresolved":false,"context_lines":[{"line_number":60,"context_line":"                                                   data[\u0027current_password\u0027],"},{"line_number":61,"context_line":"                                                   data[\u0027new_password\u0027])"},{"line_number":62,"context_line":"                messages.success(request,"},{"line_number":63,"context_line":"                             translation.ugettext(\"password changed. Please\""},{"line_number":64,"context_line":"                                                  \"relogin to continue.\"))"},{"line_number":65,"context_line":"            except:"},{"line_number":66,"context_line":"                redirect \u003d reverse(\"horizon:settings:password:index\")"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAN3%2F%2FxJ4%3D","line":63,"in_reply_to":"AAAAN3%2F%2FyKU%3D","updated":"2013-03-21 14:42:32.000000000","message":"Done","commit_id":"44955ef1c941cffd3572b4c86fd2a346c305f56e"},{"author":{"_account_id":4978,"name":"Julie Pichon","email":"jpichon@redhat.com","username":"jpichon"},"change_message_id":"73234b8336d417932242b8a526130e32df38b46c","unresolved":false,"context_lines":[{"line_number":61,"context_line":"                                                   data[\u0027new_password\u0027])"},{"line_number":62,"context_line":"                messages.success(request,"},{"line_number":63,"context_line":"                             translation.ugettext(\"password changed. Please\""},{"line_number":64,"context_line":"                                                  \"relogin to continue.\"))"},{"line_number":65,"context_line":"            except:"},{"line_number":66,"context_line":"                redirect \u003d reverse(\"horizon:settings:password:index\")"},{"line_number":67,"context_line":"                exceptions.handle(request,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAN3%2F%2FyJE%3D","line":64,"updated":"2013-03-12 18:00:52.000000000","message":"Speaking of login in again, we probably want to force-logout the user, since (if I understand correctly) the user\u0027s current token will be invalidated and they won\u0027t be able to do anything else in the dashboard.","commit_id":"44955ef1c941cffd3572b4c86fd2a346c305f56e"},{"author":{"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},"change_message_id":"bf15d9583f401c9ad6b62bd6336538d0aa104756","unresolved":false,"context_lines":[{"line_number":61,"context_line":"                                                   data[\u0027new_password\u0027])"},{"line_number":62,"context_line":"                messages.success(request,"},{"line_number":63,"context_line":"                             translation.ugettext(\"password changed. Please\""},{"line_number":64,"context_line":"                                                  \"relogin to continue.\"))"},{"line_number":65,"context_line":"            except:"},{"line_number":66,"context_line":"                redirect \u003d reverse(\"horizon:settings:password:index\")"},{"line_number":67,"context_line":"                exceptions.handle(request,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAN3%2F%2FxqE%3D","line":64,"in_reply_to":"AAAAN3%2F%2FyJE%3D","updated":"2013-03-12 21:49:06.000000000","message":"Yes, nothing is forcing to logout the user right now.","commit_id":"44955ef1c941cffd3572b4c86fd2a346c305f56e"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"ce9d3087cda65c1d06a60b15b7e06924cd5cf564","unresolved":false,"context_lines":[{"line_number":61,"context_line":"                                                   data[\u0027new_password\u0027])"},{"line_number":62,"context_line":"                messages.success(request,"},{"line_number":63,"context_line":"                             translation.ugettext(\"password changed. Please\""},{"line_number":64,"context_line":"                                                  \"relogin to continue.\"))"},{"line_number":65,"context_line":"            except:"},{"line_number":66,"context_line":"                redirect \u003d reverse(\"horizon:settings:password:index\")"},{"line_number":67,"context_line":"                exceptions.handle(request,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAN3%2F%2FxKY%3D","line":64,"in_reply_to":"AAAAN3%2F%2FyJE%3D","updated":"2013-03-21 14:42:32.000000000","message":"i will add a logout(request)","commit_id":"44955ef1c941cffd3572b4c86fd2a346c305f56e"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"2adc8292e522557fa281d6bb6067fa24b4fd9490","unresolved":false,"context_lines":[{"line_number":57,"context_line":"                passwd \u003d api.keystone.user_update_own_password(request,"},{"line_number":58,"context_line":"                                                   data[\u0027current_password\u0027],"},{"line_number":59,"context_line":"                                                   data[\u0027new_password\u0027])"},{"line_number":60,"context_line":"                logout(request)"},{"line_number":61,"context_line":"                fallback \u003d _(\u0027Password changed. Please login \u0027 +"},{"line_number":62,"context_line":"                             \u0027again to continue.\u0027)"},{"line_number":63,"context_line":"                messages.success(request,"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAOH%2F%2F5zo%3D","line":60,"updated":"2013-03-21 15:54:36.000000000","message":"See comments in views.py, this is not required..\n\n Calling the django logout bypass the additional cleanup performed by openstack-auth on user logout.","commit_id":"ace8029da1fa46f7db0f87ead9e110515d88e411"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"2798092fb364c4b363d4abd475da3f5324c4023d","unresolved":false,"context_lines":[{"line_number":57,"context_line":"                passwd \u003d api.keystone.user_update_own_password(request,"},{"line_number":58,"context_line":"                                                   data[\u0027current_password\u0027],"},{"line_number":59,"context_line":"                                                   data[\u0027new_password\u0027])"},{"line_number":60,"context_line":"                logout(request)"},{"line_number":61,"context_line":"                fallback \u003d _(\u0027Password changed. Please login \u0027 +"},{"line_number":62,"context_line":"                             \u0027again to continue.\u0027)"},{"line_number":63,"context_line":"                messages.success(request,"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAOH%2F%2F4wk%3D","line":60,"in_reply_to":"AAAAOH%2F%2F5zo%3D","updated":"2013-03-22 02:49:38.000000000","message":"Done","commit_id":"ace8029da1fa46f7db0f87ead9e110515d88e411"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"2adc8292e522557fa281d6bb6067fa24b4fd9490","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                                                   data[\u0027current_password\u0027],"},{"line_number":59,"context_line":"                                                   data[\u0027new_password\u0027])"},{"line_number":60,"context_line":"                logout(request)"},{"line_number":61,"context_line":"                fallback \u003d _(\u0027Password changed. Please login \u0027 +"},{"line_number":62,"context_line":"                             \u0027again to continue.\u0027)"},{"line_number":63,"context_line":"                messages.success(request,"},{"line_number":64,"context_line":"                                 fallback, extra_tags\u003d\"password_changed\")"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAOH%2F%2F5zc%3D","line":61,"updated":"2013-03-21 15:54:36.000000000","message":"why is the variable name called fallback?\n\nThe extra_tags may not be needed as well.","commit_id":"ace8029da1fa46f7db0f87ead9e110515d88e411"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"2798092fb364c4b363d4abd475da3f5324c4023d","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                                                   data[\u0027current_password\u0027],"},{"line_number":59,"context_line":"                                                   data[\u0027new_password\u0027])"},{"line_number":60,"context_line":"                logout(request)"},{"line_number":61,"context_line":"                fallback \u003d _(\u0027Password changed. Please login \u0027 +"},{"line_number":62,"context_line":"                             \u0027again to continue.\u0027)"},{"line_number":63,"context_line":"                messages.success(request,"},{"line_number":64,"context_line":"                                 fallback, extra_tags\u003d\"password_changed\")"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAOH%2F%2F4wg%3D","line":61,"in_reply_to":"AAAAOH%2F%2F5zc%3D","updated":"2013-03-22 02:49:38.000000000","message":"Done","commit_id":"ace8029da1fa46f7db0f87ead9e110515d88e411"},{"author":{"_account_id":1816,"name":"Gabriel Hurley","email":"gabriel.hurley@nebula.com","username":"gabriel-hurley"},"change_message_id":"a216120fac82369250f924ffa0b79cb0b5531c99","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    def handle(self, request, data):"},{"line_number":52,"context_line":"        user_is_editable \u003d api.keystone.keystone_can_edit_user()"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        if user_is_editable:"},{"line_number":55,"context_line":"            try:"},{"line_number":56,"context_line":"                passwd \u003d api.keystone.user_update_own_password(request,"},{"line_number":57,"context_line":"                                                   data[\u0027current_password\u0027],"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAOn%2F%2FtSk%3D","line":54,"updated":"2013-04-26 18:59:08.000000000","message":"This needs an \"else\" to inform the user that the password was *not* updated. Otherwise it will be completely misleading.","commit_id":"a31eba8bce3b71a2de9d6277fdc16bd33c643be7"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"ab36c1000deb5eb5e750f2c648ab845ffe6e8237","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    def handle(self, request, data):"},{"line_number":52,"context_line":"        user_is_editable \u003d api.keystone.keystone_can_edit_user()"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        if user_is_editable:"},{"line_number":55,"context_line":"            try:"},{"line_number":56,"context_line":"                passwd \u003d api.keystone.user_update_own_password(request,"},{"line_number":57,"context_line":"                                                   data[\u0027current_password\u0027],"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAOn%2F%2Fszc%3D","line":54,"in_reply_to":"AAAAOn%2F%2FtSk%3D","updated":"2013-04-27 02:25:08.000000000","message":"Done","commit_id":"a31eba8bce3b71a2de9d6277fdc16bd33c643be7"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"e6706c394fbb4dc0f8deb981d598dfdcf830db6d","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        if user_is_editable:"},{"line_number":55,"context_line":"            try:"},{"line_number":56,"context_line":"                passwd \u003d api.keystone.user_update_own_password(request,"},{"line_number":57,"context_line":"                                                   data[\u0027current_password\u0027],"},{"line_number":58,"context_line":"                                                   data[\u0027new_password\u0027])"},{"line_number":59,"context_line":"                messages.success(request, \u0027Password changed.\u0027)"},{"line_number":60,"context_line":"            except:"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAOn%2F%2FmvM%3D","line":57,"updated":"2013-05-02 03:47:18.000000000","message":"The indentation looks odd, number of space not divisible by 4.","commit_id":"6e7571c81f539943a68d915d9b4165555cbf2779"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"eb5dfa359265e1dc2edf4f665227d073d34cf85a","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        if user_is_editable:"},{"line_number":55,"context_line":"            try:"},{"line_number":56,"context_line":"                passwd \u003d api.keystone.user_update_own_password(request,"},{"line_number":57,"context_line":"                                                   data[\u0027current_password\u0027],"},{"line_number":58,"context_line":"                                                   data[\u0027new_password\u0027])"},{"line_number":59,"context_line":"                messages.success(request, \u0027Password changed.\u0027)"},{"line_number":60,"context_line":"            except:"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAOn%2F%2Fmqw%3D","line":57,"in_reply_to":"AAAAOn%2F%2FmvM%3D","updated":"2013-05-02 06:57:47.000000000","message":"Done","commit_id":"6e7571c81f539943a68d915d9b4165555cbf2779"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"e6706c394fbb4dc0f8deb981d598dfdcf830db6d","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                                                   data[\u0027new_password\u0027])"},{"line_number":59,"context_line":"                messages.success(request, \u0027Password changed.\u0027)"},{"line_number":60,"context_line":"            except:"},{"line_number":61,"context_line":"                redirect \u003d reverse(\"horizon:settings:password:index\")"},{"line_number":62,"context_line":"                exceptions.handle(request,"},{"line_number":63,"context_line":"                                  _(\u0027Unable to change password.\u0027),"},{"line_number":64,"context_line":"                                  redirect\u003dredirect)"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAOn%2F%2FmvI%3D","line":61,"updated":"2013-05-02 03:47:18.000000000","message":"I think using redirect and passing it to exceptions.handle() is unnecessary\n\nIf you return \"False\" in this handle method, it would just keep the form as is. You got the same behavior you want in a consistent way with other forms,","commit_id":"6e7571c81f539943a68d915d9b4165555cbf2779"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"eb5dfa359265e1dc2edf4f665227d073d34cf85a","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                                                   data[\u0027new_password\u0027])"},{"line_number":59,"context_line":"                messages.success(request, \u0027Password changed.\u0027)"},{"line_number":60,"context_line":"            except:"},{"line_number":61,"context_line":"                redirect \u003d reverse(\"horizon:settings:password:index\")"},{"line_number":62,"context_line":"                exceptions.handle(request,"},{"line_number":63,"context_line":"                                  _(\u0027Unable to change password.\u0027),"},{"line_number":64,"context_line":"                                  redirect\u003dredirect)"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAOn%2F%2Fmkc%3D","line":61,"in_reply_to":"AAAAOn%2F%2FmvI%3D","updated":"2013-05-02 06:57:47.000000000","message":"Done","commit_id":"6e7571c81f539943a68d915d9b4165555cbf2779"},{"author":{"_account_id":4978,"name":"Julie Pichon","email":"jpichon@redhat.com","username":"jpichon"},"change_message_id":"bda5b44b6edd5427cbe577b62b72d96cc19ab2af","unresolved":false,"context_lines":[{"line_number":62,"context_line":"                                  _(\u0027Unable to change password.\u0027))"},{"line_number":63,"context_line":"                return False"},{"line_number":64,"context_line":"        else:"},{"line_number":65,"context_line":"            messages.error(request, _(\u0027Changing Password is not supported.\u0027))"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAOn%2F%2FciE%3D","line":65,"updated":"2013-05-09 12:56:44.000000000","message":"Shouldn\u0027t this have \"return False\" as well? Otherwise the user gets logged out even though the token isn\u0027t invalidated and the password change didn\u0027t take place.","commit_id":"f69005ce0e2b11c4cea6c9dd74c885c08b90fbe8"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"8273b22c1af59d47c3ed8a5161843c970ba06263","unresolved":false,"context_lines":[{"line_number":62,"context_line":"                                  _(\u0027Unable to change password.\u0027))"},{"line_number":63,"context_line":"                return False"},{"line_number":64,"context_line":"        else:"},{"line_number":65,"context_line":"            messages.error(request, _(\u0027Changing Password is not supported.\u0027))"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAOn%2F%2Fcfk%3D","line":65,"in_reply_to":"AAAAOn%2F%2FciE%3D","updated":"2013-05-09 13:31:45.000000000","message":"Done","commit_id":"f69005ce0e2b11c4cea6c9dd74c885c08b90fbe8"},{"author":{"_account_id":5623,"name":"David Lyle","email":"dklyle0@gmail.com","username":"david-lyle"},"change_message_id":"cee325037b7255e94499cad4765c085588a00379","unresolved":false,"context_lines":[{"line_number":62,"context_line":"                                  _(\u0027Unable to change password.\u0027))"},{"line_number":63,"context_line":"                return False"},{"line_number":64,"context_line":"        else:"},{"line_number":65,"context_line":"            messages.error(request, _(\u0027Changing Password is not supported.\u0027))"},{"line_number":66,"context_line":"            return False"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAOn%2F%2FbY4%3D","line":65,"updated":"2013-05-09 22:36:00.000000000","message":"\u0027Password\u0027 should be \u0027password\u0027.","commit_id":"0623e54fba79e265343dc0e4a81ec5dc4cb3f359"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"d1c210118ce1bbeb7fcda057d5fe679571d7dbbc","unresolved":false,"context_lines":[{"line_number":62,"context_line":"                                  _(\u0027Unable to change password.\u0027))"},{"line_number":63,"context_line":"                return False"},{"line_number":64,"context_line":"        else:"},{"line_number":65,"context_line":"            messages.error(request, _(\u0027Changing Password is not supported.\u0027))"},{"line_number":66,"context_line":"            return False"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAOn%2F%2FbVY%3D","line":65,"in_reply_to":"AAAAOn%2F%2FbY4%3D","updated":"2013-05-09 22:56:05.000000000","message":"Done","commit_id":"0623e54fba79e265343dc0e4a81ec5dc4cb3f359"}],"openstack_dashboard/dashboards/settings/password/templates/password/_change.html":[{"author":{"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},"change_message_id":"bf15d9583f401c9ad6b62bd6336538d0aa104756","unresolved":false,"context_lines":[{"line_number":15,"context_line":"\u003c/div\u003e"},{"line_number":16,"context_line":"\u003cdiv class\u003d\"right\"\u003e"},{"line_number":17,"context_line":"    \u003ch3\u003e{% trans \"Description:\" %}\u003c/h3\u003e"},{"line_number":18,"context_line":"    \u003cp\u003e{% trans \"From here you can change your password. We highly recommend you create a strong one. \" %}\u003c/p\u003e"},{"line_number":19,"context_line":"    \u003cp\u003e{% trans \"Note: You can\u0027t reuse your old password once you change it\" %}\u003c/p\u003e"},{"line_number":20,"context_line":"\u003c/div\u003e"},{"line_number":21,"context_line":"{% endblock %}"}],"source_content_type":"text/html","patch_set":7,"id":"AAAAN3%2F%2Fxp4%3D","line":18,"updated":"2013-03-12 21:49:06.000000000","message":"Nice sentence, but what does that mean? To the naive user: nothing.","commit_id":"44955ef1c941cffd3572b4c86fd2a346c305f56e"},{"author":{"_account_id":4978,"name":"Julie Pichon","email":"jpichon@redhat.com","username":"jpichon"},"change_message_id":"73234b8336d417932242b8a526130e32df38b46c","unresolved":false,"context_lines":[{"line_number":16,"context_line":"\u003cdiv class\u003d\"right\"\u003e"},{"line_number":17,"context_line":"    \u003ch3\u003e{% trans \"Description:\" %}\u003c/h3\u003e"},{"line_number":18,"context_line":"    \u003cp\u003e{% trans \"From here you can change your password. We highly recommend you create a strong one. \" %}\u003c/p\u003e"},{"line_number":19,"context_line":"    \u003cp\u003e{% trans \"Note: You can\u0027t reuse your old password once you change it\" %}\u003c/p\u003e"},{"line_number":20,"context_line":"\u003c/div\u003e"},{"line_number":21,"context_line":"{% endblock %}"},{"line_number":22,"context_line":""}],"source_content_type":"text/html","patch_set":7,"id":"AAAAN3%2F%2FyJ8%3D","line":19,"updated":"2013-03-12 18:00:52.000000000","message":"That note doesn\u0027t seem to be true, I was able to reuse my old password","commit_id":"44955ef1c941cffd3572b4c86fd2a346c305f56e"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"ce9d3087cda65c1d06a60b15b7e06924cd5cf564","unresolved":false,"context_lines":[{"line_number":16,"context_line":"\u003cdiv class\u003d\"right\"\u003e"},{"line_number":17,"context_line":"    \u003ch3\u003e{% trans \"Description:\" %}\u003c/h3\u003e"},{"line_number":18,"context_line":"    \u003cp\u003e{% trans \"From here you can change your password. We highly recommend you create a strong one. \" %}\u003c/p\u003e"},{"line_number":19,"context_line":"    \u003cp\u003e{% trans \"Note: You can\u0027t reuse your old password once you change it\" %}\u003c/p\u003e"},{"line_number":20,"context_line":"\u003c/div\u003e"},{"line_number":21,"context_line":"{% endblock %}"},{"line_number":22,"context_line":""}],"source_content_type":"text/html","patch_set":7,"id":"AAAAN3%2F%2FxKM%3D","line":19,"in_reply_to":"AAAAN3%2F%2FyJ8%3D","updated":"2013-03-21 14:42:32.000000000","message":"Done","commit_id":"44955ef1c941cffd3572b4c86fd2a346c305f56e"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"2adc8292e522557fa281d6bb6067fa24b4fd9490","unresolved":false,"context_lines":[{"line_number":5,"context_line":"{% block form_action %}{% url horizon:settings:password:index %}{% endblock %}"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"{% block modal_id %}change_password_modal{% endblock %}"},{"line_number":8,"context_line":"{% block modal-header %}{% trans \"Change your password\" %}{% endblock %}"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"{% block modal-body %}"},{"line_number":11,"context_line":"\u003cdiv class\u003d\"left\"\u003e"}],"source_content_type":"text/html","patch_set":15,"id":"AAAAOH%2F%2F500%3D","line":8,"updated":"2013-03-21 15:54:36.000000000","message":"Should be title case, perhaps just change it to \"Change Password.\"","commit_id":"ace8029da1fa46f7db0f87ead9e110515d88e411"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"2798092fb364c4b363d4abd475da3f5324c4023d","unresolved":false,"context_lines":[{"line_number":5,"context_line":"{% block form_action %}{% url horizon:settings:password:index %}{% endblock %}"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"{% block modal_id %}change_password_modal{% endblock %}"},{"line_number":8,"context_line":"{% block modal-header %}{% trans \"Change your password\" %}{% endblock %}"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"{% block modal-body %}"},{"line_number":11,"context_line":"\u003cdiv class\u003d\"left\"\u003e"}],"source_content_type":"text/html","patch_set":15,"id":"AAAAOH%2F%2F4yk%3D","line":8,"in_reply_to":"AAAAOH%2F%2F500%3D","updated":"2013-03-22 02:49:38.000000000","message":"Done","commit_id":"ace8029da1fa46f7db0f87ead9e110515d88e411"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"e6706c394fbb4dc0f8deb981d598dfdcf830db6d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{% extends \"horizon/common/_modal_form.html\" %}"},{"line_number":2,"context_line":"{% load i18n %}"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"{% block form_id %}change_password_modal{% endblock %}"},{"line_number":5,"context_line":"{% block form_action %}{% url horizon:settings:password:index %}{% endblock %}"}],"source_content_type":"text/html","patch_set":21,"id":"AAAAOn%2F%2FmwI%3D","line":2,"updated":"2013-05-02 03:47:18.000000000","message":"We\u0027re going to support django 1.5 soon, might as well make this this compatible to avoid further work.\n\nAdd here:\n{% load url from future %}","commit_id":"6e7571c81f539943a68d915d9b4165555cbf2779"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"eb5dfa359265e1dc2edf4f665227d073d34cf85a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{% extends \"horizon/common/_modal_form.html\" %}"},{"line_number":2,"context_line":"{% load i18n %}"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"{% block form_id %}change_password_modal{% endblock %}"},{"line_number":5,"context_line":"{% block form_action %}{% url horizon:settings:password:index %}{% endblock %}"}],"source_content_type":"text/html","patch_set":21,"id":"AAAAOn%2F%2FmrA%3D","line":2,"in_reply_to":"AAAAOn%2F%2FmwI%3D","updated":"2013-05-02 06:57:47.000000000","message":"Done","commit_id":"6e7571c81f539943a68d915d9b4165555cbf2779"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"e6706c394fbb4dc0f8deb981d598dfdcf830db6d","unresolved":false,"context_lines":[{"line_number":2,"context_line":"{% load i18n %}"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"{% block form_id %}change_password_modal{% endblock %}"},{"line_number":5,"context_line":"{% block form_action %}{% url horizon:settings:password:index %}{% endblock %}"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"{% block modal_id %}change_password_modal{% endblock %}"},{"line_number":8,"context_line":"{% block modal-header %}{% trans \"Change password\" %}{% endblock %}"}],"source_content_type":"text/html","patch_set":21,"id":"AAAAOn%2F%2FmwA%3D","line":5,"updated":"2013-05-02 03:47:18.000000000","message":"Add single quote around the url namespace value:\n\n{% block form_action %}{% url \u0027horizon:settings:password:index\u0027 %}{% endblock %}","commit_id":"6e7571c81f539943a68d915d9b4165555cbf2779"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"eb5dfa359265e1dc2edf4f665227d073d34cf85a","unresolved":false,"context_lines":[{"line_number":2,"context_line":"{% load i18n %}"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"{% block form_id %}change_password_modal{% endblock %}"},{"line_number":5,"context_line":"{% block form_action %}{% url horizon:settings:password:index %}{% endblock %}"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"{% block modal_id %}change_password_modal{% endblock %}"},{"line_number":8,"context_line":"{% block modal-header %}{% trans \"Change password\" %}{% endblock %}"}],"source_content_type":"text/html","patch_set":21,"id":"AAAAOn%2F%2FmrI%3D","line":5,"in_reply_to":"AAAAOn%2F%2FmwA%3D","updated":"2013-05-02 06:57:47.000000000","message":"Done","commit_id":"6e7571c81f539943a68d915d9b4165555cbf2779"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"e6706c394fbb4dc0f8deb981d598dfdcf830db6d","unresolved":false,"context_lines":[{"line_number":5,"context_line":"{% block form_action %}{% url horizon:settings:password:index %}{% endblock %}"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"{% block modal_id %}change_password_modal{% endblock %}"},{"line_number":8,"context_line":"{% block modal-header %}{% trans \"Change password\" %}{% endblock %}"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"{% block modal-body %}"},{"line_number":11,"context_line":"\u003cdiv class\u003d\"left\"\u003e"}],"source_content_type":"text/html","patch_set":21,"id":"AAAAOn%2F%2Fmv8%3D","line":8,"updated":"2013-05-02 03:47:18.000000000","message":"This header title does not match the title in change.html..  You used \"Password\" in the other file.","commit_id":"6e7571c81f539943a68d915d9b4165555cbf2779"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"eb5dfa359265e1dc2edf4f665227d073d34cf85a","unresolved":false,"context_lines":[{"line_number":5,"context_line":"{% block form_action %}{% url horizon:settings:password:index %}{% endblock %}"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"{% block modal_id %}change_password_modal{% endblock %}"},{"line_number":8,"context_line":"{% block modal-header %}{% trans \"Change password\" %}{% endblock %}"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"{% block modal-body %}"},{"line_number":11,"context_line":"\u003cdiv class\u003d\"left\"\u003e"}],"source_content_type":"text/html","patch_set":21,"id":"AAAAOn%2F%2FmrM%3D","line":8,"in_reply_to":"AAAAOn%2F%2Fmv8%3D","updated":"2013-05-02 06:57:47.000000000","message":"Done","commit_id":"6e7571c81f539943a68d915d9b4165555cbf2779"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"e6706c394fbb4dc0f8deb981d598dfdcf830db6d","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"{% block modal-footer %}"},{"line_number":24,"context_line":"    \u003cbutton type\u003d\"submit\" class\u003d\"btn btn-primary\"\u003e{% trans \"Change\" %}\u003c/button\u003e"},{"line_number":25,"context_line":"    {% if hide %}\u003ca href\u003d\"{% url horizon:settings:password:index %}\" class\u003d\"btn secondary cancel close\"\u003e{% trans \"Cancel\" %}\u003c/a\u003e{% endif %}"},{"line_number":26,"context_line":"{% endblock %}"},{"line_number":27,"context_line":""}],"source_content_type":"text/html","patch_set":21,"id":"AAAAOn%2F%2Fmv4%3D","line":25,"updated":"2013-05-02 03:47:18.000000000","message":"Same here, enclosed url namespace value in single quote.","commit_id":"6e7571c81f539943a68d915d9b4165555cbf2779"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"eb5dfa359265e1dc2edf4f665227d073d34cf85a","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"{% block modal-footer %}"},{"line_number":24,"context_line":"    \u003cbutton type\u003d\"submit\" class\u003d\"btn btn-primary\"\u003e{% trans \"Change\" %}\u003c/button\u003e"},{"line_number":25,"context_line":"    {% if hide %}\u003ca href\u003d\"{% url horizon:settings:password:index %}\" class\u003d\"btn secondary cancel close\"\u003e{% trans \"Cancel\" %}\u003c/a\u003e{% endif %}"},{"line_number":26,"context_line":"{% endblock %}"},{"line_number":27,"context_line":""}],"source_content_type":"text/html","patch_set":21,"id":"AAAAOn%2F%2FmrQ%3D","line":25,"in_reply_to":"AAAAOn%2F%2Fmv4%3D","updated":"2013-05-02 06:57:47.000000000","message":"Done","commit_id":"6e7571c81f539943a68d915d9b4165555cbf2779"},{"author":{"_account_id":5733,"name":"Kieran Spear","email":"kispear@gmail.com","username":"kspear"},"change_message_id":"ca69b35033ab56f74e0133ee9069a60e8ee3c49b","unresolved":false,"context_lines":[{"line_number":17,"context_line":"\u003cdiv class\u003d\"right\"\u003e"},{"line_number":18,"context_line":"    \u003ch3\u003e{% trans \"Description:\" %}\u003c/h3\u003e"},{"line_number":19,"context_line":"    \u003cp\u003e{% trans \"From here you can change your password. We highly recommend you create a strong one. \" %}\u003c/p\u003e"},{"line_number":20,"context_line":"    \u003cp\u003e{% trans \"Note: You can\u0027t reuse your old password once you change it\" %}\u003c/p\u003e"},{"line_number":21,"context_line":"\u003c/div\u003e"},{"line_number":22,"context_line":"{% endblock %}"},{"line_number":23,"context_line":""}],"source_content_type":"text/html","patch_set":23,"id":"AAAAOn%2F%2FiqU%3D","line":20,"updated":"2013-05-06 08:43:56.000000000","message":"This is confusing. Does it mean the old password won\u0027t be valid, or that you can\u0027t change it back to the old password again? Depending on your intent, this is either obvious or not true, so I think this line should be removed.","commit_id":"c103084dbff7f662aea5e250006ac7b21f64c54d"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"95f49dec8dd3b0397fc27dc16323799948d4b458","unresolved":false,"context_lines":[{"line_number":17,"context_line":"\u003cdiv class\u003d\"right\"\u003e"},{"line_number":18,"context_line":"    \u003ch3\u003e{% trans \"Description:\" %}\u003c/h3\u003e"},{"line_number":19,"context_line":"    \u003cp\u003e{% trans \"From here you can change your password. We highly recommend you create a strong one. \" %}\u003c/p\u003e"},{"line_number":20,"context_line":"    \u003cp\u003e{% trans \"Note: You can\u0027t reuse your old password once you change it\" %}\u003c/p\u003e"},{"line_number":21,"context_line":"\u003c/div\u003e"},{"line_number":22,"context_line":"{% endblock %}"},{"line_number":23,"context_line":""}],"source_content_type":"text/html","patch_set":23,"id":"AAAAOn%2F%2FinU%3D","line":20,"in_reply_to":"AAAAOn%2F%2FiqU%3D","updated":"2013-05-06 09:30:29.000000000","message":"Done","commit_id":"c103084dbff7f662aea5e250006ac7b21f64c54d"}],"openstack_dashboard/dashboards/settings/password/tests.py":[{"author":{"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},"change_message_id":"bf15d9583f401c9ad6b62bd6336538d0aa104756","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        self.assertFormError("},{"line_number":84,"context_line":"                res, \"form\", \u0027new_password\u0027,"},{"line_number":85,"context_line":"                [\u0027Password must be between 8 and 18 characters.\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAN3%2F%2FxqQ%3D","line":85,"updated":"2013-03-12 21:49:06.000000000","message":"Are you sure, that is true? .. between 8 and 18? I couldn\u0027t find that in your code. \n\nAnd also: You could hook keystone onto your AD/Whatever, is this still true? I find 18 chars is an unnecessary restriction.","commit_id":"44955ef1c941cffd3572b4c86fd2a346c305f56e"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"ce9d3087cda65c1d06a60b15b7e06924cd5cf564","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        self.assertFormError("},{"line_number":84,"context_line":"                res, \"form\", \u0027new_password\u0027,"},{"line_number":85,"context_line":"                [\u0027Password must be between 8 and 18 characters.\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAN3%2F%2FxKQ%3D","line":85,"in_reply_to":"AAAAN3%2F%2FxqQ%3D","updated":"2013-03-21 14:42:32.000000000","message":"this should be done in horizon.utils.validators.password_validator","commit_id":"44955ef1c941cffd3572b4c86fd2a346c305f56e"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"e6706c394fbb4dc0f8deb981d598dfdcf830db6d","unresolved":false,"context_lines":[{"line_number":26,"context_line":"INDEX_URL \u003d reverse(\u0027horizon:settings:password:index\u0027)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class ChangePasswordTests(test.BaseAdminViewTests):"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    @test.create_stubs({api.keystone: (\u0027user_update_own_password\u0027, )})"},{"line_number":32,"context_line":"    def test_change_password(self):"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAOn%2F%2FmwU%3D","line":29,"updated":"2013-05-02 03:47:18.000000000","message":"It should be just extending test.TestCase.  This is to test running the test as regular user.","commit_id":"6e7571c81f539943a68d915d9b4165555cbf2779"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"eb5dfa359265e1dc2edf4f665227d073d34cf85a","unresolved":false,"context_lines":[{"line_number":26,"context_line":"INDEX_URL \u003d reverse(\u0027horizon:settings:password:index\u0027)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class ChangePasswordTests(test.BaseAdminViewTests):"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    @test.create_stubs({api.keystone: (\u0027user_update_own_password\u0027, )})"},{"line_number":32,"context_line":"    def test_change_password(self):"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAOn%2F%2Fmq4%3D","line":29,"in_reply_to":"AAAAOn%2F%2FmwU%3D","updated":"2013-05-02 06:57:47.000000000","message":"Done","commit_id":"6e7571c81f539943a68d915d9b4165555cbf2779"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"e6706c394fbb4dc0f8deb981d598dfdcf830db6d","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        res \u003d self.client.post(INDEX_URL, formData)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        self.assertFromError(res, \u0027form\u0027, None, [\u0027Passwords do not match.\u0027])"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAOn%2F%2Fmwk%3D","line":57,"updated":"2013-05-02 03:47:18.000000000","message":"It should assertFormError","commit_id":"6e7571c81f539943a68d915d9b4165555cbf2779"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"eb5dfa359265e1dc2edf4f665227d073d34cf85a","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        res \u003d self.client.post(INDEX_URL, formData)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        self.assertFromError(res, \u0027form\u0027, None, [\u0027Passwords do not match.\u0027])"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAOn%2F%2Fmq0%3D","line":57,"in_reply_to":"AAAAOn%2F%2Fmwk%3D","updated":"2013-05-02 06:57:47.000000000","message":"Done","commit_id":"6e7571c81f539943a68d915d9b4165555cbf2779"},{"author":{"_account_id":5733,"name":"Kieran Spear","email":"kispear@gmail.com","username":"kspear"},"change_message_id":"ca69b35033ab56f74e0133ee9069a60e8ee3c49b","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    @test.create_stubs({api.keystone: (\u0027user_update_own_password\u0027, )})"},{"line_number":32,"context_line":"    def test_change_password(self):"},{"line_number":33,"context_line":"        api.keystone.user_update_own_password(IsA(http.HttpRequest),"},{"line_number":34,"context_line":"                                      IgnoreArg(),"},{"line_number":35,"context_line":"                                      IgnoreArg()).AndReturn(None)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        self.mox.ReplayAll()"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAOn%2F%2FiqI%3D","line":34,"updated":"2013-05-06 08:43:56.000000000","message":"Use \u0027oldpwd\u0027 and \u0027normalpwd\u0027 here rather than ignoring the arguments. Don\u0027t forget to remove the IgnoreArg import. :)","commit_id":"c103084dbff7f662aea5e250006ac7b21f64c54d"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"95f49dec8dd3b0397fc27dc16323799948d4b458","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    @test.create_stubs({api.keystone: (\u0027user_update_own_password\u0027, )})"},{"line_number":32,"context_line":"    def test_change_password(self):"},{"line_number":33,"context_line":"        api.keystone.user_update_own_password(IsA(http.HttpRequest),"},{"line_number":34,"context_line":"                                      IgnoreArg(),"},{"line_number":35,"context_line":"                                      IgnoreArg()).AndReturn(None)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        self.mox.ReplayAll()"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAOn%2F%2FinI%3D","line":34,"in_reply_to":"AAAAOn%2F%2FiqI%3D","updated":"2013-05-06 09:30:29.000000000","message":"Done","commit_id":"c103084dbff7f662aea5e250006ac7b21f64c54d"}],"openstack_dashboard/dashboards/settings/password/urls.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"ec526594977fec486eda9947547a0b607379a7ed","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"urlpatterns \u003d patterns(\u0027\u0027,"},{"line_number":23,"context_line":"    url(r\u0027^$\u0027, PasswordView.as_view(), name\u003d\u0027index\u0027))"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAN3%2F%2F1ho%3D","line":23,"updated":"2013-03-10 10:03:23.000000000","message":"I think \"index\" is not a good name for this feature. \"change\" looks more suitable. It is just a naming issue.","commit_id":"ddaa5290b2c77754873bfcd1faee0ee639b089fe"}],"openstack_dashboard/dashboards/settings/password/views.py":[{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"2adc8292e522557fa281d6bb6067fa24b4fd9490","unresolved":false,"context_lines":[{"line_number":23,"context_line":"class PasswordView(forms.ModalFormView):"},{"line_number":24,"context_line":"    form_class \u003d PasswordForm"},{"line_number":25,"context_line":"    template_name \u003d \u0027settings/password/change.html\u0027"},{"line_number":26,"context_line":"    success_url \u003d reverse_lazy(\u0027horizon:settings:password:index\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAOH%2F%2F5zs%3D","line":26,"updated":"2013-03-21 15:54:36.000000000","message":"Success should just redirect to reverse_lazy(\u0027logout\u0027), then you don\u0027t need to manually call the logout from forms.py.\n\nThis redirects the user to auth/login (login.html) page, which takes care of displaying the message.  Then the additional code you added in _login.html is not required anymore.","commit_id":"ace8029da1fa46f7db0f87ead9e110515d88e411"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"2798092fb364c4b363d4abd475da3f5324c4023d","unresolved":false,"context_lines":[{"line_number":23,"context_line":"class PasswordView(forms.ModalFormView):"},{"line_number":24,"context_line":"    form_class \u003d PasswordForm"},{"line_number":25,"context_line":"    template_name \u003d \u0027settings/password/change.html\u0027"},{"line_number":26,"context_line":"    success_url \u003d reverse_lazy(\u0027horizon:settings:password:index\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAOH%2F%2F4wo%3D","line":26,"in_reply_to":"AAAAOH%2F%2F5zs%3D","updated":"2013-03-22 02:49:38.000000000","message":"Done","commit_id":"ace8029da1fa46f7db0f87ead9e110515d88e411"}]}
