* feat: move to postgresql
* fix: repair fractional replace statement
* fix: use pathlib to manipulate settings_local
Co-authored-by: Jennifer Richards <jennifer@painless-security.com>
* fix: do two string replacements, not one followed by another that throws away the first.
Co-authored-by: Jennifer Richards <jennifer@painless-security.com>
* fix: use pathlib again to manipulate settings_local
Co-authored-by: Jennifer Richards <jennifer@painless-security.com>
* fix: properly use assert (1/2)
Co-authored-by: Jennifer Richards <jennifer@painless-security.com>
* fix: properly use assert (2/2)
Co-authored-by: Jennifer Richards <jennifer@painless-security.com>
Co-authored-by: Jennifer Richards <jennifer@painless-security.com>
* chore: add migration to change timestamps to UTC
* chore: fill in Meeting.time_zone where it is blank
Nearly all interim meetings on or before 2016-07-01 have blank
time_zone values. This migration fills these in with PST8PDT.
* chore: disallow blank Meeting.time_zone value
* refactor: no need to handle blank time_zone case in TZ migration
* refactor: remove now-unnecessary checks that meeting has time_zone
* chore: renumber migrations
* chore: update timestamp conversion migration
The django-celery-beat package introduces tables with timestamp
columns. These columns are stored in CELERY_TIMEZONE. Because we run with
this set to UTC, the migration ignores these columns.
* chore: fix pytz-related change in migration
* chore: be explicit that Meeting.vtimezone can return None
* refactor: remove unnecessary save()
* refactor: replace datetime.now with timezone.now
* refactor: migrate model fields to use timezone.now as default
* refactor: replace datetime.today with timezone.now
datetime.datetime.today() is equivalent to datetime.datetime.now(); both
return a naive datetime with the current local time.
* refactor: rephrase datetime.now(tz) as timezone.now().astimezone(tz)
This is effectively the same, but is less likely to encourage accidental
use of naive datetimes.
* refactor: revert datetime.today() change to old migrations
* refactor: change a missed datetime.now to timezone.now
* chore: renumber timezone_now migration
* chore: renumber migrations
* feat: add model to track session attendance
* feat: add model to track session attendance
* feat: add api to set session attendees
* fix: use user pk instead off person pk in the attended api.
* feat: calculate three of five from attended
* feat: management utility to populate Attended model history
* docs: document why nomcom calculations don't use Attended yet.
* fix: add migration to add new personalapikey endpoint to choices
* test: verify very old last login prevents api key use,
* chore: address review nits
* chore: comment on some idiosyncracies of the expected input to populate_attended
* fix: add unique_together constraint for the Attended model
* fix: correctly handle empty querysets passed to three_of_five_eligible functions.
Track slide submissions even after acceptance or rejection. Fixes#2835.
- Legacy-Id: 18421
Note: SVN reference [18371] has been migrated to Git commit 21ba67fb79
assignments on the base schedule are shown in the pages for the
schedule, read-only.
This allows managing things like breaks and misc sessions separately
from the regular WG sessions.
Base schedules are not allowed to be the base of other base schedules
(the hierarchy can only be one level deep) to simplify the mental
model and the code.
Add link for creating new schedules instead of relying on copying
Empty-Schedule and change the meeting creation code to no longer
create the special Empty-Schedule. Instead a "base" schedule is
created and a first schedule with the name and permissions of the user
creating the meeting, using "base" as base.
Speed up a couple of the Secretariat/AD agenda views by adding
prefetches.
- Legacy-Id: 18355
from. Add utility function and view for diff'ing two arbitrary
schedules, and modify the schedule list page to show the number of
differences between the origin of a schedule, linking to the diff, to
make it easy to see what's changed between work-in-progress schedules.
- Legacy-Id: 18337
Rearrange schedules in schedule list and be more consistent in the
naming. Add edit properties link to the meeting schedule editor.
Reword the Schedule.visible and .public help texts to try to better
explain what setting the fields results in.
- Legacy-Id: 18111
session when rescheduling a session after the schedule is made the
official meeting schedule.
Show both cancelled and rescheduled sessions as tombstones in the new
meeting schedule editor.
Add support for showing rescheduled tombstones in the meeting agenda
views.
Adjust the Secretariat session tool so that it's not possible to
(re)cancel cancelled or rescheduled tombstones.
- Legacy-Id: 18108
upcoming automatic scheduling assistance:
. Added a management command to create a dummy IETF 999 meeting.
. Added display of new constraints and joint sessions to agenda builder
interface.
. The new timerange, time_relation and wg_adjacent constraints, along with
the joint_with_groups option, are now reflected in the special requests
field. This allows them to be taken into account while scheduling
sessions.
. Clarified the wording in the session request form regarding conflicts with
BOFs.
. Added support for structured entry and storage of joint sessions in
meetings:
- Also adds additional tests for the SessionForm
- Fixes a javascript error in session requests for non-WG groups,
that could cause incorrect form behaviour.
- Expands the tests added in [17289] a bit.
. Added support for the timerange, wg_adjacent and time_relation constraints.
This adds three new constraints to the database and relevant UIs:
- timerange: "This WG can't meet during these timeframes"
- wg_adjacent: "Schedule adjacent to another WG (directly following,
no breaks, same room)"
- time_relation: schedule the two sessions of one WG on subsequent
days or with at least one day seperation
- Legacy-Id: 17605
Note: SVN reference [17289] has been migrated to Git commit a227813dc5
This adds three new constraints to the database and relevant UIs:
- timerange: "This WG can't meet during these timeframes"
- wg_adjacent: "Schedule adjacent to another WG (directly following,
no breaks, same room)"
- time_relation: schedule the two sessions of one WG on subsequent
days or with at least one day seperation
- Legacy-Id: 17289
* Renamed Meeting.agenda to Meeting.schedule together with a bunch of related
internal things
* Moved Session.status, .requested, and .requested_by to a new SchedulingEvent.
* Turned sessions into regular sessions and non-sessions into misc.
sessions in the UI and code to avoid ambiguity.
This doesn't change the data in the DB except for uses of
TimeSlotTypeName where 'session' is now 'regular'.
- Legacy-Id: 17153
sessions in the UI and code to avoid ambiguity.
This doesn't change the data in the DB except for uses of
TimeSlotTypeName where 'session' is now 'regular'.
- Legacy-Id: 17128