308 lines
7.9 KiB
Python
308 lines
7.9 KiB
Python
"""
|
|
Generator plików csv dla office i losobolew
|
|
Mateusz Skoczek
|
|
Zespół Szkół Ponadgimnazjalnych im. T. Kościuszki w Sobolewie
|
|
luty 2019
|
|
"""
|
|
|
|
|
|
|
|
|
|
## Import bibliotek ##
|
|
|
|
|
|
import time as tm
|
|
import codecs as cd
|
|
|
|
######################
|
|
|
|
|
|
|
|
|
|
## Określanie kodowania plików ##
|
|
|
|
|
|
code = 'utf-8'
|
|
|
|
#################################
|
|
|
|
|
|
|
|
|
|
## Funkcje ##
|
|
|
|
|
|
# Konwertowanie liter #
|
|
|
|
def duze_na_male(text):
|
|
# Funkcja zmienia duże litery na małe
|
|
|
|
return text.lower()
|
|
|
|
def polskie_na_lacinskie(text):
|
|
# Funkcja zamienia małe polskie litery na małe łacińskie litery
|
|
# oraz duże polskie litery na małe łacińskie litery
|
|
|
|
text1 = text.replace('ę', 'e')
|
|
text2 = text1.replace('ó', 'o')
|
|
text3 = text2.replace('ą', 'a')
|
|
text4 = text3.replace('ś', 's')
|
|
text5 = text4.replace('ł', 'l')
|
|
text6 = text5.replace('ż', 'z')
|
|
text7 = text6.replace('ź', 'z')
|
|
text8 = text7.replace('ć', 'c')
|
|
text9 = text8.replace('ń', 'n')
|
|
text10 = text9.replace('Ę', 'e')
|
|
text11 = text10.replace('Ó', 'o')
|
|
text12 = text11.replace('Ą', 'a')
|
|
text13 = text12.replace('Ś', 's')
|
|
text14 = text13.replace('Ł', 'l')
|
|
text15 = text14.replace('Ż', 'z')
|
|
text16 = text15.replace('Ź', 'z')
|
|
text17 = text16.replace('Ć', 'c')
|
|
text = text17.replace('Ń', 'n')
|
|
return text
|
|
|
|
def konwersja_liter(text):
|
|
# Funkcja zamienia jednocześnie duże litery na małe oraz polskie na łacińskie
|
|
# Wymaga funkcji: 'duze_na_male' i 'polskie_na_lacinskie'
|
|
|
|
text = duze_na_male(text)
|
|
text = polskie_na_lacinskie(text)
|
|
return text
|
|
|
|
|
|
# Funkcje tworzące #
|
|
|
|
def inicjaly(imie, nazwisko):
|
|
# Funkcja tworzy inicjały z podanego imienia i nazwiska
|
|
|
|
nazwisko_tab = nazwisko.split(' ')
|
|
nazwisko_inicjaly = ''
|
|
for fragment_nazwiska in nazwisko_tab:
|
|
nazwisko_inicjaly += fragment_nazwiska[0]
|
|
return imie[0] + nazwisko_inicjaly
|
|
|
|
|
|
# Inne #
|
|
|
|
def ostrzezenie(czy_uczniowie):
|
|
# Ostrzeżenie przed rozpoczęciem generowania plików
|
|
|
|
if czy_uczniowie == True:
|
|
print("Upewnij się, że w folderze 'pliki_zrodlowe' znajduje się plik 'lista.txt' z danymi uczniów")
|
|
else:
|
|
print("Upewnij się, że w folderze 'pliki_zrodlowe' znajduje się plik 'lista nauczycieli.txt' z danymi nauczycieli")
|
|
print("Jeżeli w folderze 'pliki_wyjsciowe' znajdują się pliki 'konta.csv' i 'office.csv' zostaną one usunięte")
|
|
print()
|
|
czekaj = input('Naciśnij ENTER, gdy będziesz gotowy')
|
|
|
|
#############
|
|
|
|
|
|
|
|
|
|
## Komponenty ##
|
|
|
|
def uczniowie():
|
|
ostrzezenie(True)
|
|
|
|
|
|
try:
|
|
listatxt = open('pliki_zrodlowe/lista.txt')
|
|
except FileNotFoundError:
|
|
print()
|
|
print("BŁĄD! Plik 'lista.txt' nie został znaleziony")
|
|
print()
|
|
print()
|
|
print('############################')
|
|
print()
|
|
print()
|
|
|
|
uczniowie()
|
|
|
|
|
|
try:
|
|
zawartosc_lista = listatxt.read()
|
|
finally:
|
|
listatxt.close()
|
|
|
|
kontacsv = cd.open('pliki_wyjsciowe/konta.csv', 'w', code)
|
|
officecsv = cd.open('pliki_wyjsciowe/office.csv', 'w', code)
|
|
|
|
ciagi_danych_lista = zawartosc_lista.split('\n\n')
|
|
|
|
for ciag_danych in ciagi_danych_lista:
|
|
dane = ciag_danych.split('\n')
|
|
|
|
klasa = dane[0]
|
|
imie = ((dane[1]).split(', '))[1]
|
|
nazwisko = ((dane[1]).split(', '))[0]
|
|
login = dane[3]
|
|
|
|
imie_male = konwersja_liter(imie)
|
|
nazwisko_male = konwersja_liter(nazwisko).replace(' ', '.')
|
|
|
|
rok = tm.localtime()[0]
|
|
nr_klasy = klasa[0]
|
|
lit_klasy = klasa[1]
|
|
szkola = klasa.split(' ')[1]
|
|
|
|
if klasa[3:] == 'LO':
|
|
numer_klasy = int(klasa[0])
|
|
|
|
if numer_klasy == 1:
|
|
rok_ukoncz = '2021'
|
|
elif numer_klasy == 2:
|
|
rok_ukoncz = '2020'
|
|
elif numer_klasy == 3:
|
|
rok_ukoncz = '2019'
|
|
|
|
znacznik_klasy = rok_ukoncz + klasa[1]
|
|
elif klasa[3:] == 'BS':
|
|
numer_klasy = int(klasa[0])
|
|
|
|
if numer_klasy == 1:
|
|
rok_ukoncz = '2021'
|
|
elif numer_klasy == 2:
|
|
rok_ukoncz = '2020'
|
|
elif numer_klasy == 3:
|
|
rok_ukoncz = '2019'
|
|
|
|
znacznik_klasy = rok_ukoncz + 'bs'
|
|
elif klasa[3:] == 'ZSZ':
|
|
znacznik_klasy = '2019zsz'
|
|
elif klasa[3:] == 'LOD':
|
|
numer_klasy = int(klasa[0])
|
|
|
|
if numer_klasy == 3:
|
|
rok_ukoncz = '2020'
|
|
elif numer_klasy == 5:
|
|
rok_ukoncz = '2019'
|
|
|
|
znacznik_klasy = rok_ukoncz + 'lod'
|
|
|
|
haslo = login + ':' + inicjaly(imie, nazwisko)
|
|
|
|
email = imie_male + '.' + nazwisko_male + znacznik_klasy + '@losobolew.pl'
|
|
|
|
dane_do_konta = email + ',' + haslo + ',500\n'
|
|
|
|
# <email>,<hasło (login do librusa)>,500
|
|
|
|
# email:
|
|
# LO: <imie>.<nazwisko>(<rok_ukończenia_szkoły><litera_klasy>)@losobolew.pl
|
|
# BS: <imie>.<nazwisko>(<rok_ukończenia_szkoły>bs)@losobolew.pl
|
|
# ZSZ: <imie>.<nazwisko>(<rok_ukończenia_szkoły>zsz)@losobolew.pl
|
|
# LOD: <imie>.<nazwisko>(<rok_ukończenia_szkoły>lod)@losobolew.pl
|
|
|
|
kontacsv.write(dane_do_konta)
|
|
|
|
|
|
##############
|
|
|
|
|
|
nazwa = imie + ' ' + nazwisko
|
|
stanowisko = 'uczeń'
|
|
kraj = 'Rzeczpospolita Polska'
|
|
|
|
officecsv.write(email + ',' + imie + ',' + nazwisko + ',' + nazwa + ',' + stanowisko + ',' + klasa + ',,,,,,,,,' + kraj + '\n')
|
|
kontacsv.close()
|
|
officecsv.close()
|
|
|
|
print()
|
|
print()
|
|
print('############################')
|
|
print()
|
|
print()
|
|
|
|
print('Pliki zostały wygenerowane pomyślnie')
|
|
print()
|
|
czekaj = input('Naciśnij ENTER aby wyjść')
|
|
|
|
def nauczyciele():
|
|
ostrzezenie(False)
|
|
|
|
|
|
try:
|
|
listatxt = open('pliki_zrodlowe/lista nauczycieli.txt')
|
|
except FileNotFoundError:
|
|
print()
|
|
print("BŁĄD! Plik 'lista nauczycieli.txt' nie został znaleziony")
|
|
print()
|
|
print()
|
|
print('############################')
|
|
print()
|
|
print()
|
|
|
|
nauczyciele()
|
|
|
|
|
|
try:
|
|
zawartosc_lista = listatxt.read()
|
|
finally:
|
|
listatxt.close()
|
|
|
|
kontacsv = cd.open('pliki_wyjsciowe/konta.csv', 'w', code)
|
|
officecsv = cd.open('pliki_wyjsciowe/office.csv', 'w', code)
|
|
|
|
ciagi_danych_lista = zawartosc_lista.split('\n\n')
|
|
|
|
for ciag_danych in ciagi_danych_lista:
|
|
ciag_danych = ciag_danych.strip('*')
|
|
nazwisko_i_reszta = ciag_danych.split(', ')
|
|
nazwisko = nazwisko_i_reszta[0]
|
|
nazwisko_male = konwersja_liter(nazwisko).replace(' ', '.')
|
|
reszta = nazwisko_i_reszta[1].split(' ')
|
|
imie = reszta[-4]
|
|
imie_male = konwersja_liter(imie)
|
|
haslo = reszta[-2] + ':' + inicjaly(imie, nazwisko)
|
|
email = imie_male + '.' + nazwisko_male + '@losobolew.pl'
|
|
|
|
kontacsv.write(email + ',' + haslo + ',500\n')
|
|
|
|
|
|
#################
|
|
|
|
|
|
nazwa = imie + ' ' + nazwisko
|
|
stanowisko = 'nauczyciel'
|
|
kraj = 'Rzeczpospolita Polska'
|
|
|
|
officecsv.write(email + ',' + imie + ',' + nazwisko + ',' + nazwa + ',' + stanowisko + ',,,,,,,,,,' + kraj + '\n')
|
|
kontacsv.close()
|
|
officecsv.close()
|
|
|
|
print()
|
|
print()
|
|
print('############################')
|
|
print()
|
|
print()
|
|
|
|
print('Pliki zostały wygenerowane pomyślnie')
|
|
print()
|
|
czekaj = input('Naciśnij ENTER aby wyjść')
|
|
|
|
################
|
|
|
|
|
|
|
|
|
|
## START ##
|
|
|
|
print('### GENERATOR PLIKÓW CSV ###')
|
|
print()
|
|
print('1 - Uczniowie')
|
|
print('2 - Nauczyciele')
|
|
print()
|
|
wybor = input('Wybór: ')
|
|
print()
|
|
print()
|
|
print('############################')
|
|
print()
|
|
print()
|
|
|
|
if wybor == '1':
|
|
uczniowie()
|
|
else:
|
|
nauczyciele() |