国家地区选举网站
nselec的Python项目详细描述
注意:版本2.1.1修复了一个主要的错误(请参阅github上的问题#9) 强烈建议您尽快升级到这个或更高版本。
选择ec
为您的国家/地区运行的选举Web应用程序。
功能
- 支持/反对和完全排名选举
- 在给定的日期和时间自动打开和关闭选举
- 使用NationStates验证API验证投票者的国家名
- 易于使用的管理界面用于管理选举
- 具有权限和登录名的用户管理系统
- 看起来不错:)
免责声明
这个软件还处于相当早期的测试阶段,所以可能有一些bug我还没有注意到。 请打开一个问题,如果你发现一个!:)
安装和使用
您需要:
- python 3.5+(带pip)
- 任何支持wsgi的web服务器。
- (可选)创建一个venv:
python3 -m venv venv
,并激活它:source venv/bin/activate
- 安装nselec:
pip install nselec
(这将安装需求) - 准备工作:
- 设置环境:
export FLASK_APP=nselec
- 创建实例:
flask initialise
- 将自己设为管理员用户:
flask new_admin yourusername
,并在提示时输入密码 - 编辑配置文件。当您执行初始化命令时,将为您提供路径;它通常位于
venv/var/nselec-instance/config.py
。请参阅下面的“配置文件”一节,以获取有关应该放置什么的信息 在那方面。
- 设置环境:
- (可选)查看是否有效:
flask run
然后访问它显示的地址。做你想做的,检查 一切都好,然后回来。 - 将其连接到生产wsgi服务器。这实际上取决于您使用的服务器,因此您应该阅读
flask docs on deploying获取说明。但通常你应该能
fromnselecimportcreate_appapplication=create_app()
在你的wsgi.py
中,然后做你需要做的任何事情。但我不是wsgi专家,去看看烧瓶文档吧。 - 访问网站,使用步骤3.3中提供的凭据登录,进行选择,添加更多用户,盈利!或许不是,谁知道…
配置文件
- 这需要的第一个字段是
GET_VOTERS
,它应该是一个返回投票者的dict的函数,应该如下所示:{"honk_donk": "Honk Donk", ...}
。 如果您使用的是my ^{} script ,那么它将是这样的
importpickledefGET_VOTERS():withopen("/path/to/your/memstates.pkl","rb")asfp:data=pickle.load(fp)returndata['example']
另一个必需的字段是
SECRET_KEY
(好吧,不是技术上的,但您肯定需要在生产中使用,否则人们可以绕过所有的安全性)。查看flask docs以了解应该将其设置为什么。其他三个必需字段是
TITLE_MAINPAGE
、TITLE_LONG
和TITLE_SHORT
。 这些字符串值控制站点的标题,显示在不同的位置。TITLE_MAINPAGE
是主选举列表页上的大标题。TITLE_SHORT
显示在页面标题和第一个条目中 在面包屑中,链接回主页面。TITLE_LONG
显示在每页页脚的顶部。
这些都有合理的(尽管相当一般的)默认值,所以不是 如果你忘了设置这些关键。
另一个可以设置的字段是
DATABASE
,它应该是要使用的数据库的文件名。它默认 到实例文件夹中的"nselec.db"
,这对大多数人来说应该很好,但是如果您真的需要,可以在这里更改它。FAVICON
字段控制站点使用的favicon的url。它在应用程序根目录中默认为favicon.ico
。
css注释
css文件(nselec/static/site.min.css
)是带有一些小自定义项的bulma。SCSS
可以找到包含这些自定义项的文件here。
历史记录
Conifer是游戏nationstates中的一个区域。 像许多其他地区一样,我们在立法和地区官员等方面进行民主选举。 似乎没有任何现有的解决方案,以大Num选举。我们不用付钱的人 因此,Honk Donk(又名ED588)在Flask中制作了一个快速应用程序,几乎解决了这个问题。这个版本的nselec 是如此的糟糕以至于Honk Donk拒绝把它放在任何地方。
稍晚些时候,当我们意识到现有的应用程序不支持诸如排序选举之类的必要的事情时, 管理界面是不可能使用的,(以及所有不在模板中的代码 在一个无法维护或处理的python文件中),honk donk重写了整个过程。 它现在看起来更好了(在前端使用css库bulma),支持排名选举,并且有一个可用的 用于添加新选举的接口。另外,它被分割成不同的文件,所以Honk Donk实际上可以 维护它并在将来添加新功能。