Example #1
0
async def on_session(req, resp):
    """
    管理者ページ
    """

    authorized(req, resp, api)

    # GETメソッドでフィルタを受け取る
    date_filter = None
    q_str = ''
    if 'filter' in req.params:
        date_filter = req.params['filter']
    ''' [追加] 検索文字列を取得 '''
    if 'q_str' in req.params:
        q_str = req.params['q_str']

    # ログインユーザ名を取得
    auth_user = req.cookies.get('username')

    # データベースから質問一覧と選択肢を全て取得
    ''' [修正] URLクエリがなければ全部取得 '''
    if date_filter is None and (q_str is None or q_str == ''):
        questions = db.session.query(Question).all()
    # URLクエリがあればフィルタをかけて取得
    else:
        ''' [修正] 各URLクエリの組み合わせによって処理を変える '''
        if date_filter is not None:
            today = datetime.now()
            # 時間はいらない
            date_range = datetime(today.year, today.month,
                                  today.day) - timedelta(days=int(date_filter))

            if q_str is None and q_str == '':  # 投稿日検索のみ
                questions = db.session.query(Question).filter(
                    Question.pub_date >= date_range).all()

            else:  # 両方
                questions = db.session.query(Question).\
                    filter(Question.pub_date >= date_range, Question.question_text.like('%'+q_str+'%')).all()

        else:  # 文字列検索のみ
            # LIKEで取得
            questions = db.session.query(Question).filter(
                Question.question_text.like('%' + q_str + '%')).all()

    choices = db.session.query(Choice).all()
    db.session.close()

    # 直近の投稿か否か
    was_recently = [q.was_published_recently() for q in questions]

    # 各データを管理者ページに渡す
    resp.content = api.template(
        'administrator.html',
        auth_user=auth_user,
        questions=questions,
        choices=choices,
        was_recently=was_recently,
    )
Example #2
0
    async def on_get(self, req, resp):
        """
        getの場合は追加専用ページを表示させる。
        """
        authorized(req, resp, api)
        date = datetime.now()

        resp.content = api.template('add_question.html', date=date)
Example #3
0
    async def on_get(self, req, resp, table_name, data_id):
        authorized(req, resp, api)

        table = Question if table_name == 'question' else Choice
        # table.id == data_idとなるようなレコードをひとつ持ってくる
        field = db.session.query(table).filter(table.id == data_id).first()
        resp.content = api.template('/delete.html',
                                    field=field,
                                    table_name=table_name)
Example #4
0
    async def on_get(self, req, resp):
        """
        getの場合は追加専用ページを表示させる。
        """
        authorized(req, resp, api)

        questions = db.session.query(Question.id, Question.question_text)
        db.session.close()

        resp.content = api.template('add_choice.html', questions=questions)