def process(self, *av, **kw): ckan = CkanClient(*av, **kw) for dataset, descr in self: _, pkgname = dataset.rsplit("/", 1) pkg = ckan.package_entity_get(pkgname) self.__unmerge__(pkg, self.removals.get(dataset, {})) self.__merge__(pkg, descr) groups = pkg.get("groups", []) self.__fixup__(pkg) ckan.package_entity_put(pkg) self.log_api_result(pkgname, ckan) for groupname in groups: group = ckan.group_entity_get(groupname) pkglist = group.setdefault("packages", []) if pkgname not in pkglist: pkglist.append(pkgname) ckan.group_entity_put(group) self.log_api_result(groupname, ckan) self.flush()