Exemple #1
0
def seed_db():
    """Seeds the database."""
    with open("authentication.json") as f:
        users = json.load(f)
        for user in users:
            user_object = User()
            user_object.user_id = user["id"]
            user_object.username = user["username"]
            user_object.hashed_password = user["hashedPassword"]
            user_object.birthdate = dateutil.parser.parse(user["birthdate"])
            for profile in user["profiles"]:
                profile_id = int(profile["id"])
                obj = Profile.query.filter_by(profile_id=profile_id).first()
                if obj is None:
                    obj = Profile()
                    obj.profile_id = profile_id
                    obj.name = profile["name"]
                user_object.profiles.append(obj)
            db.session.add(user_object)

    with open("programming.json") as f:
        dictionary = json.load(f)
        assets = dictionary["assets"]
        providers = dictionary["providers"]
        for provider in providers:
            obj = Provider()
            obj.refresh_rate_in_seconds = provider["refreshRateInSeconds"]
            obj.provider_id = provider["id"]
            obj.name = provider["name"]
            for prof_id in provider["profileIds"]:
                profile = Profile.query.filter_by(profile_id=prof_id).first()
                obj.profiles.append(profile)
            db.session.add(obj)

        for asset in assets:
            asset_object = Asset()
            asset_object.media_id = asset["mediaId"]
            asset_object.title = asset["title"]
            asset_object.provider_id = asset["providerId"]
            asset_object.duration_in_seconds = asset["durationInSeconds"]
            asset_object.licensing_window_start = dateutil.parser.parse(
                asset["licensingWindow"]["start"])
            asset_object.licensing_window_end = dateutil.parser.parse(
                asset["licensingWindow"]["end"])
            for prof_id in asset["profileIds"]:
                profile = Profile.query.filter_by(profile_id=prof_id).first()
                asset_object.profiles.append(profile)
            db.session.add(asset_object)

    db.session.commit()
Exemple #2
0
def bell_hidden_account():
    """Creates a user account"""
    response = {}
    secret_key = request.headers.get("secretKey")
    request_json = request.get_json()

    # Validation
    if secret_key != os.environ["HEADER_SECRET_KEY"]:
        response["message"] = "Invalid header secret key"
        return jsonify(response), 401

    keys = ["accountId", "profiles", "username", "password"]
    for key in keys:
        if key not in request_json:
            response["message"] = "Missing {} key in request body".format(key)
            return jsonify(response), 400

    profile_names = request_json["profiles"]
    for name in profile_names:
        profile = Profile.query.filter_by(name=name).first()
        if profile is None:
            response["message"] = "Invalid profile name: {}".format(name)
            return jsonify(response), 400

    username = request_json["username"]
    user = User.query.filter_by(username=username).first()
    if user is not None:
        response["message"] = "Username already exists"
        return jsonify(response), 409

    # Create user
    user = User()
    user.user_id = request_json["accountId"]
    user.username = username
    password = request_json["password"].encode("utf-8")
    user.hashed_password = hashlib.sha256(password).hexdigest()
    for name in profile_names:
        profile = Profile.query.filter_by(name=name).first()
        user.profiles.append(profile)
    db.session.add(user)
    db.session.commit()

    response["message"] = "Account created successfully"
    return jsonify(response), 201