使用基于电子邮件的通信管理课程成绩数据库。

pygrader的Python项目详细描述


安装

套餐

gentoo

我已经为gentoo打包了pygrader。你需要外行 my wtk覆盖 。安装时使用:

# emerge -av app-portage/layman
# layman --add wtk
# emerge -av dev-python/pygrader

依赖关系

如果您是手工安装或包装的,请使用pygrader 发行版,您需要以下依赖项:

<表> < COLGROUP > < COL/> < COL/> < COL/> < COL/> <广告> 包 目的 借记 gentoo < /广告> <正文> 金贾 电子邮件模板 python-jinja2 开发python/jinja pgp-mime 安全电子邮件 > dev python/pgp mime[下午] 鼻子 测试(可选) 蟒蛇鼻 开发python/nose numpy 统计(可选) 巨蟒核 dev python/numpy <表>

如果没有安装numpy,我们将回到内部实现 各种统计计算。

如果您正在开发pygrader,则可以使用更新版权 使版权简介保持最新。

< COL/> < COL/> <正文>
[1] 在wtk overlay中。 <表>

手动安装

pygrader 可作为a git获得。 存储库:

$ git clone git://tremily.us/pygrader.git

有关详细信息,请参见 主页。要安装签出,请运行 标准:

$ python setup.py install

子模块

pgp mime 取决于需要python 3.3的 pyassuan 。如果你 对于python 3.3,发行版不打包jinja或pgp mime。 您可以使用pygrader的git子模块轻松获取兼容的 版本。子模块存储在 dep/src 目录中 dep本身中的符号链接。例如,pgp mime的 子模块用符号链接保存在dep/src/pgp mime中 指向dep/pgp-mime/pgp-mime的。如果你只 需要几个子模块,您可以显式初始化它们:

$ git submodule init pgp-mime pyassuan

如果需要所有子模块,请使用:

$ git submodule init

git子模块将获取(必要时)并解压缩gitlinked 提交初始化的子模块:

$ git submodule update

您需要在任何超级项目之后再次运行update 案例, pygrader )操作更新gitlinks。一旦你有了 签出所需的依赖项,指向 dep 无论何时运行pygrader 目录。例如:

$ PYTHONPATH=dep ./bin/pg.py ...

用法

PyGrader将帮助你在一个学生 通过电子邮件提交作业,否则提交的作业是 数字(即提交后扫描)。你也可以用它 通过电子邮件分配和管理任何类型的成绩。在下面 部分,我将带您通过 测试的本地管理 当然,

所有的处理都涉及到使用 pg.py 命令。运行:

$ pg.py --help

有关详细信息。

发送电子邮件

pygrader接收提交的内容并通过电子邮件分配成绩。整齐 要发送电子邮件,它需要连接到smtp服务器。见 有关配置SMTP连接的详细信息,请参阅PGP mime文档。 您可以通过向自己发送测试来测试SMTP配置 信息:

$ pg.py -VVV smtp -a rincewind@uu.edu -t rincewind@uu.edu

定义课程

一旦电子邮件提交成功,就需要配置 你当然要评分了。每门课程都有自己的目录,并且 基本设置类似于 裂解炉。需要开始的文件是 课程目录:

# emerge -av app-portage/layman
# layman --add wtk
# emerge -av dev-python/pygrader
0

格式有点冗长,但也很明确,很容易 可扩展。构造此配置文件所需的时间 应该是你花在评分上的一小部分时间 提交。

如果一个人设置了pgp键,则该键将用于 加密发送给该用户的消息并签署来自该用户的消息 使用 pgp 。它还将用于验证传入的 电子邮件。您需要在本地主机上安装gnupg 工作,运行 pygrader 的用户应该具有 钥匙链中的钥匙。

course.robot选项定义用于签名的虚拟人 自动生成的电子邮件(例如,对已处理的邮件管道的响应 提交)。

submittable选项标记接受direct的赋值 学生提交(如作业)。你可能不想 为出勤设置此选项,因为它允许学生标记 他们自己上过课。 提交表 默认为 错误

处理提交内容

随着截止日期的临近,学生提交的资料将陆续到达 你的收件箱。使用 pg.py 's mailpipe 命令将它们分类 目录(使用 pygrader.handler.submission 处理程序)。这个 还将提取附加到电子邮件和位置的任何文件 他们在那个人的作业目录中:

# emerge -av app-portage/layman
# layman --add wtk
# emerge -av dev-python/pygrader
1

使用 pg.py 's todo 命令检查未分级提交:

# emerge -av app-portage/layman
# layman --add wtk
# emerge -av dev-python/pygrader
2

然后使用您喜欢的编辑器创建 grade 文件。第一 成绩档案的行应该是学生的成绩 assignment,用python的 float() 理解的语法表示 ( 1 95 2.5 6.022e23 等)。如果你愿意,你可以 在坡率线之后添加其他注释行,提供 改进建议等。此意见(如有)将 连同成绩一起寄给学生。有一个号码 pygrader的git中 test 目录中的示例评分文件 来源:

