Extract Slides, Exercises, Solutions, TestExams or Exams!
Project description
ExtractZip
Extract Slides, Exercises, Solutions, TestExams or Exams!
Installation
- Create the user
extractzip
and set the access rights for the home directory.
# as user root:
adduser --disabled-password extractzip
chmod 2771 ~extractzip
- Add
extractzip
group to admin users that want to use this tool.
# as user root:
adduser jupyter-sebastian extractzip
- Create the config directory and file and set access rights and ownership.
# as user root
mkdir /etc/extractzip
chmod 755 /etc/extractzip
touch /etc/extractzip/config.yaml
chmod 664 /etc/extractzip/config.yaml
chown extractzip:extractzip /etc/extractzip/config.yaml
- Edit the config file, where you specify the
base_path
(home directory ofextractzip
) and thecourses
. Each course has aname
(the directory inbase_path
) that follows the pattern^[a-z0-9_]+$
and optional entries forslides
,exercises
,solutions
,testexam
andexam
which points to the basename of the corresponding zip file.
# as admin user with extractzip group (e.g. jupyter-sebastian)
# You can see here an course with the name 'testcourse'.
# The exam is commented out -> it can't be downloaded yet.
# /etc/extractzip/config.yaml
---
base_path: /home/extractzip
courses:
- name: testcourse
slides: Slides.zip
examples: Examples.zip
exercises: Exercises.zip
solutions: Solutions.zip
# exam: Exam.zip
testexam: Testexam.zip
- Create the corresponding directory for the configured course, copy the zip files in it and set the correct access rights.
# as admin user with extractzip group (e.g. jupyter-sebastian)
cd ~extractzip
mkdir testcourse
chmod 2751 testcourse
# copy zipfiles to new directory from <src_dir>
cp <src_dir>/{Exercises,Solutions,Exam,Testexam}.zip testcourse/.
chmod 644 testcourse/*.zip
Check config, course directory and zip files
Run the following command with the course directory to check:
CheckExtractZip testcourse
The result of the checks will be prefix with an emoji to indicate success (🤩), failure (👿) or the zipfile is not yet in the course directory (💀). The last one is not an error (see the third example below).
If everything is ok, the output should look like this (make sure that the last line reads Check complete!):
-----Course name----------------------------------
🤩 The course name 'testcourse' is well formed.
-----Check config file----------------------------
🤩 Config file loaded.
-----Check base path------------------------------
🤩 Base path is ok.
-----Check course 'testcourse' directory----------
🤩 Course path is ok.
-----Check Exercises in course 'testcourse'-------
🤩 Exercises is defined in the config.
🤩 The file Exercises.zip is ok.
🤩 The file Exercises.zip is not encrypted.
-----Check Solutions in course 'testcourse'-------
🤩 Solutions is defined in the config.
🤩 The file Solutions.zip is ok.
🤩 The file Solutions.zip is not encrypted.
-----Check Exam in course 'testcourse'------------
🤩 Exam is defined in the config.
🤩 The file Exam.zip is ok.
🤩 The file Exam.zip is encrypted.
-----Check TestExam in course 'testcourse'--------
🤩 TestExam is defined in the config.
🤩 The file Testexam.zip is ok.
🤩 The file Testexam.zip is encrypted.
--------------------------------------------------
Check complete!
If the result is not ok, the output looks something like this (make sure the last line reads Check incomplete!):
-----Course name----------------------------------
🤩 The course name 'testcourse' is well formed.
-----Check config file----------------------------
🤩 Config file loaded.
-----Check base path------------------------------
🤩 Base path is ok.
-----Check course 'testcourse' directory----------
🤩 Course path is ok.
-----Check Exercises in course 'testcourse'-------
🤩 Exercises is defined in the config.
👿 Exercises.zip mode is 444 but it should be 644
-----Check Solutions in course 'testcourse'-------
🤩 Solutions is defined in the config.
🤩 The file Solutions.zip is ok.
🤩 The file Solutions.zip is not encrypted.
-----Check Exam in course 'testcourse'------------
🤩 Exam is defined in the config.
🤩 The file Exam.zip is ok.
🤩 The file Exam.zip is encrypted.
-----Check TestExam in course 'testcourse'--------
🤩 TestExam is defined in the config.
🤩 The file Testexam.zip is ok.
🤩 The file Testexam.zip is encrypted.
--------------------------------------------------
Check incomplete!
If you see lines like the following than it means, you have not put the configured zipfile for TestExam in the course directory.
This is not an error because you could have intentionally withheld the file until it is convenient during the course:
-----Check TestExam in course 'testcourse'--------
🤩 TestExam is defined in the config.
💀 The TestExam doesn't exist (yet).
--------------------------------------------------
Using the ExtractZip package
The ExtractZip
class has the following general method for extracting a specific zip file:
ExtractZip().extract_<lang>_<zip_type>_<course>()
Where
<lang>
is eitherde
for german oren
for english,<exam_type>
is eitherslides
,examples
,exercises
,solutions
,testexam
orexam
and<course>
is the name of the course from theconfig.yaml
.
In a Jupyter Notebook you can put the following in a cell to extract the slides of the testcourse with english output:
from extractzip import ExtractZip
ExtractZip().extract_en_slides_testcourse()
When the cell is executed, the corresponding zipfile will be extracted in the home directory of the current user.
Note
This project has been set up using PyScaffold 4.5. For details and usage information on PyScaffold see https://pyscaffold.org/.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for extractzip-sebastian-stigler-0.1.4.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0ba2805ca6f568706cdcaa004f7e59ae6a3861c23777d0102aef11ffc90674c6 |
|
MD5 | e3420fe7e1c25260b9a98ab429621bb7 |
|
BLAKE2b-256 | ec966d791dfc01b2e9cc5876eabb9ac9223d1304498eb058492b8aee2d00c828 |
Hashes for extractzip_sebastian_stigler-0.1.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 41b99019513df45ec560f808265a28d0ec7e038457a9fddea2f1b6d3dba37f4f |
|
MD5 | 0b061ddd5574996416b5a1f68975f3da |
|
BLAKE2b-256 | dec7b1e5640e2bc3b9925b0c736aedf1c40c99ccb253304a530de5b413f4f1ae |