In [ ]:
from odt_parse import OdtData, meta_label, stat_label

In [ ]:
import csv, glob, zipfile

In [ ]:
HOME_FOLDER = '/Users/ecervera/Google Drive/Docencia/Curs1718/PS1002/Examen Enero 1718/'
SUBMISSION_FOLDER = HOME_FOLDER + 'PS1002-2-20172018-Entrega ejercicios prácticos-3118846'

#HOME_FOLDER = '../'
#SUBMISSION_FOLDER = HOME_FOLDER + 'PS1002-2-20172018-Document libro paginado.odt, grups de dijous-3237700'
#SUBMISSION_FOLDER = HOME_FOLDER + 'PS1002-2-20172018-Document libro personalizados.odt, grups de dijous-3237686'
#SUBMISSION_FOLDER = HOME_FOLDER + 'PS1002-2-20172018-Document libro predefinidos.odt, grups de dijous-3219356'
#SUBMISSION_FOLDER = HOME_FOLDER + 'PS1002-2-20172018-Document libro modificado.odt, grups de dijous-3219490'
user_folder = glob.glob(SUBMISSION_FOLDER + '/*')

In [ ]:
with open(SUBMISSION_FOLDER + '.csv', 'w', newline='', encoding='utf8') as csvfile:
    writer = csv.writer(csvfile, delimiter=',',
                        quotechar='|', quoting=csv.QUOTE_MINIMAL)
    headers = ['user_name', 'user_id', 'type', 'filename', 'ext', 'load']
    headers += meta_label
    headers += stat_label
    headers += ['H', 'HE', 'P', 'PE']
    writer.writerow( headers )
    counter = 0
    for ufo in user_folder:
        user_files = glob.glob(ufo + '/*')
        for ufi in user_files:
            tokens = ufi.split('/')
            filename = tokens[-1]
            user_data = tokens[-2]
            user_name, user_id, _, submission_type, _ = user_data.split('_')
            fns = filename.split('.')
            if len(fns) > 1:
                extension = fns[-1]
            else:
                extension = ''
            row = [user_name, user_id, submission_type, filename, extension]
            if extension == 'odt':
                doc = OdtData( ufi )
                if doc.err:
                    row += ['ERR']                    
                else:
                    row += ['OK']
                    try:
                        row += [doc.meta[l] for l in meta_label]
                        row += [doc.stat[l] for l in stat_label]
                        row += [len(doc.H), doc.emptyHeadings, len(doc.P), doc.emptyPars]
                    except KeyError:
                        print('KeyError for user %s' % user_name)
            writer.writerow( row )
            counter += 1
    print('%d rows written.' % counter)

In [ ]: