def put(self, moduleID): with AdminPermission.require(): moduleData = parseJsonResponse(request.data) del moduleData['_id'] module = LibraryModule.objects.get(id = moduleID) module.modify(**moduleData) module.save()
def post(self, moduleID = None): with AdminPermission.require(): if (moduleID == None): newModule = LibraryModule() newModule.save() return makeJsonResponse({'_id': newModule.id}) else: params = request.args action = params.get('action') raise APIException("Unknown POST action {}".format(action))
def listModels(self): responseFields = {"name": True, "description": True, "created": True, "owner": True} userCollection = User._get_collection() models = None if current_user.is_authenticated(): user = current_user._get_current_object() # modelUserRelation = [own, shared, public, all] modelUserRelation = request.args.get("modelUserRelation", "own") if modelUserRelation == "own": searchFilter = {"owner": user.id} elif modelUserRelation == "shared": models = [] sharedModelAccess = MP.ModelUserAccess.objects( user=user, access__gte=MP.ModelUserAccess.ACCESS_DCT["list"] ) for modelAccess in sharedModelAccess: model = modelAccess.model models.append( { "_id": model.id, "name": model.name, "description": model.description, "created": model.created, "owner": model.owner.username, "access": modelAccess.access, } ) elif modelUserRelation == "public": searchFilter = {"publicAccess": {"$gte": Model.PUBLIC_ACCESS_DCT["list"]}} responseFields["publicAccess"] = True elif modelUserRelation == "all": if AdminPermission.can(): searchFilter = {} else: raise UnauthorizedError("Only administrators can list all models in the database") else: raise APIException("Invalid value for modelUserRelation, must be one of [own, shared, public, all]") else: searchFilter = {"publicAccess": {"$gte": Model.PUBLIC_ACCESS_DCT["list"]}} responseFields["publicAccess"] = True if models is None: models = list(Model._get_collection().find(searchFilter, responseFields, sort=[("name", 1)])) for model in models: model["owner"] = userCollection.find_one({"_id": model["owner"]})["username"] return makeJsonResponse(models)
def delete(self, moduleID): with AdminPermission.require(): LibraryModule.objects.get(id = moduleID).delete() return {'msg': 'Module deleted'}