)]}'
{"id":"openstack%2Fdjango_openstack_auth~298002","triplet_id":"openstack%2Fdjango_openstack_auth~master~I6a947abb891e1d34e1cf3aea53b345e0a804bacf","project":"openstack/django_openstack_auth","branch":"master","topic":"bug/1562452","hashtags":[],"change_id":"I6a947abb891e1d34e1cf3aea53b345e0a804bacf","subject":"When calculating session_time, use the actual token life","status":"MERGED","created":"2016-03-27 04:45:37.000000000","updated":"2016-05-11 16:37:21.000000000","submitted":"2016-05-11 16:37:21.000000000","submitter":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"total_comment_count":5,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"73016406ee397a6dafdc68dcc948528cfe129827","_number":298002,"virtual_id_number":298002,"owner":{"_account_id":12932,"name":"Andrew Bogott","email":"andrewbogott@gmail.com","username":"Andrew"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"all":[{"value":0,"_account_id":14124,"name":"Matt Borland","email":"matt.borland@hpe.com","username":"mborland"},{"value":0,"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},{"value":0,"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},{"value":0,"_account_id":12826,"name":"Rob Cresswell","display_name":"robcresswell","email":"robert.cresswell@outlook.com","username":"rob-cresswell"},{"value":0,"_account_id":12932,"name":"Andrew Bogott","email":"andrewbogott@gmail.com","username":"Andrew"},{"value":0,"_account_id":5623,"name":"David Lyle","email":"dklyle0@gmail.com","username":"david-lyle"},{"value":2,"date":"2016-05-11 16:37:21.000000000","post_submit":true,"_account_id":3,"name":"Jenkins","username":"jenkins"}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","default_value":0,"optional":true},"Code-Review":{"approved":{"_account_id":12826,"name":"Rob Cresswell","display_name":"robcresswell","email":"robert.cresswell@outlook.com","username":"rob-cresswell"},"recommended":{"_account_id":14124,"name":"Matt Borland","email":"matt.borland@hpe.com","username":"mborland"},"all":[{"value":1,"date":"2016-04-05 17:33:33.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":14124,"name":"Matt Borland","email":"matt.borland@hpe.com","username":"mborland"},{"value":0,"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},{"value":0,"date":"2016-04-21 16:04:50.000000000","permitted_voting_range":{"min":0,"max":1},"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},{"value":2,"date":"2016-05-11 15:38:32.000000000","_account_id":12826,"name":"Rob Cresswell","display_name":"robcresswell","email":"robert.cresswell@outlook.com","username":"rob-cresswell"},{"value":0,"_account_id":12932,"name":"Andrew Bogott","email":"andrewbogott@gmail.com","username":"Andrew"},{"value":2,"date":"2016-04-04 19:48:27.000000000","_account_id":5623,"name":"David Lyle","email":"dklyle0@gmail.com","username":"david-lyle"},{"value":0,"_account_id":3,"name":"Jenkins","username":"jenkins"}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","value":1,"default_value":0,"optional":true},"Workflow":{"approved":{"_account_id":12826,"name":"Rob Cresswell","display_name":"robcresswell","email":"robert.cresswell@outlook.com","username":"rob-cresswell"},"all":[{"value":0,"_account_id":14124,"name":"Matt Borland","email":"matt.borland@hpe.com","username":"mborland"},{"value":0,"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},{"value":0,"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},{"value":1,"date":"2016-05-11 15:38:32.000000000","_account_id":12826,"name":"Rob Cresswell","display_name":"robcresswell","email":"robert.cresswell@outlook.com","username":"rob-cresswell"},{"value":0,"_account_id":12932,"name":"Andrew Bogott","email":"andrewbogott@gmail.com","username":"Andrew"},{"value":0,"_account_id":5623,"name":"David Lyle","email":"dklyle0@gmail.com","username":"david-lyle"},{"value":0,"_account_id":3,"name":"Jenkins","username":"jenkins"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":3,"name":"Jenkins","username":"jenkins"},{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},{"_account_id":5623,"name":"David Lyle","email":"dklyle0@gmail.com","username":"david-lyle"},{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},{"_account_id":12826,"name":"Rob Cresswell","display_name":"robcresswell","email":"robert.cresswell@outlook.com","username":"rob-cresswell"},{"_account_id":12932,"name":"Andrew Bogott","email":"andrewbogott@gmail.com","username":"Andrew"},{"_account_id":14124,"name":"Matt Borland","email":"matt.borland@hpe.com","username":"mborland"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2016-03-29 16:07:27.000000000","updated_by":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"reviewer":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"state":"REVIEWER"},{"updated":"2016-04-04 19:48:27.000000000","updated_by":{"_account_id":5623,"name":"David Lyle","email":"dklyle0@gmail.com","username":"david-lyle"},"reviewer":{"_account_id":5623,"name":"David Lyle","email":"dklyle0@gmail.com","username":"david-lyle"},"state":"REVIEWER"},{"updated":"2016-04-05 17:33:33.000000000","updated_by":{"_account_id":14124,"name":"Matt Borland","email":"matt.borland@hpe.com","username":"mborland"},"reviewer":{"_account_id":14124,"name":"Matt Borland","email":"matt.borland@hpe.com","username":"mborland"},"state":"REVIEWER"},{"updated":"2016-04-21 16:04:50.000000000","updated_by":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"reviewer":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"state":"REVIEWER"},{"updated":"2016-05-11 15:38:32.000000000","updated_by":{"_account_id":12826,"name":"Rob Cresswell","display_name":"robcresswell","email":"robert.cresswell@outlook.com","username":"rob-cresswell"},"reviewer":{"_account_id":12826,"name":"Rob Cresswell","display_name":"robcresswell","email":"robert.cresswell@outlook.com","username":"rob-cresswell"},"state":"REVIEWER"},{"updated":"2016-05-11 16:37:21.000000000","updated_by":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"reviewer":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"state":"REVIEWER"}],"messages":[{"id":"22628e9c14b9093708d0b4fccd46a2bef3f7ba31","author":{"_account_id":12932,"name":"Andrew Bogott","email":"andrewbogott@gmail.com","username":"Andrew"},"date":"2016-03-27 04:45:37.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"0ad3d97528279966d7f597b5efce00e6d63fce1d","author":{"_account_id":12932,"name":"Andrew Bogott","email":"andrewbogott@gmail.com","username":"Andrew"},"date":"2016-03-27 04:46:20.000000000","message":"Uploaded patch set 2: Commit message was updated.","accounts_in_message":[],"_revision_number":2},{"id":"831607887c7722be59d295104a2b2d221685e1b0","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2016-03-27 05:46:42.000000000","message":"Patch Set 2: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see http://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n- gate-django_openstack_auth-docs http://docs-draft.openstack.org/02/298002/2/check/gate-django_openstack_auth-docs/f9bde0d//doc/build/html/ : SUCCESS in 2m 15s\n- gate-django_openstack_auth-pep8 http://logs.openstack.org/02/298002/2/check/gate-django_openstack_auth-pep8/1c20ef0/ : SUCCESS in 2m 52s\n- gate-django_openstack_auth-python27 http://logs.openstack.org/02/298002/2/check/gate-django_openstack_auth-python27/83d1815/ : SUCCESS in 2m 55s\n- gate-django_openstack_auth-python34 http://logs.openstack.org/02/298002/2/check/gate-django_openstack_auth-python34/23b79ba/ : SUCCESS in 5m 44s\n- gate-tempest-dsvm-neutron-src-django_openstack_auth http://logs.openstack.org/02/298002/2/check/gate-tempest-dsvm-neutron-src-django_openstack_auth/f318e81/ : FAILURE in 1h 00m 15s\n- gate-django_openstack_auth-tox-py27dj18 http://logs.openstack.org/02/298002/2/check/gate-django_openstack_auth-tox-py27dj18/98e3a1c/ : SUCCESS in 2m 10s\n- gate-django_openstack_auth-tox-py27dj19 http://logs.openstack.org/02/298002/2/check/gate-django_openstack_auth-tox-py27dj19/62cd000/ : SUCCESS in 2m 21s (non-voting)","accounts_in_message":[],"_revision_number":2},{"id":"6f3f29a939c4b441e65a955c5c5baa29d59f0994","author":{"_account_id":12932,"name":"Andrew Bogott","email":"andrewbogott@gmail.com","username":"Andrew"},"date":"2016-03-27 14:43:54.000000000","message":"Patch Set 3: Patch Set 2 was rebased","accounts_in_message":[],"_revision_number":2},{"id":"5dc64c2e165b75fcf6f8020d0f37bb84481e4be1","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2016-03-27 15:56:54.000000000","message":"Patch Set 3: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see http://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n- gate-django_openstack_auth-docs http://docs-draft.openstack.org/02/298002/3/check/gate-django_openstack_auth-docs/4cd018a//doc/build/html/ : SUCCESS in 2m 12s\n- gate-django_openstack_auth-pep8 http://logs.openstack.org/02/298002/3/check/gate-django_openstack_auth-pep8/b48085c/ : SUCCESS in 2m 06s\n- gate-django_openstack_auth-python27 http://logs.openstack.org/02/298002/3/check/gate-django_openstack_auth-python27/cdb5668/ : SUCCESS in 2m 13s\n- gate-django_openstack_auth-python34 http://logs.openstack.org/02/298002/3/check/gate-django_openstack_auth-python34/5cbba20/ : SUCCESS in 2m 30s\n- gate-tempest-dsvm-neutron-src-django_openstack_auth http://logs.openstack.org/02/298002/3/check/gate-tempest-dsvm-neutron-src-django_openstack_auth/8acf166/ : FAILURE in 1h 07m 31s\n- gate-django_openstack_auth-tox-py27dj18 http://logs.openstack.org/02/298002/3/check/gate-django_openstack_auth-tox-py27dj18/3ba28f7/ : SUCCESS in 2m 11s\n- gate-django_openstack_auth-tox-py27dj19 http://logs.openstack.org/02/298002/3/check/gate-django_openstack_auth-tox-py27dj19/46ada20/ : SUCCESS in 10m 58s (non-voting)","accounts_in_message":[],"_revision_number":3},{"id":"c8bfb8d1390c3fa18e2ad1cc07ff26b3f8e151dd","author":{"_account_id":12932,"name":"Andrew Bogott","email":"andrewbogott@gmail.com","username":"Andrew"},"date":"2016-03-28 13:15:15.000000000","message":"Patch Set 3:\n\nrecheck","accounts_in_message":[],"_revision_number":3},{"id":"88e0041a6ba002c1e747d329d4b018c3b6233dc0","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2016-03-28 14:10:25.000000000","message":"Patch Set 3:\n\nBuild failed (check pipeline).  For information on how to proceed, see http://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n- gate-django_openstack_auth-docs http://docs-draft.openstack.org/02/298002/3/check/gate-django_openstack_auth-docs/a75ef32//doc/build/html/ : SUCCESS in 2m 21s\n- gate-django_openstack_auth-pep8 http://logs.openstack.org/02/298002/3/check/gate-django_openstack_auth-pep8/3159f60/ : SUCCESS in 2m 54s\n- gate-django_openstack_auth-python27 http://logs.openstack.org/02/298002/3/check/gate-django_openstack_auth-python27/75f05a9/ : SUCCESS in 3m 08s\n- gate-django_openstack_auth-python34 http://logs.openstack.org/02/298002/3/check/gate-django_openstack_auth-python34/251122b/ : SUCCESS in 2m 50s\n- gate-tempest-dsvm-neutron-src-django_openstack_auth http://logs.openstack.org/02/298002/3/check/gate-tempest-dsvm-neutron-src-django_openstack_auth/eae09b0/ : FAILURE in 54m 09s\n- gate-django_openstack_auth-tox-py27dj18 http://logs.openstack.org/02/298002/3/check/gate-django_openstack_auth-tox-py27dj18/d976a85/ : SUCCESS in 1m 40s\n- gate-django_openstack_auth-tox-py27dj19 http://logs.openstack.org/02/298002/3/check/gate-django_openstack_auth-tox-py27dj19/77c7428/ : SUCCESS in 3m 44s (non-voting)","accounts_in_message":[],"_revision_number":3},{"id":"32f9c36ca620457317da8b873b00e82448ab4850","author":{"_account_id":12932,"name":"Andrew Bogott","email":"andrewbogott@gmail.com","username":"Andrew"},"date":"2016-03-29 03:26:35.000000000","message":"Uploaded patch set 4: Commit message was updated.","accounts_in_message":[],"_revision_number":4},{"id":"24836d17e80ebcadfdc41f58334648df4ab5178a","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2016-03-29 04:24:12.000000000","message":"Patch Set 4: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see http://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n- gate-django_openstack_auth-docs http://docs-draft.openstack.org/02/298002/4/check/gate-django_openstack_auth-docs/7fbb78c//doc/build/html/ : SUCCESS in 1m 34s\n- gate-django_openstack_auth-pep8 http://logs.openstack.org/02/298002/4/check/gate-django_openstack_auth-pep8/4077ff8/ : SUCCESS in 1m 33s\n- gate-django_openstack_auth-python27 http://logs.openstack.org/02/298002/4/check/gate-django_openstack_auth-python27/23b77cc/ : SUCCESS in 3m 15s\n- gate-django_openstack_auth-python34 http://logs.openstack.org/02/298002/4/check/gate-django_openstack_auth-python34/83c319e/ : SUCCESS in 1m 45s\n- gate-tempest-dsvm-neutron-src-django_openstack_auth http://logs.openstack.org/02/298002/4/check/gate-tempest-dsvm-neutron-src-django_openstack_auth/8375bb0/ : FAILURE in 55m 13s\n- gate-django_openstack_auth-tox-py27dj18 http://logs.openstack.org/02/298002/4/check/gate-django_openstack_auth-tox-py27dj18/88d90c8/ : SUCCESS in 3m 02s\n- gate-django_openstack_auth-tox-py27dj19 http://logs.openstack.org/02/298002/4/check/gate-django_openstack_auth-tox-py27dj19/c0d9d93/ : SUCCESS in 1m 35s (non-voting)","accounts_in_message":[],"_revision_number":4},{"id":"8645b537081348d9c1e3f61670ebf29dc651298d","author":{"_account_id":12932,"name":"Andrew Bogott","email":"andrewbogott@gmail.com","username":"Andrew"},"date":"2016-03-29 14:49:13.000000000","message":"Uploaded patch set 5.","accounts_in_message":[],"_revision_number":5},{"id":"036e7f11bda50ac05e42623c4efe120721b08754","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2016-03-29 16:01:45.000000000","message":"Patch Set 5: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-django_openstack_auth-docs http://docs-draft.openstack.org/02/298002/5/check/gate-django_openstack_auth-docs/e498042//doc/build/html/ : SUCCESS in 1m 20s\n- gate-django_openstack_auth-pep8 http://logs.openstack.org/02/298002/5/check/gate-django_openstack_auth-pep8/d7b8198/ : SUCCESS in 2s\n- gate-django_openstack_auth-python27 http://logs.openstack.org/02/298002/5/check/gate-django_openstack_auth-python27/6f144c0/ : SUCCESS in 52s\n- gate-django_openstack_auth-python34 http://logs.openstack.org/02/298002/5/check/gate-django_openstack_auth-python34/293a4ad/ : SUCCESS in 2m 13s\n- gate-tempest-dsvm-neutron-src-django_openstack_auth http://logs.openstack.org/02/298002/5/check/gate-tempest-dsvm-neutron-src-django_openstack_auth/6ace54c/ : SUCCESS in 1h 05m 33s\n- gate-django_openstack_auth-tox-py27dj18 http://logs.openstack.org/02/298002/5/check/gate-django_openstack_auth-tox-py27dj18/14124fa/ : SUCCESS in 1m 54s\n- gate-django_openstack_auth-tox-py27dj19 http://logs.openstack.org/02/298002/5/check/gate-django_openstack_auth-tox-py27dj19/cde8835/ : SUCCESS in 18s (non-voting)","accounts_in_message":[],"_revision_number":5},{"id":"9f02466e9e0782daa2305a40660ba5e4707ce44c","author":{"_account_id":12932,"name":"Andrew Bogott","email":"andrewbogott@gmail.com","username":"Andrew"},"date":"2016-03-29 16:16:52.000000000","message":"Uploaded patch set 6.","accounts_in_message":[],"_revision_number":6},{"id":"1cc0dd0ca768be3b876e2fb6510c1b1d229e2708","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2016-03-29 17:19:56.000000000","message":"Patch Set 6: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-django_openstack_auth-docs http://docs-draft.openstack.org/02/298002/6/check/gate-django_openstack_auth-docs/835fa95//doc/build/html/ : SUCCESS in 2m 51s\n- gate-django_openstack_auth-pep8 http://logs.openstack.org/02/298002/6/check/gate-django_openstack_auth-pep8/d66a1cb/ : SUCCESS in 3m 37s\n- gate-django_openstack_auth-python27 http://logs.openstack.org/02/298002/6/check/gate-django_openstack_auth-python27/48a15df/ : SUCCESS in 3m 45s\n- gate-django_openstack_auth-python34 http://logs.openstack.org/02/298002/6/check/gate-django_openstack_auth-python34/d41bc45/ : SUCCESS in 2m 27s\n- gate-tempest-dsvm-neutron-src-django_openstack_auth http://logs.openstack.org/02/298002/6/check/gate-tempest-dsvm-neutron-src-django_openstack_auth/52047fd/ : SUCCESS in 59m 50s\n- gate-django_openstack_auth-tox-py27dj18 http://logs.openstack.org/02/298002/6/check/gate-django_openstack_auth-tox-py27dj18/210637a/ : SUCCESS in 1m 40s\n- gate-django_openstack_auth-tox-py27dj19 http://logs.openstack.org/02/298002/6/check/gate-django_openstack_auth-tox-py27dj19/1ae2d3b/ : SUCCESS in 2m 15s (non-voting)","accounts_in_message":[],"_revision_number":6},{"id":"8ab3003cc3716c33a28ef1aa194c618103a8e540","author":{"_account_id":14124,"name":"Matt Borland","email":"matt.borland@hpe.com","username":"mborland"},"date":"2016-04-04 14:15:18.000000000","message":"Patch Set 6:\n\nMakes sense to me, although ideally there would be some test to ensure that we don\u0027t suffer a regression. As we discussed on IRC, you\u0027ll see if there are any tests to begin with.","accounts_in_message":[],"_revision_number":6},{"id":"748f24a9cc410ccaf78f31dce29de48e79a102c9","author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"date":"2016-04-04 14:34:28.000000000","message":"Patch Set 6: Code-Review-1\n\nIt makes sense. Also I agree that unit test coverage should be added.","accounts_in_message":[],"_revision_number":6},{"id":"6563186aa14d3c0099df526c6533cdb45862d9f3","author":{"_account_id":5623,"name":"David Lyle","email":"dklyle0@gmail.com","username":"david-lyle"},"date":"2016-04-04 19:48:27.000000000","message":"Patch Set 6: Code-Review+2\n\nI\u0027m not sure a test here is warranted.\n\nPossible methods to test, mock out a new canned token value and write a test to return that token to use for comparison. This will be considerable effort.\n\nanother possibility is to mock the expiry() method directly to return what value we tell it to.\n\nThe result of both these paths would be to test that subtraction and the min() in python work. That\u0027s not really our scope. This is the type of thing that once it\u0027s right is going to work. A method to effectively test that is unclear in this case.","accounts_in_message":[],"_revision_number":6},{"id":"c07e326ae33eede328d760adad528fd598d57c91","author":{"_account_id":12826,"name":"Rob Cresswell","display_name":"robcresswell","email":"robert.cresswell@outlook.com","username":"rob-cresswell"},"date":"2016-04-05 07:38:32.000000000","message":"Patch Set 6:\n\n@David: I\u0027m not sure why its testing the functionality of min; rather its verifying that the seconds value is correctly set, rather than just returning the seconds component as before. As long as the seconds value in the mock is high enough, this seems fairly straightforward and would prevent a regression in rewrites etc.","accounts_in_message":[],"_revision_number":6},{"id":"300aa744cabb7af3c0e8754bf97b5861e77dfc5a","author":{"_account_id":14124,"name":"Matt Borland","email":"matt.borland@hpe.com","username":"mborland"},"date":"2016-04-05 14:53:22.000000000","message":"Patch Set 6: Code-Review-1\n\nI think a test is a good idea, and it\u0027s not testing Python\u0027s min() function.  It\u0027s testing that we aren\u0027t using the seconds segment of a delta description, and instead are using the total seconds of the delta.","accounts_in_message":[],"_revision_number":6},{"id":"c6c2ea48bc4ed37764341fcd924eef4c25b0916f","author":{"_account_id":12932,"name":"Andrew Bogott","email":"andrewbogott@gmail.com","username":"Andrew"},"date":"2016-04-05 15:01:04.000000000","message":"Patch Set 6:\n\nI\u0027m happy to write a test, but there are 0 tests for the backend code currently, and no patterns in the existing tests for me to follow to capture the value we\u0027re interested in, so could use a bit of guidance.","accounts_in_message":[],"_revision_number":6},{"id":"d6192b5dd64adad226d0117ad6555fb42498eaef","author":{"_account_id":14124,"name":"Matt Borland","email":"matt.borland@hpe.com","username":"mborland"},"date":"2016-04-05 17:33:33.000000000","message":"Patch Set 6: Code-Review+1\n\nIf it\u0027s difficult to write a test, I think it\u0027s OK to push this through.  Does anyone think a test is trivial to write in this case?  If so, suggestions would help.","accounts_in_message":[],"_revision_number":6},{"id":"ddf8432263777d153c3f4c16191757497c054e07","author":{"_account_id":5623,"name":"David Lyle","email":"dklyle0@gmail.com","username":"david-lyle"},"date":"2016-04-18 16:14:16.000000000","message":"Patch Set 6:\n\n(1 comment)\n\nThere are several tests that test the functionality in backend.py, but they do so via the login form. So there is plenty of examples although opaque. \n\nThat said, I still feel the requested test is meaningless and thus a waste of time.","accounts_in_message":[],"_revision_number":6},{"id":"4dc34ac1344e6bba56c92610391586dab111fd62","author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"date":"2016-04-19 07:50:56.000000000","message":"Patch Set 6: Code-Review+2\n\n(1 comment)\n\nI am okay with the current version. The change itself is small and we are confident this change is correct.","accounts_in_message":[],"_revision_number":6},{"id":"7f72447dc5ae225987d63efd18ad017ba49717a7","author":{"_account_id":12826,"name":"Rob Cresswell","display_name":"robcresswell","email":"robert.cresswell@outlook.com","username":"rob-cresswell"},"date":"2016-04-21 11:55:49.000000000","message":"Patch Set 6: Code-Review-1\n\n(1 comment)","accounts_in_message":[],"_revision_number":6},{"id":"b5a3577eca76456f3c57bee3072a9ed946f75317","author":{"_account_id":12932,"name":"Andrew Bogott","email":"andrewbogott@gmail.com","username":"Andrew"},"date":"2016-04-21 15:09:40.000000000","message":"Patch Set 6:\n\nAll I need to test is for my test to have access to the \u0027request\u0027 object that is modified in this bit of code:\n\n  session_time \u003d min(timeout, token_life.seconds)\n  request.session.set_expiry(session_time)\n\nI would\u0027ve thought that would be self.client.session, but in the tests, self.client.session[\u0027token\u0027].expires is always set to one day no matter what happens int the backend (including if I hardcode session_time to something obvious like \u00271\u0027 or \u00271,000,000\u0027).\n\nSo:  how can I access that request object and not just the mocked one built in data_v2.py?","accounts_in_message":[],"_revision_number":6},{"id":"f22731b82a30394a10b67bd78410cb1e65d73638","author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"date":"2016-04-21 16:02:45.000000000","message":"Patch Set 6: -Code-Review\n\n(1 comment)\n\nReseting my score because of my comment inline.","accounts_in_message":[],"_revision_number":6},{"id":"186c34d5d04651d631b9588a2d2ff7cb934fb375","author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"date":"2016-04-21 16:04:50.000000000","message":"Patch Set 6:\n\n(1 comment)","accounts_in_message":[],"_revision_number":6},{"id":"dcb56b38cddb9a9fa9b5d6a45d9e36314a098095","author":{"_account_id":12932,"name":"Andrew Bogott","email":"andrewbogott@gmail.com","username":"Andrew"},"date":"2016-05-06 13:24:19.000000000","message":"Patch Set 6:\n\nSo... is the consensus that I should split out the tiny bit of token_life calculation so that it\u0027s a stand-alone, and testable, function?","accounts_in_message":[],"_revision_number":6},{"id":"d1531caa8c71bf5435b6fe0da3f025aa8b069250","author":{"_account_id":12826,"name":"Rob Cresswell","display_name":"robcresswell","email":"robert.cresswell@outlook.com","username":"rob-cresswell"},"date":"2016-05-11 15:38:32.000000000","message":"Patch Set 6: Code-Review+2 Workflow+1","accounts_in_message":[],"_revision_number":6},{"id":"01619bd1b5897a9816f8e3e197f633b968eafc0f","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2016-05-11 15:38:55.000000000","message":"Patch Set 6: -Verified\n\nStarting gate jobs.\nhttp://status.openstack.org/zuul/","accounts_in_message":[],"_revision_number":6},{"id":"22ee6832dce139560c3f9f08253d79077a3d2036","date":"2016-05-11 16:37:21.000000000","message":"Change has been successfully merged into the git repository by Jenkins","accounts_in_message":[],"_revision_number":6},{"id":"73865f461b7eefa1c5b9f3dca40fbcfb61d42e71","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2016-05-11 16:37:21.000000000","message":"Patch Set 6: Verified+2\n\nBuild succeeded (gate pipeline).\n\n- gate-django_openstack_auth-docs http://docs-draft.openstack.org/02/298002/6/gate/gate-django_openstack_auth-docs/25c2ff3//doc/build/html/ : SUCCESS in 1m 48s\n- gate-django_openstack_auth-pep8 http://logs.openstack.org/02/298002/6/gate/gate-django_openstack_auth-pep8/f4dbfb2/ : SUCCESS in 1m 52s\n- gate-django_openstack_auth-python27 http://logs.openstack.org/02/298002/6/gate/gate-django_openstack_auth-python27/ccac759/ : SUCCESS in 2m 05s\n- gate-django_openstack_auth-python34 http://logs.openstack.org/02/298002/6/gate/gate-django_openstack_auth-python34/d5d1119/ : SUCCESS in 2m 01s\n- gate-tempest-dsvm-neutron-src-django_openstack_auth http://logs.openstack.org/02/298002/6/gate/gate-tempest-dsvm-neutron-src-django_openstack_auth/4df44a8/ : SUCCESS in 52m 07s\n- gate-django_openstack_auth-tox-py27dj18 http://logs.openstack.org/02/298002/6/gate/gate-django_openstack_auth-tox-py27dj18/adb58d9/ : SUCCESS in 1m 59s\n- gate-django_openstack_auth-tox-py27dj19 http://logs.openstack.org/02/298002/6/gate/gate-django_openstack_auth-tox-py27dj19/aa2686f/ : SUCCESS in 2m 19s","accounts_in_message":[],"_revision_number":6}],"current_revision_number":6,"current_revision":"d7a2dce59d95979fb3d4ae5cdac9fd063c09d88d","revisions":{"7adb8d29f4cf72b73b4681da705ea9578b02a418":{"kind":"REWORK","_number":1,"created":"2016-03-27 04:45:37.000000000","uploader":{"_account_id":12932,"name":"Andrew Bogott","email":"andrewbogott@gmail.com","username":"Andrew"},"ref":"refs/changes/02/298002/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/django_openstack_auth","ref":"refs/changes/02/298002/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/django_openstack_auth refs/changes/02/298002/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/django_openstack_auth refs/changes/02/298002/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/django_openstack_auth refs/changes/02/298002/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/django_openstack_auth refs/changes/02/298002/1"}}},"commit":{"parents":[{"commit":"9de5d87becab6117009b1e7327bc309f5e9a9042","subject":"Updated from global requirements","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/django_openstack_auth/commit/9de5d87becab6117009b1e7327bc309f5e9a9042"}]}],"author":{"name":"andrewbogott","email":"abogott@wikimedia.org","date":"2016-03-16 23:15:13.000000000","tz":-300},"committer":{"name":"andrewbogott","email":"abogott@wikimedia.org","date":"2016-03-16 23:25:50.000000000","tz":-300},"subject":"When calculating session_time, use the actual token life.","message":"When calculating session_time, use the actual token life.\n\nThis calculation uses the \u0027token_life\u0027 var which is a datetime.timedelta\nobject.  timedelta.seconds gets us just the \u0027seconds\u0027 component of the\nobject, truncating away any days, hours, or weeks that might be included\nin the object.\n\nWhat we want here is the total time in seconds, which is total_seconds().\n\nCloses-Bug: #1562452\nChange-Id: I6a947abb891e1d34e1cf3aea53b345e0a804bacf\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/django_openstack_auth/commit/7adb8d29f4cf72b73b4681da705ea9578b02a418"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/django_openstack_auth/commit/7adb8d29f4cf72b73b4681da705ea9578b02a418"}]},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"9de5d87becab6117009b1e7327bc309f5e9a9042","is_merged_in_target_branch":true,"change_id":"I7434883051f449b3f485351e92f28319c00d0d37","change_number":285018,"patch_set_number":1,"change_status":"MERGED"}],"branch":"refs/heads/master"},"12312f79b081289446794ab2a761d23297c1e3cb":{"kind":"NO_CODE_CHANGE","_number":2,"created":"2016-03-27 04:46:20.000000000","uploader":{"_account_id":12932,"name":"Andrew Bogott","email":"andrewbogott@gmail.com","username":"Andrew"},"ref":"refs/changes/02/298002/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/django_openstack_auth","ref":"refs/changes/02/298002/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/django_openstack_auth refs/changes/02/298002/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/django_openstack_auth refs/changes/02/298002/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/django_openstack_auth refs/changes/02/298002/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/django_openstack_auth refs/changes/02/298002/2"}}},"commit":{"parents":[{"commit":"9de5d87becab6117009b1e7327bc309f5e9a9042","subject":"Updated from global requirements","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/django_openstack_auth/commit/9de5d87becab6117009b1e7327bc309f5e9a9042"}]}],"author":{"name":"andrewbogott","email":"abogott@wikimedia.org","date":"2016-03-16 23:15:13.000000000","tz":-300},"committer":{"name":"andrewbogott","email":"abogott@wikimedia.org","date":"2016-03-16 23:26:08.000000000","tz":-300},"subject":"When calculating session_time, use the actual token life.","message":"When calculating session_time, use the actual token life.\n\nThis calculation uses the \u0027token_life\u0027 var which is a\ndatetime.timedelta object.  timedelta.seconds gets us just the\n\u0027seconds\u0027 component of the object, truncating away any days, hours,\nor weeks that might be included in the object.\n\nWhat we want here is the total time in seconds, which is\ntotal_seconds().\n\nCloses-Bug: #1562452\nChange-Id: I6a947abb891e1d34e1cf3aea53b345e0a804bacf\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/django_openstack_auth/commit/12312f79b081289446794ab2a761d23297c1e3cb"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/django_openstack_auth/commit/12312f79b081289446794ab2a761d23297c1e3cb"}]},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"9de5d87becab6117009b1e7327bc309f5e9a9042","is_merged_in_target_branch":true,"change_id":"I7434883051f449b3f485351e92f28319c00d0d37","change_number":285018,"patch_set_number":1,"change_status":"MERGED"}],"branch":"refs/heads/master"},"ffc636e416825d86c693fe1be806b5d051bb9b86":{"kind":"TRIVIAL_REBASE","_number":3,"created":"2016-03-27 14:43:54.000000000","uploader":{"_account_id":12932,"name":"Andrew Bogott","email":"andrewbogott@gmail.com","username":"Andrew"},"ref":"refs/changes/02/298002/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/django_openstack_auth","ref":"refs/changes/02/298002/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/django_openstack_auth refs/changes/02/298002/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/django_openstack_auth refs/changes/02/298002/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/django_openstack_auth refs/changes/02/298002/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/django_openstack_auth refs/changes/02/298002/3"}}},"commit":{"parents":[{"commit":"6304da92928658d1774d25f4a6f479e0f8489123","subject":"Merge \"Fix token hashing with python 3\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/django_openstack_auth/commit/6304da92928658d1774d25f4a6f479e0f8489123"}]}],"author":{"name":"andrewbogott","email":"abogott@wikimedia.org","date":"2016-03-16 23:15:13.000000000","tz":-300},"committer":{"name":"Andrew Bogott","email":"andrewbogott@gmail.com","date":"2016-03-27 14:43:53.000000000","tz":0},"subject":"When calculating session_time, use the actual token life.","message":"When calculating session_time, use the actual token life.\n\nThis calculation uses the \u0027token_life\u0027 var which is a\ndatetime.timedelta object.  timedelta.seconds gets us just the\n\u0027seconds\u0027 component of the object, truncating away any days, hours,\nor weeks that might be included in the object.\n\nWhat we want here is the total time in seconds, which is\ntotal_seconds().\n\nCloses-Bug: #1562452\nChange-Id: I6a947abb891e1d34e1cf3aea53b345e0a804bacf\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/django_openstack_auth/commit/ffc636e416825d86c693fe1be806b5d051bb9b86"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/django_openstack_auth/commit/ffc636e416825d86c693fe1be806b5d051bb9b86"}]},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"6304da92928658d1774d25f4a6f479e0f8489123","is_merged_in_target_branch":true}],"branch":"refs/heads/master"},"91e1d50233c18642e99957cbfbf966a14a4e58bb":{"kind":"NO_CODE_CHANGE","_number":4,"created":"2016-03-29 03:26:35.000000000","uploader":{"_account_id":12932,"name":"Andrew Bogott","email":"andrewbogott@gmail.com","username":"Andrew"},"ref":"refs/changes/02/298002/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/django_openstack_auth","ref":"refs/changes/02/298002/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/django_openstack_auth refs/changes/02/298002/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/django_openstack_auth refs/changes/02/298002/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/django_openstack_auth refs/changes/02/298002/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/django_openstack_auth refs/changes/02/298002/4"}}},"commit":{"parents":[{"commit":"6304da92928658d1774d25f4a6f479e0f8489123","subject":"Merge \"Fix token hashing with python 3\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/django_openstack_auth/commit/6304da92928658d1774d25f4a6f479e0f8489123"}]}],"author":{"name":"andrewbogott","email":"abogott@wikimedia.org","date":"2016-03-16 23:15:13.000000000","tz":-300},"committer":{"name":"andrewbogott","email":"abogott@wikimedia.org","date":"2016-03-28 22:06:42.000000000","tz":-300},"subject":"When calculating session_time, use the actual token life","message":"When calculating session_time, use the actual token life\n\nThis calculation uses the \u0027token_life\u0027 var which is a\ndatetime.timedelta object.  timedelta.seconds gets us just the\n\u0027seconds\u0027 component of the object, truncating away any days, hours,\nor weeks that might be included in the object.\n\nWhat we want here is the total time in seconds, which is\ntotal_seconds().\n\nCloses-Bug: #1562452\nChange-Id: I6a947abb891e1d34e1cf3aea53b345e0a804bacf\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/django_openstack_auth/commit/91e1d50233c18642e99957cbfbf966a14a4e58bb"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/django_openstack_auth/commit/91e1d50233c18642e99957cbfbf966a14a4e58bb"}]},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"6304da92928658d1774d25f4a6f479e0f8489123","is_merged_in_target_branch":true}],"branch":"refs/heads/master"},"febfe80eebca0fa1412ad52217153b7a985d6730":{"kind":"REWORK","_number":5,"created":"2016-03-29 14:49:13.000000000","uploader":{"_account_id":12932,"name":"Andrew Bogott","email":"andrewbogott@gmail.com","username":"Andrew"},"ref":"refs/changes/02/298002/5","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/django_openstack_auth","ref":"refs/changes/02/298002/5","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/django_openstack_auth refs/changes/02/298002/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/django_openstack_auth refs/changes/02/298002/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/django_openstack_auth refs/changes/02/298002/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/django_openstack_auth refs/changes/02/298002/5"}}},"commit":{"parents":[{"commit":"6304da92928658d1774d25f4a6f479e0f8489123","subject":"Merge \"Fix token hashing with python 3\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/django_openstack_auth/commit/6304da92928658d1774d25f4a6f479e0f8489123"}]}],"author":{"name":"andrewbogott","email":"abogott@wikimedia.org","date":"2016-03-16 23:15:13.000000000","tz":-300},"committer":{"name":"andrewbogott","email":"abogott@wikimedia.org","date":"2016-03-28 23:47:53.000000000","tz":-300},"subject":"When calculating session_time, use the actual token life","message":"When calculating session_time, use the actual token life\n\nThis calculation uses the \u0027token_life\u0027 var which is a\ndatetime.timedelta object.  timedelta.seconds gets us just the\n\u0027seconds\u0027 component of the object, truncating away any days, hours,\nor weeks that might be included in the object.\n\nWhat we want here is the total time in seconds, which is\ntotal_seconds().\n\nCloses-Bug: #1562452\nChange-Id: I6a947abb891e1d34e1cf3aea53b345e0a804bacf\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/django_openstack_auth/commit/febfe80eebca0fa1412ad52217153b7a985d6730"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/django_openstack_auth/commit/febfe80eebca0fa1412ad52217153b7a985d6730"}]},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"6304da92928658d1774d25f4a6f479e0f8489123","is_merged_in_target_branch":true}],"branch":"refs/heads/master"},"d7a2dce59d95979fb3d4ae5cdac9fd063c09d88d":{"kind":"REWORK","_number":6,"created":"2016-03-29 16:16:52.000000000","uploader":{"_account_id":12932,"name":"Andrew Bogott","email":"andrewbogott@gmail.com","username":"Andrew"},"ref":"refs/changes/02/298002/6","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/django_openstack_auth","ref":"refs/changes/02/298002/6","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/django_openstack_auth refs/changes/02/298002/6 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/django_openstack_auth refs/changes/02/298002/6 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/django_openstack_auth refs/changes/02/298002/6 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/django_openstack_auth refs/changes/02/298002/6"}}},"commit":{"parents":[{"commit":"6304da92928658d1774d25f4a6f479e0f8489123","subject":"Merge \"Fix token hashing with python 3\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/django_openstack_auth/commit/6304da92928658d1774d25f4a6f479e0f8489123"}]}],"author":{"name":"andrewbogott","email":"abogott@wikimedia.org","date":"2016-03-16 23:15:13.000000000","tz":-300},"committer":{"name":"andrewbogott","email":"abogott@wikimedia.org","date":"2016-03-29 01:15:30.000000000","tz":-300},"subject":"When calculating session_time, use the actual token life","message":"When calculating session_time, use the actual token life\n\nThis calculation uses the \u0027token_life\u0027 var which is a\ndatetime.timedelta object.  timedelta.seconds gets us just the\n\u0027seconds\u0027 component of the object, truncating away any days, hours,\nor weeks that might be included in the object.\n\nWhat we want here is the total time in seconds, which is\ntotal_seconds().\n\nCloses-Bug: #1562452\nChange-Id: I6a947abb891e1d34e1cf3aea53b345e0a804bacf\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/django_openstack_auth/commit/d7a2dce59d95979fb3d4ae5cdac9fd063c09d88d"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/django_openstack_auth/commit/d7a2dce59d95979fb3d4ae5cdac9fd063c09d88d"}]},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"6304da92928658d1774d25f4a6f479e0f8489123","is_merged_in_target_branch":true}],"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[]}
