Esempio n. 1
0
def runs_view(page):
    """
    The runs view page

    Returns:
        a rendered runs view template
    """
    run_type = request.args.get("run_type")
    run_status = request.args.get("run_status")

    num_pending = model.Run.query.filter_by(finished_execing_time=None).count()

    if run_type == "submissions":
        run_query = model.Run.query.filter_by(is_submission=True)
    elif run_type == "tests":
        run_query = model.Run.query.filter_by(is_submission=False)
    else:
        run_query = model.Run.query

    if run_status == "judged":
        run_query = run_query.filter(
            model.Run.finished_execing_time is not None)
    elif run_status == "pending":
        run_query = run_query.filter_by(finished_execing_time=None)

    runs = util.paginate(run_query.order_by(model.Run.submit_time.desc()),
                         page, 30)

    return render_template(
        "runs/view.html",
        runs=runs,
        run_type=run_type,
        run_status=run_status,
        num_pending=num_pending,
    )
Esempio n. 2
0
def questions(page_number):
    if request.args.get('ordering'):
        order_by, order_direction = request.args.get('ordering').split('-')
    else:
        order_by, order_direction = 'created', 'DESC'
    text_search = request.args.get('text_search') or ''
    tag_search = request.args.get('tag_choice_id') or ''
    if request.args.get('questions_per_page'):
        questions_per_page = int(request.args.get('questions_per_page'))
    else:
        questions_per_page = 5
    questions = db_handler.get_questions(order_by=order_by,
                                         order_direction=order_direction,
                                         text_search=text_search,
                                         tag_search=tag_search)
    page_numbers = range(1, math.ceil(len(questions) / questions_per_page) + 1)
    questions = paginate(questions, page_number, questions_per_page)
    existing_tags = db_handler.get_existing_tags()
    return render_template(
        'questions.html',
        questions=questions,
        ordering=request.args.get('ordering') or 'created-DESC',
        text_search=text_search,
        tag_search=tag_search,
        page_number=int(page_number),
        page_numbers=page_numbers,
        questions_per_page=questions_per_page,
        query_string=request.query_string.decode("utf-8"),
        existing_tags=existing_tags,
    )
    def delete_history(self, max_id=None, full=False):
        if full:
            self.client(DeleteHistoryRequest(self._peer, max_id or 2147483647))
        else:

            for m in paginate(
                    self.client.iter_messages(self._peer, limit=10000), 100):
                self.client.delete_messages(self._peer, m)
Esempio n. 4
0
def contests_view(page):
    """
    The contest view page

    Returns:
        a rendered contest view template
    """
    contests = util.paginate(model.Contest.query, page, 30)

    return render_template("contests/view.html", contests=contests)
Esempio n. 5
0
def languages_view(page):
    """
    The language view page

    Returns:
        a rendered language view template
    """
    languages = util.paginate(model.Language.query, page, 30)

    return render_template("language/view.html", languages=languages)
Esempio n. 6
0
def problems_view(page):
    """
    The problem view page

    Returns:
        a rendered problem view template
    """
    problems = util.paginate(model.Problem.query, page, 30)

    return render_template("problems/view.html", problems=problems)
Esempio n. 7
0
def configurations_view(page):
    """
    The config view page

    Returns:
        a rendered config view template
    """
    config_query = model.Configuration.query

    configs = util.paginate(
        config_query.order_by(model.Configuration.category.asc()), page, 30
    )

    return render_template("configurations/view.html", configs=configs)
Esempio n. 8
0
def users_view(page):
    """
    The user view page

    Returns:
        a rendered user view template
    """
    user_search = request.args.get("search")
    user_role = request.args.get("user_role")

    users_query = model.User.query

    if user_search:
        term = "%" + user_search + "%"
        users_query = users_query.filter(
            or_(model.User.name.ilike(term), model.User.username.ilike(term)))
    if user_role and user_role != "all":
        users_query = users_query.join(
            model.User.user_roles).filter(model.UserRole.name == user_role)

    users_pagination = util.paginate(users_query, page, 30)
    users = users_pagination.items

    metrics = {}
    for user in users:
        user_metrics = {}

        run_query = model.Run.query.filter_by(user_id=user.id)

        user_metrics["num_runs"] = run_query.count()
        user_metrics["last_run"] = run_query.order_by(
            model.Run.submit_time.desc()).limit(1).first()

        metrics[user.id] = user_metrics

    return render_template(
        "users/view.html",
        users_pagination=users_pagination,
        users=users,
        metrics=metrics,
        user_role=user_role,
        search=user_search,
    )
