跳转到主要内容

Libre替代Doodle

项目描述

pre-commit https://github.com/hartwork/jawanndenn/workflows/Build%20and%20test%20using%20Docker/badge.svg

什么是jawanndenn?

Screenshot of poll creation in jawanndenn

jawanndenn是一个简单的Web应用程序,用于安排会议和进行投票,是Doodle的自由替代品。它使用以下技术

jawanndenn 是由 Sebastian Pipping 开发的 自由软件。服务器代码采用 GNU Affero GPL 许可协议 第3版或更高版本进行许可,而客户端代码则采用 GNU GPL 许可协议 第3版或更高版本进行许可。

报告错误并告诉我你是否喜欢它。

投票设置格式

标题为“设置(JSON)”的文本区域使用一个基于 JSON 的简单格式,支持以下键

  • equal_width — 一个布尔值,用于控制是否将所有选项都泵送到相同的宽度(truefalse),以抵消潜在选民偏差

  • lifetime — 此投票将被删除后的持续时间;可以是 "week""month";一个类似于枚举的字符串

  • options — 一个字符串列表,每个选项一个字符串;支持类似 Markdown 的语法:粗体、斜体、内联代码

  • title — 要运行的投票的标题或标题;支持类似 Markdown 的语法:粗体、斜体、内联代码

安装

要安装最新版本而不克隆 Git 仓库

# pip3 install jawanndenn --user

要从 Git 克隆安装

# ./setup.py install --user

使用 docker-compose 部署

创建一个简单的文件 .env,如下所示

JAWANNDENN_POSTGRES_NAME=jawanndenn
JAWANNDENN_POSTGRES_USER=jawanndenn
JAWANNDENN_POSTGRES_PASSWORD=dEb2PIcinemA8poH
JAWANNDENN_SECRET_KEY=606ea88f183a27919d5c27ec7f948906d23fdd7821684eb59e8bcf7377e3853b

复制粘贴后,请确保调整这些值

然后,您可以使用 docker-compose up --build 命令构建并运行一个 Docker 镜像。

应用程序在 localhost:54080 上提供服务。PostgreSQL 数据保存在主机系统的 ~/.jawanndenn-docker-pgdata/ 上。还有一个用于跨进程速率限制的 Redis 实例,以及一个“cron”维护容器,该容器每 60 分钟删除已超出配置生命周期的投票。

(如果您需要在 jawanndenn 前面需要一个低维护成本的 SSL 反向代理,那么 docker-ssl-reverse-proxy 可能会引起您的兴趣。)

还有一些其他的环境变量,您可能需要在环境中调整。总共有以下变量

环境变量

DJANGO_SETTINGS_MODULE

