A Submission and Grading System for Plone

author:Harald Friessnegger <frisi at>
date:Jan. 25th, 2005
version:Version 1.0
abstract:This document is designed to help you getting started with PloneSGS

Document Overview


Getting started


This section more or less covers everything you can do with PloneSGS so it's definitely worth reading.

Roles and Permissions


Class Descriptions

Here you find information about PloneSGS's content types. What they represent, how do they work together and so on.


Please see INSTALL.txt

Getting started

To get started with PloneSGS you may want to generate some sample content (Lectures, Students, Assignments and so on) to play around with.

Therefore navigate to the SGSTool and check out the tab "test content".


Importing members

In PloneSGS there are 2 types of members: Lecturers and Students.

The best way to create users is to use the install scripts in portal_sgstool just pass them a cvs-file with the following formats.

Navigate to portal_sgstool and klick the import tab (you have to be the site's manager to perform the following taskts) XXX Check which permission really is necessary!

Format for importing students


eg: John Smith;jsm7553;;;010029034;

Format for importing lecturers

The group has to exist before adding Students belonging to a group! Groups can be imported too.
In austria each student at a university of applied sciences has a unique number - the "Matrikelnummer" You can leave it out, but some Grading Schemas and templates may rely on it
If you leave out the password, passwords will be auto-generated and mailed to the users or listed on screen

Create assignment

Assignments are added in an AssignmentFolder.

The Lecturer defines the assignment's properties like start-date and description, adds Tasks and publishes them. The system will make it visible to privileged Students when the start-time is reached.

The latest possible time completed assignments have to be turned in is called deadline. Please see Change the Deadline to learn more about defining deadlines.

Attention: Do not forget to publish the Assignment's Tasks too, otherwhise students will get an error message trying to view the Assignment!

For more information please see Class Descriptions of Assignment and Task

Change the Deadline

Under certain circumstances a lecturer may decide to move the deadline back- or forward. Either for a group or for certain students.

Deadlines are represented by Deadline Objects located in the Assignment. For each Group linked to the AssignmentFolder deadlines are added automatically.

To move a deadline back or forward simply edit the Deadline's end-field.

If you want to set a special deadline for a student or students you can add a new Deadline, specify the endtime and assign it one or more Students.

In case there are two deadlines for a student (one referencing the student's group and another one referencing the student directly) the deadline referencing the student will be priorized - no matter which deadline is the latest.

Attention! Make sure that there aren't any multiple deadlines for one single Group and also not more than one deadline directly referencing a student!

Turn in

Students turns in a completed assignment.

  1. Student adds his/her solution to a certain Assignment. A solution can contain files and has a Textfield for entering comments (e.g. teamwork partner, known bugs, etc)
  2. The Student also enters the hours he/she spent on this exercise.
  3. a) Deadline reached: System tells the Student that it's too late and suggest to ask the teacher to prolong the deadline (to write a mail, optionally the system could provied a form for that)
  1. b)Student is in time: System tells the student that the assignment has been successfully turned in.

Grade Completed Assignments

The Lecturer chooses an assignment he wants to grade. If he has the permission to grade he can click on the "grade" action tab to get a list of all students of his groups.


Completed assignments that have been turned in can be viewed or graded directly. This is basically to support 2 kinds of grading strategies:

  • lecturers who download all the completed assignments they have to correct write their comments and points to some kind of spreadsheet can use the direct grade link to copy paste their stuff directly. After saving the lecturer gets forwarded to the list of completed assignments again.
  • lecturers who work online can view a completed assignment and use the grade action provided there

After grading a completed assignment's workflowstate is automatically set to "graded".

XXX feature: In assignment/sgs_assignment_grade it would be a really cool feature if one could choose completed assignments and download them (including their attachments)

View Correction

Students view the correction (comments and points on tasks given by the instructor) by using the "correction" action tab of the completed assignment.


View Statistics

There are two statistic pages

  • one one AssignmentFolder level
  • and one on Assignment level

The statistic on AssignmentFolder level shows the overview for e.g. the complete seminar. It lists the number of assignments, how many points could be achieved and the number of tasks that should have been solved.


The statistic on Assignment level shows how many points could be achieved, and how many tasks were to solve. For each student it lists points, the number of tasks worked out and the points reached for each task.


Do Backups

