コード例 #1
0
def maintainers(package_name: str) -> List[User]:
    p = Package.objects(id=package_name).first()
    if not p:
        return []

    users = list(User.objects(id__in=p.maintainers))
    return users
コード例 #2
0
def do_summary():
    print("Final numbers:")
    print("Users: {:,}".format(User.objects().count()))
    print("Packages: {:,}".format(Package.objects().count()))
    print("Releases: {:,}".format(Release.objects().count()))
    print("Languages: {:,}".format(ProgrammingLanguage.objects().count()))
    print("Licenses: {:,}".format(License.objects().count()))
コード例 #3
0
def latest_packages(limit: int = 10) -> List[Package]:
    latest = Release.objects() \
        .only('package_id') \
        .order_by('-created_date') \
        .limit(50)

    pids = [r.package_id for r in latest]
    return list(Package.objects(id__in=pids).limit(limit))
コード例 #4
0
def latest_packages(limit: int = 10) -> List[Package]:
    latest_releases = Release.objects().only('package_id').order_by(
        '-created_date').limit(50)
    package_ids = [r.package_id for r in latest_releases]

    return [
        p for p in Package.objects().filter(id__in=package_ids)
        if p.description and len(p.description) > 100
    ][:limit]
コード例 #5
0
def all_packages(limit: int) -> List[Package]:
    return list(Package.objects().order_by('-created_date').limit(limit))
コード例 #6
0
def package_count():
    return Package.objects().count()
コード例 #7
0
def package_by_name(name: str) -> Optional[Package]:
    package = Package.objects(id=name.lower().strip()).first()
    return package
コード例 #8
0
def all_packages(limit: int) -> List[Package]:
    return list(Package.objects().limit(limit))
コード例 #9
0
def package_by_name(name: str) -> Optional[Package]:
    if not name:
        return None

    return Package.objects().filter(id=name.lower()).first()
コード例 #10
0
def load_package(data: dict, user_lookup: Dict[str, User]):
    try:
        info = data.get('info', {})
        # TODO: Add keywords?

        p = Package()
        p.id = data.get('package_name', '').strip()
        if not p.id:
            return

        # DbSessionFactory.engine.echo = True
        p.author = info.get('author')
        p.author_email = info.get('author_email')

        releases = build_releases(p.id, data.get("releases", {}))

        if releases:
            p.created_date = releases[0].created_date

        maintainers_lookup = get_email_and_name_from_text(
            info.get('maintainer'), info.get('maintainer_email'))
        for email, name in maintainers_lookup.items():
            user = user_lookup.get(email)
            if not user:
                continue

            p.maintainers.append(user.id)

        p.summary = info.get('summary')
        p.description = info.get('description')

        p.home_page = info.get('home_page')
        p.docs_url = info.get('docs_url')
        p.package_url = info.get('package_url')

        p.author = info.get('author')
        p.author_email = info.get('author_email')
        p.license = detect_license(info.get('license'))

        p.save()
        if releases:
            Release.objects.insert(releases)

    except OverflowError:
        # What the hell, people just putting fake data in here
        # Size is terabytes...
        pass
    except Exception as x:
        raise