trade = map(clean_trade, row[1:]) i = 0 while i < len(trade): if trade[i]: if (exp_imp[i] == "imports") and ((i + 1) < len(trade)) and (partners[i] == partners[i + 1]) and trade[i + 1]: new_data = BilateralTradeDataEntry(location = loc, trade_partner = partners[i], imports = trade[i], exports = trade[i + 1], begin_date = begin_year, end_date = end_year, source = src, submitted_by = mig_user) new_data.save() i += 1 else: kwargs = { 'location' : loc, 'trade_partner' : partners[i], exp_imp[i] : trade[i], 'begin_date' : begin_year, 'end_date' : end_year, 'source' : src, 'submitted_by' : mig_user } new_data = BilateralTradeDataEntry(**kwargs) new_data.save() i += 1
del rdict["primary_source_1"] del rdict["primary_source_2"] rdict["active"] = True rdict["submitted_by"] = migtools.mig_user try: entry = BilateralTradeDataEntry(**rdict) if entry.imports == "-9": if entry.exports == "-9": sys.stdout.write("[%i] %s - %s (dropped; missing data)\n" % (i, entry.location, entry.trade_partner)) continue else: entry.imports = None elif entry.exports == "-9": entry.exports == None else: # TEMPORARY: add only entries with missing data sys.stdout.write("[%i] %s - %s (ignored for now)\n" % (i, entry.location, entry.trade_partner)) continue entry.save() num_mig += 1 sys.stdout.write("[%i] %s - %s\n" % (i, entry.location, entry.trade_partner)) except (ValueError, DatabaseError, ValidationError) as e: sys.stderr.write('Failed to save data row (%i): %s\n' % (i, e)) num_err_rows += 1 print 'Migration complete. %i rows migrated, %i locations created, and %i row errors encountered and ignored' % (num_mig, num_locs, num_err_rows)