-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Django FSM migration to Viewflow #4296
Conversation
- Added new `django-viewflow` and `django-filter` dependencies to `requirements.txt`. - New file `viewflow.py` under `/audit/models/` which contains the FSM logic for transitioning an SAC. - Moved `STATUS` enumeration outside of the `SingleAuditChecklist` class. This required import/reference changes across many files and tests. - Removed references of old deprecated library `django-fsm`. - New migration to handle the changing the SAC's `submission_name` field to remove dependency on the deprecated `django-fsm`.
Terraform plan for meta No changes. Your infrastructure matches the configuration.
✅ Plan applied in Deploy to Development and Management Environment #816 |
Terraform plan for dev Plan: 1 to add, 0 to change, 1 to destroy.Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
-/+ destroy and then create replacement
Terraform will perform the following actions:
# module.dev.module.cors.null_resource.cors_header must be replaced
-/+ resource "null_resource" "cors_header" {
!~ id = "*******************" -> (known after apply)
!~ triggers = { # forces replacement
!~ "always_run" = "2024-09-25T19:47:02Z" -> (known after apply)
}
}
Plan: 1 to add, 0 to change, 1 to destroy.
Warning: Argument is deprecated
with module.dev-backups-bucket.cloudfoundry_service_instance.bucket,
on /tmp/terraform-data-dir/modules/dev-backups-bucket/s3/main.tf line 14, in resource "cloudfoundry_service_instance" "bucket":
14: recursive_delete = var.recursive_delete
Since CF API v3, recursive delete is always done on the cloudcontroller side.
This will be removed in future releases
(and 6 more similar warnings elsewhere) ✅ Plan applied in Deploy to Development and Management Environment #816 |
☂️ Python Coverage
Overall Coverage
New FilesNo new covered files... Modified FilesNo covered modified files...
|
Submission statuses working nicely for me but will hold off on approving until Dan takes a look |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks good to me!
Let's keep an eye on the next staging deploy to make sure the migration and E2E tests work as expected.
JFYI: I also lightly edited your description so it wouldn't close the related issue (which still tracks the follow-on migration work) when this PR merges
Part one of #4259
This branch migrates the use of the deprecating
django-fsm
library to usingdjango-viewflow
instead.django-viewflow
anddjango-filter
dependencies torequirements.txt
.viewflow.py
under/audit/models/
which contains the FSM logic for transitioning an SAC.STATUS
enumeration outside of theSingleAuditChecklist
class. This required import/reference changes across many files and tests.django-fsm
.submission_name
field to remove dependency on the deprecateddjango-fsm
.This should be blocked until #4292 (the race condition change) is implemented, since that PR includes some potential git conflicts with this branch that will need to be resolved before merging into
main
.IMPORTANT -
django-fsm
is still referenced as an import for a historical migration in/backend/audit/
. Since we are trying to remove thedjango-fsm
library, this will need to be addressed in a later PR. While this deprecated library is no longer being used anywhere in the system, it still needs to be fixed in the old migration before it can be removed fromrequirements.txt
.How to test
First, make sure that your local is able to install the new
viewflow
dependency withdocker-clean
anddocker-first-run
.Ensure both backend tests with
python manage.py test
and the E2E tests succeed. For bonus points, run through the submission process manually to verify that each of the states are rendering the proper name for the submission as you go through the steps.PR Checklist: Submitter
main
into your branch shortly before creating the PR. (You should also be mergingmain
into your branch regularly during development.)git status | grep migrations
. If there are any results, you probably need to add them to the branch for the PR. Your PR should have only one new migration file for each of the component apps, except in rare circumstances; you may need to delete some and re-runpython manage.py makemigrations
to reduce the number to one. (Also, unless in exceptional circumstances, your PR should not delete any migration files.)PR Checklist: Reviewer
make docker-clean; make docker-first-run && docker compose up
; then rundocker compose exec web /bin/bash -c "python manage.py test"
The larger the PR, the stricter we should be about these points.
Pre Merge Checklist: Merger
-/+ resource "null_resource" "cors_header"
should be destroying and recreating its self and~ resource "cloudfoundry_app" "clamav_api"
might be updating itssha256
for thefac-file-scanner
andfac-av-${ENV}
by default.main
.