GithubHelp home page GithubHelp logo

numbas / blackboard-scorm-analysis Goto Github PK

View Code? Open in Web Editor NEW
3.0 6.0 1.0 175 KB

A tool to analyse data about SCORM attempts from a Blackboard course archive

Python 54.54% JavaScript 2.12% HTML 43.34%
blackboard scorm numbas vle

blackboard-scorm-analysis's Introduction

Numbas logo

Numbas is an open-source system for creating tests which run entirely in the browser. It has been developed by Newcastle University's School of Mathematics, Statistics and Physics.

For more information about Numbas and what it does, see our website at numbas.org.uk.

How to use Numbas

Documentation for Numbas users is at numbas-editor.readthedocs.org.

Installation

This repository contains the Numbas compiler, which runs as standalone Python 3, but the most convenient way to use Numbas is through the web-based editor.

A publicly-available editor, requiring no set-up, is available at numbas.mathcentre.ac.uk. Or, you can follow our instructions for Windows, Mac, or Ubuntu to install your own instance.

If you decide to run your own installation, install the compiler's dependencies with pip install -r requirements.txt.

This repository is just one part of the Numbas ecosystem. See the numbas organisation for the other pieces, including the web-based editor, extensions, and VLE integrations.

Contributing to Numbas

Numbas is open source, and we welcome contributions of any sort. Bug reports or feature suggestions can be added to the GitHub issue tracker, or emailed to [email protected].

See our page on contributing to Numbas for more information on how you can help.

We keep a list of tasks specifically for new contributors, under the good-first-issue label. There's a corresponding list in the editor repository, too. These tasks should be fairly straightforward to implement without much knowledge of how all the code fits together.

Development

This tool runs on the command line: run python bin/numbas.py to see the options. You can give it the name of a .exam file or pipe one in.

When making changes to the JavaScript runtime, it's a good idea to run the unit tests in the tests directory. These can run in a browser, or on the command-line.


Running tests in a browser

Start a local web server with python -m http.server and go to http://localhost:8000/tests. The tests under tests/jme contain tests to do with the JME system, and tests/parts contains tests to do with the part marking algorithms.

Running tests on the command-line

You can run the tests from the command-line using node.js:

Install the dependencies:

cd tests
npm install

Then run the tests with:

npm test

If you make a change, please try to add unit tests to confirm that Numbas behaves as expected.

The Makefile in this repository collects together scripts to run the unit tests, and builds the API documentation. Linux and Mac OS have built-in support Makefiles, but Windows doesn't. On Windows, cygwin provides make.

API documentation for developers is at numbas.github.io/Numbas. This is generated using JSDoc, with a custom template. Run make docs to rebuild the API documentation into ../numbas-docs.

Copyright

Copyright 2011-18 Newcastle University

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

You can see a plain-English explanation of the license and what it allows at tl;drLegal

Copyright in the content produced using Numbas resides with the author.

blackboard-scorm-analysis's People

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

Forkers

rako9000

blackboard-scorm-analysis's Issues

Requirements may need updating (or backdating)

Thanks for the great tool!
I tried a new install of this in August 2022, but suspect that some of the python packages have changed and broken a few more things.

I was getting errors to do with flask and Jijna2, before launching the server. Then after server launch Markup safe caused an issue.

With some websearching I managed to find a list of package versions which were useful to someone on a similar project from around the time, so I updated the requirements.txt list to the following:

Flask==1.0.2
lxml==4.3.0
pygal==2.4.0
Jinja2==2.10.3
MarkupSafe==1.1.1
itsdangerous==1.1.0
Werkzeug==0.12.2
click==8.1.3

I still had the issue with 'seekable' files when uploading so had to make the edits in #5 to server.py and blackboardscorm.py too

But it does still work nicely!

Zero division error

