跳转到主要内容

Django HackInScience练习应用。

项目描述

HackInScience

设置

首先安装 firejailredis(来自您的包管理器),例如

apt install firejail redis

安装依赖项

python -m pip install requirements.txt

然后运行经典的Django操作

./manage.py migrate
./manage.py loaddata initial
./manage.py compilemessages --ignore '.tox' --ignore '.venv'
./manage.py createsuperuser

然后在两个不同的终端中,或者断开其中一个终端

./manage.py correction_bot

./manage.py runserver

现在您可以登录到 /admin,从这里您可以更改您的安装的任何内容:管理用户、创建页面、创建练习、团队、审查答案等等。

已自动为您创建了 /exercises 页面和 /help 页面,您可能想从向 exercises 页面添加一些练习开始。

或者,可以单独使用 hkis 应用,以自定义注册、URL等,为此您可以将hkis作为django应用安装到您的项目中

pip install django-hkis

页面

页面实际上是在您网站中的一个URL,它可以包含文本(存储为Markdown)和/或练习。

例如,自动创建的 /help 页面旨在存储文本,但不包含练习,而 /exercises 页面旨在展示一些练习,可能是在一些介绍文本之后,或者没有任何文本。

您可以仅使用这两个页面,或者创建一组完整的页面,例如每个编程语言一个练习页面,或者按主题、学生班级等创建页面。

登录后,用户将被重定向到第一个页面(具有最小 position 的页面)。

分类

在一个页面内部,您可以选择按类别分组练习,而不是作为单个大列表显示。当有50~70个练习时,这会变得非常有用。

如何贡献

更新初始固定装置

要保存initial.json文件,请使用

./manage.py dumpdata --indent 4 -e admin -e auth.Permission -e contenttypes -e sessions -o hkis/fixtures/initial.json

翻译

模板使用django的makemessagescompilemessages命令进行翻译

$ ./manage.py makemessages --locale fr
$ ./manage.py makemessages --locale fr --domain djangojs
# Edit the .po files
$ ./manage.py compilemessages --ignore '.tox' --ignore '.venv'

练习(标题和措辞)通过管理界面(或API)进行翻译,我们使用django-modeltranslation。

检查机器人是如何工作的?

答案通过Celery进行负载均衡,分配给校正工作者,因此可以有多个机器专门用于处理大量答案。

一旦被工作者接收,工作者会运行两件事

  • 一个可选的pre_check.py脚本,用于设置与这些答案相关的特定内容(所需文件和目录、翻译等)。

  • 然后在沙盒中启动check.py脚本(无互联网连接、受限的文件系统、CPU、内存使用等)。这是检查学生答案的脚本,协议很简单:如果脚本以非零状态退出,则答案错误。打印的内容(包括stdout和stderr)将作为Markdown显示给学生。如果答案正确且没有打印任何内容,则使用默认的祝贺信息。

pre_check.pycheck.py都是用Python编写的,但它们并不限于检查Python答案,如果您想检查shell脚本或C语言,或任何其他内容,check.py可以使用subprocess运行答案脚本,或编译答案代码,或执行所需的其他操作。

项目详情


下载文件

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

源代码分发

此版本没有提供源代码分发文件。请参阅生成分发存档的教程。

构建分发

django_hkis-1.0-py3-none-any.whl (604.2 kB 查看散列)

上传时间 Python 3

由以下机构支持

AWSAWS 云计算和安全赞助商 DatadogDatadog 监控 FastlyFastly CDN GoogleGoogle 下载分析 MicrosoftMicrosoft PSF赞助商 PingdomPingdom 监控 SentrySentry 错误日志 StatusPageStatusPage 状态页面