plom-create

Plom tools related to producing papers, and setting up servers.

usage: plom-create [-h] [--version]
                   {status,newspec,new,parse,validatespec,uploadspec,class,make-db,get-ver-map,make,extra-pages,user,users,predictions,rubric,tags,tag,clear}
                   ...

options

--version

show program’s version number and exit

subcommands

Perform tasks related to building tests.

command

Possible choices: status, newspec, new, parse, validatespec, uploadspec, class, make-db, get-ver-map, make, extra-pages, user, users, predictions, rubric, tags, tag, clear

Sub-commands:

status

Information about the server.

plom-create status [-h] [-s SERVER[:PORT]] [-w PASSWORD]

options

-s, --server

Which server to contact, port defaults to 41984. Also checks the environment variable PLOM_SERVER if omitted. If the WEBPLOM environment variable is set, talk to a Django server instead (EXPERIMENTAL!)

-w, --password

for the “manager” user, also checks the environment variable PLOM_MANAGER_PASSWORD.

newspec (new)

Create new spec file.

plom-create newspec [-h] [--demo] [--demo-num-papers N] [specFile]

Positional Arguments

specFile

defaults to ‘“testSpec.toml”’.

Default: “testSpec.toml”

options

--demo

Use an auto-generated demo test. Obviously not for real use

Default: False

--demo-num-papers

How many fake exam papers for the demo (defaults to 20 if omitted)

parse

Parse spec file (REMOVED)

plom-create parse [-h]

validatespec

Parse and verify a test-specification toml file.

plom-create validatespec [-h] [--save] [specFile]

Positional Arguments

specFile

defaults to ‘“testSpec.toml”’.

Default: “testSpec.toml”

options

--save

By default the verified spec file is not saved. Pass this to write it to ‘verifiedSpec.toml’.

Default: False

uploadspec

Upload exam specification to server.

plom-create uploadspec [-h] [-s SERVER[:PORT]] [-w PASSWORD] [specFile]

Positional Arguments

specFile

defaults to ‘“testSpec.toml”’.

Default: “testSpec.toml”

options

-s, --server

Which server to contact, port defaults to 41984. Also checks the environment variable PLOM_SERVER if omitted. If the WEBPLOM environment variable is set, talk to a Django server instead (EXPERIMENTAL!)

-w, --password

for the “manager” user, also checks the environment variable PLOM_MANAGER_PASSWORD.

class

Get student names/numbers from csv, process, and upload to server.

plom-create class [-h] [-i] [--demo] [--force] [-s SERVER[:PORT]] [-w PASSWORD] [classlist]

Positional Arguments

classlist

filename in csv format

options

-i, --ignore-warnings

Ignore any classlist warnings and upload anyway.

Default: False

--demo

Use auto-generated classlist. DO NOT USE ON REAL SERVER

Default: False

--force

By default, it is an error to upload a new classlist. This overrides that check; for which you accept responsibility. If you are using “numberToProduce = -1” then the first classlist will have chosen a value; you may want to reupload your spec before pushing a second classlist. This is a non-exaustive list of what could go wrong. If you’ve already produced and printed papers, you should be careful with this option, although we are not aware of any specific problems it would cause.

Default: False

-s, --server

Which server to contact, port defaults to 41984. Also checks the environment variable PLOM_SERVER if omitted. If the WEBPLOM environment variable is set, talk to a Django server instead (EXPERIMENTAL!)

-w, --password

for the “manager” user, also checks the environment variable PLOM_MANAGER_PASSWORD.

The classlist can be a .csv file exported from Canvas (specifically, Canvas -> Grades -> Actions -> Export). Plom will do some light sanity checking such as dropping names like “Test Student”.

Alternatively, the classlist can be a .csv file with column headers:
  • id - student ID number

  • name - student name in a single field

  • paper_number - the test-number to assign to that student for

    prenaming papers. If unsure, include the column, but leave it blank. Each paper_number must be unique and in the range [1, NumberToProduce] but they need not be contiguous nor ordered.

Plom will accept uppercase or lowercase column headers.

make-db

See “make” below, but here only the database is populated and no papers will be built. You can then call “make” later.

plom-create make-db [-h] [--from-file FILE] [-s SERVER[:PORT]] [-w PASSWORD]

options

