mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-05-16 01:27:03 +02:00
Change choices for Domain INvitation status to tuple constants
This commit is contained in:
parent
af1b598699
commit
00c04783b5
5 changed files with 12 additions and 12 deletions
|
@ -62,7 +62,7 @@ class Command(BaseCommand):
|
||||||
DomainInvitation(
|
DomainInvitation(
|
||||||
email=email_address.lower(),
|
email=email_address.lower(),
|
||||||
domain=domain,
|
domain=domain,
|
||||||
status=DomainInvitation.INVITED,
|
status=DomainInvitation.DomainInvitationStatus.INVITED,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
logger.info("Creating %d invitations", len(to_create))
|
logger.info("Creating %d invitations", len(to_create))
|
||||||
|
|
|
@ -15,8 +15,11 @@ logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class DomainInvitation(TimeStampedModel):
|
class DomainInvitation(TimeStampedModel):
|
||||||
INVITED = "invited"
|
|
||||||
RETRIEVED = "retrieved"
|
# Constants for status field
|
||||||
|
class DomainInvitationStatus(models.TextChoices):
|
||||||
|
INVITED = "invited", "Invited"
|
||||||
|
RETRIEVED = "retrieved", "Retrieved"
|
||||||
|
|
||||||
email = models.EmailField(
|
email = models.EmailField(
|
||||||
null=False,
|
null=False,
|
||||||
|
@ -31,18 +34,15 @@ class DomainInvitation(TimeStampedModel):
|
||||||
)
|
)
|
||||||
|
|
||||||
status = FSMField(
|
status = FSMField(
|
||||||
choices=[
|
choices=DomainInvitationStatus.choices,
|
||||||
(INVITED, INVITED),
|
default=DomainInvitationStatus.INVITED,
|
||||||
(RETRIEVED, RETRIEVED),
|
|
||||||
],
|
|
||||||
default=INVITED,
|
|
||||||
protected=True, # can't alter state except through transition methods!
|
protected=True, # can't alter state except through transition methods!
|
||||||
)
|
)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"Invitation for {self.email} on {self.domain} is {self.status}"
|
return f"Invitation for {self.email} on {self.domain} is {self.status}"
|
||||||
|
|
||||||
@transition(field="status", source=INVITED, target=RETRIEVED)
|
@transition(field="status", source=DomainInvitationStatus.INVITED, target=DomainInvitationStatus.RETRIEVED)
|
||||||
def retrieve(self):
|
def retrieve(self):
|
||||||
"""When an invitation is retrieved, create the corresponding permission.
|
"""When an invitation is retrieved, create the corresponding permission.
|
||||||
|
|
||||||
|
|
|
@ -67,7 +67,7 @@ class User(AbstractUser):
|
||||||
def check_domain_invitations_on_login(self):
|
def check_domain_invitations_on_login(self):
|
||||||
"""When a user first arrives on the site, we need to retrieve any domain
|
"""When a user first arrives on the site, we need to retrieve any domain
|
||||||
invitations that match their email address."""
|
invitations that match their email address."""
|
||||||
for invitation in DomainInvitation.objects.filter(email=self.email, status=DomainInvitation.INVITED):
|
for invitation in DomainInvitation.objects.filter(email=self.email, status=DomainInvitation.DomainInvitationStatus.INVITED):
|
||||||
try:
|
try:
|
||||||
invitation.retrieve()
|
invitation.retrieve()
|
||||||
invitation.save()
|
invitation.save()
|
||||||
|
|
|
@ -344,7 +344,7 @@ class AuditedAdminMockData:
|
||||||
full_arg_dict = dict(
|
full_arg_dict = dict(
|
||||||
email="test_mail@mail.com",
|
email="test_mail@mail.com",
|
||||||
domain=self.dummy_domain(item_name, True),
|
domain=self.dummy_domain(item_name, True),
|
||||||
status=DomainInvitation.INVITED,
|
status=DomainInvitation.DomainInvitationStatus.INVITED,
|
||||||
)
|
)
|
||||||
return full_arg_dict
|
return full_arg_dict
|
||||||
|
|
||||||
|
|
|
@ -597,7 +597,7 @@ class TestInvitations(TestCase):
|
||||||
# this is not an error but does produce a console warning
|
# this is not an error but does produce a console warning
|
||||||
with less_console_noise():
|
with less_console_noise():
|
||||||
self.invitation.retrieve()
|
self.invitation.retrieve()
|
||||||
self.assertEqual(self.invitation.status, DomainInvitation.RETRIEVED)
|
self.assertEqual(self.invitation.status, DomainInvitation.DomainInvitationStatus.RETRIEVED)
|
||||||
|
|
||||||
def test_retrieve_on_each_login(self):
|
def test_retrieve_on_each_login(self):
|
||||||
"""A user's authenticate on_each_login callback retrieves their invitations."""
|
"""A user's authenticate on_each_login callback retrieves their invitations."""
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue