Skip to main content

Nieuw Cohort

Aanpassingen op Server

  • Pas de file config/subdomain.php aan:
<?php

function subDomain() {
    $subDomain = "www";

    if ( isset($_SERVER['SERVER_NAME'])) {
        $subDomain = explode('.', $_SERVER['SERVER_NAME'])[0];
    }


    if ( $subDomain == '...') {
        $DB='......';
    } elseif ( $subDomain == '...') {
        $DB='......';
    } elseif ( $subDomain == '...') {
        $DB='......';
    } else {
        $DB='...';
    }

    return $DB;
}

?>
  • pas de file config/params.php aan:
# for searching students in home page
$databases = ['canvas-c24', 'canvas-c23', 'canvas-c22', 'canvas-c21', 'canvas-c20'];
  • Maak de nieuwe database aan.
  • Pas de SQL views aan.
  • /etc/apache2/sites-enabled/....conf server alias toevoegen

    vergeet de dev-omving niet,
    C:\xampp\apache\conf\extra\httpd-vhosts.conf
    en eventueel de hosts file in
    C:\Windows\System32\drivers\etc
  • Maak gebruikers/docenten in database aan (export/import uit vorig cohort)
  • Voeg cursussen toe via de GUI (menu beheer - cursus)
  • Draai een update (op de sever python3 update.py -c 12345).
  • Voeg modules toe via de GUI (menu beheer - module).
  • Draai weer een update.
  • Pas de rotate functie aan (als je op het log links boven klikt).
    ResultaatController.php,  function actionRotate()
  • Pas de vakanties aan in de import.py ten behoeve van de predictions.
  • Gebruik de 
    public function actionGenerate($code = 0)
    in de StudetController om de unieke codes te genereren voor de studenten.

    Note 1: Kijk even hoe dit aan te roepen (ivm security wordt dat verder hier niet uitgelegd).
    Note 2: indien een student via de CMON wordt ingevoerd (dus niet rechtstreeks in de database wordt geïmporteerd) dan wordt deze code automatisch gegenereerd.

Importeren Studenten

Zorg dat alle studenten in een cursus staat door deze cursus te koppelen met de juiste Eduarte groepen.

Draai dan dit script dat in de folder python_scripts in de Canvasfolder staat.

  1. Pas op regel 21 het cursus id aan zodat dit overeenkomt met de cursus waaruit de studenten moeten worden gehaald.
  2. Draai het script.
  3. Copy/paste de output in phpmyadmin.
  4. Run de import op de module waar de studenten namen in staan, vb:
    python3 import.py -c 18660
  5. Pas handmatig (via de CMON GUI) de klassen aan.
# Get all users created in a particular year (note that these must be assigned to a course)
# then create inserts to insert these users in the database
# use this script at the beginning of the year to add students to the CM (klas still needs to be edited by hand)

from canvasapi import Canvas
import configparser
import sys

config = configparser.ConfigParser()
if ( not (config.read("../import/canvas.ini") or config.read("canvas.ini"))):
    print()
    dd('Error: canvas.ini not found')

# Canvas API URL
API_URL = config.get('main', 'host')
# Canvas API key
API_KEY = config.get('main', 'api_key')

canvas = Canvas(API_URL, API_KEY)

course_id = 18660

course = canvas.get_course(course_id)
all_users = course.get_users(enrollment_type=['student'])

print(f"Course Name: {course.name}")

# Iterate through the list of users
i=1
for user in all_users:
    student_nr = user.sis_user_id[1:]
    email = student_nr + 'talnet.nl'
    # print(f"{i} id: {user.id}, name: {user.name}, login_id: {email} student_nr: {student_nr}")
    print(f"insert into user (id, name, login_id, student_nr, klas) values ('{user.id}', '{user.name}', '{email}', '{student_nr}', '4x');")
    i=i+1

Email versturen naar studenten

