def message_post() -> Response: """ Create a new message in a group or team. :return: A response object for the POST API request. """ message_data: dict = request.get_json() if message_data is None: response = jsonify({ 'self': f'/v2/messages', 'added': False, 'message': None, 'error': "the request body isn't populated" }) response.status_code = 400 return response message_to_add = Message(message_data) if None in [ message_to_add.username, message_to_add.first, message_to_add.last, message_to_add.group_name, message_to_add.time ]: response = jsonify({ 'self': f'/v2/messages', 'added': False, 'message': None, 'error': "'username', 'first', 'last', 'group_name', and 'time' are required fields" }) response.status_code = 400 return response message_to_add.created_date = datetime.now() message_to_add.created_app = 'saints-xctf-api' message_to_add.created_user = None message_to_add.modified_date = None message_to_add.modified_app = None message_to_add.modified_user = None message_to_add.deleted_date = None message_to_add.deleted_app = None message_to_add.deleted_user = None message_to_add.deleted = False message_added_successfully = MessageDao.add_message( new_message=message_to_add) if message_added_successfully: message_added = MessageDao.get_message_by_id( message_id=message_to_add.message_id) message_dict = MessageData(message_added).__dict__ if message_dict.get('time') is not None: message_dict['time'] = str(message_dict['time']) response = jsonify({ 'self': '/v2/messages', 'added': True, 'message': message_dict }) response.status_code = 200 return response else: response = jsonify({ 'self': '/v2/messages', 'added': False, 'message': None, 'error': 'failed to create a new message' }) response.status_code = 500 return response