Skip to content

Commit 89b2c94

Browse files
committed
Uses viewflow for project and remove django-fsm, updated migrations
1 parent f9bf8cd commit 89b2c94

14 files changed

Lines changed: 1426 additions & 1254 deletions

hypha/apply/funds/migrations/0033_use_django_fsm.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
# Generated by Django 2.0.2 on 2018-06-11 16:14
22

33
from django.db import migrations, models
4-
import django_fsm
54

65

76
class Migration(migrations.Migration):
@@ -13,8 +12,9 @@ class Migration(migrations.Migration):
1312
migrations.AlterField(
1413
model_name="applicationsubmission",
1514
name="status",
16-
field=django_fsm.FSMField(
17-
default="in_discussion", max_length=50, protected=True
15+
field=models.CharField(
16+
default="in_discussion",
17+
max_length=50,
1818
),
1919
),
2020
migrations.AlterField(
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
# Generated by Django 4.2.21 on 2025-06-02 10:04
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
dependencies = [
8+
("funds", "0126_add_max_length"),
9+
]
10+
11+
operations = [
12+
migrations.AlterField(
13+
model_name="applicationsubmission",
14+
name="status",
15+
field=models.CharField(
16+
choices=[
17+
("com_accepted", "Accepted"),
18+
("concept_review_discussion", "Ready For Discussion"),
19+
("post_proposal_review_more_info", "More information required"),
20+
("post_external_review_more_info", "More information required"),
21+
("ext_accepted", "Accepted"),
22+
("ext_post_external_review_discussion", "Ready For Discussion"),
23+
("proposal_more_info", "More information required"),
24+
("invited_to_proposal", "Concept Accepted"),
25+
("proposal_rejected", "Dismissed"),
26+
("draft_proposal", "Invited for Proposal"),
27+
("same_more_info", "More information required"),
28+
("com_almost", "Accepted but additional info required"),
29+
("same_post_review_more_info", "More information required"),
30+
("same_determination", "Ready for Determination"),
31+
("same_internal_review", "Review"),
32+
("post_external_review_discussion", "Ready For Discussion"),
33+
("rejected", "Dismissed"),
34+
("concept_internal_review", "Internal Review"),
35+
("com_post_review_more_info", "More information required"),
36+
("almost", "Accepted but additional info required"),
37+
("determination", "Ready for Determination"),
38+
("internal_review", "Internal Review"),
39+
("ext_post_external_review_more_info", "More information required"),
40+
("com_more_info", "More information required"),
41+
("concept_determination", "Ready for Preliminary Determination"),
42+
("concept_rejected", "Dismissed"),
43+
("ext_post_review_discussion", "Ready For Discussion"),
44+
("ext_determination", "Ready for Determination"),
45+
("same_rejected", "Dismissed"),
46+
("post_review_discussion", "Ready For Discussion"),
47+
("com_rejected", "Dismissed"),
48+
("ext_external_review", "External Review"),
49+
("post_proposal_review_discussion", "Ready For Discussion"),
50+
("concept_review_more_info", "More information required"),
51+
("post_review_more_info", "More information required"),
52+
("com_internal_review", "Internal Review"),
53+
("same_post_review_discussion", "Ready For Discussion"),
54+
("com_open_call", "Open Call (public)"),
55+
("com_determination", "Ready for Determination"),
56+
("proposal_internal_review", "Internal Review"),
57+
("same_accepted", "Accepted"),
58+
("com_post_review_discussion", "Ready For Discussion"),
59+
("ext_internal_review", "Internal Review"),
60+
("ext_rejected", "Dismissed"),
61+
("com_external_review", "External Review"),
62+
("external_review", "External Review"),
63+
("same_almost", "Accepted but additional info required"),
64+
("com_post_external_review_discussion", "Ready For Discussion"),
65+
("concept_more_info", "More information required"),
66+
("in_discussion", "Need screening"),
67+
("com_post_external_review_more_info", "More information required"),
68+
("ext_almost", "Accepted but additional info required"),
69+
("com_community_review", "Community Review"),
70+
("ext_more_info", "More information required"),
71+
("proposal_almost", "Accepted but additional info required"),
72+
("ext_post_review_more_info", "More information required"),
73+
("more_info", "More information required"),
74+
("draft", "Draft"),
75+
("proposal_discussion", "Proposal Received"),
76+
("proposal_determination", "Ready for Final Determination"),
77+
("accepted", "Accepted"),
78+
("proposal_accepted", "Accepted"),
79+
],
80+
default="in_discussion",
81+
max_length=100,
82+
),
83+
),
84+
]

hypha/apply/projects/migrations/0045_use_fsm_field_for_status.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
# Generated by Django 2.2.26 on 2022-01-27 10:12
22

3-
from django.db import migrations
4-
import django_fsm
3+
from django.db import migrations, models
54

65

76
class Migration(migrations.Migration):
@@ -13,7 +12,7 @@ class Migration(migrations.Migration):
1312
migrations.AlterField(
1413
model_name="invoice",
1514
name="status",
16-
field=django_fsm.FSMField(
15+
field=models.CharField(
1716
choices=[
1817
("submitted", "Submitted"),
1918
("resubmitted", "Resubmitted"),

hypha/apply/projects/migrations/0050_add_new_invoice_status.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
# Generated by Django 3.2.12 on 2022-04-06 07:12
22

3-
from django.db import migrations
4-
import django_fsm
3+
from django.db import migrations, models
54

65

76
class Migration(migrations.Migration):
@@ -13,7 +12,7 @@ class Migration(migrations.Migration):
1312
migrations.AlterField(
1413
model_name="invoice",
1514
name="status",
16-
field=django_fsm.FSMField(
15+
field=models.CharField(
1716
choices=[
1817
("submitted", "Submitted"),
1918
("resubmitted", "Resubmitted"),

hypha/apply/projects/migrations/0077_alter_invoice_status.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
# Generated by Django 3.2.19 on 2023-06-22 05:12
22

3-
from django.db import migrations
4-
import django_fsm
3+
from django.db import migrations, models
54

65

76
class Migration(migrations.Migration):
@@ -16,7 +15,7 @@ class Migration(migrations.Migration):
1615
migrations.AlterField(
1716
model_name="invoice",
1817
name="status",
19-
field=django_fsm.FSMField(
18+
field=models.CharField(
2019
choices=[
2120
("submitted", "Submitted"),
2221
("resubmitted", "Resubmitted"),

hypha/apply/projects/migrations/0080_alter_invoice_status.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
# Generated by Django 3.2.20 on 2023-09-19 06:23
22

3-
from django.db import migrations
4-
import django_fsm
3+
from django.db import migrations, models
54

65

76
class Migration(migrations.Migration):
@@ -13,7 +12,7 @@ class Migration(migrations.Migration):
1312
migrations.AlterField(
1413
model_name="invoice",
1514
name="status",
16-
field=django_fsm.FSMField(
15+
field=models.CharField(
1716
choices=[
1817
("submitted", "Submitted"),
1918
("resubmitted", "Resubmitted"),
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# Generated by Django 4.2.21 on 2025-06-02 10:04
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
dependencies = [
8+
("application_projects", "0101_alter_invoice_message_for_pm"),
9+
]
10+
11+
operations = [
12+
migrations.AlterField(
13+
model_name="invoice",
14+
name="status",
15+
field=models.CharField(
16+
choices=[
17+
("submitted", "Submitted"),
18+
("resubmitted", "Resubmitted"),
19+
("changes_requested_staff", "Changes requested by staff"),
20+
("changes_requested_finance_1", "Changes requested by finance"),
21+
("approved_by_staff", "Approved by staff"),
22+
("approved_by_finance_1", "Approved by finance"),
23+
("paid", "Paid"),
24+
("payment_failed", "Payment failed"),
25+
("declined", "Declined"),
26+
],
27+
default="submitted",
28+
max_length=30,
29+
),
30+
),
31+
]

hypha/apply/projects/models/payment.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from django.db.models.functions import Coalesce
99
from django.urls import reverse
1010
from django.utils.translation import gettext_lazy as _
11-
from django_fsm import FSMField, transition
11+
from viewflow.fsm import State
1212

1313
from hypha.apply.utils.storage import PrivateStorage
1414

@@ -131,16 +131,28 @@ class Invoice(models.Model):
131131
)
132132
invoice_date = models.DateField(null=True, verbose_name=_("Invoice date"))
133133
paid_date = models.DateField(null=True, verbose_name=_("Paid date"))
134-
status = FSMField(default=SUBMITTED, choices=INVOICE_STATUS_CHOICES)
134+
status = models.CharField(
135+
default=SUBMITTED, choices=INVOICE_STATUS_CHOICES, max_length=30
136+
)
137+
status_field = State(default=SUBMITTED, states=INVOICE_STATUS_CHOICES)
135138
objects = InvoiceQueryset.as_manager()
136139

137140
wagtail_reference_index_ignore = True
138141

139142
def __str__(self):
140143
return _("Invoice requested for {project}").format(project=self.project)
141144

142-
@transition(
143-
field=status, source=INVOICE_TRANSITION_TO_RESUBMITTED, target=RESUBMITTED
145+
@status_field.getter()
146+
def _get_object_status(self):
147+
return self.status
148+
149+
@status_field.setter()
150+
def _get_object_status(self, value):
151+
self.status = value
152+
return self.status
153+
154+
@status_field.transition(
155+
source=INVOICE_TRANSITION_TO_RESUBMITTED, target=RESUBMITTED
144156
)
145157
def transition_invoice_to_resubmitted(self):
146158
"""

hypha/settings/django.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
"django_filters",
5252
"hypha.addressfield",
5353
"django_nh3",
54-
"django_fsm",
54+
"viewflow",
5555
"django_slack",
5656
"django_otp",
5757
"django_otp.plugins.otp_totp",

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ dependencies = [
2222
"django-file-form~=3.8.0",
2323
"django-filter==23.5",
2424
"django-formtools~=2.5.1",
25-
"django-fsm~=2.8.2",
2625
"django-heroku~=0.3.1",
2726
"django-hijack~=3.7.0",
2827
"django-htmx~=1.23.0",
@@ -62,6 +61,7 @@ dependencies = [
6261
"xmltodict~=0.14.2",
6362
"wagtail-modeladmin>=2.1.0",
6463
"redis>=5.2.1",
64+
"django-viewflow>=2.2.11",
6565
]
6666

6767
[dependency-groups]

0 commit comments

Comments
 (0)