ucl-ingi / interactive-syllabus Goto Github PK
View Code? Open in Web Editor NEWLicense: GNU Affero General Public License v3.0
License: GNU Affero General Public License v3.0
The only purpose of the current database is to store users that have special right. In our case, with SAML2 we do not need to store normal user (~700 users this year, could be the same or more each year). We could split the current database into a table for "normal" user table (empty in our case, but other use case might need it) and a "special" user table.
We also need to think how special user are added in the database
Currently, we can delete file via the admin panel and check the box "Also delete the files related to this content on the file system.". However I do not see a way to re-add a file that already exists to the syllabus, is there one ?
Also I think that we should have two options for "removing" a file from the syllabus:
When a user email is changed in the external directory (SAML auth method), its username remains the same.
The app looks for an account based on the email:
However, if the acocunt is not found, it is created in database with the provider username, which is also the primary key of the User table:
interactive-syllabus/syllabus/inginious_syllabus.py
Lines 608 to 616 in 2a61a05
Therefore, the app emits a request that will end up with a unicity error.
Different methods are possible to fix this issue:
Usernames are actually no more used for the application logic (as email is used as LTI identifier) and option 2 seems therefore the most intuitive change for both end-users and developers, even if option 1 requires less maintenance to migrate existing deployments. Option 3 is probably of limited interest in our specific case.
The instructions to install are not up to date.
Maybe make them simpler in the process ?
Dans le chapitre 6 (accessible chez https://github.com/ALambot/java-syllabus-pages/blob/master/pages/CH6_tableaux/qcm.rst), il y a 15 questions mais plusieurs choix par questions. Du coup, sans avoir tout correct, il y a moyen d'avoir des 25/15 sans avoir répondu à tout et sans avoir nécessairement juste. Il faudra retravailler ça dans l'intégration INGInious (un point si toutes les bonnes réponses, ou alors un point par bonne réponse et du coup avoir un total qui est plus grand que le nombre de questions).
This is quite a hard question, whether:
The syllabus should allow to write (partially or completely) the content of the footer in rST, as a part of the content of the syllabus (and thus in a file in the pages/
directory), and not as a part of the web app itself.
I ran pip3 install and it fails with the following message:
$ sudo pip3 install .
[sudo] password for jadinm:
The directory '/home/jadinm/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
The directory '/home/jadinm/.cache/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
Processing /home/jadinm/repositories/courses/LSINF1252/interactive-syllabus
Requirement already satisfied: pyyaml>=3.12 in /usr/lib/python3/dist-packages (from interactive-syllabus==0.1.0)
Collecting werkzeug>=0.11.11 (from interactive-syllabus==0.1.0)
Downloading https://files.pythonhosted.org/packages/24/4d/2fc4e872fbaaf44cc3fd5a9cd42fda7e57c031f08e28c9f35689e8b43198/Werkzeug-0.15.1-py2.py3-none-any.whl (328kB)
100% |████████████████████████████████| 337kB 1.8MB/s
Requirement already satisfied: pygments>=2.1.3 in /usr/lib/python3/dist-packages (from interactive-syllabus==0.1.0)
Collecting flask>=0.12 (from interactive-syllabus==0.1.0)
Downloading https://files.pythonhosted.org/packages/7f/e7/08578774ed4536d3242b14dacb4696386634607af824ea997202cd0edb4b/Flask-1.0.2-py2.py3-none-any.whl (91kB)
100% |████████████████████████████████| 92kB 3.4MB/s
Requirement already satisfied: docutils>=0.13.1 in /usr/lib/python3/dist-packages (from interactive-syllabus==0.1.0)
Collecting lti (from interactive-syllabus==0.1.0)
Downloading https://files.pythonhosted.org/packages/a6/ad/f4f9819fd5c87ef31176f6a5b626651dfd21857406bea0b15733c8e787c9/lti-0.9.4-py2.py3-none-any.whl
Collecting flask-sqlalchemy>=2.3.2 (from interactive-syllabus==0.1.0)
Downloading https://files.pythonhosted.org/packages/a1/44/294fb7f6bf49cc7224417cd0637018db9fee0729b4fe166e43e2bbb1f1c8/Flask_SQLAlchemy-2.3.2-py2.py3-none-any.whl
Collecting sqlalchemy (from interactive-syllabus==0.1.0)
Downloading https://files.pythonhosted.org/packages/85/29/d7a5687d0d21ea8133f2d4ef02dfb4d191afe7ebc8bd9f962d99bdf595e1/SQLAlchemy-1.3.1.tar.gz (5.9MB)
100% |████████████████████████████████| 5.9MB 220kB/s
Collecting python3-saml (from interactive-syllabus==0.1.0)
Downloading https://files.pythonhosted.org/packages/06/57/bc44da351726edee332a9506309127293fb640bbad55aa29d71b73655849/python3_saml-1.5.0-py3-none-any.whl (72kB)
100% |████████████████████████████████| 81kB 1.3MB/s
Collecting GitPython (from interactive-syllabus==0.1.0)
Downloading https://files.pythonhosted.org/packages/fe/e5/fafe827507644c32d6dc553a1c435cdf882e0c28918a5bab29f7fbebfb70/GitPython-2.1.11-py2.py3-none-any.whl (448kB)
100% |████████████████████████████████| 450kB 2.9MB/s
Requirement already satisfied: click>=5.1 in /usr/lib/python3/dist-packages (from flask>=0.12->interactive-syllabus==0.1.0)
Collecting itsdangerous>=0.24 (from flask>=0.12->interactive-syllabus==0.1.0)
Downloading https://files.pythonhosted.org/packages/76/ae/44b03b253d6fade317f32c24d100b3b35c2239807046a4c953c7b89fa49e/itsdangerous-1.1.0-py2.py3-none-any.whl
Requirement already satisfied: Jinja2>=2.10 in /usr/lib/python3/dist-packages (from flask>=0.12->interactive-syllabus==0.1.0)
Requirement already satisfied: oauthlib in /usr/lib/python3/dist-packages (from lti->interactive-syllabus==0.1.0)
Requirement already satisfied: lxml in /usr/lib/python3/dist-packages (from lti->interactive-syllabus==0.1.0)
Collecting requests-oauthlib (from lti->interactive-syllabus==0.1.0)
Downloading https://files.pythonhosted.org/packages/c2/e2/9fd03d55ffb70fe51f587f20bcf407a6927eb121de86928b34d162f0b1ac/requests_oauthlib-1.2.0-py2.py3-none-any.whl
Collecting defusedxml==0.5.0 (from python3-saml->interactive-syllabus==0.1.0)
Downloading https://files.pythonhosted.org/packages/87/1c/17f3e3935a913dfe2a5ca85fa5ccbef366bfd82eb318b1f75dadbf0affca/defusedxml-0.5.0-py2.py3-none-any.whl
Collecting isodate>=0.5.0 (from python3-saml->interactive-syllabus==0.1.0)
Downloading https://files.pythonhosted.org/packages/9b/9f/b36f7774ff5ea8e428fdcfc4bb332c39ee5b9362ddd3d40d9516a55221b2/isodate-0.6.0-py2.py3-none-any.whl (45kB)
100% |████████████████████████████████| 51kB 2.6MB/s
Collecting xmlsec>=0.6.0 (from python3-saml->interactive-syllabus==0.1.0)
Downloading https://files.pythonhosted.org/packages/35/42/d7cd323c91d4706f3cc32ffe7d5f851ab8ef9898ccb350f6ba593dd8b89a/xmlsec-1.3.3.tar.gz
Collecting gitdb2>=2.0.0 (from GitPython->interactive-syllabus==0.1.0)
Downloading https://files.pythonhosted.org/packages/da/30/a407568aa8d8f25db817cf50121a958722f3fc5f87e3a6fba1f40c0633e3/gitdb2-2.0.5-py2.py3-none-any.whl (62kB)
100% |████████████████████████████████| 71kB 1.7MB/s
Requirement already satisfied: requests>=2.0.0 in /usr/lib/python3/dist-packages (from requests-oauthlib->lti->interactive-syllabus==0.1.0)
Requirement already satisfied: six in /usr/lib/python3/dist-packages (from isodate>=0.5.0->python3-saml->interactive-syllabus==0.1.0)
Collecting pkgconfig (from xmlsec>=0.6.0->python3-saml->interactive-syllabus==0.1.0)
Downloading https://files.pythonhosted.org/packages/e1/8a/c205fad800317a59e8d218981a8a7a3a00ec69c7fd55eca58dd08e6b0a18/pkgconfig-1.4.0-py2.py3-none-any.whl
Collecting smmap2>=2.0.0 (from gitdb2>=2.0.0->GitPython->interactive-syllabus==0.1.0)
Downloading https://files.pythonhosted.org/packages/55/d2/866d45e3a121ee15a1dc013824d58072fd5c7799c9c34d01378eb262ca8f/smmap2-2.0.5-py2.py3-none-any.whl
Installing collected packages: werkzeug, itsdangerous, flask, requests-oauthlib, lti, sqlalchemy, flask-sqlalchemy, defusedxml, isodate, pkgconfig, xmlsec, python3-saml, smmap2, gitdb2, GitPython, interactive-syllabus
Running setup.py install for sqlalchemy ... done
Running setup.py install for xmlsec ... error
Complete output from command /usr/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-l_4mby43/xmlsec/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-yt1qe0hm-record/install-record.txt --single-version-externally-managed --compile:
running install
running build
running build_ext
*********************************************************************************
Could not find xmlsec1 config. Are libxmlsec1-dev and pkg-config installed?
*********************************************************************************
----------------------------------------
Command "/usr/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-l_4mby43/xmlsec/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-yt1qe0hm-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-l_4mby43/xmlsec/
sphinx_pages/pages
session_secret_key
- doc should say that it should be setIt would be nice to have a search tool to look for text in a syllabus pages
I think it would be nice to have a "richer" interface for the modification of the configuration/ToC in the admin panel (especially for the configuration file which has a lot of things inside it).
For the ToC it might be something similar to the edition of the content (see #15 for the idea of hiding/deleting part of the syllabus,we would need to be linked between the ToC and the content).
For the configuration, I think that drop-down style sections with entries for each field + a little "help" or "what does this field actually do?" would be nice.
When printing all the syllabus, all pages the syllabus is rendered as an HTML file, then printed. But this changes the page on which the user was, I think it should not change the current state of the syllabus.
When installing interactive syllabus, I got the following error message
DEPRECATION: interactive-syllabus is being installed using the legacy 'setup.py install' method, because
it does not have a 'pyproject.toml' and the 'wheel' package is not installed. pip 23.1 will enforce this be
haviour change. A possible replacement is to enable the '--use-pep517' option. Discussion can be found at h
ttps://github.com/pypa/pip/issues/8559
Dans le cas du syllabus, on peut vouloir mettre une courte question à choix multiples après un bout de code, pour vérifier immédiatement que l'étudiant a compris le code (par exemple, la dernière ligne affichée, ou la valeur d'une variable en sortie de boucle). Pour le moment, il n'y a qu'un seul bouton "Vérifier" par page de QCM, ce qui oblige l'étudiant à scroller toute la page, et à vérifier tous les QCMs présents, dont ceux qu'il n'a pas encore fait.
Request : pouvoir mettre un bouton "Vérifier" par "groupe" de QCM.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.