要使用的 Django 设置模块,保持默认值 jawanndenn.settings(见 docker-compose.yml

JAWANNDENN_ALLOWED_HOSTS

在 jawanndenn 上提供的服务器名称,以逗号分隔的列表,主生产服务器上设置为 jawanndenn.de,www.jawanndenn.de,默认值为 127.0.0.1,0.0.0.0,localhost(见 jawanndenn/settings.py

JAWANNDENN_DEBUG

调试模式,除 True 外所有值均禁用,默认禁用,出于安全考虑,在生产环境中不应启用(见 jawanndenn/settings.py

JAWANNDENN_MAX_POLLS

要存储的最大投票总数,服务拒绝保护,默认值为 1000(见 jawanndenn/settings.pydocker-compose.yml

JAWANNDENN_MAX_VOTES_PER_POLL

每个投票的最大投票总数,服务拒绝保护,默认值为 40(见 jawanndenn/settings.py

JAWANNDENN_POSTGRES_HOST

要连接的 PostgreSQL 数据库的主机名;默认为 postgres(见 docker-compose.yml

JAWANNDENN_POSTGRES_NAME

要连接的 PostgreSQL 数据库的名称;没有默认值,始终必需

JAWANNDENN_POSTGRES_PASSWORD

用于登录 PostgreSQL 数据库的密码;没有默认值,始终必需

JAWANNDENN_POSTGRES_PORT

要连接的 PostgreSQL 数据库的端口号;默认为 5432(见 docker-compose.yml

JAWANNDENN_POSTGRES_USER

用于登录 PostgreSQL 数据库的用户名;没有默认值,始终必需

JAWANNDENN_REDIS_HOST

要连接的 Redis 数据库的主机名;默认为 redis(见 docker-compose.yml

JAWANNDENN_REDIS_PORT

要连接的 Redis 数据库的端口号;默认为 6379(见 docker-compose.yml

JAWANNDENN_SECRET_KEY

Django 密钥;应足够长,由系统生成,不用于其他地方;没有默认值,始终必需

JAWANNDENN_SENTRY_DSN

数据源名称(DSN),用于与 Sentry 一起使用,默认禁用/为空(见 jawanndenn/settings.py

JAWANNDENN_URL_PREFIX

在域名之后插入到 URL 中的前缀字符串,以帮助在同一域名下并排托管多个应用程序;例如,前缀 prefix123 将生成类似 https://<domain>/prefix123/poll/<id> 的 URL;默认为空(见 jawanndenn/settings.py

命令行用法

安装后,调用非常简单

# jawanndenn

在开发期间,您可能想使用以下命令从 Git 克隆运行 jawanndenn

# PYTHONPATH=. python3 -m jawanndenn --debug

目前支持的参数有

# jawanndenn --help
usage: jawanndenn [-h] [--debug] [--host HOST] [--port PORT]
                  [--url-prefix PATH] [--database-sqlite3 FILE]
                  [--django-secret-key-file FILE] [--max-polls COUNT]
                  [--max-votes-per-poll COUNT] [--dumpdata]
                  [--loaddata FILE.json]

optional arguments:
  -h, --help            show this help message and exit
  --debug               Enable debug mode (default: disabled)
  --host HOST           Hostname or IP address to listen at (default:
                        127.0.0.1)
  --port PORT           Port to listen at (default: 8080)
  --url-prefix PATH     Path to prepend to URLs (default: "")
  --database-sqlite3 FILE
                        File to write the database to (default:
                        ~/jawanndenn.sqlite3)
  --django-secret-key-file FILE
                        File to use for Django secret key data (default:
                        ~/jawanndenn.secret_key)

limit configuration:
  --max-polls COUNT     Maximum number of polls total (default: 1000)
  --max-votes-per-poll COUNT
                        Maximum number of votes per poll (default: 40)

data import/export arguments:
  --dumpdata            Dump a JSON export of the database to standard output,
                        then quit.
  --loaddata FILE.json  Load a JSON export of the database from FILE.json,
                        then quit.

从 jawanndenn 1.x 迁移数据到 2.x

迁移分为四个步骤

  1. 更新到 jawanndenn 1.x 的最新版本,例如:运行 pip2 install --upgrade 'jawanndenn<2';JSON 数据导出首次在版本 1.6.3 中引入。

  2. 导出现有的投票

    1. 如果您正在使用命令行应用程序:python2 -m jawanndenn --dumpdata > dump.json

    2. 如果您正在使用 docker-compose:docker-compose run -T jawanndenn --database-pickle /data/polls.pickle --dumpdata > dump.json

  3. 在某处部署最新的 jawanndenn 2.x(如上所述)或只需在某处运行 pip3 install 'jawanndenn>=2'

  4. 导入步骤(2)中创建的 JSON 导出

    1. 如果您正在使用命令行应用程序:python3 -m jawanndenn --loaddata dump.json

    2. 如果您正在使用 docker-compose:docker-compose run -T jawanndenn sh -c 'cat > /tmp/dump.json && DJANGO_SETTINGS_MODULE=jawanndenn.settings python3 -m django loaddata /tmp/dump.json' < dump.json

目标

请查看即将推出的功能列表

非目标

  • 使用重型前端框架:仅作为构建块

  • 从日历读取可用性

感谢

特别感谢 Arne Maier (@KordonDev) 负责任地报告了 XSS 漏洞。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装软件包的信息。

源代码分发

jawanndenn-2.6.0.tar.gz (3.7 MB 查看哈希值)

上传时间 源代码

构建分发

jawanndenn-2.6.0-py3-none-any.whl (3.6 MB 查看哈希值)

上传时间 Python 3

由以下机构支持