Performance updates - add simple caching layer for model access.
required_fieldnames should not be a property
remove is_valid, the caller can handle the exceptions directly.
start splitting up bulk_import for refactoring
Don't validate the column names for each row, the DictReader makes them all the same.
More efficient is_valid function (compares required field primary keys only)
Refactoring bulk_import as a class
In progress
Refactor field names (no longer a property, more efficient query)
test_data.json hasn't been updated for two years and doesn't work anymore. Remove (regenerate later)
Remove unused expensive query.
Refactor dictionary access
Use flat=True
Add cached lookup function for a DataSheet's required field name mapping.
Refactor get_required_val to use cache instead of directly querying the database.
Add debug toolbar, johnny cache
Remove simple caching layer (in favor of johnny-cache)
More bulk_import refactoring
Use flat=True
Remove old methods
Refactor DataSheetForm.save() - use bulk_create() to insert FieldValues.
When saving Events in bulk_import, collect bulk_create generators from each form and insert them all at once.
Move transaction.commit_on_success to decorator
More performance improvements
Add profiler middleware (for debugging)