summaryrefslogtreecommitdiff
path: root/yaksh
diff options
context:
space:
mode:
Diffstat (limited to 'yaksh')
-rw-r--r--yaksh/documentation/about_yaksh.rst2
-rw-r--r--yaksh/documentation/images/course_details_features.jpgbin0 -> 93340 bytes
-rw-r--r--yaksh/documentation/index.rst6
-rw-r--r--yaksh/documentation/installation.rst119
-rw-r--r--yaksh/documentation/introduction.rst8
-rw-r--r--yaksh/documentation/moderator_docs/creating_course.rst94
-rw-r--r--yaksh/documentation/moderator_docs/creating_question.rst30
7 files changed, 107 insertions, 152 deletions
diff --git a/yaksh/documentation/about_yaksh.rst b/yaksh/documentation/about_yaksh.rst
index 9f772ec..7db97e7 100644
--- a/yaksh/documentation/about_yaksh.rst
+++ b/yaksh/documentation/about_yaksh.rst
@@ -21,7 +21,7 @@ Contact
License
-------
- This is distributed under the terms of the BSD license. Copyright information is at the bottom of this file.
+ This is distributed under the terms of the BSD license.
Authors
-------
diff --git a/yaksh/documentation/images/course_details_features.jpg b/yaksh/documentation/images/course_details_features.jpg
new file mode 100644
index 0000000..5e820f9
--- /dev/null
+++ b/yaksh/documentation/images/course_details_features.jpg
Binary files differ
diff --git a/yaksh/documentation/index.rst b/yaksh/documentation/index.rst
index 312fbd2..a790357 100644
--- a/yaksh/documentation/index.rst
+++ b/yaksh/documentation/index.rst
@@ -1,9 +1,3 @@
-.. Yaksh documentation master file, created by
- sphinx-quickstart on Thu Jul 7 14:43:13 2016.
- You can adapt this file completely to your liking, but it should at least
- contain the root `toctree` directive.
-
-
Welcome to Yaksh's documentation!
=================================
diff --git a/yaksh/documentation/installation.rst b/yaksh/documentation/installation.rst
index 57dc2fd..e4ec581 100644
--- a/yaksh/documentation/installation.rst
+++ b/yaksh/documentation/installation.rst
@@ -12,106 +12,67 @@ Installing Yaksh
**For installing Yaksh**
- * For latest stable release::
-
- $ pip install yaksh
+ 1. **Clone the repository**::
- * For the development version::
+ $ git clone https://github.com/FOSSEE/online_test.git
- $ pip install git+https://github.com/FOSSEE/online_test.git
+ 2. **Go to the online_test directory**::
-Quick Start
------------
-
-**In the terminal run**::
-
- yaksh create_demo [-p PATH] [project_name]
-
-* **project_name**
- The desired name of the django project. In case a project_name is not specified, the project is initialised with the name yaksh_demo
-* **PATH**
- An optional flag to specify where the django project will be installed. If PATH is not provided, the project is created in the current directory
-
-**Now execute**::
-
- $ yaksh run_demo
-
-This starts the web server at localhost
-
-**In a new terminal, execute**::
-
- $ sudo yaksh run_code_server
-
-This starts the code server
-
-**Open your browser and go to URL** ::
-
- http://localhost:8000/exam
-
-**Login as a teacher to edit the quiz or as a student to take the quiz Credentials:**
-
- For Student:
- * Username: student
- * Password: student
-
- For Teacher:
- * Username: teacher
- * Password: teacher
-
-**User can also login to the Default Django admin by going to URL**::
-
- http://localhost:8000/admin
+ $ cd ./online_test
-**And entering the following admin credentials**
- * Username: admin
- * Password: admin
+ 3. **Install the dependencies** -
+ * For Python 2 use::
-Running The Code Server
------------------------
+ $ pip install -r ./requirements/requirements-py2.txt
-**Local Instance**:
+ * For Python 3 (recommended) use::
-In a new terminal run the command::
+ $ pip install -r ./requirements/requirements-py3.txt
- cd /path/to/online_test
- sudo python -m yaksh.code_server
-
-Keep this instance running in the background
+Quick Start
+-----------
-**Using Docker**:
+1. **Start up the code server that executes the user code safely**:
+ * To run the code server in a sandboxed docker environment, run the command::
-1. Install docker
+ $ invoke start
-2. Create a Docker Image using the Docker file:
+ .. note::
- * Go to the directory where the project is located::
+ Make sure that you have Docker installed on your system beforehand.
+ Find docker installation guide `here <https://docs.docker.com/engine/installation/#desktop>`_.
- cd /path/to/online_test
+ * To run the code server without docker, locally use::
- * Build a docker image using the Dockerfile::
+ $ invoke start --unsafe
- sudo docker build --tag=yaksh_code_server:v1 .
+ .. note::
-3. Start a Docker container::
+ Note this command will run the yaksh code server locally on your machine and is susceptible to malicious code. You will have to install the code server requirements in sudo mode.
- docker run -d -p 8001:8001 -p 53579:53579 -v /path/to/online_test/yaksh/data:/src/yaksh/data yaksh_code_server:v1
+2. **On another terminal, run the application using the following command**
+ * To start the django server::
-**Note**:
- * The default ports on which the code server runs and the pool port on which the former ports are available is specified in online_test/yaksh/settings.py. The code server also supports multiple ports
+ $ invoke serve
- * The server port is 8001 by default, this can be changed in the settings::
-
- SERVER_PORTS = 8001
+ .. note::
- * Multiple ports can be specified as::
-
- SERVER_PORTS = [8001, 8002, 8003, 8004, 8005] # Or use range(8001, 8040) for larger number of ports
+ The serve command will run the django application server on the 8000 port and hence this port will be unavailable to other processes.
- * The default pool port is 53579 by default, this can be changed in the settings::
-
- SERVER_POOL_PORT = 53579
+3. **Open your browser and open the URL** - ``http://localhost:8000/exam``
- * The docker command to start a docker container when using multiple ports is::
+4. **Login as a teacher to edit the quiz or as a student to take the quiz**
- docker run -d -p 8001-8039:8001-8039 -p 53579:53579 yaksh_code_server:v1
+ * Credentials:
+ For Student:
+ * Username: student
+ * Password: student
+ For Teacher:
+ * Username: teacher
+ * Password: teacher
+
+5. **User can also login to the Default Django admin by going to URL and entering the following admin credentials** ``http://localhost:8000/admin``
+ For admin:
+ * Username: admin
+ * Password: admin
diff --git a/yaksh/documentation/introduction.rst b/yaksh/documentation/introduction.rst
index 78df29a..1aa2677 100644
--- a/yaksh/documentation/introduction.rst
+++ b/yaksh/documentation/introduction.rst
@@ -7,11 +7,13 @@ This project provides an "exam" app that lets users take an online programming q
Features
--------
+* Easy installation and cross platform support for Linux and Mac OS.
* Define fairly complicated programming problems and have users solve the problem.
* Immediate verification of code solution.
-* Supports pretty much arbitrary coding questions in Python, C, C++ and simple Bash and uses "test cases" to test the implementations of the students.
-* Supports simple multiple choice questions and File uploads.
-* Since it runs on your Python, you could technically test any Python based library.
+* Supports pretty much arbitrary coding questions in Python, C, C++, Java, Scilab and simple Bash and uses "test cases" to test the implementations of the students.
+* Supports simple multiple choice questions, fill in the blanks questions and assignment evaluations.
+* Since it runs on Python, you could technically test any Python based library.
+* Completely safe from malicious code.
* Scales to over 500+ simultaneous users.
* Distributed under the BSD license.
diff --git a/yaksh/documentation/moderator_docs/creating_course.rst b/yaksh/documentation/moderator_docs/creating_course.rst
index 44ebe44..d4dc5f8 100644
--- a/yaksh/documentation/moderator_docs/creating_course.rst
+++ b/yaksh/documentation/moderator_docs/creating_course.rst
@@ -6,47 +6,73 @@ For students to take a quiz, it is imperative for the moderator to create a cour
Setting up a new course
-----------------------
- To create a course, click on the Add New Course button on the moderator's dashboard. This will lead you to a create add course page, where you need to fill in the following fields.
-
- .. image:: ../images/create_course.png
-
- * Name
- Name of the Course
- * Enrollment
- Open enrollment is open to all students. Enroll Request requires students to send a request which the moderator can accept or reject.
- * Active
- If the course should be active for students to take the quiz. The status of the course can be edited later.
- * Code
- If the course should be hidden and only accessible to students possessing the correct course code.
- * Instructions
- Instructions for the course
- * Start Date and Time for enrollment of course
- If the enrollment of the course should be available only after a set date and time
- * End Date and Time for enrollment of course
- If the enrollment of the course should be available only before a set date and time
+ To create a course, click on the Add New Course button on the moderator's dashboard. This will lead you to a create add course page, where you need to fill in the following fields.
+
+ .. image:: ../images/create_course.png
+
+ * Name
+ Name of the Course
+ * Enrollment
+ Open enrollment is open to all students. Enroll Request requires students to send a request which the moderator can accept or reject.
+ * Active
+ If the course should be active for students to take the quiz. The status of the course can be edited later.
+ * Code
+ If the course should be hidden and only accessible to students possessing the correct course code.
+ * Instructions
+ Instructions for the course
+ * Start Date and Time for enrollment of course
+ If the enrollment of the course should be available only after a set date and time
+ * End Date and Time for enrollment of course
+ If the enrollment of the course should be available only before a set date and time
Features in Courses
-------------------
- Click on the Courses link on the navigation bar.
+ Click on the Courses link on the navigation bar.
+
+ .. image:: ../images/course_features.jpg
+
+ This page shows all the courses created by a moderator and all the courses allotted to a moderator.
+
+ The following features are available for courses
+
+ * Course Name
+ Clicking on course name link will display all the enrolled, rejected and requested students list. Moderator can accept or reject the student.
+ * Quiz Name
+ Clicking on the quiz name will let you edit the quiz.
+ * Question Paper
+ Click on the **Add** link to create a Question Paper for associated Quiz.
+ If a question paper is already created, click on the Question Paper link to edit question paper.
+ * Add Teacher
+ Clicking on Add teacher can let you add teachers for the course. The teachers can edit and modify only the specific course that are allotted to them.
+ * Teachers added to the course
+ This shows all the teachers added to a particular course.
+ * Download CSV for the entire course
+ This downloads the CSV file containing the performance of all students in every quiz for a given course.
+ * Edit Course
+ Clicking on the edit course button will let you edit the details of an existing course.
- .. image:: ../images/course_features.jpg
+Features in Course Details
+--------------------------
- This page shows all the courses created by a moderator and all the courses allotted to a moderator.
+ Click on a given course name to go to the course details page.
- The following features are available for courses
+ .. image:: ../images/course_details_features.jpg
- * Course Name
- Clicking on course name link will display all the enrolled, rejected and requested students list. Moderator can accept or reject the student.
- * Quiz Name
- Clicking on the quiz name will let you edit the quiz.
- * Question Paper
- Click on the **Add** link to create a Question Paper for associated Quiz.
- If a question paper is already created, click on the Question Paper link to
- edit question paper.
- * Add Teacher
- Clicking on Add teacher can let you add teachers for the course. The teachers can edit and modify only the specific course that are allotted to them.
- * Teachers added to the course
- This shows all the teachers added to a particular course.
+ Following are the features for course details -
+ * Requests
+ This is a list of students who have requested to be enrolled in the course. Moderator can enroll or reject selected students.
+ * Enrolled
+ This is a list of students who have been enrolled in the course. Moderator can reject enrolled students.
+ * Rejected
+ This is a list of students who have been rejected for enrollment in a course. Moderator can enroll rejected students.
+ * Deactivate/Activate Course
+ Clicking on this will deactivate or activate the course.
+ * Upload Users
+ Create and enroll users automatically by uploading a csv of the users. The mandatory fields for this csv are - **firstname, lastname, email**. Other fields like **username, password, institute, roll_no, department, remove** fields are optionals.
+ * Clone Course
+ This will create a clone of the course for the moderator.
+ * Send Mail
+ Moderator can send mail to all enrolled students or selected students.
diff --git a/yaksh/documentation/moderator_docs/creating_question.rst b/yaksh/documentation/moderator_docs/creating_question.rst
index 69bb635..78b6f2c 100644
--- a/yaksh/documentation/moderator_docs/creating_question.rst
+++ b/yaksh/documentation/moderator_docs/creating_question.rst
@@ -301,36 +301,8 @@ Features in Question
Click on the browse button. This will open up a window. Select the zip file of questions and click Ok and then click on Upload file button, questions will be uploaded and displayed on the Questions page.
- Zip file should contain **questions_dump.json** from which questions will be loaded.
+ Zip file should contain **questions_dump.yaml** from which questions will be loaded.
Zip file can contain files related to questions.
- Sample entry in **questions_dump.json** is as shown below. ::
- [{
- "snippet": "",
- "testcase": [
- {
- "test_case_args": "",
- "test_case_type": "standardtestcase",
- "weight": 1.0,
- "test_case": "Test Case here"
- },
- ],
- "points": 2.0,
- "description": "Question Description here",
- "language": "python",
- "active": true,
- "type": "code",
- "files": [[demo1.txt, false], [demo2.zip, true]],
- "summary": "Question Summary here"
- }]
-
- .. Note:: 1. In **files** entry in json, the list contains two items which
- are filename (demo1.txt) and extract status (false) i.e file needs to extracted or not.
-
- 2. If there are no files then **files** entry can be empty
- i.e it should be "files": [].
-
- 3. From sample, zip file should contain demo1.txt and demo2.zip since it is
- required for question.
* **Test Questions**