"""Utility functions for MongoDB stuff.""" from bson import ObjectId from flask import current_app from werkzeug.exceptions import NotFound def find_one_or_404(collection_name, object_id, projection=None): """Returns the found object from the collection, or raises a NotFound exception. :param collection_name: name of the collection, such as 'users' or 'files' :type collection_name: str :param object_id: ID of the object to find. :type object_id: str or bson.ObjectId :returns: the found object :rtype: dict :raises: werkzeug.exceptions.NotFound """ collection = current_app.data.driver.db[collection_name] found = collection.find_one(ObjectId(object_id), projection=projection) if found is None: raise NotFound() return found