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, )
async def on_get(self, req, resp): """ getの場合は追加専用ページを表示させる。 """ authorized(req, resp, api) date = datetime.now() resp.content = api.template('add_question.html', date=date)
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)
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)