def top(sort_by, page): query = Repo.filter_by_args(Repo.query, request.args).filter(Repo.worth > 4) sorts = { 'wanted': [Repo.worth.desc(), Repo.stargazers_count.desc()], 'stars': [Repo.stargazers_count.desc()] } for f in [ sort for sort in ( sorts['wanted'] if sort_by not in sorts else sorts[sort_by]) ]: query = query.order_by(f) if not g.user: query = query.add_columns(db.null()) else: query = UserAttitude.join_by_user_and_repo(query, g.user.id, Repo.id)\ .add_columns(UserAttitude.attitude) entries = query.paginate(page if page > 0 else 1, per_page=20, error_out=False) if entries.pages and entries.pages < entries.page: return top(sort_by, entries.pages) return render_template('repository/top.html', languages=Repo.language_distinct(), repos=entries, page=page, sort_by=sort_by)
def index(rng): map_list = {'day': 'ReportAllDaily', 'week': 'ReportAllWeekly', 'month': 'ReportAllMonthly'} if rng not in map_list: rng = 'day' model = getattr(report, map_list[rng]) if not g.user: q = model.query.join(Repo).add_columns(db.null()) else: q = model.query\ .join(Repo)\ .add_columns(UserAttitude.attitude)\ .outerjoin( UserAttitude, (UserAttitude.user_id == g.user.id) & (UserAttitude.repo_id == Repo.id) ) languages = Repo.language_distinct() lang = request.args.get('lang') if lang != 'All' and (lang,) in languages: q = q.filter(Repo.language == lang) status = request.args.get('status') if status in ('promising', 'hopeless'): q = q.filter(Repo.status == status) if bool(request.args.get('mature')): q = q.filter(Repo.mature.is_(True)) return render_template( 'index.html', range=rng, entries=q.order_by(db.desc(model.cnt_watch)), languages=languages )
def top(page, sort_by, filter_worth_by): query = Repo.filter_by_args(Repo.query, request.args).filter(Repo.mature.is_(True)) sorts = { 'wanted': [Repo.worth.desc(), Repo.stargazers_count.desc()], 'stars': [Repo.stargazers_count.desc()] } if filter_worth_by not in ('rising', 'solid'): filter_worth_by = 'solid' query = query.filter( (Repo.worth >= app.config['REPOSITORY_WORTH_SOLID']) if filter_worth_by == 'solid' else ( (Repo.worth > app.config['REPOSITORY_WORTH_DEFAULT']) & (Repo.worth < app.config['REPOSITORY_WORTH_SOLID']) ) ) for f in [sort for sort in (sorts['wanted'] if sort_by not in sorts else sorts[sort_by])]: query = query.order_by(f) if not g.user: query = query.add_columns(db.null()) else: query = UserAttitude.join_by_user_and_repo(query, g.user.id, Repo.id)\ .add_columns(UserAttitude.attitude) entries = query.paginate(page if page > 0 else 1, per_page=20, error_out=False) if entries.pages and entries.pages < entries.page: return top(entries.pages, sort_by, filter_worth_by) return render_template( 'repository/top.html', languages=Repo.language_distinct(), repos=entries, page=page, sort_by=sort_by, filter_worth_by=filter_worth_by )
def list_by_range(rng): map_list = {'day': 'ReportAllDaily', 'week': 'ReportAllWeekly', 'month': 'ReportAllMonthly'} model = getattr(report, map_list.get(rng, map_list.get('day'))) query = Repo.filter_by_args(model.query, request.args)\ .join(Repo)\ .order_by(model.cnt_watch.desc()) if not g.user: query = query.add_columns(db.null()) else: query = UserAttitude.join_by_user_and_repo(query, g.user.id, Repo.id)\ .add_columns(UserAttitude.attitude) return render_template('index.html', entries=query, languages=Repo.language_distinct())
def list_by_attitude(attitude, page): q = UserAttitude.join_by_user_and_repo(Repo.query, g.user.id, Repo.id)\ .add_columns(UserAttitude.attitude if attitude else db.null())\ .filter(UserAttitude.attitude == attitude) q = Repo.filter_by_args(q, request.args) entries = q.paginate(page if page > 0 else 1, per_page=20, error_out=False) if entries.pages and entries.pages < entries.page: return list_by_attitude(attitude, entries.pages) return render_template( 'repository/attitude.html', repos=entries, attitude=attitude, languages=Repo.language_distinct() )
def list_by_attitude(attitude, page): q = UserAttitude.join_by_user_and_repo(Repo.query, g.user.id, Repo.id)\ .add_columns(UserAttitude.attitude if attitude else db.null())\ .filter(UserAttitude.attitude == attitude) q = Repo.filter_by_args(q, request.args) entries = q.paginate(page if page > 0 else 1, per_page=20, error_out=False) if entries.pages and entries.pages < entries.page: return list_by_attitude(attitude, entries.pages) return render_template('repository/attitude.html', repos=entries, attitude=attitude, languages=Repo.language_distinct())
def top(page): q = Repo.filter_by_args(Repo.query, request.args)\ .filter(Repo.worth > 4)\ .order_by(Repo.worth.desc())\ .order_by(Repo.created_at.asc()) if not g.user: q = q.add_columns(db.null()) else: q = UserAttitude.join_by_user_and_repo(q, g.user.id, Repo.id)\ .add_columns(UserAttitude.attitude) entries = q.paginate(page if page > 0 else 1, per_page=20, error_out=False) if entries.pages and entries.pages < entries.page: return top(entries.pages) return render_template( 'repository/top.html', repos=entries, page=page, languages=Repo.language_distinct() )
def top(page, sort_by, filter_worth_by): query = Repo.filter_by_args(Repo.query, request.args).filter(Repo.mature.is_(True)) sorts = { 'wanted': [Repo.worth.desc(), Repo.stargazers_count.desc()], 'stars': [Repo.stargazers_count.desc()] } if filter_worth_by not in ('rising', 'solid'): filter_worth_by = 'solid' query = query.filter(( Repo.worth >= app.config['REPOSITORY_WORTH_SOLID'] ) if filter_worth_by == 'solid' else ( (Repo.worth > app.config['REPOSITORY_WORTH_DEFAULT']) & (Repo.worth < app.config['REPOSITORY_WORTH_SOLID']))) for f in [ sort for sort in ( sorts['wanted'] if sort_by not in sorts else sorts[sort_by]) ]: query = query.order_by(f) if not g.user: query = query.add_columns(db.null()) else: query = UserAttitude.join_by_user_and_repo(query, g.user.id, Repo.id)\ .add_columns(UserAttitude.attitude) entries = query.paginate(page if page > 0 else 1, per_page=20, error_out=False) if entries.pages and entries.pages < entries.page: return top(entries.pages, sort_by, filter_worth_by) return render_template('repository/top.html', languages=Repo.language_distinct(), repos=entries, page=page, sort_by=sort_by, filter_worth_by=filter_worth_by)
def top(page): q = Repo.filter_by_args(Repo.query, request.args)\ .filter(Repo.worth > 6)\ .order_by(Repo.worth.desc())\ .order_by(Repo.stargazers_count.desc()) if not g.user: q = q.add_columns(db.null()) else: q = UserAttitude.join_by_user_and_repo(q, g.user.id, Repo.id)\ .add_columns(UserAttitude.attitude) entries = q.paginate(page if page > 0 else 1, per_page=20, error_out=False) if entries.pages and entries.pages < entries.page: return top(entries.pages) return render_template('repository/top.html', repos=entries, page=page, languages=Repo.language_distinct())