--from-file

Read the version map from FILE. WORK-IN-PROGRESS!

-s, --server

Which server to contact, port defaults to 41984. Also checks the environment variable PLOM_SERVER if omitted. If the WEBPLOM environment variable is set, talk to a Django server instead (EXPERIMENTAL!)

-w, --password

for the “manager” user, also checks the environment variable PLOM_MANAGER_PASSWORD.

get-ver-map

The question-version map shows which questions have which version for each paper. This map is created server-side by the ‘make-db’ command. This .csv file can be used to reconstruct the database in case of catastrophe: we recommend keeping a backup copy.

plom-create get-ver-map [-h] [-s SERVER[:PORT]] [-w PASSWORD] [file]

Positional Arguments

file

Filename, csv or json format. Default: ‘question_version_map.csv’.

options

-s, --server

Which server to contact, port defaults to 41984. Also checks the environment variable PLOM_SERVER if omitted. If the WEBPLOM environment variable is set, talk to a Django server instead (EXPERIMENTAL!)

-w, --password

for the “manager” user, also checks the environment variable PLOM_MANAGER_PASSWORD.

make

Build papers (and if necessary the database) from the test specification. Based on the classlist “paper_num” column, some of the papers may have names printed on them from the classlist (“pre-named”) and the remainder will be blank. As they are created, the prenamed papers will be inserted into the prediction table with the predictor set to “prename”. If you want to change the prenames: (1) force upload a new classlist, and (2) see the “predictions” command to erase the “prename” predictor.

plom-create make [-h] [--no-pdf] [--without-qr] [-n NUMBER] [-x X] [-m Y] [-s SERVER[:PORT]] [-w PASSWORD]

options

--no-pdf

Do not generate real PDFs - instead generate empty files.

Default: False

--without-qr

Produce PDFs without QR codes and staple-corner indicators.

Default: False

-n, --number

used for building a specific paper number

-x, --namebox-xpos

Specify horizontal centre of the name/ID box that will be printed on named papers, a float from 0 (left) to 100 (right) of the page. Defaults to 50.

-m, -y, --namebox-ypos

Specify vertical location of the name/ID that will be printed on named papers, a float from 0 (top) to 100 (bottom) of the page. Defaults to 42.

-s, --server

Which server to contact, port defaults to 41984. Also checks the environment variable PLOM_SERVER if omitted. If the WEBPLOM environment variable is set, talk to a Django server instead (EXPERIMENTAL!)

-w, --password

for the “manager” user, also checks the environment variable PLOM_MANAGER_PASSWORD.

extra-pages

Make a simple extra-paper PDF for students to use when they need more space.

plom-create extra-pages [-h]

user

Add a new user account. You can provide a password or one will be autogenerated and echoed to the screen. Use the –update argument to modify an existing user’s password instead. TODO: support disable/enable and maybe delete?

plom-create user [-h] [--update] [-s SERVER[:PORT]] [-w PASSWORD] [username] [userpassword]

Positional Arguments

username

The username

userpassword

Autogenerated xkcd-style if omitted.

options

--update

Update an existing user’s password.

Default: False

-s, --server

Which server to contact, port defaults to 41984. Also checks the environment variable PLOM_SERVER if omitted. If the WEBPLOM environment variable is set, talk to a Django server instead (EXPERIMENTAL!)

-w, --password

for the “manager” user, also checks the environment variable PLOM_MANAGER_PASSWORD.

users

Manipulate users accounts. With no arguments, list the users already on the server. Given a filename, parses a plain-text user list, and creates them on the server. Can also produce a template file for you to edit, with autogenerated passwords.

plom-create users [-h] [--list] [--demo] [--auto N] [--numbered] [--no-upload] [-s SERVER[:PORT]]
                  [-w PASSWORD]
                  [userlist]

Positional Arguments

userlist

Create/update a list of users from a csv file.

options

--list

List the users on the server (default behaviour).

Default: False

--demo

Use fixed prepopulated demo userlist and passwords. DO NOT USE THIS ON REAL SERVER. Includes “scanner” and “reviewer” BUT NOT “manager” accounts (because the server must already have that).

Default: False

--auto

Auto-generate a random user list of N users with real-ish usernames. This will also create “scanner” and “reviewer” accounts BUT NOT a “manager” account (because the server must already have that).

