コード例 #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 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()
コード例 #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_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()
コード例 #6
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()
コード例 #7
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.create()
    session.add(user)
    session.commit()

    return user
コード例 #8
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
コード例 #9
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()
コード例 #10
0
def login_user(email: str, password: str) -> Optional[User]:
    if not email:
        return None

    email = email.lower().strip()

    session = DbSession.create()
    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
コード例 #11
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()
コード例 #12
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
コード例 #13
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()
コード例 #14
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()
def latest_releases(limit=10) -> List[Package]:
    session = DbSession.create()

    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 = set(packages_in_order)

    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
コード例 #16
0
def all_pages() -> List[Page]:
    session = DbSession.create()
    try:
        return session.query(Page).order_by(Page.created_date.desc()).all()
    finally:
        session.close()
コード例 #17
0
def find_user_by_id(user_id: int) -> Optional[User]:
    session = DbSession.create()
    return session.query(User).filter(User.id == user_id).first()
コード例 #18
0
def find_user_by_email(email: str) -> Optional[User]:
    session = DbSession.create()
    return session.query(User).filter(User.email == email).first()
コード例 #19
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()
def all_packages(limit: int) -> List[Package]:
    session = DbSession.create()
    return list(session.query(Package).limit(limit))