为了了解每个人的表现,你可以打印一张成绩表 表格式t>命令:

# emerge -av app-portage/layman
# layman --add wtk
# emerge -av dev-python/pygrader
3

当你想通知学生他们的成绩时,你可以送他们 全部用 pg.py 's email 命令:

# emerge -av app-portage/layman
# layman --add wtk
# emerge -av dev-python/pygrader
4

邮件管道详细信息

除了接受来自收到的电子邮件的学生提交, mailpipe还接受其他类型的请求,可以是 配置为自动响应:

  • 接收的学生作业提交已存档(请参阅 提交 命令)。
  • 学生可以检查自己的成绩而不必麻烦任何人(参见 get 命令)。
  • 教授和助教可以要求学生提交材料 这样他们就可以给它们打分(参见 get 命令)。
  • 教授和助教可以要求全班的成绩(见 get 命令)。
  • 教授和助教可以指定成绩(参见 成绩 命令)。

要启用自动响应,您需要添加 --调用 pg.py 时响应 参数

如果你厌倦了用 pg.py手工过滤收件箱 mailpipe ,您可以(取决于您的邮件传递设置)使用 在收到邮件时自动运行邮件管道 电子邮件。在 pygrader.mailpipe.mailpipe 运行 mailpipe的docstring 每当收到的电子邮件主题中有 [phys160:submit] 时 在某处。

在电子邮件主题中使用 [target] 标记允许用户 明确说明他们电子邮件的目的。当前支持 目标包括(参见 pygrader.mailpipe ):

< DL>
提交 学生作业提交。电子邮件主题的其余部分 应该包含不区分大小写的赋值名 已提交(请参见 pygrader.handler.submission.\u match_assignment )。 一个示例主题是:

# emerge -av app-portage/layman
# layman --add wtk
# emerge -av dev-python/pygrader
5
获取

请求成绩数据库中的信息。对于学生来说 电子邮件主题的其余部分无关紧要。评分和评语 所有评分作业都会在一封电子邮件中返回。安 示例主题为:

# emerge -av app-portage/layman
# layman --add wtk
# emerge -av dev-python/pygrader
6

教授和助教可以要求提供 课程(a la 表格),特定课程的满分 学生,或某个学生对某个 任务。示例对象分别为:

< Buff行情> [获取]不匹配任何学生姓名 [得到]比尔博·巴金斯 [获取]bilbo baggins作业1
等级

教授和助教可以在 特殊任务。的主体(可能签名或 加密)电子邮件应与 发件人希望创建。一个示例主题是:

# emerge -av app-portage/layman
# layman --add wtk
# emerge -av dev-python/pygrader
7

为了方便您对电子邮件进行排序,您还可以在目标邮件前面加上前缀 附加信息(请参见 pygrader.mailpipe.\u get\u message\u target )。例如,如果你是 从同一个电子邮件帐户运行多个课程,您需要一种方法 让用户指定他们与哪个课程交互,以便 可以在procmail规则中进行适当筛选。里面的一切 邮件管道忽略可选分号前的主题标记, 因此,以下主题的处理方式相同:

# emerge -av app-portage/layman
# layman --add wtk
# emerge -av dev-python/pygrader
8

测试

使用nose运行内部单元测试

# emerge -av app-portage/layman
# layman --add wtk
# emerge -av dev-python/pygrader
9

如果您的 系统,您可能需要尝试以下操作:

$ git clone git://tremily.us/pygrader.git
0

许可证

本项目分布在tp://www.gnu.org/licenses/gpl.html" rel="nofollow">gnu通用公共许可证 版本3或更高版本。

作者

W.特雷弗·金 正在工作 @ tremily 我们

相关工作

对于类似的项目,请参见alex heitzmann的pygrade 单一日志文件中的成绩历史记录,并为 使用图形界面。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在actionPerformed方法中停止Swing计时器?   使用Appium的java选择随机UIACollectionCell   java搜索大型方法的代码库   具有外部代码的方法(Java)   用数组解码Java中的句子   java使用if语句中的地名或枚举变量   java应用服务器和Spring上下文加载   JAVAJava中JSAPI语音识别器的lang.NullPointerException   Java:创建了随机大小的数组,任务是打印每个项目(不同的形状),最后一个元素不能完全打印   Spring中使用HibernateTemplate的ModelMapper的java奇怪行为   c#。猛击。cs类/文件转换技术或实用程序?   java“request”如何在JSP中表示HttpServletRequest的实例?   java使用你的GMail收件箱空间?   jsp javax。艾尔。PropertyNotFoundException:在类型com上找不到属性“foo”。实例豆   API集成JSON解析中的java Android listview   显示金字塔的java   安卓如何正确使用反射(特例)JAVA   java在活动之间切换时,是否需要添加一些东西来避免内存泄漏?