When a new version is created, the latest version is updated, then
the new one is made. If making a new one fails (most commonly due to
a name conflict), the latest version is left in a broken state. Set up
the new middleware to revert changes to latest version in this case,
and update the level handler to use the middleware. Also added
warning logs if models do not have editableProperties or postEditableProperties
set.
It's erroring in my dev console, complaining of duplicate keys, and not sure why.
Adding a test to make sure creating a new level version doesn't break.
Hide TeachersContactModal after sending message
Fix GET /db/level/:handle/session, more extensively test
Fix EnrollmentView number of students input to stop losing focus on input
Fix EnrollmentsView syntax
Fix ActivateLicensesModal "Get Enrollments" button when already in the enrollments page
Update EnrollmentsView with new credit numbers when ActivateLicensesModal closes
Hide search box in TeacherClassView "Enrollment Status" tab
Tweak EnrollmentsView styling
Fix EnrollmentsView tests
Fix AnalyticsView
Make EnrollmentsView more explicitly handle undefined and empty array prepaid groups
Remove log
CoursesView handles JoinClassModal cancel
Re-enable EditStudentModal set password button when the form changes
Fix course instance tests, next level endpoint bug
Fix EditStudentModal tests
* Refactor several related endpoints and views
* Redesign EnrollmentView, add TeacherContactModal
* Add "Enrollment Status" tab to TeacherClassView
* Delete PurchaseCoursesView and related files
* Style-flatten RemoveStudentModal
* Fix error handling in ActivateLicensesModal
* TeacherCoursesView loads faster by only loading course campaigns, and not load prepaids