コード例 #1
0
def main(options, args):
    #define console log handler
    console = logging.StreamHandler()
    formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
    console.setFormatter(formatter)
    console.setLevel(options.console_level)

    #add handler to root logger
    logging.getLogger('').addHandler(console)

    #set loglevel for this module
    log.setLevel(options.loglevel)

    if not os.path.exists(options.csvpath):
        log.error('The folder does not exists.')
        sys.exit(1)

    log.info('Processing list of .csv files')
    for csvfile in glob.glob(os.path.join(options.csvpath, '*.csv')):
        if os.path.splitext(csvfile)[1] != '.csv':
            log.error('No .csv file provided.')
            sys.exit(1)
        log.info('Reading rows and creating Result objects')
        file = open(csvfile, "rb")
        reader = csv.reader(file)

        # Find exportid; count backwards to avoid underscores in foldernames
        exportid = csvfile.split('_')[-2]
        log.debug('exportid = ' + str(exportid))
        try:
            e_run = ExportRun.objects.get(pk=exportid)
        except:
            log.error('No Export Run object found with id: ' + str(exportid))
            sys.exit(1)

        # Skip header
        reader.next()

        for row in reader:
            log.debug(row)

            #Check if object already exists
            existing_objects = Result.objects.filter(area=row[0],
                                                     name=row[1],
                                                     file_location=row[2],
                                                     export_run=e_run)
            log.debug('existing_result_objects =' + str(existing_objects))
            if not existing_objects:
                r = Result(area=row[0],
                           name=row[1],
                           file_location=row[2],
                           export_run=e_run)
                r.save()
        file.close()
        e_run.state = ExportRun.EXPORT_STATE_DONE
        e_run.run_date = datetime.datetime.fromtimestamp(
            os.path.getctime(csvfile))
        e_run.save()
        os.remove(csvfile)