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()
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