def get_or_create_dataset(self, name, top=None): ''' returns existing or created dataset given a name returns False if the dataset is not unique by name top is the directory ''' ds = Dataset.objects.filter(description=name, experiments=self.experiment) if len(ds) == 1: return ds[0] elif len(ds) > 1: return False ds = Dataset(description=name) if top is not None: ds.directory = top ds.save() self.tag_user(ds, top) else: ds.save() ds.experiments.add(self.experiment) return ds