def on_delete(self, widget): highlighter.apply(widget, 'deleted', 'deleted') reactor.callLater(10, highlighter.remove, widget) if widget.tag == "<none>:<none>": widget.tag = widget.image d = threads.deferToThread(app.client.remove_image, widget.tag) d.addErrback(lambda _: highlighter.remove(widget) or _) return d
def on_delete(self, widget): highlighter.apply(widget, "deleted", "deleted") reactor.callLater(10, highlighter.remove, widget) if widget.tag == "<none>:<none>": widget.tag = widget.image d = threads.deferToThread(app.client.remove_image, widget.tag) d.addErrback(lambda _: highlighter.remove(widget) or _) return d
def set_containers(self, containers, force=False): # save the current position _, current_focus = self.listing.get_focus() if containers == self.container_data and not force: return self.listing.clear() self.old_containers = self.containers self.containers = {} running = [c for c in containers if 'Exited' not in c['status']] stopped = [c for c in containers if 'Exited' in c['status']] filter = self.filter.lower() def remove_highlight(row): highlighter.remove(row) for container in running: in_names = any(filter in name.lower() for name in container['names']) in_id = filter in container['id'].lower() in_status = filter in container['status'].lower() in_image = filter in container['image'].lower() row = self.make_container_row(container) if any((in_names, in_id, in_status, in_image)): self.listing.walker.append(row) if self.old_containers and row.container not in self.old_containers: highlighter.apply(row, 'created', 'created') reactor.callLater(1, highlighter.remove, row) for container in stopped: in_names = any(filter in name.lower() for name in container['names']) in_id = filter in container['id'].lower() in_status = filter in container['status'].lower() in_image = filter in container['image'].lower() row = self.make_container_row(container) if any((in_names, in_id, in_status, in_image)): self.listing.walker.append(row) if self.old_containers and row.container not in self.old_containers: highlighter.apply(row, 'created', 'created') reactor.callLater(1, highlighter.remove, row) self.container_data = containers self.listing.set_focus(current_focus) self.listing.fix_focus() app.draw_screen()
def push(self): widget, idx = self.listing.get_focus() name, tag = split_repo_name(widget.tag) highlighter.apply(widget, "uploading", "uploading_focus") d = threads.deferToThread(app.client.push, name) def handle_response(r): r = r.replace("}{", "},{") r = r.replace('1)"}', '1)"},') r = r.replace('2)"}', '2)"},') r = "[%s]" % r messages = [d.get("status") or d.get("error") for d in json.loads(r)] self.show_dialog(MessageListBox(messages, title="Push Response", width=100)) reactor.callLater(5.0, highlighter.remove, widget) d.addCallback(handle_response) return d
def set_images(self, images, force=False): # save the current position _, current_focus = self.listing.get_focus() if images == self.image_data and not force: return self.listing.clear() self.old_images = self.images self.images = {} untagged = [i for i in images if i['tag'] == '<none>:<none>'] tagged = [i for i in images if i['tag'] != '<none>:<none>'] filter = self.filter.lower() def remove_highlight(row): highlighter.remove(row) for image in tagged: in_tag = filter in image['tag'].lower() in_id = filter in image['id'].lower() row = self.make_image_row(image) if in_tag or in_id: self.listing.walker.append(row) if self.old_images and row.tag not in self.old_images: highlighter.apply(row, 'created', 'created') reactor.callLater(1, highlighter.remove, row) for image in untagged: in_tag = filter in image['tag'].lower() in_id = filter in image['id'].lower() row = self.make_image_row(image) if in_tag or in_id: self.listing.walker.append(row) if self.old_images and row.tag not in self.old_images: highlighter.apply(row, 'created', 'created') reactor.callLater(1, highlighter.remove, row) self.image_data = images self.listing.set_focus(current_focus) self.listing.fix_focus() app.draw_screen()
def set_images(self, images, force=False): # save the current position _, current_focus = self.listing.get_focus() if images == self.image_data and not force: return self.listing.clear() self.old_images = self.images self.images = {} untagged = [i for i in images if i["tag"] == "<none>:<none>"] tagged = [i for i in images if i["tag"] != "<none>:<none>"] filter = self.filter.lower() def remove_highlight(row): highlighter.remove(row) for image in tagged: in_tag = filter in image["tag"].lower() in_id = filter in image["id"].lower() row = self.make_image_row(image) if in_tag or in_id: self.listing.walker.append(row) if self.old_images and row.tag not in self.old_images: highlighter.apply(row, "created", "created") reactor.callLater(1, highlighter.remove, row) for image in untagged: in_tag = filter in image["tag"].lower() in_id = filter in image["id"].lower() row = self.make_image_row(image) if in_tag or in_id: self.listing.walker.append(row) if self.old_images and row.tag not in self.old_images: highlighter.apply(row, "created", "created") reactor.callLater(1, highlighter.remove, row) self.image_data = images self.listing.set_focus(current_focus) self.listing.fix_focus() app.draw_screen()
def push(self): widget, idx = self.listing.get_focus() name, tag = split_repo_name(widget.tag) highlighter.apply(widget, 'uploading', 'uploading_focus') d = threads.deferToThread(app.client.push, name) def handle_response(r): r = r.replace("}{", "},{") r = r.replace("1)\"}", "1)\"},") r = r.replace("2)\"}", "2)\"},") r = "[%s]" % r messages = [ d.get('status') or d.get('error') for d in json.loads(r) ] self.show_dialog( MessageListBox(messages, title='Push Response', width=100)) reactor.callLater(5.0, highlighter.remove, widget) d.addCallback(handle_response) return d
def on_delete(self, widget): highlighter.apply(widget, 'deleted', 'deleted') reactor.callLater(2.5, highlighter.remove, widget) return threads.deferToThread(app.client.remove_container, widget.container)