Implement integer field randomisation
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import re
|
||||
from base64 import b64encode
|
||||
from random import randint
|
||||
|
||||
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms
|
||||
from cryptography.hazmat.primitives.ciphers.modes import ECB
|
||||
@@ -87,6 +88,31 @@ def base36decode(number):
|
||||
return int(number, 36)
|
||||
|
||||
|
||||
def randomise_list(user, data):
|
||||
"""
|
||||
Randomise data in a list of dictionaries.
|
||||
"""
|
||||
if user.has_perm("bypass_randomisation"):
|
||||
return
|
||||
if isinstance(data, list):
|
||||
for index, item in enumerate(data):
|
||||
for key, value in item.items():
|
||||
if key in settings.RANDOMISE_FIELDS:
|
||||
if isinstance(value, int):
|
||||
min_val = value - (value * settings.RANDOMISE_RATIO)
|
||||
max_val = value + (value * settings.RANDOMISE_RATIO)
|
||||
new_val = randint(int(min_val), int(max_val))
|
||||
data[index][key] = new_val
|
||||
elif isinstance(data, dict):
|
||||
for key, value in data.items():
|
||||
# if key in settings.RANDOMISE_FIELDS:
|
||||
if isinstance(value, int):
|
||||
min_val = value - (value * settings.RANDOMISE_RATIO)
|
||||
max_val = value + (value * settings.RANDOMISE_RATIO)
|
||||
new_val = randint(int(min_val), int(max_val))
|
||||
data[key] = new_val
|
||||
|
||||
|
||||
def obfuscate_list(user, data):
|
||||
"""
|
||||
Obfuscate data in a list of dictionaries.
|
||||
|
||||
@@ -19,7 +19,7 @@ from core.lib.threshold import (
|
||||
get_chans,
|
||||
get_users,
|
||||
)
|
||||
from core.views.helpers import hash_list, hash_lookup
|
||||
from core.views.helpers import hash_list, hash_lookup, randomise_list
|
||||
from core.views.ui.tables import DrilldownTable
|
||||
|
||||
|
||||
@@ -441,14 +441,19 @@ class ThresholdInfoModal(APIView):
|
||||
inter_chans = get_chans(safe_net, users)
|
||||
else:
|
||||
inter_chans = []
|
||||
hash_list(request.user, inter_chans)
|
||||
hash_list(request.user, inter_users)
|
||||
if settings.HASHING:
|
||||
hash_list(request.user, inter_chans)
|
||||
hash_list(request.user, inter_users)
|
||||
|
||||
hash_list(request.user, num_chans, hash_keys=True)
|
||||
hash_list(request.user, num_users, hash_keys=True)
|
||||
hash_list(request.user, num_chans, hash_keys=True)
|
||||
hash_list(request.user, num_users, hash_keys=True)
|
||||
|
||||
hash_list(request.user, channels)
|
||||
hash_list(request.user, users)
|
||||
hash_list(request.user, channels)
|
||||
hash_list(request.user, users)
|
||||
|
||||
if settings.RANDOMISATION:
|
||||
randomise_list(request.user, num_chans)
|
||||
randomise_list(request.user, num_users)
|
||||
|
||||
# SAFE BLOCK END #
|
||||
|
||||
|
||||
Reference in New Issue
Block a user