コード例 #1
0
ファイル: views.py プロジェクト: BenjaminLandais/ReproWeb
def get_architecture_detail(codename, component, architecture):
    """Render a view listing all of the packages referenced by the selected architecture"""
    g.breadcrumb = [{'name': 'browse', 'url': url_for('get_repository_detail')},
                    {'name': codename, 'url': url_for('get_codename_detail', codename=codename)},
                    {'name': component, 'url': url_for('get_component_detail', codename=codename, component=component)},
                    {'name': architecture, 'url': request.path},]

    # setup filters on component/architecture, str() cast is required for
    # subprocess. unicode is unsupported.
    repository = Repository(settings.basedir)
    repository.options.components = [str(component)]
    repository.options.architectures = [str(architecture)]
    package_list = repository.list(str(codename))
    repository.options.components = []
    repository.options.architectures = []

    for package in package_list:
        package['version_url'] = url_for('get_package_detail', codename = package.get('codename'),
                                                    component = package.get('component'),
                                                    architecture = package.get('architecture'),
                                                    package = package.get('package'),
                                                    version = package.get('version'))

        package['package_url'] = url_for('get_package_versions', codename = package.get('codename'),
                                                      component = package.get('component'),
                                                      architecture = package.get('architecture'),
                                                      package = package.get('package'))

    return render_template('api/packages.html', packages=sorted(package_list), codename=codename, component=component, architecture=architecture)
コード例 #2
0
ファイル: views.py プロジェクト: BenjaminLandais/ReproWeb
def get_package_versions(codename, component, architecture, package):
    g.breadcrumb = [{'name': 'browse', 'url': url_for('get_repository_detail')},
                    {'name': codename, 'url': url_for('get_codename_detail', codename=codename)},
                    {'name': component, 'url': url_for('get_component_detail', codename=codename, component=component)},
                    {'name': architecture, 'url': url_for('get_architecture_detail', codename=codename, component=component, architecture=architecture)},
                    {'name': package, 'url': request.path},]

    # get any un-referenced versions of our package name
    repository = Repository(settings.basedir)
    all_versions = repository.list(codename, package)
    print all_versions
    return render_template('api/detail/package.html', package=package, versions=all_versions)
コード例 #3
0
ファイル: views.py プロジェクト: BenjaminLandais/ReproWeb
def get_repository_detail():
    """Render a view listing all of the distributions configured in the repository"""
    g.breadcrumb = [ {'name': 'browse', 'url': url_for('get_repository_detail')}, ]

    repository = Repository(settings.basedir)
    codenames = repository.list_dists()

    packages = []
    for dist in repository.list_dists():
        packages.extend(repository.list(dist['Codename']))

    for codename in codenames:
        codename['Url'] = url_for('get_codename_detail', codename=codename.get('Codename','#'))
        codename['Package Count'] = len([x for x in packages])
    return render_template('api/detail/repository.html', codenames=codenames)
コード例 #4
0
ファイル: views.py プロジェクト: BenjaminLandais/ReproWeb
def get_codename_detail(codename):
    """Render a view listing all of the components of the selected distribution"""
    g.breadcrumb = [{'name': 'browse', 'url': url_for('get_repository_detail')},
                    {'name': codename, 'url': request.path},]

    repository = Repository(settings.basedir)
    components = repository.list_components(codename)
    packages = repository.list(codename)
    if components:
        for c in components:
            c['url'] = url_for('get_component_detail', codename=codename, component=c['component'])
            c['count'] = len( [x for x in packages if x['component'] == c['component']] )
        return render_template('api/detail/codename.html', codename=codename, components=components)

    return render_template('api/detail/codename.html', codename=codename)
コード例 #5
0
ファイル: views.py プロジェクト: BenjaminLandais/ReproWeb
def get_component_detail(codename, component):
    """Render a view listing all of the architectures of the selected component"""
    g.breadcrumb = [{'name': 'browse', 'url': url_for('get_repository_detail')},
                    {'name': codename, 'url': url_for('get_codename_detail', codename=codename)},
                    {'name': component, 'url': request.path},]

    repository = Repository(settings.basedir)
    archs = repository.list_architectures(codename)
    packages = repository.list(codename)
    if archs:
        for a in archs:
            a['url'] = url_for('get_architecture_detail', codename=codename, component=component, architecture=a['architecture'])
            a['count'] = len( [x for x in packages if x['component'] == component and x['architecture'] == a['architecture'] ] )
        return render_template('api/detail/component.html', codename=codename, component=component, archs=archs)

    return render_template('api/detail/component.html', codename=codename, component=component)
コード例 #6
0
ファイル: views.py プロジェクト: BenjaminLandais/ReproWeb
def get_packages():
    """Render a view listing _all_ of the packages within the repository."""
    g.breadcrumb = [ {'name': 'search', 'url': request.path}, ]

    repository = Repository(settings.basedir)

    package_list = []
    for dist in repository.list_dists():
        package_list.extend(repository.list(dist['Codename']))

    for package in package_list:
        package['url'] = url_for('get_package_detail', codename = package.get('codename'),
                                                       component = package.get('component'),
                                                       architecture = package.get('architecture'),
                                                       package = package.get('package'),
                                                       version = package.get('version') )

    return render_template('api/packages.html', packages=sorted(package_list))
コード例 #7
0
ファイル: views.py プロジェクト: BenjaminLandais/ReproWeb
def get_package_detail(codename, component, architecture, package, version, format=None):
    app.logger.info(request.path)

    g.breadcrumb = [{'name': 'browse', 'url': url_for('get_repository_detail')},
                    {'name': codename, 'url': url_for('get_codename_detail', codename=codename)},
                    {'name': component, 'url': url_for('get_component_detail', codename=codename, component=component)},
                    {'name': architecture, 'url': url_for('get_architecture_detail', codename=codename, component=component, architecture=architecture)},
                    {'name': package, 'url': url_for('get_package_versions', codename=codename, component=component, architecture=architecture, package=package)},
                    {'name': version, 'url': request.path},]

    # get any un-referenced versions of our package name
    repository = Repository(settings.basedir)
    all_versions = repository.list(codename, package)

    try:
        reference = cache(settings).read(repository, codename, component, architecture, package, version)
        app.logger.debug('Rendering from cache')
    except Exception as e:
        # loop through the references until we find a match. Cache it out afterwards
        # so that we don't have to do this again.
        app.logger.info(e)
        for ref in repository.dumpreferences():
            if ref['package'] == package and ref['version'] == version:
                ref['deb'] = os.path.join(repository.options.basedir, ref['deb'])

                try:
                    (mode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime) = os.stat(ref['deb'])
                    ref['stats'] = {'mtime': time.ctime(mtime), 'ctime': time.ctime(ctime), 'user': pwd.getpwuid(uid).pw_gecos, 'size': size}
                except Exception as e:
                    app.logger.warn(e)

                try:
                    cache(settings).write(repository, codename, component, architecture, package, ref['version'], ref)
                    reference = ref
                except Exception as e:
                    # unable to cache result. reference local variable will not have been set.
                    app.logger.warn('unable to cache')
                    app.logger.warn(e)

    if 'reference' in locals():
        return render_template('api/detail/version.html', package=package, reference=reference, versions=all_versions)

    return render_template('api/detail/version.html', package=package)