system-pri/backend/app/coordinator/utils.py

43 lines
1.3 KiB
Python

from typing import Generator, Any
from random import randint
import pandas as pd
from .exceptions import InvalidNameOrTypeHeaderException
from ..students.models import Student
def check_columns(df: pd.DataFrame) -> bool:
headers = set(df.keys().values)
columns = ['NAZWISKO','IMIE','INDEKS','PESEL','EMAIL']
if len(headers - set(columns)) != 0:
return False
flag = True
col_types = ['object', 'object', 'int', 'float64', 'object']
for name, col_type in zip(columns, col_types):
if not str(df.dtypes[name]).startswith(col_type):
flag = False
break
return flag
def parse_csv(file, mode) -> Generator[Student, Any, None]:
df = pd.read_csv(file)
# if not check_columns(df):
# raise InvalidNameOrTypeHeaderException
students = (Student(last_name = dict(item.items())['NAZWISKO'],
first_name = dict(item.items())['NAZWISKO'],
index = dict(item.items())['INDEKS'],
pesel = str(int(dict(item.items())['PESEL'])) if not pd.isna(dict(item.items())['PESEL']) else '',
email = dict(item.items())['EMAIL'],
mode=mode)
for _, item in df.iterrows())
return students