Simon Willison’s Weblog


Drawing the rest of the owl

1st March 2021

Originally posted to my internal blog at VaccinateCA

My ambitious goal for the day was to get the new Django/PostgreSQL preview into a state where we could start sending example API requests to it from the help.vaccinate app.

I didn’t quite get that far, but I made a lot of progress. Here are today’s commits. I’ve also created a milestone for this goal, which is currently 6 issues down, 6 to go.

A few highlights from today:

  • I renamed CallReport to Report (#26) after realizing that some of the “reports” we make about the vaccine status of a location do not come from a phone call—they may come from reading a trusted website, or even from a site visit.
  • I changed AvailabilityTag to have new fields for the group (yes/no/skip for the moment, with space for more in the future) and a slug field for values such as skip_call_back_later and vaccinating_50_plus—so we don’t need to send around human strings that we might want to change later (#21). Here’s a screenshot of the new model:


  • I did a bunch of work on the Auth0 implementation—including reworking the model a bit (#30) and finishing the work on using it for the Django Admin (#8). Any user with the Vaccinate CA Staff Auth0 role (should be everyone with an email address as-of a few days ago) can now visit and click the sign-in link to access the admin, in read-only mode. We can open up further edit permissions as we decide what things need to be editable.
  • I finished implementing the logic for applying an AppointmentTag to an imported report based on the data in the Airtable record. This was quite tricky—see issue #20 for blow-by-blow details of how this works.

Tomorrow morning things should get much more exciting: after some discussion on #25 I now know what the first version of the API will look like—essentially an imitation of the Netlify function API documented here—so I’ll be building out a working version of that. Follow that issue for progress reports.