)]}'
{"openstack_auth/user.py":[{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"d14944fb2f9fd605b106c33eb226a8eb26b0a051","unresolved":false,"context_lines":[{"line_number":268,"context_line":"                    utils.is_token_valid(self.token, margin))"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"        @property"},{"line_number":271,"context_line":"        def is_authenticated(self, margin\u003dNone):"},{"line_number":272,"context_line":"            \"\"\"Checks for a valid authentication."},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"            :param margin:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ac06dbe_aae859b5","line":271,"range":{"start_line":271,"start_character":35,"end_line":271,"end_character":46},"updated":"2016-08-22 15:05:43.000000000","message":"I don\u0027t think we would be able to pass any argument once it becomes a property - so in case this and below getters are propertized, we\u0027ll need to use `margin` which is set on a class instance, not passed as an ex-method\u0027s argument.","commit_id":"718e01aba221581f7dac174a7c89cfd048c85d98"},{"author":{"_account_id":12826,"name":"Rob Cresswell","display_name":"robcresswell","email":"robert.cresswell@outlook.com","username":"rob-cresswell"},"change_message_id":"ad0100063dd4107e90e708bb12e49fa8673fb8ec","unresolved":false,"context_lines":[{"line_number":268,"context_line":"                    utils.is_token_valid(self.token, margin))"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"        @property"},{"line_number":271,"context_line":"        def is_authenticated(self, margin\u003dNone):"},{"line_number":272,"context_line":"            \"\"\"Checks for a valid authentication."},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"            :param margin:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ac06dbe_15a1cea3","line":271,"range":{"start_line":271,"start_character":35,"end_line":271,"end_character":46},"in_reply_to":"1ac06dbe_aae859b5","updated":"2016-08-22 15:13:21.000000000","message":"You\u0027re correct. I\u0027m rushing patches. Will fix.","commit_id":"718e01aba221581f7dac174a7c89cfd048c85d98"},{"author":{"_account_id":12071,"name":"Richard Jones","email":"r1chardj0n3s@gmail.com","username":"richard"},"change_message_id":"0231fc0bb44f2c45880a5f194fbac773ba6e98e4","unresolved":false,"context_lines":[{"line_number":264,"context_line":""},{"line_number":265,"context_line":"    if django.VERSION \u003e\u003d (1, 10):"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        def _check_token_validity(self):"},{"line_number":268,"context_line":"            return self.token is not None and utils.is_token_valid(self.token)"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"        @property"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a89bdaa_ebe345d6","line":267,"updated":"2016-09-13 03:38:58.000000000","message":"Might as well use this in all implementations for consistency (and to have less code in the conditional branch)?","commit_id":"1ad6b119c6ee0907cdc4233b61fe1347cfa658c7"},{"author":{"_account_id":12071,"name":"Richard Jones","email":"r1chardj0n3s@gmail.com","username":"richard"},"change_message_id":"0231fc0bb44f2c45880a5f194fbac773ba6e98e4","unresolved":false,"context_lines":[{"line_number":325,"context_line":"    @property"},{"line_number":326,"context_line":"    def authorized_tenants(self):"},{"line_number":327,"context_line":"        \"\"\"Returns a memoized list of tenants this user may access.\"\"\""},{"line_number":328,"context_line":"        if django.VERSION \u003e\u003d (1, 10):"},{"line_number":329,"context_line":"            if self.is_authenticated and self._authorized_tenants is None:"},{"line_number":330,"context_line":"                endpoint \u003d self.endpoint"},{"line_number":331,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a89bdaa_6bc1f52e","line":328,"updated":"2016-09-13 03:38:58.000000000","message":"Rather than duplicating the whole method, how about just resolving the is_authenticated question and the correct way and then continue with the rest of the code?\n\n if django.VERSION \u003e\u003d (1, 10):\n   is_authenticated \u003d self.is_authenticated\n else:\n   is_authenticated \u003d self.is_authenticated()\n if is_authenticated and ...","commit_id":"1ad6b119c6ee0907cdc4233b61fe1347cfa658c7"},{"author":{"_account_id":12071,"name":"Richard Jones","email":"r1chardj0n3s@gmail.com","username":"richard"},"change_message_id":"4f60ca2893412f65e073b557da0086fa22c2922a","unresolved":false,"context_lines":[{"line_number":278,"context_line":""},{"line_number":279,"context_line":"            Returns ``True`` if not authenticated,``False`` otherwise."},{"line_number":280,"context_line":"            \"\"\""},{"line_number":281,"context_line":"            return not self.is_authenticated"},{"line_number":282,"context_line":"    else:"},{"line_number":283,"context_line":"        def is_authenticated(self, margin\u003dNone):"},{"line_number":284,"context_line":"            \"\"\"Checks for a valid authentication."}],"source_content_type":"text/x-python","patch_set":5,"id":"7a8ec9b2_fd362ab3","line":281,"updated":"2016-09-14 08:19:09.000000000","message":"This will only return a boolean, not a CallableBool. I believe that will break openstack_auth/backend.py ?","commit_id":"25832154e6a943036da7e7a05db1489ccac2d068"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4806d91c0cbac9a20f97996dce1aa61b4b8c5122","unresolved":false,"context_lines":[{"line_number":281,"context_line":"            if self.is_authenticated:"},{"line_number":282,"context_line":"                return deprecation.CallableFalse"},{"line_number":283,"context_line":"            else:"},{"line_number":284,"context_line":"                return deprecation.CallableTrue"},{"line_number":285,"context_line":"    else:"},{"line_number":286,"context_line":"        def is_authenticated(self, margin\u003dNone):"},{"line_number":287,"context_line":"            \"\"\"Checks for a valid authentication."}],"source_content_type":"text/x-python","patch_set":6,"id":"7a8ec9b2_1c26fc14","line":284,"updated":"2016-09-16 05:33:13.000000000","message":"nit: It can be:\n\n  return deprecation.CallableBool(not self.is_authenticated)\n\nbut it is no problem.","commit_id":"545067c8d9f67f2e0da6f7628a0b7c936fab44d9"},{"author":{"_account_id":12071,"name":"Richard Jones","email":"r1chardj0n3s@gmail.com","username":"richard"},"change_message_id":"14f58d8a5820aebe05cc629307846d94e6e46962","unresolved":false,"context_lines":[{"line_number":281,"context_line":"            if self.is_authenticated:"},{"line_number":282,"context_line":"                return deprecation.CallableFalse"},{"line_number":283,"context_line":"            else:"},{"line_number":284,"context_line":"                return deprecation.CallableTrue"},{"line_number":285,"context_line":"    else:"},{"line_number":286,"context_line":"        def is_authenticated(self, margin\u003dNone):"},{"line_number":287,"context_line":"            \"\"\"Checks for a valid authentication."}],"source_content_type":"text/x-python","patch_set":6,"id":"7a8ec9b2_2d5460c8","line":284,"in_reply_to":"7a8ec9b2_1c26fc14","updated":"2016-09-16 07:26:12.000000000","message":"I can\u0027t test this right now but will that return a CallableBool ?","commit_id":"545067c8d9f67f2e0da6f7628a0b7c936fab44d9"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"51c2829686196f8e0095d2c6fb9c592477570d4b","unresolved":false,"context_lines":[{"line_number":281,"context_line":"            if self.is_authenticated:"},{"line_number":282,"context_line":"                return deprecation.CallableFalse"},{"line_number":283,"context_line":"            else:"},{"line_number":284,"context_line":"                return deprecation.CallableTrue"},{"line_number":285,"context_line":"    else:"},{"line_number":286,"context_line":"        def is_authenticated(self, margin\u003dNone):"},{"line_number":287,"context_line":"            \"\"\"Checks for a valid authentication."}],"source_content_type":"text/x-python","patch_set":6,"id":"7a8ec9b2_8d0bb48d","line":284,"in_reply_to":"7a8ec9b2_2d5460c8","updated":"2016-09-16 07:35:51.000000000","message":"Yes. If you look django.utils.deprecation, you will find:\n\n  class CallableBook:\n      ....\n  CallableFalse \u003d CallableBool(False)\n  CallableTrue \u003d CallableBool(True)\n\nso we can do the same thing by passing a boolean value  to CallableBool.","commit_id":"545067c8d9f67f2e0da6f7628a0b7c936fab44d9"},{"author":{"_account_id":12071,"name":"Richard Jones","email":"r1chardj0n3s@gmail.com","username":"richard"},"change_message_id":"0b65ac9b9700f5ce4f8278d7b03128fde181490d","unresolved":false,"context_lines":[{"line_number":281,"context_line":"            if self.is_authenticated:"},{"line_number":282,"context_line":"                return deprecation.CallableFalse"},{"line_number":283,"context_line":"            else:"},{"line_number":284,"context_line":"                return deprecation.CallableTrue"},{"line_number":285,"context_line":"    else:"},{"line_number":286,"context_line":"        def is_authenticated(self, margin\u003dNone):"},{"line_number":287,"context_line":"            \"\"\"Checks for a valid authentication."}],"source_content_type":"text/x-python","patch_set":6,"id":"7a8ec9b2_2f3e0a28","line":284,"in_reply_to":"7a8ec9b2_8d0bb48d","updated":"2016-09-16 10:59:24.000000000","message":"Ugh, sorry, I misread your suggestion. Of course it\u0027d work.","commit_id":"545067c8d9f67f2e0da6f7628a0b7c936fab44d9"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4806d91c0cbac9a20f97996dce1aa61b4b8c5122","unresolved":false,"context_lines":[{"line_number":294,"context_line":"               django settings."},{"line_number":295,"context_line":"            \"\"\""},{"line_number":296,"context_line":"            return (self.token is not None and"},{"line_number":297,"context_line":"                    utils.is_token_valid(self.token, margin))"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"        def is_anonymous(self, margin\u003dNone):"},{"line_number":300,"context_line":"            \"\"\"Return if the user is not authenticated."}],"source_content_type":"text/x-python","patch_set":6,"id":"7a8ec9b2_3cac988b","line":297,"range":{"start_line":297,"start_character":53,"end_line":297,"end_character":59},"updated":"2016-09-16 05:33:13.000000000","message":"(not blocking) If we no longer need \u0027margin\u0027 parameter, how about dropping \u0027margin\u0027 from here too?","commit_id":"545067c8d9f67f2e0da6f7628a0b7c936fab44d9"}],"openstack_auth/views.py":[{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"f9d1dcf54968e4b30433f5571a4c0eb9fc2d2768","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    # Set the session data here because django\u0027s session key rotation"},{"line_number":113,"context_line":"    # will erase it if we set it earlier."},{"line_number":114,"context_line":"    if request.user.is_authenticated:"},{"line_number":115,"context_line":"        auth_user.set_session_from_user(request, request.user)"},{"line_number":116,"context_line":"        regions \u003d dict(forms.Login.get_region_choices())"},{"line_number":117,"context_line":"        region \u003d request.user.endpoint"}],"source_content_type":"text/x-python","patch_set":1,"id":"3ac371cc_62fffd34","line":114,"range":{"start_line":114,"start_character":7,"end_line":114,"end_character":36},"updated":"2016-08-15 12:02:42.000000000","message":"According to what I see in debugger with Django 1.8, the user.is_authenticated as a method is being used here (I presume from django.contrib.auth.models), not the one we\u0027re redefining in openstack_auth.user.","commit_id":"347db46f9d4a2478a42e31c89328ac0af527501b"}]}
