コード例 #1
0
def all_redirects() -> List[Redirect]:
    session: Session = DbSession.create()
    try:
        return session.query(Redirect).order_by(
            Redirect.created_date.desc()).all()
    finally:
        session.close()
コード例 #2
0
def insert_a_package():
    p = Package()
    p.id = input("Package name: ")
    p.summary = input("Package summary: ")
    p.author_name = input("Author name: ")
    p.author_email = input("Author email: ")
    p.license = input("license: ")

    r1 = Release()
    print("Release 1: ")
    r1.major_ver = int(input('Major version:'))
    r1.minor_ver = int(input('Minor version:'))
    r1.build_ver = int(input('Build version:'))
    r1.size = 100_000

    r2 = Release()
    print("Release 2: ")
    r2.major_ver = int(input('Major version:'))
    r2.minor_ver = int(input('Minor version:'))
    r2.build_ver = int(input('Build version:'))
    r2.size = 200_000

    p.releases.append(r1)
    p.releases.append(r2)

    session = DbSession.create()

    session.add(p)

    session.commit()
コード例 #3
0
def find_package_by_name(package_name: str) -> Optional[Package]:
    session = DbSession.factory()

    # .options(subqueryload(Package.releases))

    return session.query(Package) \
        .filter(Package.id == package_name) \
        .first()
コード例 #4
0
def get_page_by_id(page_id: int) -> Optional[Page]:
    if not page_id:
        return None

    session = DbSession.create()
    try:
        return session.query(Page).filter(Page.id == page_id).first()
    finally:
        session.close()
コード例 #5
0
def get_page(url: str) -> Optional[Page]:
    if url:
        url = url.lower().strip()

    session = DbSession.create()
    try:
        return session.query(Page).filter(Page.url == url).first()
    finally:
        session.close()
コード例 #6
0
def create_user(email: str, name: str, password: str) -> User:
    user = User()
    user.name = name
    user.email = email.lower().strip()
    user.hashed_password = hash_text(password)

    session = DbSession.factory()
    session.add(user)
    session.commit()
    return user
コード例 #7
0
def get_redirect(url: str) -> Optional[Redirect]:
    if url:
        url = url.lower().strip()

    session: Session = DbSession.create()
    try:
        return session.query(Redirect).filter(
            Redirect.short_url == url).first()
    finally:
        session.close()
コード例 #8
0
def get_redirect_by_id(redirect_id: int) -> Optional[Redirect]:
    if not redirect_id:
        return None

    session: Session = DbSession.create()
    try:
        return session.query(Redirect).filter(
            Redirect.id == redirect_id).first()
    finally:
        session.close()
コード例 #9
0
def create_redirect(name: str, short_url: str, url: str, user_email: str):
    session: Session = DbSession.create()

    redirect = Redirect()
    redirect.url = url.strip()
    redirect.short_url = short_url.strip().lower()
    redirect.name = name.strip()
    redirect.creating_user = user_email

    session.add(redirect)
    session.commit()

    return redirect
コード例 #10
0
def migrate_users():
    if MongoUser.objects().count():
        return

    session = DbSession.factory()
    sql_users = session.query(SqlUser).all()
    for sut in sql_users:
        su: SqlUser = sut
        u = MongoUser()
        u.created_date = su.created_date
        u.hashed_password = su.hashed_password
        u.name = su.name
        u.email = su.email
        u.save()
コード例 #11
0
ファイル: user_service.py プロジェクト: bri-n/data-driven-web
def login_user(email: str, password: str) -> Optional[User]:
    if not email:
        return None

    email = email.lower().strip()

    session = DbSession.factory()
    user = session.query(User).filter(User.email == email).first()
    if not user:
        return None

    if not verify_hash(user.hashed_password, password):
        return None

    return user
コード例 #12
0
def get_page(url: str, allow_shared=False) -> Optional[Page]:
    if url:
        url = url.lower().strip()

    session = DbSession.create()
    try:
        query = session.query(Page).filter(Page.url == url)
        if not allow_shared:
            query = query.filter(
                sa.or_(Page.is_shared == None, Page.is_shared == False))

        page = query.first()
        return page
    finally:
        session.close()
コード例 #13
0
def update_redirect(redirect_id, name, short_url, url):
    session: Session = DbSession.create()
    try:
        redirect = session.query(Redirect).filter(
            Redirect.id == redirect_id).first()

        if not redirect:
            return

        redirect.name = name.strip()
        redirect.short_url = short_url.lower().strip()
        redirect.url = url.strip()

        session.commit()
    finally:
        session.close()