Esempio n. 9
0
        def f(*args, **kw):

            # check kw's
            kw = validate_kw(kw, requires)

            # optionally connect to the api
            api = opt_connect(**kw)

            # add defautls to kw's
            kw = dict(kw.items() + default.items())

            # if were not paginating simply
            # run the function
            if not kw['paginate']:
                tweets = catch_err(func, api, **kw)
            else:
                tweets = paginate(func, api, **kw)

            # optionally run concurrent
            if kw['concurrent']:
                return concurrent_yield(parse_tweet, tweets, **kw)

            else:
                return (parse_tweet(t) for t in tweets)
Esempio n. 10
0
    def f(*args, **kw):
      
      # check kw's
      kw = validate_kw(kw, requires)

      # optionally connect to the api
      api = opt_connect(**kw)

      # add defautls to kw's
      kw = dict(kw.items() + default.items())

      # if were not paginating simply
      # run the function
      if not kw['paginate']:
        tweets = catch_err(func, api, **kw)
      else:
        tweets = paginate(func, api, **kw)

      # optionally run concurrent
      if kw['concurrent']:
        return concurrent_yield(parse_tweet, tweets, **kw)

      else:
        return (parse_tweet(t) for t in tweets)
Esempio n. 11
0
def dashboard():
    dashboard_template = jinja_env.get_template('dashboard.html')
    # sort by date
    date_order = request.args.get('date_order', 'desc', type=str)
    # pagination
    page = request.args.get('page', 1, type=int)
    per_page = request.args.get('per_page', 10, type=int)
    per_page = min(per_page, 50)
    # filters
    device = request.args.get('device', None, type=str)
    confirm = request.args.get('confirm', None, type=int)
    dicom_avai = request.args.get('dicom_avai', 0, type=int)
    n_chambers = request.args.get('n_chambers', None, type=str)
    # load stat data
    overview, by_date_and_user = dicom_service.stat.stat_on_folder()
    for row in overview:
        if row['nchamber'] in ['LABEL', '-1']:
            row['nchamber'] = None
    device_list = list(set([x['device'] for x in overview]))
    extract_url_and_filename(overview)
    if dicom_avai:
        overview = list(filter(lambda x: x['gif_url'] is not None, overview))
    if device:
        overview = list(filter(lambda x: x['device'] == device, overview))
    if n_chambers == '-1':
        overview = list(filter(lambda x: x['nchamber'] is None, overview))
    elif n_chambers:
        overview = list(filter(lambda x: x['nchamber'] == n_chambers,
                               overview))
    if confirm is not None:
        check_file_confirmation(overview)
        overview = list(filter(lambda x: x['confirm'] == confirm, overview))
    # sort and paginate
    overview.sort(key=lambda x: x['date'], reverse=(date_order == 'desc'))
    by_date_and_user.sort(key=lambda x: x['date'],
                          reverse=(date_order == 'desc'))
    overview, current_page, pages = util.paginate(overview, page, per_page)
    if confirm is None:
        check_file_confirmation(overview)
    return dashboard_template.render({
        'data': (overview, by_date_and_user),
        'selectable_data':
        dict({
            'devices': device_list,
        }),
        'filters':
        dict({
            'device': device,
            'confirm': confirm,
            'dicom_avai': dicom_avai,
            'n_chambers': n_chambers,
        }),
        'pagination':
        dict({
            'current_page': current_page,
            'per_page': per_page,
            'pages': pages,
        }),
        'show_details':
        request.args.get('show_details', False, type=bool),
        'date_order':
        date_order,
    })