pygrader.git
12 years agoFinish mailpipe respond() doctests.
W. Trevor King [Tue, 24 Apr 2012 21:45:10 +0000 (17:45 -0400)]
Finish mailpipe respond() doctests.

Also:
* Add course.name configuration to README example.
* Standardize course.name examples on the more formal `Physics 101`.
* Standardize robot nickname examples on `phys-101 robot`.

12 years agoDocument course.robot and assignment.submittable in the README.
W. Trevor King [Tue, 24 Apr 2012 21:16:25 +0000 (17:16 -0400)]
Document course.robot and assignment.submittable in the README.

12 years agoReject attempted submissions for unsubmittable assignments in mailpipe.
W. Trevor King [Tue, 24 Apr 2012 21:14:05 +0000 (17:14 -0400)]
Reject attempted submissions for unsubmittable assignments in mailpipe.

This implements the expected behaviour for the option created by:

  commit 80639ff31b3bc6780659f526d518526cf63fcaec
  Author: W. Trevor King <wking@tremily.us>
  Date:   Tue Apr 24 16:48:56 2012 -0400

    Add Assignment.submittable attribute to configure student submission.

12 years agoInitial `respond` implementation in the `mailpipe` module.
W. Trevor King [Tue, 24 Apr 2012 21:00:30 +0000 (17:00 -0400)]
Initial `respond` implementation in the `mailpipe` module.

12 years agoAdd Assignment.submittable attribute to configure student submission.
W. Trevor King [Tue, 24 Apr 2012 20:48:56 +0000 (16:48 -0400)]
Add Assignment.submittable attribute to configure student submission.

If `Assignment.submittable` is `True`, mailpipe will accept student
submissions for that assignment.  However, there may also be
assignments where you don't want to accept direct submissions
(e.g. attendance and written, in-class exams).  For these assignments,
you should leave the `submittable` option at its default `False`
value.

Note that `mailpipe` doesn't use this value yet (implementation coming
soon).

12 years agopgp_mime.pgp.verify() no longer needs deepcopy().
W. Trevor King [Tue, 24 Apr 2012 20:11:57 +0000 (16:11 -0400)]
pgp_mime.pgp.verify() no longer needs deepcopy().

Since the pgp-mime commit:

  commit 49802119d7846c7ffd6d72a46068aff014361b59
  Author: W. Trevor King <wking@tremily.us>
  Date:   Tue Apr 24 16:01:17 2012 -0400

    Always return a new Message instance from pgp.verify().

12 years agoAdd Course.robot attribute (for automatic email generation).
W. Trevor King [Tue, 24 Apr 2012 19:27:08 +0000 (15:27 -0400)]
Add Course.robot attribute (for automatic email generation).

I'm getting things set up to send automatic responses when mailpipe
processes incoming email, which means someone's going to have to be
signing that email for security.  Since you probably don't want to
leave your secret PGP key on the mailserver, you can now setup a new
(and less important) PGP key for each course.  The Course.robot is
just a Person instance to hold that key and an appropriate nickname.

If you want to use your own key when you call pg.py from the command
line, you can always setup a shell alias.  In Bash:

  alias pg.py='/usr/bin/pg.py --author="John Doe"'

12 years agoPull _construct_email out of construct_email and add construct_response.
W. Trevor King [Tue, 24 Apr 2012 19:09:49 +0000 (15:09 -0400)]
Pull _construct_email out of construct_email and add construct_response.

_construct_email() handles general tasks for setting up the main email
header.  construct_email() combines this with a simple text/plain body,
while construct_response() uses a multipart/mixed format suitable for
sending message receipts to users.

12 years agoFix Built -> Build typo in construct_email docstring.
W. Trevor King [Tue, 24 Apr 2012 18:43:30 +0000 (14:43 -0400)]
Fix Built -> Build typo in construct_email docstring.

12 years agoAdd docstring and doctest to message_time().
W. Trevor King [Tue, 24 Apr 2012 18:34:52 +0000 (14:34 -0400)]
Add docstring and doctest to message_time().

12 years agoAdd Course.name attribute (for clearer email generation).
W. Trevor King [Tue, 24 Apr 2012 18:33:28 +0000 (14:33 -0400)]
Add Course.name attribute (for clearer email generation).

