about summary refs log tree commit diff
path: root/wqflask/utility/redis_tools.py
diff options
context:
space:
mode:
Diffstat (limited to 'wqflask/utility/redis_tools.py')
-rw-r--r--wqflask/utility/redis_tools.py285
1 files changed, 0 insertions, 285 deletions
diff --git a/wqflask/utility/redis_tools.py b/wqflask/utility/redis_tools.py
deleted file mode 100644
index 945efbbd..00000000
--- a/wqflask/utility/redis_tools.py
+++ /dev/null
@@ -1,285 +0,0 @@
-import uuid
-import simplejson as json
-import datetime
-
-import redis  # used for collections
-
-from utility.hmac import hmac_creation
-
-
-def get_redis_conn():
-    Redis = redis.StrictRedis(port=6379)
-    return Redis
-
-
-Redis = get_redis_conn()
-
-
-def is_redis_available():
-    try:
-        Redis.ping()
-    except:
-        return False
-    return True
-
-
-def load_json_from_redis(item_list, column_value):
-    if type(column_value) == str:
-        column_value = str.encode(column_value)
-    try:
-        return json.loads(item_list[column_value])
-    except:
-        return None
-
-
-def get_user_id(column_name, column_value):
-    user_list = Redis.hgetall("users")
-    key_list = []
-    for key in user_list:
-        user_ob = json.loads(user_list[key])
-        if column_name in user_ob and user_ob[column_name] == column_value:
-            return key
-
-    return None
-
-
-def get_user_by_unique_column(column_name, column_value):
-    item_details = None
-
-    user_list = Redis.hgetall("users")
-    if column_name != "user_id":
-        for key in user_list:
-            user_ob = json.loads(user_list[key])
-            if column_name in user_ob and user_ob[column_name] == column_value:
-                item_details = user_ob
-    else:
-        item_details = load_json_from_redis(user_list, column_value)
-
-    return item_details
-
-
-def set_user_attribute(user_id, column_name, column_value):
-    user_info = json.loads(Redis.hget("users", user_id))
-    user_info[column_name] = column_value
-
-    Redis.hset("users", user_id, json.dumps(user_info))
-
-
-def get_user_collections(user_id):
-    collections = None
-    collections = Redis.hget("collections", user_id)
-
-    if collections:
-        return json.loads(collections)
-    else:
-        return []
-
-
-def save_user(user, user_id):
-    Redis.hset("users", user_id, json.dumps(user))
-
-
-def save_collections(user_id, collections_ob):
-    Redis.hset("collections", user_id, collections_ob)
-
-
-def save_verification_code(user_email, code):
-    Redis.hset("verification_codes", code, user_email)
-
-
-def check_verification_code(code):
-    email_address = None
-    user_details = None
-    email_address = Redis.hget("verification_codes", code)
-
-    if email_address:
-        user_details = get_user_by_unique_column(
-            'email_address', email_address)
-        if user_details:
-            return user_details
-        else:
-            return None
-    else:
-        return None
-
-
-def get_user_groups(user_id):
-    # Get the groups where a user is an admin or a member and
-    # return lists corresponding to those two sets of groups
-    admin_group_ids = []  # Group IDs where user is an admin
-    user_group_ids = []  # Group IDs where user is a regular user
-    groups_list = Redis.hgetall("groups")
-    for group_id, group_details in groups_list.items():
-        try:
-            _details = json.loads(group_details)
-            group_admins = set([this_admin if this_admin else None for this_admin in _details['admins']])
-            group_members = set([this_member if this_member else None for this_member in _details['members']])
-            if user_id in group_admins:
-                admin_group_ids.append(group_id)
-            elif user_id in group_members:
-                user_group_ids.append(group_id)
-            else:
-                continue
-        except:
-            continue
-
-    admin_groups = []
-    user_groups = []
-    for the_id in admin_group_ids:
-        admin_groups.append(get_group_info(the_id))
-    for the_id in user_group_ids:
-        user_groups.append(get_group_info(the_id))
-
-    return admin_groups, user_groups
-
-
-def get_group_info(group_id):
-    group_json = Redis.hget("groups", group_id)
-    group_info = None
-    if group_json:
-        group_info = json.loads(group_json)
-
-    return group_info
-
-
-def create_group(admin_user_ids, member_user_ids=[],
-                 group_name="Default Group Name"):
-    group_id = str(uuid.uuid4())
-    new_group = {
-        "id": group_id,
-        "admins": admin_user_ids,
-        "members": member_user_ids,
-        "name": group_name,
-        "created_timestamp": datetime.datetime.utcnow().strftime('%b %d %Y %I:%M%p'),
-        "changed_timestamp": datetime.datetime.utcnow().strftime('%b %d %Y %I:%M%p')
-    }
-
-    Redis.hset("groups", group_id, json.dumps(new_group))
-
-    return new_group
-
-
-def delete_group(user_id, group_id):
-    # ZS: If user is an admin of a group, remove it from the groups hash
-    group_info = get_group_info(group_id)
-    if user_id in group_info["admins"]:
-        Redis.hdel("groups", group_id)
-        return get_user_groups(user_id)
-    else:
-        None
-
-
-# ZS "admins" is just to indicate whether the users should be added to
-# the groups admins or regular users set
-def add_users_to_group(user_id, group_id, user_emails=[], admins=False):
-    group_info = get_group_info(group_id)
-    # ZS: Just to make sure that the user is an admin for the group,
-    # even though they shouldn't be able to reach this point unless
-    # they are
-    if user_id in group_info["admins"]:
-        if admins:
-            group_users = set(group_info["admins"])
-        else:
-            group_users = set(group_info["members"])
-
-        for email in user_emails:
-            user_id = get_user_id("email_address", email)
-            group_users.add(user_id)
-
-        if admins:
-            group_info["admins"] = list(group_users)
-        else:
-            group_info["members"] = list(group_users)
-
-        group_info["changed_timestamp"] = datetime.datetime.utcnow().strftime(
-            '%b %d %Y %I:%M%p')
-        Redis.hset("groups", group_id, json.dumps(group_info))
-        return group_info
-    else:
-        return None
-
-
-# ZS: User type is because I assume admins can remove other admins
-def remove_users_from_group(user_id,
-                            users_to_remove_ids,
-                            group_id,
-                            user_type="members"):
-    group_info = get_group_info(group_id)
-
-    if user_id in group_info["admins"]:
-        users_to_remove_set = set(users_to_remove_ids)
-        # ZS: Make sure an admin can't remove themselves from a group,
-        # since I imagine we don't want groups to be able to become
-        # admin-less
-        if user_type == "admins" and user_id in users_to_remove_set:
-            users_to_remove_set.remove(user_id)
-        group_users = set(group_info[user_type])
-        group_users -= users_to_remove_set
-        group_info[user_type] = list(group_users)
-        group_info["changed_timestamp"] = datetime.datetime.utcnow().strftime(
-            '%b %d %Y %I:%M%p')
-        Redis.hset("groups", group_id, json.dumps(group_info))
-
-
-def change_group_name(user_id, group_id, new_name):
-    group_info = get_group_info(group_id)
-    if user_id in group_info["admins"]:
-        group_info["name"] = new_name
-        Redis.hset("groups", group_id, json.dumps(group_info))
-        return group_info
-    else:
-        return None
-
-
-def get_resources():
-    resource_list = Redis.hgetall("resources")
-    return resource_list
-
-
-def get_resource_id(dataset, trait_id=None):
-    resource_id = False
-    if dataset.type == "Publish":
-        if trait_id:
-            resource_id = hmac_creation("{}:{}:{}".format(
-                'dataset-publish', dataset.id, trait_id))
-    elif dataset.type == "ProbeSet":
-        resource_id = hmac_creation(
-            "{}:{}".format('dataset-probeset', dataset.id))
-    elif dataset.type == "Geno":
-        resource_id = hmac_creation(
-            "{}:{}".format('dataset-geno', dataset.id))
-
-    return resource_id
-
-
-def get_resource_info(resource_id):
-    resource_info = Redis.hget("resources", resource_id)
-    if resource_info:
-        return json.loads(resource_info)
-    else:
-        return None
-
-
-def add_resource(resource_info, update=True):
-    if 'trait' in resource_info['data']:
-        resource_id = hmac_creation('{}:{}:{}'.format(
-            str(resource_info['type']), str(
-                resource_info['data']['dataset']),
-            str(resource_info['data']['trait'])))
-    else:
-        resource_id = hmac_creation('{}:{}'.format(
-            str(resource_info['type']), str(resource_info['data']['dataset'])))
-
-    if update or not Redis.hexists("resources", resource_id):
-        Redis.hset("resources", resource_id, json.dumps(resource_info))
-
-    return resource_info
-
-
-def add_access_mask(resource_id, group_id, access_mask):
-    the_resource = get_resource_info(resource_id)
-    the_resource['group_masks'][group_id] = access_mask
-
-    Redis.hset("resources", resource_id, json.dumps(the_resource))
-
-    return the_resource