Commit e7da34fc98ae4495566fc3c6abd88962188eb2ed
Exists in
master
and in
1 other branch
fixed merge conflict in README.md
Showing
5 changed files
with
65 additions
and
39 deletions
Show diff stats
README.md
| 1 | 1 | # README # |
| 2 | 2 | |
| 3 | - | |
| 4 | 3 | ### Requirements: |
| 5 | 4 | |
| 6 | -The webserver is a python 3.5+ application. | |
| 7 | - | |
| 8 | -Requires the following python packages, which can be installed using `pip`: | |
| 5 | +The webserver is a python application and requires python 3.5+ to be installed. | |
| 9 | 6 | |
| 10 | -- CherryPy (>=3.7.0) | |
| 11 | -- Mako (>=1.0.1) | |
| 12 | -- Markdown (>=2.6.2) | |
| 13 | -- PyYAML (>=3.11) | |
| 14 | -- bcrypt (>=2.0.0) | |
| 7 | +The following additional python packages are required: | |
| 15 | 8 | |
| 16 | -### System setup: | |
| 9 | +- CherryPy | |
| 10 | +- Mako | |
| 11 | +- Markdown | |
| 12 | +- PyYAML | |
| 13 | +- Pygments | |
| 14 | +- SQLAlchemy | |
| 15 | +- bcrypt | |
| 17 | 16 | |
| 18 | -Open a terminal and navigate to a directory where this software is to be installed, e.g. `/var/www` or `/home/username`. | |
| 19 | -Run the following commands: | |
| 17 | +These can be installed globally or in a python virtual environment. | |
| 20 | 18 | |
| 21 | 19 | ```.bash |
| 20 | +# install in a virtualenv | |
| 21 | +pyvenv-3.5 venv/perguntations # or choose another virtualenv directory | |
| 22 | +source venv/perguntations/bin/activate # activate virtualenv | |
| 23 | + | |
| 24 | +pip3.5 install cherrypy | |
| 25 | +pip3.5 install mako | |
| 26 | +pip3.5 install markdown | |
| 27 | +pip3.5 install pyyaml | |
| 28 | +pip3.5 install pygments | |
| 29 | +pip3.5 install sqlalchemy | |
| 30 | +pip3.5 install bcrypt | |
| 31 | +``` | |
| 32 | + | |
| 33 | +To install `perguntations`: | |
| 22 | 34 | |
| 35 | +```.bash | |
| 23 | 36 | cd WHERE/TO/PUT/THE/SOFTWARE |
| 37 | +git clone https://USERNAME@bitbucket.org/USERNAME/perguntations.git | |
| 38 | +``` | |
| 39 | + | |
| 40 | +where USERNAME is your account on bitbucket. | |
| 41 | + | |
| 42 | +### System setup: | |
| 43 | + | |
| 44 | +The following commands will show how to run a demonstration test: | |
| 24 | 45 | |
| 25 | -# get software using git | |
| 26 | -git clone https://USER@bitbucket.org/USER/perguntations.git | |
| 27 | -cd perguntations | |
| 46 | +```.bash | |
| 47 | +cd WHERE/YOU/INSTALLED/perguntations | |
| 28 | 48 | |
| 29 | -# create database (if no csv file is provided, a database with 5 fake students is created for debugging) | |
| 30 | -./initdb.py CSV_FILE_HERE | |
| 31 | -mv students.db SOMEWHERE | |
| 49 | +# create database. | |
| 50 | +# a database with 5 fake students is created if no CSV file is provided | |
| 51 | +./initdb_from_csv.py OPTIONAL_CSV_FILE | |
| 52 | +mv students.db demo/ | |
| 32 | 53 | |
| 33 | -# update test configuration with the correct database file. | |
| 54 | +# edit test configuration and check if everything looks right | |
| 34 | 55 | vi demo/test.yaml |
| 35 | -# Edit line 7 to something like | |
| 36 | -# database: SOMEWHERE/students.db | |
| 37 | 56 | |
| 38 | -# edit server configuration if needed | |
| 57 | +# edit server configuration and check if everything looks right | |
| 39 | 58 | vi config/server.conf |
| 59 | +``` | |
| 60 | + | |
| 61 | +We are now ready to run the server: | |
| 40 | 62 | |
| 63 | +```.bash | |
| 41 | 64 | # get help |
| 42 | 65 | ./serve.py --help |
| 43 | 66 | |
| 44 | 67 | # run demo test |
| 45 | 68 | ./serve.py demo/test.yaml |
| 69 | +``` | |
| 46 | 70 | |
| 47 | -# open browser at http://127.0.0.1:8080/ | |
| 48 | -# the professor/administrator is number 0 | |
| 71 | +Open the browser at `http://127.0.0.1:8080/` and login as user number `0` (administrator) and: | |
| 49 | 72 | |
| 50 | -# ^C to terminate the server | |
| 51 | -``` | |
| 73 | +1. Authorize students by clicking the checkboxes. | |
| 74 | +2. Open a different browser at `http://127.0.0.1:8080/` and login as one of the authorized students. Answer the questions and submit. | |
| 75 | + | |
| 76 | +The server can be stoped from the terminal with <kbd>^C</kbd>. | |
| 52 | 77 | |
| 53 | 78 | ### Troubleshooting |
| 54 | 79 | ... | ... |
demo/test.yaml
| ... | ... | @@ -4,7 +4,7 @@ title: Exame de Demonstração |
| 4 | 4 | |
| 5 | 5 | # Database with student credentials and grades of all questions and tests done |
| 6 | 6 | # The database is an sqlite3 file generate with the script initdb_from_csv.py |
| 7 | -database: ~/Work/Projects/perguntations/demo/students.db | |
| 7 | +database: demo/students.db | |
| 8 | 8 | |
| 9 | 9 | # (optional) Generate a file for each test done by a student. |
| 10 | 10 | # It includes the questions, answers and grades. | ... | ... |
initdb.py
| ... | ... | @@ -35,24 +35,27 @@ Session = sessionmaker(bind=engine) |
| 35 | 35 | try: |
| 36 | 36 | session = Session() |
| 37 | 37 | |
| 38 | - # add administrator and fake student accounts | |
| 39 | - session.add_all([ | |
| 40 | - Student(id='0', name='Professor', password=''), | |
| 41 | - Student(id='student1', name='Student1', password=''), | |
| 42 | - Student(id='student2', name='Student2', password=''), | |
| 43 | - Student(id='student3', name='Student3', password=''), | |
| 44 | - Student(id='student4', name='Student4', password=''), | |
| 45 | - Student(id='student5', name='Student5', password=''), | |
| 46 | - ]) | |
| 38 | + # add administrator | |
| 39 | + session.add(Student(id='0', name='Professor', password='')) | |
| 47 | 40 | |
| 48 | - # add enrolled students from csv file | |
| 41 | + # add students | |
| 49 | 42 | if args.csvfile: |
| 43 | + # from csv file if available | |
| 50 | 44 | try: |
| 51 | 45 | csvreader = csv.DictReader(open(args.csvfile, encoding='iso-8859-1'), delimiter=';', quotechar='"') |
| 52 | 46 | except EnvironmentError: |
| 53 | 47 | print('CSV file "{0}" not found!'.format(args.csvfile)) |
| 54 | 48 | else: |
| 55 | 49 | session.add_all([Student(id=r['N.º'], name=fix(r['Nome']), password='') for r in csvreader]) |
| 50 | + else: | |
| 51 | + # otherwise add 5 fake students | |
| 52 | + session.add_all([ | |
| 53 | + Student(id='student1', name='Student1', password=''), | |
| 54 | + Student(id='student2', name='Student2', password=''), | |
| 55 | + Student(id='student3', name='Student3', password=''), | |
| 56 | + Student(id='student4', name='Student4', password=''), | |
| 57 | + Student(id='student5', name='Student5', password=''), | |
| 58 | + ]) | |
| 56 | 59 | |
| 57 | 60 | session.commit() |
| 58 | 61 | ... | ... |
serve.py
test.py
| ... | ... | @@ -179,7 +179,6 @@ class TestFactory(dict): |
| 179 | 179 | 'show_points': self['show_points'], |
| 180 | 180 | 'show_ref': self['show_ref'], |
| 181 | 181 | 'debug': self['debug'], |
| 182 | - # 'answers_dir': self['answers_dir'], | |
| 183 | 182 | 'database': self['database'], |
| 184 | 183 | 'questions_dir': self['questions_dir'], |
| 185 | 184 | 'files': self['files'], | ... | ... |