From 0370dd9f83dce9a8474207dd7d93a230d4d5112c Mon Sep 17 00:00:00 2001 From: CuriousX Date: Fri, 8 Sep 2023 16:48:35 -0600 Subject: [PATCH] added Transition Domain model --- src/registrar/admin.py | 1 + src/registrar/fixtures.py | 2 +- .../migrations/0031_transitiondomain.py | 68 +++++++++++++++++++ src/registrar/models/__init__.py | 3 + src/registrar/models/transition_domain.py | 45 ++++++++++++ 5 files changed, 118 insertions(+), 1 deletion(-) create mode 100644 src/registrar/migrations/0031_transitiondomain.py create mode 100644 src/registrar/models/transition_domain.py diff --git a/src/registrar/admin.py b/src/registrar/admin.py index d6109a0cc..f2305d3c0 100644 --- a/src/registrar/admin.py +++ b/src/registrar/admin.py @@ -410,3 +410,4 @@ admin.site.register(models.Host, MyHostAdmin) admin.site.register(models.Nameserver, MyHostAdmin) admin.site.register(models.Website, AuditedAdmin) admin.site.register(models.DomainApplication, DomainApplicationAdmin) +admin.site.register(models.TransitionDomain, AuditedAdmin) diff --git a/src/registrar/fixtures.py b/src/registrar/fixtures.py index f37474e71..30924b8bf 100644 --- a/src/registrar/fixtures.py +++ b/src/registrar/fixtures.py @@ -131,7 +131,7 @@ class UserFixture: { "username": "cfe7c2fc-e24a-480e-8b78-28645a1459b3", "first_name": "Nicolle-Analyst", - "last_name": "LeClair", + "last_name": "LeClair-Analyst", "email": "nicolle.leclair@ecstech.com", }, ] diff --git a/src/registrar/migrations/0031_transitiondomain.py b/src/registrar/migrations/0031_transitiondomain.py new file mode 100644 index 000000000..f353f0cf0 --- /dev/null +++ b/src/registrar/migrations/0031_transitiondomain.py @@ -0,0 +1,68 @@ +# Generated by Django 4.2.1 on 2023-09-08 22:38 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("registrar", "0030_alter_user_status"), + ] + + operations = [ + migrations.CreateModel( + name="TransitionDomain", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("created_at", models.DateTimeField(auto_now_add=True)), + ("updated_at", models.DateTimeField(auto_now=True)), + ( + "username", + models.TextField( + help_text="Username - this will be an email address", + verbose_name="Username", + ), + ), + ( + "domain_name", + models.TextField(blank=True, null=True, verbose_name="Domain name"), + ), + ( + "status", + models.CharField( + blank=True, + choices=[("created", "Created"), ("hold", "Hold")], + help_text="domain status during the transfer", + max_length=255, + verbose_name="Status", + ), + ), + ( + "ignoreServerHold", + models.BooleanField( + default=False, + help_text="specifies whether to ignore server hold", + verbose_name="ignore Server Hold", + ), + ), + ( + "email_sent", + models.BooleanField( + default=False, + help_text="indicates whether email was sent", + verbose_name="email sent", + ), + ), + ], + options={ + "abstract": False, + }, + ), + ] diff --git a/src/registrar/models/__init__.py b/src/registrar/models/__init__.py index 542cb00e1..e22328801 100644 --- a/src/registrar/models/__init__.py +++ b/src/registrar/models/__init__.py @@ -13,6 +13,7 @@ from .user_domain_role import UserDomainRole from .public_contact import PublicContact from .user import User from .website import Website +from .transition_domain import TransitionDomain __all__ = [ "Contact", @@ -28,6 +29,7 @@ __all__ = [ "PublicContact", "User", "Website", + "TransitionDomain" ] auditlog.register(Contact) @@ -42,3 +44,4 @@ auditlog.register(UserDomainRole) auditlog.register(PublicContact) auditlog.register(User) auditlog.register(Website) +auditlog.register(TransitionDomain) diff --git a/src/registrar/models/transition_domain.py b/src/registrar/models/transition_domain.py new file mode 100644 index 000000000..b2639a5dd --- /dev/null +++ b/src/registrar/models/transition_domain.py @@ -0,0 +1,45 @@ +from django.db import models + +from .utility.time_stamped_model import TimeStampedModel + +class TransitionDomain(TimeStampedModel): + """Transition Domain model stores information about the state of a domain upon transition between registry providers""" + + class StatusChoices(models.TextChoices): + CREATED = "created", "Created" + HOLD = "hold", "Hold" + + username = models.TextField( + null=False, + blank=False, + verbose_name="Username", + help_text="Username - this will be an email address", + ) + domain_name = models.TextField( + null=True, + blank=True, + verbose_name="Domain name", + ) + status = models.CharField( + max_length=255, + null=False, + blank=True, + choices=StatusChoices.choices, + verbose_name="Status", + help_text="domain status during the transfer", + ) + ignoreServerHold = models.BooleanField( + null=False, + default=False, #--COMMENT: this was not specified in the ticket #921 + verbose_name="ignore Server Hold", + help_text="specifies whether to ignore server hold", + ) + email_sent = models.BooleanField( + null=False, + default=False, + verbose_name="email sent", + help_text="indicates whether email was sent", + ) + + def __str__(self): + return self.username