def add_experiment(): tic = time.time() userid = get_and_verify_user(request) artifacts = {} try: experiment = model.experiment_from_dict(request.json['experiment']) if get_db().can_write_experiment(experiment.key, userid): for tag, art in experiment.artifacts.iteritems(): art.pop('local', None) get_db().add_experiment(experiment, userid) added_experiment = get_db().get_experiment(experiment.key) artifacts = _process_artifacts(added_experiment) status = 'ok' else: raise ValueError('Unauthorized') except BaseException: status = traceback.format_exc() toc = time.time() getlogger().info('Processed add_experiment request in {} s'.format(toc - tic)) return json.dumps({'status': status, 'artifacts': artifacts})
def add_experiment(): tic = time.time() userid = get_and_verify_user(request) # TODO check if user has access artifacts = {} try: experiment = model.experiment_from_dict(request.json['experiment']) for tag, art in experiment.artifacts.iteritems(): art.pop('local', None) get_db().add_experiment(experiment) added_experiment = get_db().get_experiment(experiment.key) for tag, art in added_experiment.artifacts.iteritems(): if 'key' in art.keys(): get_db().store.grant_write(art['key'], userid) artifacts[tag] = art status = 'ok' except BaseException: status = traceback.format_exc() toc = time.time() getlogger().info('Processed add_experiment request in {} s'.format(toc - tic)) return json.dumps({'status': status, 'artifacts': artifacts})
def get_project_experiments(self, project): headers = self._get_headers() response = requests.post(self.url + '/api/get_project_experiments', headers=headers, data=json.dumps({"project": project})) self._raise_detailed_error(response) data = response.json()['experiments'] experiments = [model.experiment_from_dict(edict) for edict in data] return experiments
def get_experiment(self, experiment): if isinstance(experiment, basestring): key = experiment else: key = experiment.key headers = self._get_headers() request = requests.post(self.url + '/api/get_experiment', headers=headers, data=json.dumps({"key": key})) self._raise_detailed_error(request) return model.experiment_from_dict(request.json()['experiment'])