Gestire gli inserimenti dei nuovi studenti

Partiamo dal caso più ostico, cioè quando viene fornito un elenco di tutti gli studenti dell’Istituto per il corrente anno scolastico senza specificare chi siano i nuovi iscritti, dato fondamentale per gestire eventuali omonimie nel caso in cui si adotti la sintassi nome.cognome@dominio. Non basta infatti un semplice confronto tra gli indirizzi email vecchi e nuovi tramite Excel/Google Fogli, in quanto un nuovo alunno omonimo di uno studente già iscritto potrebbe risultare come già inserito quando in realtà non è così.

Per ovviare a tale problema si possono effettuare questi passaggi:

  1. Chiedere un elenco in formato xls degli studenti iscritti dello scorso anno scolastico comprensivo dell’ID univoco normalmente assegnato dal Registro Elettronico. I campi necessari sono: Id Alunno, Nome, Cognome, Cod Meccanografico, Classe. Nel nostro Istituto usiamo il registro elettronico Spaggiari, ma di norma ogni registro Elettronico dovrebbe assegnare un codice univoco ad ogni utente. L’elenco deve essere in Google Fogli o al limite in xls da importare successivamente in Google Fogli

    Per ottenere l’elenco degli studenti degli anni scolastici passati dal Registro Elettronico Spaggiari il percorso è il seguente:
    • Classeviva -> Alunni2.0 -> Stampe -> Generica.
    • Selezionare l’anno scolastico che ci interessa dal menù a tendina.
    • Cliccare su “Cerca” in alto a destra
    • Clic su “Stampa e Esporta” in alto a destra
    • Selezionare “Esporta”
    • Clic sul pulsante “Esegui”. Verrà scaricato un file xls dal quale andranno eliminate molte delle colonne presenti, basterà conservare i campi sopraelencati.
  2. Aggiungere una colonna “Email” e una colonna “Id Aggiornato”, rigenerare gli indirizzi email istituzionali su Google Fogli e correggere manualmente le omonimie dove necessario (normalmente aggiungo un numero prima della chiocciola in caso di omonimia).
  3. Tramite script in Python, inserire l’ID di ogni utente nella piattaforma Google Workspace in modo che compaia nel campo “ID dipendente”. Il file in questione si chiama setUsersId.py ed è il seguente
from utilities import User
from services import gspreadSrv

ss = gspreadSrv.open('Elenco Studenti 2021/2022')
sh = ss.worksheet('Foglio1')
records = sh.get_all_records()

column = sh.row_values(1).index('Id Aggiornato') + 1

row = 2

for record in records:
    if record['Id Aggiornato'] == "":
        user = User(record['Email'])
        if user.emailExists():
            user.setUserId(record['Id Alunno'])
            print(f"{user.email}: id aggiornato a {record['Id Alunno']}")
            updatedId = "SI"
        else:
            print(f"{user.email} non esistente")
            updatedId = "NO"
        sh.update_cell(row, column, updatedId)

    row += 1

4. Chiedere un elenco degli studenti iscritti per l’anno scolastico corrente con gli stessi campi dell’elenco precedente più un campo “Religione Cattolica” con valori “SI/NO”, utile in fase di creazione dei gruppi.

Sempre su Registro Elettronico Spaggiari, l’elenco è ottenibile tramite questi passaggi:

  • Classeviva -> Aunni2.0 -> Stampe -> Esportazioni Web.
  • Sulla riga “Anagrafica Alunni” cliccare su “Nuova Estrazione”.
  • Sulla parte sinistra dello schermo cliccare i seguenti campi rispettando l’ordine: Id Alunno, Nome, Cognome, Cod Meccanografico, Classe, Religione Cattolica, Stato Alunno .
  • Sulla parte destra dello schermo cliccare sulla lente di ingrandimento della riga “Stato Alunno” e impostare il filtro con i valori “Uguale” e “Frequenta”.
  • Cliccare su Xls in alto a destra: otterremo un file xls da importare in Google Fogli.

5. Cancellare il campo “Stato Alunno” e aggiungere un campo “Email” e un campo “Nuovo” e successivamente lanciare uno script che controlla semplicemente se l’Id Alunno è già presente in piattaforma: in caso affermativo lo script si limita a ricopiare l’indirizzo email nella colonna “Email” e a impostare il campo “Nuovo” su “Falso”. In caso contrario, automaticamente:

  • genera la mail dello studente
  • gestisce ricorsivamente l’omonimia aggiungendo un numero prima della chiocciola
  • assegna all’utente l’unità organizzativa “Studenti”
  • assegna la password
  • Inserisce l’utente in piattaforma

Il campo “Nuovo” viene impostato su “Vero” e così si ha la possibilità di filtrare attraverso Google Fogli i nuovi iscritti nel caso in cui ne abbia necessità.

Il file si chiama insertNewStudents.py

from utilities import User, OrgUnit
from services import gspreadSrv
import time

ss = gspreadSrv.open('Elenco Studenti 2022/2023')
sh = ss.worksheet('Foglio1')
records = sh.get_all_records()

emailColumn = sh.row_values(1).index('Email') + 1
newColumn = sh.row_values(1).index('Nuovo') + 1

orgUnit = OrgUnit()
orgUnitPath = orgUnit.getOrgUnitPathByName("Studenti")

sleep = 2

row = 2

for record in records:
    if record['Email'] == "":
        user = User("")
        
        if not user.idExists(str(record["Id Alunno"])):
            user.setProperties(record['Nome'], record['Cognome'], orgUnitPath, True, str(record["Id Alunno"]))
            user.checkEmail()
            user.create(password="stud1234")
            print(f'NUOVO: {user.name} {user.surname} inserito con l\'indirizzo email {user.email}')
        else:
            user.new = False
            user.getEmailById(record['Id Alunno'])
            print(f"GIA\' ESISTENTE: {record['Nome']} {record['Cognome']} email: {user.email}")
        cells = sh.range(row, emailColumn, row, newColumn)
        cells[0].value = user.email
        cells[1].value = user.new
        sh.update_cells(cells)
        
    row += 1
    time.sleep(sleep)

Ovviamente l’esecuzione sarà tanto più lunga quanto più nutrito sarà l’elenco degli studenti. Lo script è comunque strutturato per riprendere da dove aveva lasciato nel caso di interruzione accidentale. Tutte queste operazioni sono illustrate in questo tutorial video (i nomi degli utenti non sono reali). Successivamente potremo passare alla creazione dei gruppi studenti.