def latest_releases(limit=10) -> List[Package]:
    session = DbSession.factory()
    releases = session.query(Release).order_by(Release.created_date.desc()).limit(limit * 2)

    packages_in_order = [r.package_id for r in releases]
    package_ids = {r.package_id for r in releases}  # gives distict packages using set

    packages = {p.id: p for p in session.query(Package).filter(Package.id.in_(package_ids))}

    results = []
    for r in releases:
        if len(results) >= limit:
            break

        results.append(packages[r.package_id])

    return results
コード例 #15
0
def create_page(title: str, url: str, contents: str, user_email: str) -> Page:
    session = DbSession.create()
    url = url.lower().strip()
    if contents:
        contents = contents.strip()
    if title:
        title = title.strip()

    page = Page()
    page.title = title
    page.url = url
    page.contents = contents
    page.creating_user = user_email
    session.add(page)

    session.commit()

    return page
コード例 #16
0
def migrate_releases():
    if MongoRelease.objects().count():
        return

    session = DbSession.factory()
    sql_releases = session.query(SqlRelease).all()
    for srp in sql_releases:
        sr: SqlRelease = srp
        r = MongoRelease()
        r.created_date = sr.created_date
        r.comment = sr.comment
        r.major_ver = sr.major_ver
        r.minor_ver = sr.minor_ver
        r.build_ver = sr.build_ver
        r.url = sr.url
        r.size = sr.size
        r.package_id = sr.package_id

        r.save()
コード例 #17
0
def update_page(page_id, title, url, contents):
    session = DbSession.create()
    try:
        page = session.query(Page).filter(Page.id == page_id).first()
        if not page or not url:
            return

        url = url.lower().strip()
        if contents:
            contents = contents.strip()
        if title:
            title = title.strip()

        page.title = title
        page.url = url
        page.contents = contents

        session.commit()

    finally:
        session.close()
コード例 #18
0
def update_page(page_id: int, title: str, url: str, contents: str,
                is_shared: bool):
    session = DbSession.create()
    try:
        page = session.query(Page).filter(Page.id == page_id).first()
        if not page or not url:
            return

        url = url.lower().strip()
        if contents:
            contents = contents.strip()
        if title:
            title = title.strip()

        page.title = title
        page.url = url
        page.contents = contents
        page.is_shared = is_shared

        session.commit()
        return page
    finally:
        session.close()
コード例 #19
0
def migrate_packages():
    if MongoPackage.objects().count():
        return

    session = DbSession.factory()
    sql_packages = session.query(SqlPackage).all()
    for sup in sql_packages:
        sp: SqlPackage = sup
        p = MongoPackage()
        p.id = sp.id
        p.created_date = sp.created_date
        p.summary = sp.summary
        p.description = sp.description
        p.home_page = sp.home_page
        p.docs_url = sp.docs_url
        p.package_url = sp.package_url

        p.author = sp.author_name
        p.author_email = sp.author_email

        p.license = sp.license
        p.maintainers = []  # Find, load, and copy over maintainer IDs.

        p.save()
コード例 #20
0
def release_count() -> int:
    session = DbSession.factory()
    return session.query(Release).count()
コード例 #21
0
def all_packages(limit: int) -> List[Package]:
    session = DbSession.factory()
    return list(session.query(Package).limit(limit))
コード例 #22
0
def all_pages() -> List[Page]:
    session = DbSession.create()
    try:
        return session.query(Page).order_by(Page.created_date.desc()).all()
    finally:
        session.close()
コード例 #23
0
def init_dbs():
    db_file = os.path.abspath(
        os.path.join(os.path.dirname(__file__), '..', 'db', 'pypi.sqlite'))
    DbSession.global_init(db_file)

    mongo_setup.global_init(db_name='pypi_nosql')
コード例 #24
0
def user_count() -> int:
    session = DbSession.create()
    return session.query(User).count()
def package_count() -> int:
    session = DbSession.create()
    return session.query(Package).count()
def release_count() -> int:
    session = DbSession.create()
    return session.query(Release).count()
def find_package_by_name(package_name: str) -> Optional[Package]:
    session = DbSession.create()

    return session.query(Package) \
        .filter(Package.id == package_name) \
        .first()
コード例 #28
0
ファイル: user_service.py プロジェクト: bri-n/data-driven-web
def user_count() -> int:
    session = DbSession.factory()
    return session.query(User).count()
コード例 #29
0
def package_count() -> int:
    session = DbSession.factory()
    return session.query(Package).count()
コード例 #30
0
ファイル: user_service.py プロジェクト: bri-n/data-driven-web
def find_user_by_id(user_id: int) -> Optional[User]:
    session = DbSession.factory()
    return session.query(User).filter(User.id == user_id).first()