* refactor: Split up get_creation_date to ease testing
* test: Add tests of parse_creation_date()
Note change in expected output when date_elt is None:
instead of returning None, this expects today's date.
* fix: Return today instead of None when date is absent
* fix: Handle empty string for day attribute
* test: Check a couple more parse_creation_date cases
* fix: Revert to returning None when date elt is absent
* style: black
This adds a table to show the state of all nomcom positions, and lets the
chair set or un-set multiple state flags at the same time.
As a consequence, it moves the email templates to the "Edit position" form.
* fix: improve when Message objects are created
* test: further improve feedback test
* fix: improve and test another form
* test: Restructure test infrastructure
* feat: import IAB minutes from the IAB wordpress site
Work in Progress
* fix: refactor as management commands
* fix: use datetime.timezone.utc for comparisons
* fix: coerce an argument. Command now runs
* chore: extend queryset in a better way
* fix: fetch kesara's repo and move files into place.
* fix: add a DocEvent explaining where the Documents came from
* fix: small optimizations and typo fixes
* fix: performance compromise for very old meetings
* fix: ensure variable is initialized
* fix: avoid operating on null by changing method signature - address review comments
* fix: repair html typo and address pyflake complaint
* chore: run black on a new and changed things
* feat: Quietly check submission status before reloading
* chore: Remove misleading "time since" display
* feat: Back off submission status poll frequency
* chore: Fix code comment
* test: Test paste-email-feedback-form with missing headers and/or body
* fix: Don't crash if paste-email-feedback-form doesn't contain a Subject line
* test: Test that paste-email-feedback-form requires headers
* fix: If email headers are missing, prompt the user to try again
* chore: retrigger PR checks
* fix: Don't add "essential people" to session requests by default
Because since #5169 we ask they not be included anymore. (This was part of my
original change but I guess I forgot to add it to the PR...)
* Don't import Person
* fix: tweak Nomination.share_nominator label text
"Share nominator name with candidate" was confusing, because it's
imperative, where it's really intended to be permissive - it's okay to
share with the candidate.
* chore: add migration for label text
* feat: Subclass PyMemcacheCache to tolerate too-large object errors
* fix: Use LenientMemcacheCache to prevent search errors
* fix: Re-raise errors other than "object too large"