moodle-export-worker/worker.py

64 lines
1.9 KiB
Python
Raw Normal View History

2022-01-13 07:08:54 +00:00
#!/usr/bin/env python3
from pathlib import Path
from datetime import datetime
2022-01-13 10:45:45 +00:00
import subprocess
2022-01-13 07:08:54 +00:00
from settings import *
from logger import Logger
logger = Logger()
def trigger_export(courseid, categoryid):
2022-01-13 09:53:36 +00:00
global MOODLE_PATH, OUTPUT_PATH
output_name = f"course_{courseid}_{categoryid}_{int(datetime.now().timestamp())}.mbz"
result = subprocess.run([MOOSH_PATH, "-p", MOODLE_PATH, "course-backup",
"-p", OUTPUT_PATH, "-f", output_name, "--template", courseid],
capture_output=True)
for line in str(result.stdout).splitlines():
logger.debug(line)
2022-01-13 07:08:54 +00:00
return output_name
def main():
2022-01-13 09:53:36 +00:00
global SIGNAL_PATH, OUTPUT_PATH
2022-01-13 07:08:54 +00:00
logger.info("Moodle Export Worker starting")
SIGNAL_PATH = Path(SIGNAL_PATH)
2022-01-13 10:52:03 +00:00
OUTPUT_PATH = Path(OUTPUT_PATH)
2022-01-13 07:08:54 +00:00
2022-01-13 09:53:36 +00:00
if SIGNAL_PATH.exists():
if not SIGNAL_PATH.is_dir():
2022-01-13 07:08:54 +00:00
logger.fatal(
f"Cannot create signalling directory {SIGNAL_PATH} because a file with that name exists.")
exit(1)
else:
try:
2022-01-13 09:53:36 +00:00
SIGNAL_PATH.mkdir()
2022-01-13 07:08:54 +00:00
except Exception as e:
logger.fatal(
f"Cannot create signalling directory {SIGNAL_PATH}: {e}")
exit(1)
2022-01-13 09:53:36 +00:00
for f in SIGNAL_PATH.glob("*-*.mew"):
2022-01-13 07:08:54 +00:00
logger.debug(f"Found file {f.name} - start processing")
try:
pre = datetime.now()
output_name = trigger_export(*f.name.split(".")[0].split("-"))
dur = datetime.now() - pre
size = Path(OUTPUT_PATH / output_name).stat().st_size
f.unlink()
logger.debug(
f"Created file {output_name} ({size} bytes) in {dur.seconds} seconds")
2022-01-13 07:08:54 +00:00
except Exception as e:
logger.error(
f"Export of course {f.name.split('.')[0].split('-')[0]} failed: {e}")
2022-01-13 09:53:36 +00:00
logger.info("Moodle Export Worker done")
2022-01-13 07:08:54 +00:00
if __name__ == "__main__":
main()