Simon Willison’s Weblog

Drawing the rest of the owl

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:

Select_availability_tag_to_change___Django_site_admin

  • 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 @vaccinateca.com email address as-of a few days ago) can now visit https://vaccinateca-preview.herokuapp.com/ 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.