背景:
我拥有一个非常简单的基于投票的站点设置的核心功能,并且使用 sqlite 数据库在金字塔中运行良好。此应用程序的最后一个要求是每个用户每天只允许一票。已指定必须通过 cookie 完成此操作,并且不允许用户在周六或周日投票。
我目前UnencryptedCookieSessionFactoryConfig
用于会话管理和处理闪存消息。
问题:
我已经确定我需要以下功能,但无法确定金字塔的哪些模块可以提供它(或者我是否应该在其他地方寻找):
为在浏览器会话之间持续存在的每个用户创建一个 cookie(我知道作为防止多票的一种方法是不安全的。没关系。)
允许每个用户每天进行一次投票。
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'))
谢谢!