def on_post(self, req, resp, dataset, snapshot): """Commit a revision (snapshot) from the working tree.""" queue = dataset_queue(dataset) media = req.media description_fields = {} snapshot_changes = [] if media != None: description_fields = media.get('description_fields') snapshot_changes = media.get('snapshot_changes') create = create_snapshot.si(self.store.annex_path, dataset, snapshot, description_fields, snapshot_changes).set(queue=queue) created = create.apply_async() created.wait() if not created.failed(): resp.media = get_snapshot.s( self.store.annex_path, dataset, snapshot).apply_async(queue=queue).get() resp.status = falcon.HTTP_OK # Publish after response publish = publish_snapshot.s(self.store.annex_path, dataset, snapshot, req.cookies) skip_publishing = req.media != None and media.get( 'skip_publishing') if not skip_publishing and skip_publishing is not None: publish.apply_async(queue=queue) else: resp.media = {'error': 'tag already exists'} resp.status = falcon.HTTP_CONFLICT
def on_post(self, req, resp, dataset, snapshot): """Commit a revision (snapshot) from the working tree.""" queue = dataset_queue(dataset) create = create_snapshot.si( self.store.annex_path, dataset, snapshot).set(queue=queue) created = create.apply_async() created.wait() if not created.failed(): resp.media = get_snapshot.s( self.store.annex_path, dataset, snapshot).apply_async(queue=queue).get() resp.status = falcon.HTTP_OK # Publish after response publish = publish_snapshot.s( self.store.annex_path, dataset, snapshot, req.cookies) publish.apply_async(queue=queue) else: resp.media = {'error': 'tag already exists'} resp.status = falcon.HTTP_CONFLICT
def on_get(self, req, resp, dataset, snapshot=None): """Get the tree of files for a snapshot.""" queue = dataset_queue(dataset) if snapshot: ds = self.store.get_dataset(dataset) files = get_files.s(self.store.annex_path, dataset, branch=snapshot).apply_async(queue=queue) response = get_snapshot.s( self.store.annex_path, dataset, snapshot).apply_async(queue=queue).get() response['files'] = files.get() resp.media = response resp.status = falcon.HTTP_OK else: tags = get_snapshots.s(self.store.annex_path, dataset).apply_async(queue=queue) # Index of all tags ds = self.store.get_dataset(dataset) resp.media = {'snapshots': tags.get()} resp.status = falcon.HTTP_OK