Grader is an assignment completion checker written in python.

After installation, it sets itself up in your Documents, in a folder called grader.

This is the structure of the folder (I will explain each component later):

My documents\grader (folder)
	student_files (folder - this is where the projects go)
		naranjo project 3 (sample project folder)
			naranjo exercise 1 (empty sample file - no extension)
			naranjo exercise 2 (empty sample file - no extension)
	grader.bat (You can click and run this)
	grader_settings.conf (Project settings go here - sample included)
	log.txt (grader stores its reports in here - complete with a timestamp.)
	README.txt (This file!)
	students.txt (This is the student registry - sample included)

========================================================================
How it works
========================================================================
Grader assumes that the project folders follows this syntax:
[lastname] [project name]
Example: naranjo project 3
Where each 'thing' in brackets is a variable, depending on the student's
name, and the name of the project.

Within each project folder, you can define 'docs' or assignments.
Grader assumes that these 'docs' follow the following syntax:
[lastname] [filename]
Example: naranjo exercise2
Again, the brackets denote variables.

How does grader define these variables?
It uses its' student registry (students.txt) and its project settings(
grader_settings.conf).

It expects that each student will have submitted each assignment defined
in the project settings. You put all of the project files in the 
"student_files" folder. If it's not in there, grader will assume that the
assignments are missing, and report them as missing.

========================================================================	
STUDENTS.txt
========================================================================
This file has fairly simple syntax:
[first name] [last name] [period
Example: Luis Naranjo 3B

Each line represents a student.

You need to be careful with this file, because grader's file reader is
very sensitive.

Each line can have no more than 2 spaces, since grader separates words by
spaces. So if you wanted to add a full name like this:
"Jose Luis Naranjo 3B"
Grader would see this, and act accordingly:
First name: Jose
Last name: Luis
Period: Naranjo

The way to work around this for long names is to stick words together.
Example: "JoseLuis Naranjo 3B"


                BUG FIX: 

MAKE SURE THAT THE FILE DOES NOT END IN A BLANK LINE
Or else grader will try to read that blank line, and that will break
the program.

========================================================================
GRADER_SETTINGS.CONF
========================================================================
The syntax for this file is a little more complex:

[project name]
docs=[filenames,separated,by,commas]

So if you look at the example file that has been created for you, you
will see this:

[project 3]
docs = exercise 1,exercise 2

So grader expects that every student listed in the students.txt file
fulfills the projects defined in this file.

With the sample settings, if expects:
[lastname] project 3
	[lastname] exercise 1
    [lastname] exercise 2
    
With [lastname] obviously being replaced by each student's last name.
If any of the students is missing any of the defined files here, the incident
is reported in the log.txt file.

                BUG FIX:

If you only have on file defined in a project, you have to end the filename
with a comma, or else you will get weird bugs. For example this would not work:

[height field]
docs=mug.3dm

The correct way to do this is:

[height field]
docs=mug.3dm,

========================================================================
Installation
========================================================================
There are several ways of going about this, and they all depend on the
operating system that you use. This program is written in python2.7, so
obviously you need python no matter what.
I'm going to assume that you are using Windows, XP or greater.

There are two methods, and they both have their own drawbacks and advantages.
1) Proper installation
2) Portable Installation

Proper Installion requires you to:
A) Download and install python and setuptools
B) Add python and setuptools to your PATH variable
C) Download and install grader (this can be done from in one command from the command line at this point.)

This really is the best and most stable way to do this.
The major advantage of doing this is that setuptools comes with a tool called easy_install.
easy_install lets you download the program from the command line and install it with one command.



========================================================================
GRADER.BAT
========================================================================
This is a batch file. It is basically just a list of commands that you can
run from the command line.
This file ONLY works when you've actually installed grader on your system,
with setuptools.
The contents of this file is one word - "grade".
This means that you can also open up the command line and type in 'grade',
and the program should run.
