)]}'
{"keystone/token/providers/lotto.py":[{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"e5682a504a4a7826ac29aa5a5dd734177a5bcda5","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        super(Provider, self).__init__(*args, **kwargs)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def _powerball_token(self, token_data):"},{"line_number":33,"context_line":"        white_balls \u003d range(1,59)"},{"line_number":34,"context_line":"        random.shuffle(white_balls)"},{"line_number":35,"context_line":"        fragment1 \u003d \"-\".join(str(x) for x in white_balls[:5])"},{"line_number":36,"context_line":"        power_ball \u003d random.randint(1,35)"}],"source_content_type":"text/x-python","patch_set":1,"id":"baa041b7_a310c4a9","line":33,"updated":"2015-04-01 13:59:40.000000000","message":"59 should be 60, since range does not include upper boundary :-)","commit_id":"2e5a5a7b13b65d49f2d37cb41529c94a0bdae8ae"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"22082c5cf3ee76effdbfc2812756c07bf68ae209","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def _powerball_token(self, token_data):"},{"line_number":33,"context_line":"        white_balls \u003d range(1,59)"},{"line_number":34,"context_line":"        random.shuffle(white_balls)"},{"line_number":35,"context_line":"        fragment1 \u003d \"-\".join(str(x) for x in white_balls[:5])"},{"line_number":36,"context_line":"        power_ball \u003d random.randint(1,35)"},{"line_number":37,"context_line":"        fragment2 \u003d \"-PB:%d\" % power_ball"}],"source_content_type":"text/x-python","patch_set":1,"id":"baa041b7_a60d7239","line":34,"updated":"2015-04-01 14:02:28.000000000","message":"Change use of random to random.SystemRandom. Using random is insecure.","commit_id":"2e5a5a7b13b65d49f2d37cb41529c94a0bdae8ae"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"22082c5cf3ee76effdbfc2812756c07bf68ae209","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        white_balls \u003d range(1,59)"},{"line_number":34,"context_line":"        random.shuffle(white_balls)"},{"line_number":35,"context_line":"        fragment1 \u003d \"-\".join(str(x) for x in white_balls[:5])"},{"line_number":36,"context_line":"        power_ball \u003d random.randint(1,35)"},{"line_number":37,"context_line":"        fragment2 \u003d \"-PB:%d\" % power_ball"},{"line_number":38,"context_line":"        return fragment1+fragment2"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"baa041b7_66108a4f","line":36,"updated":"2015-04-01 14:02:28.000000000","message":"same here","commit_id":"2e5a5a7b13b65d49f2d37cb41529c94a0bdae8ae"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"edcee5dd5b5cf9b1b404a2bc702c3bfacd1e1b9e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2013 OpenStack Foundation"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":2,"id":"baa041b7_e9f22d6f","line":1,"updated":"2015-04-01 14:45:32.000000000","message":"update the license header to reflect the date","commit_id":"3d8eab68f66d801be3d119785969cd086ff6f886"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"edcee5dd5b5cf9b1b404a2bc702c3bfacd1e1b9e","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import random"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from keystone import config"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from keystone.token.providers import common"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"CONF \u003d config.CONF"}],"source_content_type":"text/x-python","patch_set":2,"id":"baa041b7_69d85df0","line":22,"updated":"2015-04-01 14:45:32.000000000","message":"group the imports together","commit_id":"3d8eab68f66d801be3d119785969cd086ff6f886"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"11313a85bdba17b14cf27c9edceb0a5c56c05e8d","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    def _powerball_token(self, token_data):"},{"line_number":33,"context_line":"        rng \u003d random.SystemRandom()"},{"line_number":34,"context_line":"        # white balls are 1-59"},{"line_number":35,"context_line":"        white_balls \u003d range(1,60)"},{"line_number":36,"context_line":"        rng.shuffle(white_balls)"},{"line_number":37,"context_line":"        fragment1 \u003d \"-\".join(str(x) for x in white_balls[:5])"},{"line_number":38,"context_line":"        # powerball is 1-35"}],"source_content_type":"text/x-python","patch_set":2,"id":"baa041b7_a95b052e","line":35,"updated":"2015-04-01 14:31:13.000000000","message":"Upper number needs to be configurable","commit_id":"3d8eab68f66d801be3d119785969cd086ff6f886"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"11313a85bdba17b14cf27c9edceb0a5c56c05e8d","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        rng.shuffle(white_balls)"},{"line_number":37,"context_line":"        fragment1 \u003d \"-\".join(str(x) for x in white_balls[:5])"},{"line_number":38,"context_line":"        # powerball is 1-35"},{"line_number":39,"context_line":"        power_ball \u003d rng.randint(1,36)"},{"line_number":40,"context_line":"        fragment2 \u003d \"-PB:%d\" % power_ball"},{"line_number":41,"context_line":"        return fragment1+fragment2"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"baa041b7_c9a4090a","line":39,"updated":"2015-04-01 14:31:13.000000000","message":"Same here.\nAnd please check that this one is less than that one","commit_id":"3d8eab68f66d801be3d119785969cd086ff6f886"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"a8dea9fe41801adec4ea142140690ebd05887900","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        # powerball is 1-35"},{"line_number":39,"context_line":"        power_ball \u003d rng.randint(1,36)"},{"line_number":40,"context_line":"        fragment2 \u003d \"-PB:%d\" % power_ball"},{"line_number":41,"context_line":"        return fragment1+fragment2"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def _get_token_id(self, token_data):"},{"line_number":44,"context_line":"        return self._powerball_token(token_data)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baa041b7_f11d4e67","line":41,"updated":"2015-04-02 10:40:23.000000000","message":"suggest we need a backdoor to allow unnamed security services access to track who is playing...","commit_id":"3d8eab68f66d801be3d119785969cd086ff6f886"}]}
