def loadDeployment(deploymentData): """Returns a Deployment object for the given data""" #check that the deploymentData is valid if not ("deploymentId" in deploymentData and type(deploymentData["deploymentId"])==str and len(deploymentData["deploymentId"])>0): raise errors.BadRequestError("Deployment must have attribute 'deploymentId' (type=str and length>0)") if not ("name" in deploymentData and type(deploymentData["name"])==str and len(deploymentData["name"])>0): raise errors.BadRequestError("Deployment must have attribute 'name' (type=str and length>0)") if not ("status" in deploymentData and type(deploymentData["status"])==str and len(deploymentData["status"])>0): raise errors.BadRequestError("Deployment must have attribute 'status' (type=str and length>0)") if not ("dateCreated" in deploymentData and type(deploymentData["dateCreated"])==str and len(deploymentData["dateCreated"])>0): raise errors.BadRequestError("Deployment must have attribute 'dateCreated' (type=str and length>0)") if not ("dateModified" in deploymentData and type(deploymentData["dateModified"])==str and len(deploymentData["dateModified"])>0): raise errors.BadRequestError("Deployment must have attribute 'dateCreated' (type=str and length>0)") if not ("archived" in deploymentData and type(deploymentData["archived"])==bool): raise errors.BadRequestError("Deployment must have attribute 'archived' (type=bool)") if not ("goalSampleSize" in deploymentData and type(deploymentData["goalSampleSize"]) in [int, Decimal] and deploymentData["goalSampleSize"]>0): raise errors.BadRequestError("Deployment must have attribute 'goalSampleSize' (type=int and value>0)") if not ("currentSampleSize" in deploymentData and type(deploymentData["currentSampleSize"]) in [int, Decimal] and deploymentData["currentSampleSize"]>=0): raise errors.BadRequestError("Deployment must have attribute 'currentSampleSize' (type=int and value>=0)") if not ("facility" in deploymentData and type(deploymentData["facility"]) in [str, dict] and len(deploymentData["facility"])>0): raise errors.BadRequestError("Deployment must have attribute 'facility' (type=str or dict and length>0)") #construct the deployment d = Deployment() d.deploymentId = deploymentData["deploymentId"] d.name = deploymentData["name"] if "description" in deploymentData: d.description = deploymentData["description"] d.status = deploymentData["status"] d.dateCreated = deploymentData["dateCreated"] d.dateModified = deploymentData["dateModified"] d.archived = deploymentData["archived"] d.goalSampleSize = int(deploymentData["goalSampleSize"]) d.currentSampleSize = int(deploymentData["currentSampleSize"]) d.facility = facility_db_access.loadFacility(deploymentData["facility"]) return d
def createDeployment(studyId, deploymentData): #check that deploymentData is valid if not ("name" in deploymentData and type(deploymentData["name"])==str and len(deploymentData["name"])>0): raise errors.BadRequestError("Deployment must have attribute 'name' (type=str and length>0)") if not ("goalSampleSize" in deploymentData and type(deploymentData["goalSampleSize"]) in [int, Decimal] and deploymentData["goalSampleSize"]>0): raise errors.BadRequestError("Deployment must have attribute 'goalSampleSize' (type=int and value>0)") if not ("facility" in deploymentData and type(deploymentData["facility"]) in [str, dict] and len(deploymentData["facility"])>0): raise errors.BadRequestError("Deployment must have attribute 'facility' (type=str or dict and length>0)") #construct the deployment d = Deployment() d.name = deploymentData["name"] if "description" in deploymentData: d.description = deploymentData["description"] d.goalSampleSize = int(deploymentData["goalSampleSize"]) d.facility = facility_db_access.loadFacility(deploymentData["facility"]) #create the deployment (by updating its parent study) return study_db_access.createDeploymentForStudy(studyId, d)