def evolve(root, config): from papaye.models import Root, Package, Release, ReleaseFile, User context = context_from_root(root) settings = SettingsReader(config) packages_dir = settings.read_str('papaye.packages_directory') if os.path.exists(packages_dir): raise EvolveError('The repository directory is already exists. ' 'Please remove them or choose another directory ' 'in your settings file ({})'.format( config.registry._settings.get('__file__', None) )) tmpdir = tempfile.mkdtemp('packages_directory') for package in context['repository']: for release in package: for release_file in release: release_file.uuid = uuid.uuid4() pkg_dir_relative_path = compute_release_file_directory( release_file ) dir = os.path.join(tmpdir, pkg_dir_relative_path) os.makedirs(dir, exist_ok=True) path = os.path.join(dir, release_file.filename) with open(path, 'wb') as archive: archive.write(release_file.content.open().read()) release_file._path = pkg_dir_relative_path delattr(release_file, 'content') shutil.copytree(tmpdir, packages_dir) context.evolved = 7 return context
def evolve(root, config=None): from papaye.models import Root, Package, Release, ReleaseFile, User new_root = Root() new_root['repository'] = Root() context = context_from_root(root) for package_name in context.get('repository', tuple()): package = context['repository'][package_name] new_root['repository'][package_name] = Package(package.name) for release_name in package.releases: release = package[release_name] try: new_root['repository'][package_name][release_name] = Release( release.__name__, release.__name__, release.original_metadata ) for release_filename in release.release_files: release_file = release[release_filename] new_root['repository'][package_name][release_name][release_filename] = ReleaseFile( release_file.filename, release_file.content.open().read(), release_file.md5_digest, release_file.status, ) except: print('{} v{} is corrupt! He won\'t be imported'.format(package.__name__, release.__name__)) new_root['user'] = Root() for username in context.get('user', tuple()): user = context['user'][username] new_user = User('', '') new_user.username = user.username new_user.password = user.password new_user.groups = user.groups new_root['user'][username] = new_user root[APP_ROOT_NAME] = new_root context.evolved = 6 return context
def evolve(root): context = context_from_root(root) repository = context['repository'] schema = Metadata() for package_name in repository: package = repository[package_name] for release_name in package.releases: release = package[release_name] metadata = dict(((key, value) for key, value in release.metadata.items() if value is not None)) release.original_metadata = dict(release.original_metadata) deserialized_metadata = schema.deserialize(metadata) release.metadata = deserialized_metadata context.evolved = 2
def evolve(root, config=None): context = context_from_root(root) repository = context.get('repository', tuple()) schema = Metadata(typ=NullableMapping(), default=None) for package_name in repository: print(package_name) package = repository[package_name] for release_name in package.releases: release = package[release_name] original_metadata = release.metadata original_metadata['description'] = original_metadata['description']['content'] serialized_metadata = schema.serialize(original_metadata) release.metadata = schema.deserialize(serialized_metadata) context.evolved = 3
def evolve(root): context = context_from_root(root) repository = context["repository"] schema = Metadata(typ=NullableMapping(), default=None) for package_name in repository: print(package_name) package = repository[package_name] for release_name in package.releases: release = package[release_name] original_metadata = release.metadata original_metadata["description"] = original_metadata["description"]["content"] serialized_metadata = schema.serialize(original_metadata) release.metadata = schema.deserialize(serialized_metadata) context.evolved = 3
def evolve(root, config=None): context = context_from_root(root) repository = context.get('repository', tuple()) schema = Metadata() for package_name in repository: package = repository[package_name] for release_name in package.releases: release = package[release_name] metadata = dict(((key, value) for key, value in release.metadata.items() if value is not None)) release.original_metadata = dict(release.metadata) deserialized_metadata = schema.deserialize(metadata) release.metadata = deserialized_metadata for release_filename in release.release_files: release_file = release[release_filename] release_file.size = os.path.getsize(release_file.content.open().name) context.evolved = 1
def evolve(root, config=None): context = context_from_root(root) repository = context.get('repository', tuple()) for package_name in repository: package = repository[package_name] for release_name in package.releases: release = package[release_name] for release_filename in release.release_files: release_file = release[release_filename] if None in release.original_metadata: release_file.status = STATUS.local print(release_file.__name__ + ' --> local') else: release_file.status = STATUS.cached print(release_file.__name__ + ' --> cached') context.evolved = 4
def evolve(root): context = context_from_root(root) repository = context["repository"] for package_name in repository: package = repository[package_name] package.__parent__ = repository print("Upgrade {} package".format(package.__name__)) for release_name in package.releases: release = package[release_name] release.__parent__ = package print("\tUpgrade {} release".format(release.__name__)) for release_filename in release.release_files: release_file = release[release_filename] release_file.__parent__ = release print("\t\tUpgrade {} file".format(release_file.__name__)) context.evolved = 4
def evolve(root, config=None): context = context_from_root(root) repository = context.get('repository', tuple()) for package_name in repository: package = repository[package_name] package.__parent__ = repository print('Upgrade {} package'.format(package.__name__)) for release_name in package.releases: release = package[release_name] release.__parent__ = package print('\tUpgrade {} release'.format(release.__name__)) for release_filename in release.release_files: release_file = release[release_filename] release_file.__parent__ = release print('\t\tUpgrade {} file'.format(release_file.__name__)) context.evolved = 4