コード例 #1
0
ファイル: evolve7.py プロジェクト: rcommande/papaye
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
コード例 #2
0
ファイル: evolve6.py プロジェクト: rcommande/papaye
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
コード例 #3
0
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
コード例 #4
0
ファイル: evolve3.py プロジェクト: rcommande/papaye
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
コード例 #5
0
ファイル: evolve3.py プロジェクト: rcommande/papaye
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
コード例 #6
0
ファイル: evolve1.py プロジェクト: rcommande/papaye
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
コード例 #7
0
ファイル: evolve5.py プロジェクト: rcommande/papaye
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
コード例 #8
0
ファイル: evolve4.py プロジェクト: rcommande/papaye
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
コード例 #9
0
ファイル: evolve4.py プロジェクト: rcommande/papaye
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