)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11941,"name":"Richard Hagarty","email":"rich.hagarty@ibm.com","username":"rhagarty"},"change_message_id":"7495c8db999d752fc93429e7f1c4aab275054d85","unresolved":false,"context_lines":[{"line_number":12,"context_line":"in order to be able to evaluate each case."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I849c6ac0bfd8e5fed76387965caaa2b697300455"},{"line_number":15,"context_line":"Implements: blueprint inline-editing-implementation-to-all-tables"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"5a890539_56ad0f30","line":15,"updated":"2014-11-25 18:49:34.000000000","message":"I think this should be \"Partially Implements: ...\" since you are only addressing one table.","commit_id":"4b32b64019066c979d0ec683d7b7b9b2866977c8"}],"openstack_dashboard/api/keystone.py":[{"author":{"_account_id":13325,"name":"Paul Karikh","email":"pkarikh@gmail.com","username":"paul.karikh"},"change_message_id":"2f9f3fc226ee2d28860dd395932539e2a543ffeb","unresolved":false,"context_lines":[{"line_number":331,"context_line":""},{"line_number":332,"context_line":"        # Update user details"},{"line_number":333,"context_line":"        try:"},{"line_number":334,"context_line":"            user \u003d manager.update(user, **data)"},{"line_number":335,"context_line":"        except keystone_exceptions.Conflict:"},{"line_number":336,"context_line":"            message \u003d _(\"This name is already taken.\")"},{"line_number":337,"context_line":"            error \u003d exceptions.handle(request, message)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_c1a416a8","line":334,"updated":"2014-11-14 14:08:59.000000000","message":"I know that it should be committed as single patch, but just for consistency and checking convenience I\u0027ve temporary placed it here.","commit_id":"7332a54e6608d7d3ba5b0053fcf8552635a28761"}],"openstack_dashboard/dashboards/identity/users/tables.py":[{"author":{"_account_id":12355,"name":"Vlad Okhrimenko","email":"vokhrimenko@mirantis.com","username":"vokhrimenko"},"change_message_id":"348e459673a0464e64aa887c90bbbc42a5761a3d","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    policy_rules \u003d ((\u0027identity\u0027, \u0027identity:create_grant\u0027),"},{"line_number":40,"context_line":"                    (\"identity\", \"identity:create_user\"),"},{"line_number":41,"context_line":"                    (\"identity\", \"identity:list_roles\"),"},{"line_number":42,"context_line":"                    (\"identity\", \"identity:list_projects\"),)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def allowed(self, request, user):"},{"line_number":45,"context_line":"        return api.keystone.keystone_can_edit_user()"}],"source_content_type":"text/x-python","patch_set":4,"id":"baa201ad_ffa94b7c","line":42,"updated":"2014-09-29 08:45:04.000000000","message":"(nit) (\"identity\", \"identity:list_projects\"),) ---\u003e   (\"identity\", \"identity:list_projects\"))","commit_id":"bb7c42c909a5a7deab8f9f8cfbe72fd3b8269578"},{"author":{"_account_id":13325,"name":"Paul Karikh","email":"pkarikh@gmail.com","username":"paul.karikh"},"change_message_id":"4f7df8fc355f4fbf978f4de4f2e6f6bbeaf07072","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    policy_rules \u003d ((\u0027identity\u0027, \u0027identity:create_grant\u0027),"},{"line_number":40,"context_line":"                    (\"identity\", \"identity:create_user\"),"},{"line_number":41,"context_line":"                    (\"identity\", \"identity:list_roles\"),"},{"line_number":42,"context_line":"                    (\"identity\", \"identity:list_projects\"),)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def allowed(self, request, user):"},{"line_number":45,"context_line":"        return api.keystone.keystone_can_edit_user()"}],"source_content_type":"text/x-python","patch_set":4,"id":"baa201ad_381d8210","line":42,"in_reply_to":"baa201ad_ffa94b7c","updated":"2014-10-03 12:28:52.000000000","message":"Because it is not connected with this patchset, I think it would be better not to fix it now.","commit_id":"bb7c42c909a5a7deab8f9f8cfbe72fd3b8269578"},{"author":{"_account_id":12355,"name":"Vlad Okhrimenko","email":"vokhrimenko@mirantis.com","username":"vokhrimenko"},"change_message_id":"348e459673a0464e64aa887c90bbbc42a5761a3d","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    classes \u003d (\"ajax-modal\",)"},{"line_number":53,"context_line":"    icon \u003d \"pencil\""},{"line_number":54,"context_line":"    policy_rules \u003d ((\"identity\", \"identity:update_user\"),"},{"line_number":55,"context_line":"                    (\"identity\", \"identity:list_projects\"),)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def get_policy_target(self, request, user):"},{"line_number":58,"context_line":"        return {\"user_id\": user.id}"}],"source_content_type":"text/x-python","patch_set":4,"id":"baa201ad_bf918354","line":55,"updated":"2014-09-29 08:45:04.000000000","message":"(nit)  (\"identity\", \"identity:list_projects\"),)  ---\u003e  (\"identity\", \"identity:list_projects\"))","commit_id":"bb7c42c909a5a7deab8f9f8cfbe72fd3b8269578"},{"author":{"_account_id":13325,"name":"Paul Karikh","email":"pkarikh@gmail.com","username":"paul.karikh"},"change_message_id":"4f7df8fc355f4fbf978f4de4f2e6f6bbeaf07072","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    classes \u003d (\"ajax-modal\",)"},{"line_number":53,"context_line":"    icon \u003d \"pencil\""},{"line_number":54,"context_line":"    policy_rules \u003d ((\"identity\", \"identity:update_user\"),"},{"line_number":55,"context_line":"                    (\"identity\", \"identity:list_projects\"),)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def get_policy_target(self, request, user):"},{"line_number":58,"context_line":"        return {\"user_id\": user.id}"}],"source_content_type":"text/x-python","patch_set":4,"id":"baa201ad_b8d89254","line":55,"in_reply_to":"baa201ad_bf918354","updated":"2014-10-03 12:28:52.000000000","message":"Because it is not connected with this patchset, I think it would be better not to fix it now.","commit_id":"bb7c42c909a5a7deab8f9f8cfbe72fd3b8269578"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"b5c011ed97f835ff3c36c2188849ee29f762bf6b","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from horizon import forms"},{"line_number":20,"context_line":"from horizon import messages"},{"line_number":21,"context_line":"from horizon import tables"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from openstack_dashboard import api"},{"line_number":24,"context_line":"from openstack_dashboard import policy"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_06bd5cb7","line":22,"updated":"2014-10-15 11:28:48.000000000","message":"Empty line is not needed because imports from the modules of current project is a single group.","commit_id":"629b8fdc40739afefd4ba55cbfe904edf3ac207e"},{"author":{"_account_id":13325,"name":"Paul Karikh","email":"pkarikh@gmail.com","username":"paul.karikh"},"change_message_id":"3810b7844e45e372c1e6acf37d6593835090f955","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from horizon import forms"},{"line_number":20,"context_line":"from horizon import messages"},{"line_number":21,"context_line":"from horizon import tables"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from openstack_dashboard import api"},{"line_number":24,"context_line":"from openstack_dashboard import policy"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_860a2c24","line":22,"in_reply_to":"baa201ad_06bd5cb7","updated":"2014-10-15 11:38:43.000000000","message":"Done","commit_id":"629b8fdc40739afefd4ba55cbfe904edf3ac207e"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"b5c011ed97f835ff3c36c2188849ee29f762bf6b","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from openstack_dashboard import api"},{"line_number":24,"context_line":"from openstack_dashboard import policy"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from keystoneclient import exceptions as keystone_exceptions"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"ENABLE \u003d 0"},{"line_number":29,"context_line":"DISABLE \u003d 1"}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_a6aad06e","line":26,"updated":"2014-10-15 11:28:48.000000000","message":"Please move this line to the first empty-line separated group (where django imports are) - it is related to the third-party dependencies.\n\nSee http://legacy.python.org/dev/peps/pep-0008/#imports and http://docs.openstack.org/developer/hacking/ for reference","commit_id":"629b8fdc40739afefd4ba55cbfe904edf3ac207e"},{"author":{"_account_id":13325,"name":"Paul Karikh","email":"pkarikh@gmail.com","username":"paul.karikh"},"change_message_id":"3810b7844e45e372c1e6acf37d6593835090f955","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from openstack_dashboard import api"},{"line_number":24,"context_line":"from openstack_dashboard import policy"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from keystoneclient import exceptions as keystone_exceptions"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"ENABLE \u003d 0"},{"line_number":29,"context_line":"DISABLE \u003d 1"}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_0106261d","line":26,"in_reply_to":"baa201ad_a6aad06e","updated":"2014-10-15 11:38:43.000000000","message":"It seems that you are right. Done.","commit_id":"629b8fdc40739afefd4ba55cbfe904edf3ac207e"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"e7125a18f1dd7642724e3b114c1e403af484afc7","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        try:"},{"line_number":183,"context_line":"            user_obj \u003d datum"},{"line_number":184,"context_line":"            setattr(user_obj, cell_name, new_cell_value)"},{"line_number":185,"context_line":"            api.keystone.user_update("},{"line_number":186,"context_line":"                request,"},{"line_number":187,"context_line":"                user_id,"},{"line_number":188,"context_line":"                name\u003duser_obj.name,"}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_5f061e87","line":185,"updated":"2014-10-07 11:26:10.000000000","message":"I\u0027m curious which component is responsible for sanitizing input data. If nobody is, we\u0027re heading straight into the http://xkcd.com/327/ :) I know you\u0027ve done this using projects/tables.py as an example (and it hasn\u0027t such check), but it is at least worth knowing who does the sanitation to be more confident you\u0027re not breaking something.","commit_id":"629b8fdc40739afefd4ba55cbfe904edf3ac207e"},{"author":{"_account_id":13325,"name":"Paul Karikh","email":"pkarikh@gmail.com","username":"paul.karikh"},"change_message_id":"9c5c809765ed3f78b3e73ea1ea552c1f31574805","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        try:"},{"line_number":183,"context_line":"            user_obj \u003d datum"},{"line_number":184,"context_line":"            setattr(user_obj, cell_name, new_cell_value)"},{"line_number":185,"context_line":"            api.keystone.user_update("},{"line_number":186,"context_line":"                request,"},{"line_number":187,"context_line":"                user_id,"},{"line_number":188,"context_line":"                name\u003duser_obj.name,"}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_303f1227","line":185,"in_reply_to":"baa201ad_5f061e87","updated":"2014-10-14 16:01:28.000000000","message":"Looks like Horizon uses Django form field validation. https://github.com/openstack/horizon/commit/c77d9074f13cb633cce2536c31605ddb378edc20#diff-7c89f7c6067c5c4aef2994045952e158R1403\nSo, if users tries to send invalid data, core_exceptions.ValidationError should be raised (same file from the link given above - line 1417 and below) before update_cell() method.","commit_id":"629b8fdc40739afefd4ba55cbfe904edf3ac207e"},{"author":{"_account_id":11880,"name":"Gloria Gu","email":"gloriafanggu@gmail.com","username":"gugl"},"change_message_id":"05e58391a085c74905f08fc96028e5907933991a","unresolved":false,"context_lines":[{"line_number":190,"context_line":""},{"line_number":191,"context_line":"        except keystone_exceptions.Conflict:"},{"line_number":192,"context_line":"            message \u003d _(\"This name is already taken.\")"},{"line_number":193,"context_line":"            raise django_exceptions.ValidationError(message)"},{"line_number":194,"context_line":"        except Exception:"},{"line_number":195,"context_line":"            horizon_exceptions.handle(request, ignore\u003dTrue)"},{"line_number":196,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a890539_bdc92b7a","line":193,"updated":"2014-11-13 02:53:36.000000000","message":"This error got raised but didn\u0027t show anything in the console or message. The edit box keeps open...can you check?","commit_id":"482f1e2e172884e099f8d077d5175df2877b237a"},{"author":{"_account_id":13325,"name":"Paul Karikh","email":"pkarikh@gmail.com","username":"paul.karikh"},"change_message_id":"cc91e77c1953deaa95d9df7c1c5e6ca0d8905e61","unresolved":false,"context_lines":[{"line_number":190,"context_line":""},{"line_number":191,"context_line":"        except keystone_exceptions.Conflict:"},{"line_number":192,"context_line":"            message \u003d _(\"This name is already taken.\")"},{"line_number":193,"context_line":"            raise django_exceptions.ValidationError(message)"},{"line_number":194,"context_line":"        except Exception:"},{"line_number":195,"context_line":"            horizon_exceptions.handle(request, ignore\u003dTrue)"},{"line_number":196,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a890539_20c5fd8d","line":193,"in_reply_to":"5a890539_bdc92b7a","updated":"2014-11-13 14:52:07.000000000","message":"Yep, I\u0027ve check it and looks like it works ok for me. I\u0027ve replied you in comments on the patch.","commit_id":"482f1e2e172884e099f8d077d5175df2877b237a"},{"author":{"_account_id":11599,"name":"Nikunj Aggarwal","email":"nikunj.aggarwal@hp.com","username":"nikunj2512"},"change_message_id":"40aaa9eda06a64c7f34d6dd6efad80118357dbf7","unresolved":false,"context_lines":[{"line_number":184,"context_line":"                request,"},{"line_number":185,"context_line":"                user_obj,"},{"line_number":186,"context_line":"                name\u003duser_obj.name,"},{"line_number":187,"context_line":"                email\u003duser_obj.email,"},{"line_number":188,"context_line":"                enabled\u003duser_obj.enabled,"},{"line_number":189,"context_line":"                project\u003duser_obj.project_id,"},{"line_number":190,"context_line":"                password\u003dNone)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a890539_e93dfa2d","line":187,"updated":"2014-11-19 11:55:25.000000000","message":"here you will get error if user_obj doesn\u0027t have email variable.\n\nFor example: if you created an user with no email address and then get the data then you can see the user_obj doesn\u0027t have a variable \u0027email\u0027 and in that case, code will fail here.\n\ni think it is best to check for the email variable.\n\nlike:\n\nif not hasattr(user_obj, email):\n     email \u003d None\nelse:\n     email \u003d user_obj.email","commit_id":"783f6c5437f009828d9e83613d3b5a14f3e89e41"},{"author":{"_account_id":11599,"name":"Nikunj Aggarwal","email":"nikunj.aggarwal@hp.com","username":"nikunj2512"},"change_message_id":"4b4b40e53bbd82f2466283afdc4fb566d0e03f3c","unresolved":false,"context_lines":[{"line_number":184,"context_line":"                request,"},{"line_number":185,"context_line":"                user_obj,"},{"line_number":186,"context_line":"                name\u003duser_obj.name,"},{"line_number":187,"context_line":"                email\u003duser_obj.email,"},{"line_number":188,"context_line":"                enabled\u003duser_obj.enabled,"},{"line_number":189,"context_line":"                project\u003duser_obj.project_id,"},{"line_number":190,"context_line":"                password\u003dNone)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a890539_51d95882","line":187,"in_reply_to":"5a890539_49a60e55","updated":"2014-11-19 12:13:59.000000000","message":"@Paul: In my view email should not be a required field. if you see the create and edit forms for users there also email field is an optional one.","commit_id":"783f6c5437f009828d9e83613d3b5a14f3e89e41"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"ec569a9205ee8016dc57790d2d26fb4be160bdb7","unresolved":false,"context_lines":[{"line_number":184,"context_line":"                request,"},{"line_number":185,"context_line":"                user_obj,"},{"line_number":186,"context_line":"                name\u003duser_obj.name,"},{"line_number":187,"context_line":"                email\u003duser_obj.email,"},{"line_number":188,"context_line":"                enabled\u003duser_obj.enabled,"},{"line_number":189,"context_line":"                project\u003duser_obj.project_id,"},{"line_number":190,"context_line":"                password\u003dNone)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a890539_d403760b","line":187,"in_reply_to":"5a890539_51d95882","updated":"2014-11-19 12:34:19.000000000","message":"I believe the form will simply send whatever is in that cell in the table at the time, whether that be an empty string or an actual email, so in this case there is no way to avoid sending information, but it might just be blank.","commit_id":"783f6c5437f009828d9e83613d3b5a14f3e89e41"},{"author":{"_account_id":13325,"name":"Paul Karikh","email":"pkarikh@gmail.com","username":"paul.karikh"},"change_message_id":"e27474ebac0f9948c1a6c2c37eeb21c0d59f056c","unresolved":false,"context_lines":[{"line_number":184,"context_line":"                request,"},{"line_number":185,"context_line":"                user_obj,"},{"line_number":186,"context_line":"                name\u003duser_obj.name,"},{"line_number":187,"context_line":"                email\u003duser_obj.email,"},{"line_number":188,"context_line":"                enabled\u003duser_obj.enabled,"},{"line_number":189,"context_line":"                project\u003duser_obj.project_id,"},{"line_number":190,"context_line":"                password\u003dNone)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a890539_d478d691","line":187,"in_reply_to":"5a890539_51d95882","updated":"2014-11-24 14:03:18.000000000","message":"Looks like you are right and user email could be empty. It is nice catch, thank you! So I\u0027m going to remove \u0027required\u003dTrue\u0027 for this field. \nOtherwise, this line still looks safe because in case of empty \u0027email\u0027 field  value of the `user_obj.email` is u\u0027\u0027.","commit_id":"783f6c5437f009828d9e83613d3b5a14f3e89e41"},{"author":{"_account_id":13325,"name":"Paul Karikh","email":"pkarikh@gmail.com","username":"paul.karikh"},"change_message_id":"09e32939b984e16f7466b880c1287650cd9ba6a3","unresolved":false,"context_lines":[{"line_number":184,"context_line":"                request,"},{"line_number":185,"context_line":"                user_obj,"},{"line_number":186,"context_line":"                name\u003duser_obj.name,"},{"line_number":187,"context_line":"                email\u003duser_obj.email,"},{"line_number":188,"context_line":"                enabled\u003duser_obj.enabled,"},{"line_number":189,"context_line":"                project\u003duser_obj.project_id,"},{"line_number":190,"context_line":"                password\u003dNone)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a890539_49a60e55","line":187,"in_reply_to":"5a890539_e93dfa2d","updated":"2014-11-19 12:06:05.000000000","message":"I\u0027m not sure. Email is a required field (\"form_field\u003dforms.CharField(required\u003dTrue),\" on line 212 in this file), so it always has some value, hasn\u0027t it? \nOtherwise we have to apply this approach to a lot of others form, which can be difficult and unnecessary, in my opinion.","commit_id":"783f6c5437f009828d9e83613d3b5a14f3e89e41"},{"author":{"_account_id":11599,"name":"Nikunj Aggarwal","email":"nikunj.aggarwal@hp.com","username":"nikunj2512"},"change_message_id":"0ef1fdd7cdcd98928c96910964dddf36d12f3fba","unresolved":false,"context_lines":[{"line_number":184,"context_line":"                request,"},{"line_number":185,"context_line":"                user_obj,"},{"line_number":186,"context_line":"                name\u003duser_obj.name,"},{"line_number":187,"context_line":"                email\u003duser_obj.email,"},{"line_number":188,"context_line":"                enabled\u003duser_obj.enabled,"},{"line_number":189,"context_line":"                project\u003duser_obj.project_id,"},{"line_number":190,"context_line":"                password\u003dNone)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a890539_b778acf9","line":187,"updated":"2014-11-19 13:22:58.000000000","message":"Now it is not a required field, the email field needs to be handled because when email field value is empty, at that time, the user_obj will not have the email variable and your will get the attribute error","commit_id":"a9250927a826f45103e83ceb934e97958de5e241"},{"author":{"_account_id":13325,"name":"Paul Karikh","email":"pkarikh@gmail.com","username":"paul.karikh"},"change_message_id":"07cc3c6f0ecd7500ce1bc33d47af4fb474d775a6","unresolved":false,"context_lines":[{"line_number":184,"context_line":"                request,"},{"line_number":185,"context_line":"                user_obj,"},{"line_number":186,"context_line":"                name\u003duser_obj.name,"},{"line_number":187,"context_line":"                email\u003duser_obj.email,"},{"line_number":188,"context_line":"                enabled\u003duser_obj.enabled,"},{"line_number":189,"context_line":"                project\u003duser_obj.project_id,"},{"line_number":190,"context_line":"                password\u003dNone)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a890539_3724bcc5","line":187,"in_reply_to":"5a890539_b778acf9","updated":"2014-11-24 14:03:33.000000000","message":"Done","commit_id":"a9250927a826f45103e83ceb934e97958de5e241"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"4fff7a5f5f29e44715cf5e55b7fac2a5e8c2df5e","unresolved":false,"context_lines":[{"line_number":206,"context_line":"        (\"false\", False)"},{"line_number":207,"context_line":"    )"},{"line_number":208,"context_line":"    name \u003d tables.Column(\u0027name\u0027, verbose_name\u003d_(\u0027User Name\u0027),"},{"line_number":209,"context_line":"                         form_field\u003dforms.CharField(required\u003dTrue),"},{"line_number":210,"context_line":"                         update_action\u003dUpdateCell)"},{"line_number":211,"context_line":"    email \u003d tables.Column(\u0027email\u0027, verbose_name\u003d_(\u0027Email\u0027),"},{"line_number":212,"context_line":"                          form_field\u003dforms.CharField(),"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a890539_175fc073","line":209,"updated":"2014-11-19 13:24:34.000000000","message":"required\u003dTrue is the default for a forms.CharField","commit_id":"a9250927a826f45103e83ceb934e97958de5e241"},{"author":{"_account_id":11599,"name":"Nikunj Aggarwal","email":"nikunj.aggarwal@hp.com","username":"nikunj2512"},"change_message_id":"0ef1fdd7cdcd98928c96910964dddf36d12f3fba","unresolved":false,"context_lines":[{"line_number":209,"context_line":"                         form_field\u003dforms.CharField(required\u003dTrue),"},{"line_number":210,"context_line":"                         update_action\u003dUpdateCell)"},{"line_number":211,"context_line":"    email \u003d tables.Column(\u0027email\u0027, verbose_name\u003d_(\u0027Email\u0027),"},{"line_number":212,"context_line":"                          form_field\u003dforms.CharField(),"},{"line_number":213,"context_line":"                          update_action\u003dUpdateCell,"},{"line_number":214,"context_line":"                          filters\u003d(lambda v: defaultfilters"},{"line_number":215,"context_line":"                                   .default_if_none(v, \"\"),"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a890539_974570b5","line":212,"updated":"2014-11-19 13:22:58.000000000","message":"Please add required\u003dFalse","commit_id":"a9250927a826f45103e83ceb934e97958de5e241"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"38d2ba4fd282ced5ba7ab3c6cc56ec7073643186","unresolved":false,"context_lines":[{"line_number":190,"context_line":"                password\u003dNone)"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"        except keystone_exceptions.Conflict:"},{"line_number":193,"context_line":"            message \u003d _(\"This name is already taken.\")"},{"line_number":194,"context_line":"            messages.warning(request, message)"},{"line_number":195,"context_line":"            horizon_exceptions.handle(request, message)"},{"line_number":196,"context_line":"            raise django_exceptions.ValidationError(message)"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a890539_caad0633","line":193,"updated":"2014-11-24 13:17:51.000000000","message":"I guess we should wait until https://review.openstack.org/#/c/133953/ is merged and then use the same exception/message here - to do things in a uniform way.","commit_id":"ecb7af1745081522fbb5b343fd1a1e0c511d7b50"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"916488cd86688a873f05619a5cf6a4ce248dfda0","unresolved":false,"context_lines":[{"line_number":189,"context_line":"                project\u003duser_obj.project_id,"},{"line_number":190,"context_line":"                password\u003dNone)"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"        except keystone_exceptions.Conflict:"},{"line_number":193,"context_line":"            message \u003d _(\"This name is already taken.\")"},{"line_number":194,"context_line":"            messages.warning(request, message)"},{"line_number":195,"context_line":"            horizon_exceptions.handle(request, message)"}],"source_content_type":"text/x-python","patch_set":12,"id":"5a890539_e77e1eaf","line":192,"updated":"2014-11-26 18:19:27.000000000","message":"It seems to me that now horizon.exceptions.Conflict should be caught here, because https://review.openstack.org/#/c/133953/11/openstack_dashboard/api/keystone.py was merged.","commit_id":"b9399ab3f6f5d6580675d7008991fe4c65209009"},{"author":{"_account_id":12355,"name":"Vlad Okhrimenko","email":"vokhrimenko@mirantis.com","username":"vokhrimenko"},"change_message_id":"7f221612d04b4f8329f69a523de8823c41b752fa","unresolved":false,"context_lines":[{"line_number":189,"context_line":"                project\u003duser_obj.project_id,"},{"line_number":190,"context_line":"                password\u003dNone)"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"        except keystone_exceptions.Conflict:"},{"line_number":193,"context_line":"            message \u003d _(\"This name is already taken.\")"},{"line_number":194,"context_line":"            messages.warning(request, message)"},{"line_number":195,"context_line":"            horizon_exceptions.handle(request, message)"}],"source_content_type":"text/x-python","patch_set":12,"id":"5a890539_d9f2e69a","line":192,"updated":"2014-11-26 19:50:32.000000000","message":"please see https://review.openstack.org/#/c/133953/\nyou need use horizon.exceptions.Conflict, not keystone_exceptions.Conflict (for separate this things)","commit_id":"b9399ab3f6f5d6580675d7008991fe4c65209009"}]}
