def all_redirects() -> List[Redirect]: session: Session = DbSession.create() try: return session.query(Redirect).order_by( Redirect.created_date.desc()).all() finally: session.close()
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()
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()
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()
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()
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()
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
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
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()
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
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 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
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()
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
def all_pages() -> List[Page]: session = DbSession.create() try: return session.query(Page).order_by(Page.created_date.desc()).all() finally: session.close()
def find_user_by_id(user_id: int) -> Optional[User]: session = DbSession.create() return session.query(User).filter(User.id == user_id).first()
def find_user_by_email(email: str) -> Optional[User]: session = DbSession.create() return session.query(User).filter(User.email == email).first()
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))