I am getting a divide by zero error (see gist, https://gist.github.com/anonymous/034f3bfb629642ee0680) when I try to run a report on a recent quiz, or to click on any question to view the transcript. One possible cause is that I set up a zero mark question as part of the quiz (it was an opportunity for students to feed back a question to me for answering in lectures).

Am running this on Linux Mint 17.3, with Python 3.4.3 and up-to-date versions of required packages.

UTC formatting in dates

It seems that the datestamps that come from Blackboard now have an additional UTC identifier at the end of their string, which gives a 'unconverted data remains' error when server.py is called. In L98 of blackboardscorm.py, I think changing '%Y-%m-%dT%H:%M:%S' to '%Y-%m-%dT%H:%M:%S.%fZ' should fix it.

SCORM XML analysis fails when item has no identifierref

Blackboard generated a manifest file containing the following:-

-<item identifier="itm00011">
<title>placeholder/staff-info</title>
+<item identifier="itm00012" identifierref="res00025">
</item>

Analysis failed when file None.dat was not found, since itm00011 has no resource file associated.
Workaround was possible by deleting the lines from the manifest.

Reappearance of AttributeError: 'SpooledTemporaryFile' object has no attribute 'seekable'

There is a closed issue with this error (#3), unfortunately, I have problem showing on two different systems.

Error message:

Traceback (most recent call last):
 File "/Users/zaript/src/blackboard-scorm-analysis/_pyvenv/lib/python3.7/site-packages/flask/app.py", line 2309, in __call__
   return self.wsgi_app(environ, start_response)
 File "/Users/zaript/src/blackboard-scorm-analysis/_pyvenv/lib/python3.7/site-packages/flask/app.py", line 2295, in wsgi_app
   response = self.handle_exception(e)
 File "/Users/zaript/src/blackboard-scorm-analysis/_pyvenv/lib/python3.7/site-packages/flask/app.py", line 1741, in handle_exception
   reraise(exc_type, exc_value, tb)
 File "/Users/zaript/src/blackboard-scorm-analysis/_pyvenv/lib/python3.7/site-packages/flask/_compat.py", line 35, in reraise
   raise value
 File "/Users/zaript/src/blackboard-scorm-analysis/_pyvenv/lib/python3.7/site-packages/flask/app.py", line 2292, in wsgi_app
   response = self.full_dispatch_request()
 File "/Users/zaript/src/blackboard-scorm-analysis/_pyvenv/lib/python3.7/site-packages/flask/app.py", line 1815, in full_dispatch_request
   rv = self.handle_user_exception(e)
 File "/Users/zaript/src/blackboard-scorm-analysis/_pyvenv/lib/python3.7/site-packages/flask/app.py", line 1718, in handle_user_exception
   reraise(exc_type, exc_value, tb)
 File "/Users/zaript/src/blackboard-scorm-analysis/_pyvenv/lib/python3.7/site-packages/flask/_compat.py", line 35, in reraise
   raise value
 File "/Users/zaript/src/blackboard-scorm-analysis/_pyvenv/lib/python3.7/site-packages/flask/app.py", line 1813, in full_dispatch_request
   rv = self.dispatch_request()
 File "/Users/zaript/src/blackboard-scorm-analysis/_pyvenv/lib/python3.7/site-packages/flask/app.py", line 1799, in dispatch_request
   return self.view_functions[rule.endpoint](**req.view_args)
 File "/Users/zaript/src/blackboard-scorm-analysis/server.py", line 83, in upload_zip
   zip.extractall(extract_path)
 File "/Users/zaript/miniconda3/lib/python3.7/zipfile.py", line 1636, in extractall
   self._extract_member(zipinfo, path, pwd)
 File "/Users/zaript/miniconda3/lib/python3.7/zipfile.py", line 1689, in _extract_member
   with self.open(member, pwd=pwd) as source, \
 File "/Users/zaript/miniconda3/lib/python3.7/zipfile.py", line 1516, in open
   self._fpclose, self._lock, lambda: self._writing)
 File "/Users/zaript/miniconda3/lib/python3.7/zipfile.py", line 734, in __init__
   self.seekable = file.seekable
AttributeError: 'SpooledTemporaryFile' object has no attribute 'seekable'

Installed packages:

(_pyvenv) > ~/s/blackboard-scorm-analysis git:(master)
> pip list
Package      Version
------------ -------
Click        7.0
Flask        1.0.2
itsdangerous 1.1.0
Jinja2       2.10.3
lxml         4.3.0
MarkupSafe   1.1.1
pip          19.3.1
pygal        2.4.0
setuptools   44.0.0
Werkzeug     0.16.0
wheel        0.33.6

Python version:

(_pyvenv) > ~/s/blackboard-scorm-analysis git:(master)
> python --version
Python 3.7.6

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.