def put(self, playsound_name, **options): playsound_name = PlaysoundModule.massage_name(playsound_name) if not PlaysoundModule.validate_name(playsound_name): return ( { "error": "Invalid Playsound name. The playsound name may only contain lowercase latin letters, 0-9, -, or _. No spaces :rage:" }, 400, ) post_parser = RequestParser() post_parser.add_argument("link", required=True) args = post_parser.parse_args() try: link = args["link"] except (ValueError, KeyError): return {"error": "Invalid `link` parameter."}, 400 with DBManager.create_session_scope() as db_session: count = db_session.query(Playsound).filter(Playsound.name == playsound_name).count() if count >= 1: return "Playsound already exists", 400 # the rest of the parameters are initialized with defaults playsound = Playsound(name=playsound_name, link=link) db_session.add(playsound) return "OK", 200
def playsound_create(playsound_name: str, **options) -> ResponseReturnValue: # Create playsound playsound_name = PlaysoundModule.massage_name(playsound_name) if not PlaysoundModule.validate_name(playsound_name): return ( { "error": "Invalid Playsound name. The playsound name may only contain lowercase latin letters, 0-9, -, or _. No spaces :rage:" }, 400, ) try: json_data = request.get_json() if not json_data: return {"error": "Missing json body"}, 400 data = CreatePlaysoundSchema().load(json_data) except ValidationError as err: return {"error": f"Did not match schema: {json.dumps(err.messages)}"}, 400 with DBManager.create_session_scope() as db_session: count = db_session.query(Playsound).filter(Playsound.name == playsound_name).count() if count >= 1: return "Playsound already exists", 400 # the rest of the parameters are initialized with defaults playsound = Playsound(name=playsound_name, link=data.link) db_session.add(playsound) log_msg = f"The {playsound_name} playsound has been added" AdminLogManager.add_entry("Playsound added", options["user"], log_msg) return "OK", 200