Skip to content

Instantly share code, notes, and snippets.

@SurajDadral
Created February 4, 2021 19:45
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save SurajDadral/2ced2cd485908219cdb6ed05aa727721 to your computer and use it in GitHub Desktop.
Save SurajDadral/2ced2cd485908219cdb6ed05aa727721 to your computer and use it in GitHub Desktop.
Automate Attendance in Moodle
import requests
import re
moodle_root = "https://example.com"
username = "MyUsername"
password = "MySecretPassword"
attendance_page = f"{moodle_root}/mod/attendance/view.php?id=16681"
session = requests.Session()
login_page = session.get(f"{moodle_root}/login/index.php")
login_token = re.search(
r'name="logintoken" value="(.+)"', login_page.content.decode()
).groups()[0]
# Login
session.post(
f"{moodle_root}/login/index.php",
{
"logintoken": login_token,
"anchor": "",
"username": username,
"password": password,
},
)
attendance = session.get(attendance_page)
attendance_submit_urls = re.search(
r'<a href="(.+)">Submit attendance</a>', attendance.content.decode()
).groups()
for attendance_submit_url in attendance_submit_urls:
session.get(attendance_submit_url)
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command
# CRON_TZ=Asia/Kolkata
35 00 * 02 * echo "$(TZ='Asia/Kolkata' date)" >> /home/1715083/cron.log
35 00 * 02 * python3 /home/1715083/attendance.py >> /home/1715083/cron.log
05 03 * 02 * echo "$(TZ='Asia/Kolkata' date)" >> /home/1715083/cron.log
05 03 * 02 * python3 /home/1715083/attendance.py >> /home/1715083/cron.log
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment