Skip to content

Commit e9e4c24

Browse files
authored
New organization application statuses (#17765)
* (orgs) refactor OrganizationApplication.is_approved to an Enum * (orgs): update user management view to display org application status * (orgs admin): update org application list * (orgs admin): add actions for requestmore/defer application * (orgs applications) add a basic manage view for pending requests * (orgs applications): implement request/response tooling for org application information requests * translations * (orgs admin) don't require re-auth on admin org routes * (chore) refactor OrganizationApplicationStatus to an enum.StrEnum * address notes from code review NOTE: WAREHOUSE_DOMAIN is not set by default in development, so it will show as "None" * translations * drop Organization.date_approved column vestigal from the Organization -> OrganizationApplication migration. * suggestions from code review * translations
1 parent dc21a34 commit e9e4c24

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+2216
-545
lines changed

tests/common/db/organizations.py

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,11 @@
1515
import factory
1616
import faker
1717

18+
from warehouse.observations.models import ObservationKind
1819
from warehouse.organizations.models import (
1920
Organization,
2021
OrganizationApplication,
22+
OrganizationApplicationStatus,
2123
OrganizationInvitation,
2224
OrganizationNameCatalog,
2325
OrganizationProject,
@@ -34,6 +36,7 @@
3436

3537
from .accounts import UserFactory
3638
from .base import WarehouseFactory
39+
from .observations import ObserverFactory
3740
from .packaging import ProjectFactory
3841
from .subscriptions import StripeCustomerFactory, StripeSubscriptionFactory
3942

@@ -50,7 +53,7 @@ class Meta:
5053
orgtype = "Community"
5154
link_url = factory.Faker("uri")
5255
description = factory.Faker("sentence")
53-
is_approved = None
56+
status = OrganizationApplicationStatus.Submitted
5457
submitted_by = factory.SubFactory(UserFactory)
5558
submitted = factory.Faker(
5659
"date_time_between_dates",
@@ -59,6 +62,24 @@ class Meta:
5962
)
6063

6164

65+
class OrganizationApplicationObservationFactory(WarehouseFactory):
66+
class Meta:
67+
model = OrganizationApplication.Observation
68+
69+
related = factory.SubFactory(OrganizationApplicationFactory)
70+
related_name = factory.LazyAttribute(lambda o: repr(o.related))
71+
observer = factory.SubFactory(ObserverFactory)
72+
73+
created = factory.Faker(
74+
"date_time_between_dates",
75+
datetime_start=datetime.datetime(2020, 1, 1),
76+
datetime_end=datetime.datetime(2022, 1, 1),
77+
)
78+
kind = ObservationKind.InformationRequest.value[0]
79+
payload = factory.Faker("json")
80+
summary = factory.Faker("paragraph")
81+
82+
6283
class OrganizationFactory(WarehouseFactory):
6384
class Meta:
6485
model = Organization
@@ -79,13 +100,11 @@ def _create(cls, model_class, *args, **kwargs):
79100
link_url = factory.Faker("uri")
80101
description = factory.Faker("sentence")
81102
is_active = True
82-
is_approved = None
83103
created = factory.Faker(
84104
"date_time_between_dates",
85105
datetime_start=datetime.datetime(2020, 1, 1),
86106
datetime_end=datetime.datetime(2022, 1, 1),
87107
)
88-
date_approved = None
89108

90109

91110
class OrganizationEventFactory(WarehouseFactory):

tests/common/db/packaging.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ class Meta:
7272
"random_element", elements=[kind.value[1] for kind in ObservationKind]
7373
)
7474
payload = factory.Faker("json")
75-
# TODO: add `observer` field
7675
summary = factory.Faker("paragraph")
7776

7877

tests/unit/admin/test_routes.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,19 @@ def test_includeme():
4949
"/admin/organization_applications/{organization_application_id}/approve/",
5050
domain=warehouse,
5151
),
52+
pretend.call(
53+
"admin.organization_application.requestmoreinfo",
54+
(
55+
"/admin/organization_applications/{organization_application_id}"
56+
"/requestmoreinfo/"
57+
),
58+
domain=warehouse,
59+
),
60+
pretend.call(
61+
"admin.organization_application.defer",
62+
"/admin/organization_applications/{organization_application_id}/defer/",
63+
domain=warehouse,
64+
),
5265
pretend.call(
5366
"admin.organization_application.decline",
5467
"/admin/organization_applications/{organization_application_id}/decline/",

0 commit comments

Comments
 (0)