def post(self): train_args = add_train_parser.parse_args() ordered = Train.query.order_by(Train.id.desc()).all() if ordered and Train.query.filter_by(name=train_args['name']).first(): abort( 400, 'Train %s already exists. Please choose a new name.' % train_args['name']) if 'id' not in train_args: if ordered: highest = ordered[0].id else: highest = 0 train_id = highest + 1 else: train_id = train_args['id'] train = Train(id=train_id, name=train_args['name']) train.speed = 0.0 train.length = trainLength train.width = trainWidth train.height = trainHeight train.mass = trainMass train.crewCount = 0 train.passengerCount = 0 db.session.add(train) db.session.commit() return train, 201