To backup you data you need to copy the Data.fs (found in YOUR_INSTANCE/var/) and the complete Products directory (YOUR_INSTANCE/Products). You also need the product's code to make sure the code fits the data stored on the ZODB. You need not backup Data.fs.index and Data.fs.tmp, because those files get generated while zope is starting up.

On plone-users I recently read that there is a script called which can do full and incremental backups. It may be worth a try...

Roles and Permissions


All permissions defined for PloneSGS are prefixed with "PloneSGS:". That way they're way easier to find and thus to manage them in the ZMI.

Add content permissions:
'PloneSGS: Add AssignmentFolder', 'PloneSGS: Add Assignment', 'PloneSGS: Add Course', 'PloneSGS: Add Group', 'PloneSGS: Add Lecturer', 'PloneSGS: Add Student'
PloneSGS: set Course Coordinator
set a Course's coordinator
PloneSGS: set Instructors
set instructors for Groups in an AssignmentFolder
PloneSGS: set Deadlines
change or set Deadlines for Groups and Students on an Assignment
PloneSGS: set Groups
add or remove Groups from an AssignmentFolder
PloneSGS: edit Assignment
edit an Assignment's descriptive text or add / remove Tasks
PloneSGS: grade Assignments
grade and comment CompletedAssignments
PloneSGS: view Grades and Comments


An admin adds and maintains the infrastructure. He/she defines Courses (and sets their coordinator), adds Lecturers and Students, creates Groups and assigns Students to them. This tasks could also be done by the manager, but this way you can prevent the admin from snooping around in student's assignments.
The coordinator of a Course; Coordinators can create AssignmentFolders which includes defining which groups can complete assignments in this course. They can also assign Instructors to groups.
An instructor is responsible for the Groups the coordinator assigned to him/her. He has to grade the Completed Assignments of his group's students.
Students belonging to Groups that participate in a seminar are called participants.


This section coveres the custom workflows used within PloneSGS. In docs/privilegs.html you find a table with permission and role settings for all workflows.

Group Workflow

Content Types:

  • Group


  • active
  • inactive (used for archiving purposes)


Completed Assignment Workflow

Content Types:

  • Completed Assignment


Default Workflow

Content Types:

  • Task
  • Assignment


Class Descriptions

This section is meant as a quick introduction to PloneSGS's most important content types.

XXX place picture of uml-model here

.. image:: img/PloneSGS.png


An Assignment is like an assignment sheet. For an Assignment you can define:

  • a start date (the time it will be visible for students)
  • a description (e.g. details on grading, file-formats, etc...)
  • deadlines when the Completed Assignment has to be turned in. (for Groups and individual Students too)
  • and - maybe most important - the Tasks to be completed (as separate Task objects)

To be able to use PloneSGS's grading support you have to define the assignment's tasks in separate Taks objects instead of inserting them in the description text.


An AssignmentFolder is the place all Assignments for a special seminar are located in. An AssignmentFolder defines

  • which Groups are participating the seminar
  • which Lecturer is Instructor for which Group
  • which Statistic model is used for calculating points statistics

You can have multiple AssignmentFolders in one Course. This way it's possible to host different Seminars (with different participating Groups and Instructors) in one single Course.

For each Group added to the AssignmentFolder the course's coordinator is set as instructor automaically.

Completed Assignment

For an Assignment Student's hand in Completed Assignments. A Completed Assignment contains

  • the time the Student spent working on it (as kind of feedback for the Instructor)
  • a descriptive text allowing the Student to mention specifics of this Completed Assignment (like "known bugs", or where there were great problems)

Turned in Completed Assignments can be seen and Graded by the Instructor.


A Course contains AssignmentFolders and defines which Lecturer is the CourseCoordinator.


A Group groups Students together. Groups are stored inside the SGSTool.


Tasks are heavily related to Assignments. A Task defines:

  • the maximum points one can get for it
  • and the desription of the task which has to be worked out

An assignment more or less consits of Tasks. You need to specify Tasks if you want to use the Grading Support. For each Task the lecturer can define the conceptual formulation (including images, diagrams) and maximum points.


The tool is the place where the Groups are stored. It provides functionality for

  • importing Students, Lecturers and Groups
  • adding test-content to the portal

You can navigate to the tool via

  • "plone setup" (plone_control_panel) and choosing "PloneSGS Configuration"
  • or url: host:port/site/portal_sgstool