バックグラウンド:
私は非常に単純な投票ベースのサイト設定のコア機能を持っており、sqlite データベースを利用したピラミッドでうまく機能しています。このアプリケーションの最後の要件は、ユーザーごとに 1 日 1 票のみ許可することです。これは Cookie を介して行う必要があり、ユーザーは土曜日または日曜日に投票できないことが指定されています。
現在UnencryptedCookieSessionFactoryConfig
、セッション管理とフラッシュ メッセージの処理に使用しています。
質問:
次の機能が必要であることを確認しましたが、ピラミッドのどのモジュールがそれを提供するかを判断できません (または他の場所を探す必要があるかどうか)。
ブラウザ セッション間で保持される各ユーザーの Cookie を作成します (複数の投票を防ぐ方法として、これが安全でないことは承知しています。それで問題ありません。)
ユーザーごとに 1 日 1 回の投票を許可します。
24 時間が経過したら、ユーザーに新しい投票を行います。
曜日 = 土曜日または日曜日の場合、すべての投票を防止します (これは、Cookie チェック ロジックの前に配置された datetime() チェックを使用することで簡単なはずです。
追加情報:
私の現在のデータベーススキーマは次のとおりであり、このままにしておく必要があります。
create table if not exists games (
id integer primary key autoincrement,
title char(100) not null,
owned bool not null,
created char(40) not null
);
create table if not exists votes (
gameId integer,
created char(40) not null,
FOREIGN KEY(gameId) REFERENCES games(id)
);
現在の投票機能は次のとおりです。
@view_config(route_name='usevote')
def usevote_view(request):
game_id = int(request.matchdict['id'])
request.db.execute('insert into votes (gameId,created) values (?,?)',
(game_id,now))
request.db.commit()
request.session.flash('Your vote has been counted. You can vote again in 24 hours.')
return HTTPFound(location=request.route_url('list'))
ありがとう!