(model_classes, file_name, csv_record_to_objects)
| 107 | |
| 108 | |
| 109 | def build_generic(model_classes, file_name, csv_record_to_objects): |
| 110 | batches = {} |
| 111 | for model_class in model_classes: |
| 112 | clear_table(model_class) |
| 113 | batches[model_class] = [] # one batch per model class |
| 114 | |
| 115 | csv_data = load_data(file_name) |
| 116 | next(csv_data, None) # skip header |
| 117 | |
| 118 | for csv_record in csv_data: |
| 119 | for obj in csv_record_to_objects(csv_record): |
| 120 | model_class = type(obj) |
| 121 | batches[model_class].append(obj) |
| 122 | |
| 123 | # Limit the batch size |
| 124 | if len(batches[model_class]) > 200: |
| 125 | model_class.objects.bulk_create(batches[model_class]) |
| 126 | batches[model_class] = [] |
| 127 | |
| 128 | for model_class, batch in batches.items(): |
| 129 | model_class.objects.bulk_create(batch) |
| 130 | |
| 131 | |
| 132 | def scrub_str(string): |
no test coverage detected