## Usuaris de Centre

Cada membre de la comunitat escolar disposa del seu usuari @cfaclot.cat. Aquest usuari és personal i intransferible.

A continuació s'enllacen els documents per a la gestió d'aquests usuaris.

ORGANITZACIÓ I ESTRUCTURA DE GOOGLE WORKSPACE

Estructura jeràrquica dels Grups Workspace CFACLOT:

ALUMNES ( ACGS, ANGLÈS, COMPETIC, GES )

ACGS ( ACGSA,  ACGSB )

ANGLÈS ( ANGLES1,  ANGLES2, ANGLES3 )

ANGLES1 ( ANGLES1A, ANGLES1B )

ANGLES2 ( ANGLES2A, ANGLES2B )

ANGLES3 ( ANGLES3A, ANGLES3B, ANGLES3C )

COMPETIC ( COMPETIC1, COMPETIC2, COMPETIC3 )

COMPETIC1 ( COMPETIC1A, COMPETIC1B )

COMPETIC2 ( COMPETIC2A, COMPETIC2B )

COMPETIC3 ( COMPETIC3A, COMPETIC3B )

GES ( GES1, GES2 )

GES1 ( GES1A, GES1B )

GES2 ( GES2A, GES2B )


Com que la matricula del nostre centre és viva, cada tutor s'encarrega de mantenir l'estructura de cada grup base actualitzada -altes i baixes. D'aquesta manera els grups superiors sempre es mantenen actualitzats. 

Vista de la pantalla d'administració de grups del Goglle Worspace CFACLOT

CREACIÓ I GESTIÓ D’USUARIS I CANVI DE CURS

Cada inici de curs cal donar d'alta els nous alumnes en les seves unitats organitzatives  corresponents.

A partir de les llistes d'alumnes matriculats es genera, mitjançant eines desenvolupades a l'escola, els arxius .csv que permeten la carrega massiva dels nous correus. 

Actualment aquest procés s'implementa amb l'ajuda d'un full de càlcul desenvolupat a l'escola.
No obstant, i donada la complexitat del procés, s'ha experimentat amb un programa Python per agilitzar i millorar les altes massives. Aquest programa també està essent desenvolupat pels professors de l'escola. 

Generar_Emails.ipynb

# -*- coding: utf-8 -*-

"""Generar_Emails.ipynb


Original file is located at

    https://colab.research.google.com/drive/1-P-iueZJ7L8gZfrUonsZkuEitvKG4GM5

"""


#Imports

import pandas as pd

import csv

import random

import string

from datetime import datetime


#Muntar la unitat ADMIN del Google Drive

from google.colab import drive

drive.mount('/content/drive')


"""Funcions per generar un password.

Utilitzem la segona **generar_random_password**


"""


def password():

  random.seed(datetime.now())

  p = ( random.random() * 10.000 )

  return p


## llista de caràcters admesos al password

cars = list(string.ascii_letters + string.digits + "!@#$%^&*()")


def generar_random_password():

  ## longitud del password

  length = 8


  ## shuffling els caràcters

  random.shuffle(cars)

  ## agafar caràcters de la llista aleatòriament

  password = []

  for i in range(length):

    password.append(random.choice(cars))


  ## shuffling el password resultant

  random.shuffle(password)

  ## convertir la llista a string i retornar

  p = "".join(password)

  return p


"""

Funció per substituir els caràcters no permesos a una adreça de correu.


"""


def replace_esp_car( s ):

  s = s.replace("á","a")

  s = s.replace("à","a")

  s = s.replace("ä","a")


  s = s.replace("é","e")

  s = s.replace("è","e")

  s = s.replace("ë","e")


  s = s.replace("í","i")

  s = s.replace("ì","i")

  s = s.replace("ï","i")


  s = s.replace("ó","o")

  s = s.replace("ò","o")

  s = s.replace("ö","o")


  s = s.replace("ú","u")

  s = s.replace("ù","u")

  s = s.replace("ü","u")


  s = s.replace("ñ","n")


  s = s.replace("ª","")


  return s


#A la variable f_alumnes indicar el fitxer a tractar. 

#El fitxer f_csv_output serà l'importable a Google Workspace

#Nom del fitxer amb la llista dels alumnes

f_alumnes = "Llista_Alumnes_TEST.txt"

#Path al Drive del fitxer

path = "/content/drive/Shareddrives/ADMIN/colab/"


#Unitat organitzativa corresponent a Google Workspace

UO = "/Alumnes/GES/GES1"


#Carregem el fitxer a la variables alumnes

fitxer = path + f_alumnes

id_fitxer = open(fitxer,"r")

alumnes = id_fitxer.readlines()


#Obrim l'arxiu .csv per anar escrivint en ell

#El fitxer f_csv_output serà l'importable més tard a Google Workspace

f_csv_output = path + "output.csv"


#Capçalera del .csv

cap_csv = {"First Name": [],

           "Last Name": [],

           "Email Address": [],

           "Password": [],

           "Org Unit Path": []}

#Definim un dataframe amb la capçalera del .csv. A aquest dataframe anirem afegint alumnes i després ho exportarem a output.csv

df = pd.DataFrame(cap_csv)




#Procesem línia a línia la llista alumnes

i = 0

for alumne in alumnes:

    i += 1

    #Converteix la cadena a minúscules i elimina blancs sobrants

    s = alumne.lower()

    s = " ".join(s.split())


    #Elimina caràcters no permesos a un email

    s = replace_esp_car(s)


    #Extreu nom i cognoms des de s

    pos_coma = s.find(",")

    cgs = s[0:pos_coma].strip()

    nom = s[pos_coma + 1:len(s)].strip()


    #Deixem sense més tractament nom i cgs per inserir-ho al dataframe

    nom_df = nom.upper()

    cgs_df = cgs.upper()


    #Extreu cognom 1 i cognom 2 des de cgs

    pos_blanc = cgs.find(" ")

    cg_1 = cgs[0:pos_blanc].strip()

    cg_2 = cgs[pos_blanc + 1:len(cgs)].strip()

    

    #Eliminem blancs de nom, cg_1 i cg_2

    nom = nom.replace(" ", "")

    cg_1 = cg_1.replace(" ", "")

    cg_2 = cg_2.replace(" ", "")


    #cg_2 només els dos primers caràcters

    cg_2 = cg_2[0:2]



    #print(s)

    email = nom + "." + cg_1 + "." + cg_2 + "@cfaclot.cat"

    p = generar_random_password()

    nou_alumne = {'First Name':nom_df, 'Last Name':cgs_df, 'Email Address':email, 'Password':p, 'Org Unit Path':UO}

    #afegir nou alumne al dataframe

    df = df.append(nou_alumne, ignore_index=True)

    print(email)

    #print(" ")



#print(df)

df.to_csv(f_csv_output)


"""# New Section


# New Section

"""

SUPERVISIÓ DELS USUARIS DE L'ALUMNAT

El centre disposa d'un protocol de restauració de contrasenyes i de gestió integral de la problemàtica d'un ús massiu dels correus.


Especificar el protocol