Elke student heeft een unieke link naar zijn Canvas monitor.

  • Maak een export van alle studenten uit de canvas monitor (menu - beheer - studenten (export).
  • Voeg een kolom toe dir de volledige URL weergeeft.
="https://c20.cmon.ovh/public?code="&G28
  • Voeg een kolom toe die (later) via een Python script een mail via MS Outlook verstuurd.
="Emailer('Beste "&D2&",<br><br>Jouw personal Canvas Monitor link is:<br>"&I2&"<br><br>Succes!','Personal Link for Canvas Monitor','"&C2&"@talnet.nl')"
  • Zet outlook "offline".
  • Maak een emailer.py python file:
import win32com.client as win32

def Emailer(text, subject, recipient):
    outlook = win32.Dispatch('outlook.application')
    mail = outlook.CreateItem(0)
    mail.To = recipient
    mail.Subject = subject
    mail.HtmlBody = text
    mail.send
    
# plak hier de emailer regels uit Excel
  • Plaats de 'e-mailregels' uit Excel in het script en draai het script.
  • Controleer de e-mail in Oulook. Indien juist, zet Outlook "online" en de e-mail wordt verstuurd.

Database Back-up

Zet de nieuwe Canvas Database in de (SQL) backup: /home/max/mysql/backupDB.sh

Crontab (op server)

# create backup of Databases
00 23 * * * /home/max/mysql/backupDB.sh > /home/max/log/backupDB.log 2>&1

# copy all pictures once a week - these should also be present in the restic backup
05 23 * * 0 /home/max/mysql/backupPicts.sh > /home/max/log/backupPicts.log 2>&1

# backup to eu2.contabostorage.com (s3) and clean once a week
30 23 * * * /home/max/restic/restic-backup.sh > /home/max/log/restic-backup.log 2>&1
# clean up
55 23 * * 0 /home/max/restic/restic-clean.sh  > /home/max/log/restic-clean.log 2>&1

# update web statistics -> crontab root
21 04 * * * /home/max/goaccess/update.sh > /home/max/log/update-goaccess.log 2>&1

# back-up to Hi Drive
23 10 * * * /home/max/sync/sync.sh > /home/max/log/sync-hidrive.log 2>&1


# Canvas Monitor

# evaluate prioritization for updates
23 04 * * * cd /home/max/canvas/import/c24 ; /usr/bin/python3 /home/max/canvas/import/bin/set-prio.py > /home/max/canvas/import/c23/set-prio.log 2>&1
22 04 * * * cd /home/max/canvas/import/c23 ; /usr/bin/python3 /home/max/canvas/import/bin/set-prio.py > /home/max/canvas/import/c23/set-prio.log 2>&1
21 04 * * * cd /home/max/canvas/import/c22 ; /usr/bin/python3 /home/max/canvas/import/bin/set-prio.py > /home/max/canvas/import/c22/set-prio.log 2>&1
20 04 * * * cd /home/max/canvas/import/c21 ; /usr/bin/python3 /home/max/canvas/import/bin/set-prio.py > /home/max/canvas/import/c21/set-prio.log 2>&1

# 20 04 * * * cd /home/max/canvas/import/c20 ; /usr/bin/python3 /home/max/canvas/import/bin/set-prio.py > /home/max/canvas/import/c20/set-prio.log 2>&1

# Canvas import jobs first 2 lines are full update and last 2 lines are fast updates (works based on existing assignment ids) - not used anymore
# 54 11,14 * * 1-5 /home/max/canvas/import/import.cron c22 1 > /home/max/canvas/import/import.cron.c22.log
# 59 11,14 * * 1-5 /home/max/canvas/import/import.cron c21 1 > /home/max/canvas/import/import.cron.c21.log

# Prio 1 updates (only update - no new assignments are processed)
56 11,14,17 * * * /home/max/canvas/import/fast-import.cron c24 > /home/max/canvas/import/import.cron.c24.log
55 11,14,17 * * * /home/max/canvas/import/fast-import.cron c23 > /home/max/canvas/import/import.cron.c23.log
54 11,14,17 * * * /home/max/canvas/import/fast-import.cron c22 > /home/max/canvas/import/import.cron.c22.log
53 11,14,17 * * * /home/max/canvas/import/fast-import.cron c21 > /home/max/canvas/import/import.cron.c21.log

# Full prio 1,2 (import delete/insert)
# 55 17    * * 1-5 /home/max/canvas/import/import.cron c23 2 > /home/max/canvas/import/import.cron.c23.log
# 54 17    * * 1-5 /home/max/canvas/import/import.cron c22 2 > /home/max/canvas/import/import.cron.c22.log
# 53 17    * * 1-5 /home/max/canvas/import/import.cron c21 2 > /home/max/canvas/import/import.cron.c21.log

# Full prio 1,2,3 (all) import (delete/insert) during night
50 04    * * * /home/max/canvas/import/import.cron c24 3 > /home/max/canvas/import/import.cron.c24.log
50 04    * * * /home/max/canvas/import/import.cron c23 3 > /home/max/canvas/import/import.cron.c23.log
40 04    * * * /home/max/canvas/import/import.cron c22 3 > /home/max/canvas/import/import.cron.c22.log
30 04    * * * /home/max/canvas/import/import.cron c21 3 > /home/max/canvas/import/import.cron.c21.log
20 04    * * * /home/max/canvas/import/import.cron c20 3 > /home/max/canvas/import/import.cron.c20.log

--