12 years agoAdd mailpipe doctests and allow saving from stream to an output maildir.
W. Trevor King [Tue, 24 Apr 2012 18:04:37 +0000 (14:04 -0400)]
Add mailpipe doctests and allow saving from stream to an output maildir.

12 years agoAdd pygrader.test.course for managing testing course directories.
W. Trevor King [Tue, 24 Apr 2012 17:21:37 +0000 (13:21 -0400)]
Add pygrader.test.course for managing testing course directories.

12 years agoAdd pygrader.test with asyncore SMTP client/server implemenations.
W. Trevor King [Tue, 24 Apr 2012 16:21:56 +0000 (12:21 -0400)]
Add pygrader.test with asyncore SMTP client/server implemenations.

This should make it easier to build integration tests for `mailpipe()`.

12 years agoRemove myself as the hardcoded default sender.
W. Trevor King [Mon, 23 Apr 2012 16:24:11 +0000 (12:24 -0400)]
Remove myself as the hardcoded default sender.

Use the first assistant instead, since they are the most likely person
to be running this database.

12 years agoAlways sign/encrypt outgoing email in construct_email().
W. Trevor King [Mon, 23 Apr 2012 16:21:01 +0000 (12:21 -0400)]
Always sign/encrypt outgoing email in construct_email().

Remove the `sign` option.  If you've configured pgp_keys for the
correspondents, it's because you want to use them.

This commit also ensures that the sender is also encluded on the
recipient list for encryption, although there is currently no copy of
the email forwarded to the sender.

12 years agoUpdate to use pgp-mime v0.3
W. Trevor King [Sun, 22 Apr 2012 02:31:00 +0000 (22:31 -0400)]
Update to use pgp-mime v0.3

12 years agoChange my email address from drexel.edu to tremily.us.
W. Trevor King [Wed, 18 Apr 2012 17:22:33 +0000 (13:22 -0400)]
Change my email address from drexel.edu to tremily.us.

12 years agoOops, missed some pygrade -> pygrader updates in model/course.py.
W. Trevor King [Fri, 6 Apr 2012 18:17:38 +0000 (14:17 -0400)]
Oops, missed some pygrade -> pygrader updates in model/course.py.

12 years agoLog the gpg_message in mailpipe._get_verified_message instead of printing it.
W. Trevor King [Fri, 6 Apr 2012 18:14:30 +0000 (14:14 -0400)]
Log the gpg_message in mailpipe._get_verified_message instead of printing it.

12 years agoFix storage.load_person doctest typo (actually print the PGP key).
W. Trevor King [Fri, 6 Apr 2012 18:12:37 +0000 (14:12 -0400)]
Fix storage.load_person doctest typo (actually print the PGP key).

12 years agoAdd AUTHORS to .gitignore (generated by update-copyright.py). v0.1
W. Trevor King [Fri, 23 Mar 2012 20:27:47 +0000 (16:27 -0400)]
Add AUTHORS to .gitignore (generated by update-copyright.py).

12 years agoRemove fingerprint stuff from the README (waiting on a GPGME agent).
W. Trevor King [Fri, 23 Mar 2012 20:26:41 +0000 (16:26 -0400)]
Remove fingerprint stuff from the README (waiting on a GPGME agent).

12 years agoFix link to Alex's pygrade in the README.
W. Trevor King [Fri, 23 Mar 2012 20:25:19 +0000 (16:25 -0400)]
Fix link to Alex's pygrade in the README.

12 years agoOops, missed some pygrade -> pygrader updates in setup.py.
W. Trevor King [Fri, 23 Mar 2012 19:34:33 +0000 (15:34 -0400)]
Oops, missed some pygrade -> pygrader updates in setup.py.

12 years agoMention update-copyright in the README.
W. Trevor King [Fri, 23 Mar 2012 19:27:36 +0000 (15:27 -0400)]
Mention update-copyright in the README.

12 years agoRan update-copyright.py.
W. Trevor King [Fri, 23 Mar 2012 19:25:54 +0000 (15:25 -0400)]
Ran update-copyright.py.

12 years agoBegin versioning! (better late than never)
W. Trevor King [Fri, 23 Mar 2012 19:18:48 +0000 (15:18 -0400)]
Begin versioning!  (better late than never)