class Collection(object): def __init__(self, theme, dest_folder): self.dest_folder = dest_folder self.extensions_descs = {} self.theme = theme self.github = Github("emesene") self._stop = False self._tree = None self.progress = 0.0 def save_files(self, type_, label): self._stop = False element = self.extensions_descs[type_].get(label) if element is None: return keys = element.files.keys() tmp_dir = tempfile.mkdtemp() for k, path in enumerate(keys): if self._stop: self.remove(tmp_dir) return self.progress = k / float(len(keys)) split_path = path.split("/") path_to_create = tmp_dir for part in split_path[:-1]: path_to_create = os.path.join(path_to_create, part) try: os.makedirs(path_to_create) except OSError: pass try: rq = self.github.get_raw(self.theme, element.files[path]) except Exception, ex: log.exception(str(ex)) self.remove(tmp_dir) return f = open(os.path.join(path_to_create, split_path[-1]), "wb") f.write(rq) f.close() self.remove(self.get_abspath(type_, label)) path = self.get_path(type_, label) split_path = os.path.split(path) first_path = split_path[0] if split_path[1] else '' self.move(os.path.join(tmp_dir, path), os.path.join(self.dest_folder, first_path)) self.remove(tmp_dir) self.progress = 0.0
class Collection(object): def __init__(self, theme, dest_folder): self.dest_folder = dest_folder self.extensions_descs = {} self.theme = theme self.github = Github("emesene") self._stop = False self._stopfetch = False self._blobs = None def save_files(self, element, label): self._stop = False for el, k in element[label].files.items(): els = el.split("/") if self._stop: self.remove(os.path.join(self.dest_folder, els[0])) return path_to_create = "" for i in range(len(els) - 1): path_to_create = os.path.join(path_to_create, els[i]) try: os.makedirs(os.path.join(self.dest_folder , path_to_create)) except OSError: pass rq = self.github.get_raw(self.theme, k) f = open(os.path.join(self.dest_folder, el), "wb") f.write(rq) def download(self, download_item=None): for element in self.extensions_descs.itervalues(): if download_item is not None: self.save_files(element, download_item) def remove(self, path): shutil.rmtree(path) def stop(self): self._stop = True def stop_fetch(self): self._stopfetch = True def set_blobs(self, result): self._blobs = result def plugin_name_from_file(self, file_name): pass def fetch(self): pass
class Collection(object): def __init__(self, theme, dest_folder): self.dest_folder = dest_folder self.extensions_descs = {} self.theme = theme self.github = Github("emesene") self._stop = False self._blobs = None self.progress = 0.0 def save_files(self, element, label): self._stop = False if not label in element: return keys = element[label].files.keys() for k, path in enumerate(keys): self.progress = k / float(len(keys)) split_path = path.split("/") if self.theme.endswith("themes"): removal_path = os.path.join(self.dest_folder, split_path[0], split_path[1]) else: removal_path = os.path.join(self.dest_folder, split_path[0]) if self._stop: self.remove(removal_path) return path_to_create = self.dest_folder for part in split_path[:-1]: path_to_create = os.path.join(path_to_create, part) try: os.makedirs(path_to_create) except OSError: pass try: rq = self.github.get_raw(self.theme, element[label].files[path]) except Exception, ex: log.error(str(ex)) self.remove(removal_path) return f = open(os.path.join(path_to_create, split_path[-1]), "wb") f.write(rq) f.close() self.progress = 1.0
class Collection(object): def __init__(self, theme, dest_folder): self.dest_folder = dest_folder self.extensions_descs = {} self.theme = theme self.github = Github("emesene") self._stop = False self._tree = None self.progress = 0.0 def save_files(self, element, label): self._stop = False if not label in element: return keys = element[label].files.keys() for k, path in enumerate(keys): self.progress = k / float(len(keys)) split_path = path.split("/") if self.theme.endswith("themes"): removal_path = os.path.join(self.dest_folder, split_path[0], split_path[1]) else: removal_path = os.path.join(self.dest_folder, split_path[0]) if self._stop: self.remove(removal_path) return path_to_create = self.dest_folder for part in split_path[:-1]: path_to_create = os.path.join(path_to_create, part) try: os.makedirs(path_to_create) except OSError: pass try: rq = self.github.get_raw(self.theme, element[label].files[path]) except Exception, ex: log.exception(str(ex)) self.remove(removal_path) return f = open(os.path.join(path_to_create, split_path[-1]), "wb") f.write(rq) f.close() self.progress = 0.0
class Collection(object): def __init__(self, theme, dest_folder): self.dest_folder = dest_folder self.extensions_descs = {} self.theme = theme self.github = Github("emesene") def save_files(self, element, label): for el, k in element[label].files.items(): els = el.split("/") path_to_create = "" for i in range(len(els) - 1): path_to_create = os.path.join(path_to_create, els[i]) try: os.makedirs(os.path.join(self.dest_folder , path_to_create)) except OSError: pass rq = self.github.get_raw(self.theme, k) f = open(os.path.join(self.dest_folder, el), "wb") f.write(rq) def download(self, download_item=None): for key in self.extensions_descs: element = self.extensions_descs[key] if download_item is not None: self.save_files(element, download_item) else: for label in element: if element[label].todownload: self.save_files(element, label) def plugin_name_from_file(self, file_name): pass def fetch(self): pass