Better auto finaid handling
Currently the financial aid requests are processed before application time in a google spreadsheet and there is an aincrad endpoint that receives the sheet as CSV and updates. This has caused a lot of annoyances because it uses fuzzy name matching which is quite error-prone (e.g. if someone writes their name as "Yiting Chen" in one place and "Evan Chen" in the other, they don't get matched up).
It would be better if Django handled this somehow, but it's tricky because people don't register for OTIS-WEB until after they've already been accepted.
One approach would be to have the aincrad endpoint store the email address attached to the finaid submission instead. So you would have a model that's basically a table of email address -> finaid award, and then those awards can be claimed either when the user registers, or through a secondary claim form (in the case that someone uses different emails, which I'm sure will happen...). That requires a bit of work to set up, but I think it could be good for next year so I don't have to keep dealing with all the mismatches between names that have happened.
Here's a strange idea for a possible alternative approach.
- Create a financial award model which includes information about how much should be subtracted from the due amount / other info
- For each financial award, create a user model and automatically generate a url (say
https://otis.evanchen.cc/payments/finaid/<hash link>) which upon being ran from a student account, connects to the first student - Create an aincrad url to mass produce financial awards based off input
- Pass out / mass email out urls
I don't really want to do mass emails that are different per person because it's a pain.
aincrad now supports email matching which should work better, i hope