--numbered

Use numbered usernames, e.g. “user17”, for the autogeneration.

Default: False

--no-upload

Do not upload, just create a local template file.

Default: True

-s, --server

Which server to contact, port defaults to 41984. Also checks the environment variable PLOM_SERVER if omitted. If the WEBPLOM environment variable is set, talk to a Django server instead (EXPERIMENTAL!)

-w, --password

for the “manager” user, also checks the environment variable PLOM_MANAGER_PASSWORD.

predictions

Before papers are identified, there can exist various predictions about which paper goes with which individual. “Prenamed” is one example, where names are pre-printed on the ID sheet. Computer vision tools also make predictions based on student ID numbers.

plom-create predictions [-h] (--predictor P | --all | --erase P) [-s SERVER[:PORT]] [-w PASSWORD]

options

--predictor

Show all predictions by the predictor P.

--all

Show all predictions.

Default: False

--erase

Erase all predictions by the predictor P. Caution: think carefully before erasing the “prename” predictor.

-s, --server

Which server to contact, port defaults to 41984. Also checks the environment variable PLOM_SERVER if omitted. If the WEBPLOM environment variable is set, talk to a Django server instead (EXPERIMENTAL!)

-w, --password

for the “manager” user, also checks the environment variable PLOM_MANAGER_PASSWORD.

rubric

Add pre-made rubrics to the server. Your graders will be able to build their own rubrics but if you have premade rubrics you can add them here or by using the plom-manager tool. This tool can also dump the current rubrics from a running server.

plom-create rubric [-h] [--dump FILE] [--demo] [-s SERVER[:PORT]] [-w PASSWORD] [rubric_file]

Positional Arguments

rubric_file

Upload a pre-build list of rubrics from this file. This can be a .json, .toml or .csv file.

options

--dump
Dump the current rubrics from SERVER into FILE,

which can be a .toml, .json, or .csv file. Defaults to FILE.toml if no extension specified..

--demo

Upload an auto-generated rubric list for demos.

Default: False

-s, --server

Which server to contact, port defaults to 41984. Also checks the environment variable PLOM_SERVER if omitted. If the WEBPLOM environment variable is set, talk to a Django server instead (EXPERIMENTAL!)

-w, --password

for the “manager” user, also checks the environment variable PLOM_MANAGER_PASSWORD.

tags

List all the tags defined on the server.

plom-create tags [-h] [--list] [-s SERVER[:PORT]] [-w PASSWORD]

options

--list

List the tags on the server (default behaviour).

Default: False

-s, --server

Which server to contact, port defaults to 41984. Also checks the environment variable PLOM_SERVER if omitted. If the WEBPLOM environment variable is set, talk to a Django server instead (EXPERIMENTAL!)

-w, --password

for the “manager” user, also checks the environment variable PLOM_MANAGER_PASSWORD.

tag

Add or remove tags from a paper and question.

plom-create tag [-h] [--rm] [-s SERVER[:PORT]] [-w PASSWORD] task tags [tags ...]

Positional Arguments

task

Which task to tag, e.g., q0123g4 for paper 123 question 4.

tags

Tag(s) to add to task.

options

--rm

Remove tag(s) from paper (if omitted we add tags).

Default: False

-s, --server

Which server to contact, port defaults to 41984. Also checks the environment variable PLOM_SERVER if omitted. If the WEBPLOM environment variable is set, talk to a Django server instead (EXPERIMENTAL!)

-w, --password

for the “manager” user, also checks the environment variable PLOM_MANAGER_PASSWORD.

clear

Clear “manager” login after a crash or other expected event.

plom-create clear [-h] [-s SERVER[:PORT]] [-w PASSWORD]

options

-s, --server

Which server to contact, port defaults to 41984. Also checks the environment variable PLOM_SERVER if omitted. If the WEBPLOM environment variable is set, talk to a Django server instead (EXPERIMENTAL!)

-w, --password

for the “manager” user, also checks the environment variable PLOM_MANAGER_PASSWORD.

See help for each subcommand or consult online documentation for an overview of the steps in setting up a server.

Most subcommands communicate with a server, which can be specified on the command line or by setting environment variables PLOM_SERVER and PLOM_MANAGER_PASSWORD.