mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-07-24 11:38:39 +02:00
Find-replace "domain application", "domain_application", "domain-application" with "domain request", "domain_request", "domain-request". Preserved camel-cases through strict find-replace conditions.
This commit is contained in:
parent
b355f1813d
commit
0ce03d21c7
80 changed files with 721 additions and 721 deletions
|
@ -14,7 +14,7 @@ from django.contrib.contenttypes.models import ContentType
|
|||
from django.urls import reverse
|
||||
from dateutil.relativedelta import relativedelta # type: ignore
|
||||
from epplibwrapper.errors import ErrorCode, RegistryError
|
||||
from registrar.models import Contact, Domain, DomainApplication, DraftDomain, User, Website
|
||||
from registrar.models import Contact, Domain, DomainRequest, DraftDomain, User, Website
|
||||
from registrar.utility import csv_export
|
||||
from registrar.views.utility.mixins import OrderableFieldsMixin
|
||||
from django.contrib.admin.views.main import ORDER_VAR
|
||||
|
@ -69,12 +69,12 @@ class DomainInformationInlineForm(forms.ModelForm):
|
|||
}
|
||||
|
||||
|
||||
class DomainApplicationAdminForm(forms.ModelForm):
|
||||
class DomainRequestAdminForm(forms.ModelForm):
|
||||
"""Custom form to limit transitions to available transitions.
|
||||
This form utilizes the custom widget for its class's ManyToMany UIs."""
|
||||
|
||||
class Meta:
|
||||
model = models.DomainApplication
|
||||
model = models.DomainRequest
|
||||
fields = "__all__"
|
||||
widgets = {
|
||||
"current_websites": NoAutocompleteFilteredSelectMultiple("current_websites", False),
|
||||
|
@ -93,14 +93,14 @@ class DomainApplicationAdminForm(forms.ModelForm):
|
|||
available_transitions = [(current_state, application.get_status_display())]
|
||||
|
||||
transitions = get_available_FIELD_transitions(
|
||||
application, models.DomainApplication._meta.get_field("status")
|
||||
application, models.DomainRequest._meta.get_field("status")
|
||||
)
|
||||
|
||||
for transition in transitions:
|
||||
available_transitions.append((transition.target, transition.target.label))
|
||||
|
||||
# only set the available transitions if the user is not restricted
|
||||
# from editing the domain application; otherwise, the form will be
|
||||
# from editing the domain request; otherwise, the form will be
|
||||
# readonly and the status field will not have a widget
|
||||
if not application.creator.is_restricted():
|
||||
self.fields["status"].widget.choices = available_transitions
|
||||
|
@ -218,8 +218,8 @@ class AdminSortFields:
|
|||
"alternative_domains": (Website, "website"),
|
||||
# == DraftDomain == #
|
||||
"requested_domain": (DraftDomain, "name"),
|
||||
# == DomainApplication == #
|
||||
"domain_application": (DomainApplication, "requested_domain__name"),
|
||||
# == DomainRequest == #
|
||||
"domain_request": (DomainRequest, "requested_domain__name"),
|
||||
# == Domain == #
|
||||
"domain": (Domain, "name"),
|
||||
"approved_domain": (Domain, "name"),
|
||||
|
@ -466,7 +466,7 @@ class MyUserAdmin(BaseUserAdmin):
|
|||
def get_search_results(self, request, queryset, search_term):
|
||||
"""
|
||||
Override for get_search_results. This affects any upstream model using autocomplete_fields,
|
||||
such as DomainApplication. This is because autocomplete_fields uses an API call to fetch data,
|
||||
such as DomainRequest. This is because autocomplete_fields uses an API call to fetch data,
|
||||
and this fetch comes from this method.
|
||||
"""
|
||||
# Custom filtering logic
|
||||
|
@ -480,13 +480,13 @@ class MyUserAdmin(BaseUserAdmin):
|
|||
request_get = request.GET
|
||||
|
||||
# The request defines model name and field name.
|
||||
# For instance, model_name could be "DomainApplication"
|
||||
# For instance, model_name could be "DomainRequest"
|
||||
# and field_name could be "investigator".
|
||||
model_name = request_get.get("model_name", None)
|
||||
field_name = request_get.get("field_name", None)
|
||||
|
||||
# Make sure we're only modifying requests from these models.
|
||||
models_to_target = {"domainapplication"}
|
||||
models_to_target = {"DomainRequest"}
|
||||
if model_name in models_to_target:
|
||||
# Define rules per field
|
||||
match field_name:
|
||||
|
@ -777,7 +777,7 @@ class DomainInformationAdmin(ListHeaderAdmin):
|
|||
search_help_text = "Search by domain."
|
||||
|
||||
fieldsets = [
|
||||
(None, {"fields": ["creator", "domain_application", "notes"]}),
|
||||
(None, {"fields": ["creator", "domain_request", "notes"]}),
|
||||
(
|
||||
"Type of organization",
|
||||
{
|
||||
|
@ -828,7 +828,7 @@ class DomainInformationAdmin(ListHeaderAdmin):
|
|||
"type_of_work",
|
||||
"more_organization_information",
|
||||
"domain",
|
||||
"domain_application",
|
||||
"domain_request",
|
||||
"submitter",
|
||||
"no_other_contacts_rationale",
|
||||
"anything_else",
|
||||
|
@ -841,7 +841,7 @@ class DomainInformationAdmin(ListHeaderAdmin):
|
|||
|
||||
autocomplete_fields = [
|
||||
"creator",
|
||||
"domain_application",
|
||||
"domain_request",
|
||||
"authorizing_official",
|
||||
"domain",
|
||||
"submitter",
|
||||
|
@ -866,10 +866,10 @@ class DomainInformationAdmin(ListHeaderAdmin):
|
|||
return readonly_fields # Read-only fields for analysts
|
||||
|
||||
|
||||
class DomainApplicationAdmin(ListHeaderAdmin):
|
||||
class DomainRequestAdmin(ListHeaderAdmin):
|
||||
"""Custom domain applications admin class."""
|
||||
|
||||
form = DomainApplicationAdminForm
|
||||
form = DomainRequestAdminForm
|
||||
|
||||
class InvestigatorFilter(admin.SimpleListFilter):
|
||||
"""Custom investigator filter that only displays users with the manager role"""
|
||||
|
@ -884,7 +884,7 @@ class DomainApplicationAdmin(ListHeaderAdmin):
|
|||
"""
|
||||
# Select all investigators that are staff, then order by name and email
|
||||
privileged_users = (
|
||||
DomainApplication.objects.select_related("investigator")
|
||||
DomainRequest.objects.select_related("investigator")
|
||||
.filter(investigator__is_staff=True)
|
||||
.order_by("investigator__first_name", "investigator__last_name", "investigator__email")
|
||||
)
|
||||
|
@ -1057,12 +1057,12 @@ class DomainApplicationAdmin(ListHeaderAdmin):
|
|||
if obj and obj.creator.status != models.User.RESTRICTED:
|
||||
if change: # Check if the application is being edited
|
||||
# Get the original application from the database
|
||||
original_obj = models.DomainApplication.objects.get(pk=obj.pk)
|
||||
original_obj = models.DomainRequest.objects.get(pk=obj.pk)
|
||||
|
||||
if (
|
||||
obj
|
||||
and original_obj.status == models.DomainApplication.ApplicationStatus.APPROVED
|
||||
and obj.status != models.DomainApplication.ApplicationStatus.APPROVED
|
||||
and original_obj.status == models.DomainRequest.ApplicationStatus.APPROVED
|
||||
and obj.status != models.DomainRequest.ApplicationStatus.APPROVED
|
||||
and not obj.domain_is_not_active()
|
||||
):
|
||||
# If an admin tried to set an approved application to
|
||||
|
@ -1082,7 +1082,7 @@ class DomainApplicationAdmin(ListHeaderAdmin):
|
|||
|
||||
elif (
|
||||
obj
|
||||
and obj.status == models.DomainApplication.ApplicationStatus.REJECTED
|
||||
and obj.status == models.DomainRequest.ApplicationStatus.REJECTED
|
||||
and not obj.rejection_reason
|
||||
):
|
||||
# This condition should never be triggered.
|
||||
|
@ -1100,14 +1100,14 @@ class DomainApplicationAdmin(ListHeaderAdmin):
|
|||
else:
|
||||
if obj.status != original_obj.status:
|
||||
status_method_mapping = {
|
||||
models.DomainApplication.ApplicationStatus.STARTED: None,
|
||||
models.DomainApplication.ApplicationStatus.SUBMITTED: obj.submit,
|
||||
models.DomainApplication.ApplicationStatus.IN_REVIEW: obj.in_review,
|
||||
models.DomainApplication.ApplicationStatus.ACTION_NEEDED: obj.action_needed,
|
||||
models.DomainApplication.ApplicationStatus.APPROVED: obj.approve,
|
||||
models.DomainApplication.ApplicationStatus.WITHDRAWN: obj.withdraw,
|
||||
models.DomainApplication.ApplicationStatus.REJECTED: obj.reject,
|
||||
models.DomainApplication.ApplicationStatus.INELIGIBLE: (obj.reject_with_prejudice),
|
||||
models.DomainRequest.ApplicationStatus.STARTED: None,
|
||||
models.DomainRequest.ApplicationStatus.SUBMITTED: obj.submit,
|
||||
models.DomainRequest.ApplicationStatus.IN_REVIEW: obj.in_review,
|
||||
models.DomainRequest.ApplicationStatus.ACTION_NEEDED: obj.action_needed,
|
||||
models.DomainRequest.ApplicationStatus.APPROVED: obj.approve,
|
||||
models.DomainRequest.ApplicationStatus.WITHDRAWN: obj.withdraw,
|
||||
models.DomainRequest.ApplicationStatus.REJECTED: obj.reject,
|
||||
models.DomainRequest.ApplicationStatus.INELIGIBLE: (obj.reject_with_prejudice),
|
||||
}
|
||||
selected_method = status_method_mapping.get(obj.status)
|
||||
if selected_method is None:
|
||||
|
@ -1202,7 +1202,7 @@ class DomainInformationInline(admin.StackedInline):
|
|||
|
||||
autocomplete_fields = [
|
||||
"creator",
|
||||
"domain_application",
|
||||
"domain_request",
|
||||
"authorizing_official",
|
||||
"domain",
|
||||
"submitter",
|
||||
|
@ -1712,6 +1712,6 @@ admin.site.register(models.DraftDomain, DraftDomainAdmin)
|
|||
admin.site.register(models.Host, MyHostAdmin)
|
||||
admin.site.register(models.Website, WebsiteAdmin)
|
||||
admin.site.register(models.PublicContact, AuditedAdmin)
|
||||
admin.site.register(models.DomainApplication, DomainApplicationAdmin)
|
||||
admin.site.register(models.DomainRequest, DomainRequestAdmin)
|
||||
admin.site.register(models.TransitionDomain, TransitionDomainAdmin)
|
||||
admin.site.register(models.VerifiedByStaff, VerifiedByStaffAdmin)
|
||||
|
|
|
@ -139,7 +139,7 @@ urlpatterns = [
|
|||
),
|
||||
path(
|
||||
"application/<int:pk>/delete",
|
||||
views.DomainApplicationDeleteView.as_view(http_method_names=["post"]),
|
||||
views.DomainRequestDeleteView.as_view(http_method_names=["post"]),
|
||||
name="application-delete",
|
||||
),
|
||||
path(
|
||||
|
|
|
@ -4,7 +4,7 @@ from faker import Faker
|
|||
|
||||
from registrar.models import (
|
||||
User,
|
||||
DomainApplication,
|
||||
DomainRequest,
|
||||
DraftDomain,
|
||||
Contact,
|
||||
Website,
|
||||
|
@ -14,7 +14,7 @@ fake = Faker()
|
|||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class DomainApplicationFixture:
|
||||
class DomainRequestFixture:
|
||||
"""
|
||||
Load domain applications into the database.
|
||||
|
||||
|
@ -49,27 +49,27 @@ class DomainApplicationFixture:
|
|||
# },
|
||||
DA = [
|
||||
{
|
||||
"status": DomainApplication.ApplicationStatus.STARTED,
|
||||
"status": DomainRequest.ApplicationStatus.STARTED,
|
||||
"organization_name": "Example - Finished but not submitted",
|
||||
},
|
||||
{
|
||||
"status": DomainApplication.ApplicationStatus.SUBMITTED,
|
||||
"status": DomainRequest.ApplicationStatus.SUBMITTED,
|
||||
"organization_name": "Example - Submitted but pending investigation",
|
||||
},
|
||||
{
|
||||
"status": DomainApplication.ApplicationStatus.IN_REVIEW,
|
||||
"status": DomainRequest.ApplicationStatus.IN_REVIEW,
|
||||
"organization_name": "Example - In investigation",
|
||||
},
|
||||
{
|
||||
"status": DomainApplication.ApplicationStatus.IN_REVIEW,
|
||||
"status": DomainRequest.ApplicationStatus.IN_REVIEW,
|
||||
"organization_name": "Example - Approved",
|
||||
},
|
||||
{
|
||||
"status": DomainApplication.ApplicationStatus.WITHDRAWN,
|
||||
"status": DomainRequest.ApplicationStatus.WITHDRAWN,
|
||||
"organization_name": "Example - Withdrawn",
|
||||
},
|
||||
{
|
||||
"status": DomainApplication.ApplicationStatus.ACTION_NEEDED,
|
||||
"status": DomainRequest.ApplicationStatus.ACTION_NEEDED,
|
||||
"organization_name": "Example - Action needed",
|
||||
},
|
||||
{
|
||||
|
@ -94,7 +94,7 @@ class DomainApplicationFixture:
|
|||
return f"{fake.slug()}.gov"
|
||||
|
||||
@classmethod
|
||||
def _set_non_foreign_key_fields(cls, da: DomainApplication, app: dict):
|
||||
def _set_non_foreign_key_fields(cls, da: DomainRequest, app: dict):
|
||||
"""Helper method used by `load`."""
|
||||
da.status = app["status"] if "status" in app else "started"
|
||||
da.organization_type = app["organization_type"] if "organization_type" in app else "federal"
|
||||
|
@ -102,7 +102,7 @@ class DomainApplicationFixture:
|
|||
app["federal_agency"]
|
||||
if "federal_agency" in app
|
||||
# Random choice of agency for selects, used as placeholders for testing.
|
||||
else random.choice(DomainApplication.AGENCIES) # nosec
|
||||
else random.choice(DomainRequest.AGENCIES) # nosec
|
||||
)
|
||||
da.submission_date = fake.date()
|
||||
da.federal_type = (
|
||||
|
@ -121,7 +121,7 @@ class DomainApplicationFixture:
|
|||
da.is_policy_acknowledged = app["is_policy_acknowledged"] if "is_policy_acknowledged" in app else True
|
||||
|
||||
@classmethod
|
||||
def _set_foreign_key_fields(cls, da: DomainApplication, app: dict, user: User):
|
||||
def _set_foreign_key_fields(cls, da: DomainRequest, app: dict, user: User):
|
||||
"""Helper method used by `load`."""
|
||||
if not da.investigator:
|
||||
da.investigator = User.objects.get(username=user.username) if "investigator" in app else None
|
||||
|
@ -145,7 +145,7 @@ class DomainApplicationFixture:
|
|||
da.requested_domain = DraftDomain.objects.create(name=cls.fake_dot_gov())
|
||||
|
||||
@classmethod
|
||||
def _set_many_to_many_relations(cls, da: DomainApplication, app: dict):
|
||||
def _set_many_to_many_relations(cls, da: DomainRequest, app: dict):
|
||||
"""Helper method used by `load`."""
|
||||
if "other_contacts" in app:
|
||||
for contact in app["other_contacts"]:
|
||||
|
@ -188,7 +188,7 @@ class DomainApplicationFixture:
|
|||
logger.debug("Loading domain applications for %s" % user)
|
||||
for app in cls.DA:
|
||||
try:
|
||||
da, _ = DomainApplication.objects.get_or_create(
|
||||
da, _ = DomainRequest.objects.get_or_create(
|
||||
creator=user,
|
||||
organization_name=app["organization_name"],
|
||||
)
|
||||
|
@ -200,7 +200,7 @@ class DomainApplicationFixture:
|
|||
logger.warning(e)
|
||||
|
||||
|
||||
class DomainFixture(DomainApplicationFixture):
|
||||
class DomainFixture(DomainRequestFixture):
|
||||
"""Create one domain and permissions on it for each user."""
|
||||
|
||||
@classmethod
|
||||
|
@ -213,8 +213,8 @@ class DomainFixture(DomainApplicationFixture):
|
|||
|
||||
for user in users:
|
||||
# approve one of each users in review status domains
|
||||
application = DomainApplication.objects.filter(
|
||||
creator=user, status=DomainApplication.ApplicationStatus.IN_REVIEW
|
||||
application = DomainRequest.objects.filter(
|
||||
creator=user, status=DomainRequest.ApplicationStatus.IN_REVIEW
|
||||
).last()
|
||||
logger.debug(f"Approving {application} for {user}")
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ from django.core.validators import RegexValidator, MaxLengthValidator
|
|||
from django.utils.safestring import mark_safe
|
||||
from django.db.models.fields.related import ForeignObjectRel
|
||||
|
||||
from registrar.models import Contact, DomainApplication, DraftDomain, Domain
|
||||
from registrar.models import Contact, DomainRequest, DraftDomain, Domain
|
||||
from registrar.templatetags.url_helpers import public_site_url
|
||||
from registrar.utility.enums import ValidationReturnType
|
||||
|
||||
|
@ -21,7 +21,7 @@ class RegistrarForm(forms.Form):
|
|||
"""
|
||||
A common set of methods and configuration.
|
||||
|
||||
The registrar's domain application is several pages of "steps".
|
||||
The registrar's domain request is several pages of "steps".
|
||||
Each step is an HTML form containing one or more Django "forms".
|
||||
|
||||
Subclass this class to create new forms.
|
||||
|
@ -33,7 +33,7 @@ class RegistrarForm(forms.Form):
|
|||
self.application = kwargs.pop("application", None)
|
||||
super(RegistrarForm, self).__init__(*args, **kwargs)
|
||||
|
||||
def to_database(self, obj: DomainApplication | Contact):
|
||||
def to_database(self, obj: DomainRequest | Contact):
|
||||
"""
|
||||
Adds this form's cleaned data to `obj` and saves `obj`.
|
||||
|
||||
|
@ -46,7 +46,7 @@ class RegistrarForm(forms.Form):
|
|||
obj.save()
|
||||
|
||||
@classmethod
|
||||
def from_database(cls, obj: DomainApplication | Contact | None):
|
||||
def from_database(cls, obj: DomainRequest | Contact | None):
|
||||
"""Returns a dict of form field values gotten from `obj`."""
|
||||
if obj is None:
|
||||
return {}
|
||||
|
@ -85,7 +85,7 @@ class RegistrarFormSet(forms.BaseFormSet):
|
|||
"""Code to run before an item in the formset is created in the database."""
|
||||
return cleaned
|
||||
|
||||
def to_database(self, obj: DomainApplication):
|
||||
def to_database(self, obj: DomainRequest):
|
||||
"""
|
||||
Adds this form's cleaned data to `obj` and saves `obj`.
|
||||
|
||||
|
@ -97,7 +97,7 @@ class RegistrarFormSet(forms.BaseFormSet):
|
|||
|
||||
def _to_database(
|
||||
self,
|
||||
obj: DomainApplication,
|
||||
obj: DomainRequest,
|
||||
join: str,
|
||||
should_delete: Callable,
|
||||
pre_update: Callable,
|
||||
|
@ -163,7 +163,7 @@ class RegistrarFormSet(forms.BaseFormSet):
|
|||
return query.values()
|
||||
|
||||
@classmethod
|
||||
def from_database(cls, obj: DomainApplication, join: str, on_fetch: Callable):
|
||||
def from_database(cls, obj: DomainRequest, join: str, on_fetch: Callable):
|
||||
"""Returns a dict of form field values gotten from `obj`."""
|
||||
return on_fetch(getattr(obj, join).order_by("created_at")) # order matters
|
||||
|
||||
|
@ -171,7 +171,7 @@ class RegistrarFormSet(forms.BaseFormSet):
|
|||
class OrganizationTypeForm(RegistrarForm):
|
||||
organization_type = forms.ChoiceField(
|
||||
# use the long names in the application form
|
||||
choices=DomainApplication.OrganizationChoicesVerbose.choices,
|
||||
choices=DomainRequest.OrganizationChoicesVerbose.choices,
|
||||
widget=forms.RadioSelect,
|
||||
error_messages={"required": "Select the type of organization you represent."},
|
||||
)
|
||||
|
@ -215,7 +215,7 @@ class TribalGovernmentForm(RegistrarForm):
|
|||
|
||||
class OrganizationFederalForm(RegistrarForm):
|
||||
federal_type = forms.ChoiceField(
|
||||
choices=DomainApplication.BranchChoices.choices,
|
||||
choices=DomainRequest.BranchChoices.choices,
|
||||
widget=forms.RadioSelect,
|
||||
error_messages={"required": ("Select the part of the federal government your organization is in.")},
|
||||
)
|
||||
|
@ -251,7 +251,7 @@ class OrganizationContactForm(RegistrarForm):
|
|||
# it is a federal agency. Use clean to check programatically
|
||||
# if it has been filled in when required.
|
||||
required=False,
|
||||
choices=[("", "--Select--")] + DomainApplication.AGENCY_CHOICES,
|
||||
choices=[("", "--Select--")] + DomainRequest.AGENCY_CHOICES,
|
||||
)
|
||||
organization_name = forms.CharField(
|
||||
label="Organization name",
|
||||
|
@ -271,7 +271,7 @@ class OrganizationContactForm(RegistrarForm):
|
|||
)
|
||||
state_territory = forms.ChoiceField(
|
||||
label="State, territory, or military post",
|
||||
choices=[("", "--Select--")] + DomainApplication.StateTerritoryChoices.choices,
|
||||
choices=[("", "--Select--")] + DomainRequest.StateTerritoryChoices.choices,
|
||||
error_messages={
|
||||
"required": ("Select the state, territory, or military post where your organization is located.")
|
||||
},
|
||||
|
@ -390,7 +390,7 @@ class BaseCurrentSitesFormSet(RegistrarFormSet):
|
|||
website = cleaned.get("website", "")
|
||||
return website.strip() == ""
|
||||
|
||||
def to_database(self, obj: DomainApplication):
|
||||
def to_database(self, obj: DomainRequest):
|
||||
# If we want to test against multiple joins for a website object, replace the empty array
|
||||
# and change the JOIN in the models to allow for reverse references
|
||||
self._to_database(obj, self.JOIN, self.should_delete, self.pre_update, self.pre_create)
|
||||
|
@ -444,7 +444,7 @@ class BaseAlternativeDomainFormSet(RegistrarFormSet):
|
|||
else:
|
||||
return {}
|
||||
|
||||
def to_database(self, obj: DomainApplication):
|
||||
def to_database(self, obj: DomainRequest):
|
||||
# If we want to test against multiple joins for a website object, replace the empty array and
|
||||
# change the JOIN in the models to allow for reverse references
|
||||
self._to_database(obj, self.JOIN, self.should_delete, self.pre_update, self.pre_create)
|
||||
|
@ -722,7 +722,7 @@ class BaseOtherContactsFormSet(RegistrarFormSet):
|
|||
cleaned.pop("DELETE")
|
||||
return cleaned
|
||||
|
||||
def to_database(self, obj: DomainApplication):
|
||||
def to_database(self, obj: DomainRequest):
|
||||
self._to_database(obj, self.JOIN, self.should_delete, self.pre_update, self.pre_create)
|
||||
|
||||
@classmethod
|
||||
|
|
|
@ -5,7 +5,7 @@ from auditlog.context import disable_auditlog # type: ignore
|
|||
|
||||
|
||||
from registrar.fixtures_users import UserFixture
|
||||
from registrar.fixtures_applications import DomainApplicationFixture, DomainFixture
|
||||
from registrar.fixtures_applications import DomainRequestFixture, DomainFixture
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
@ -16,6 +16,6 @@ class Command(BaseCommand):
|
|||
# https://github.com/jazzband/django-auditlog/issues/17
|
||||
with disable_auditlog():
|
||||
UserFixture.load()
|
||||
DomainApplicationFixture.load()
|
||||
DomainRequestFixture.load()
|
||||
DomainFixture.load()
|
||||
logger.info("All fixtures loaded.")
|
||||
|
|
|
@ -15,7 +15,7 @@ from registrar.management.commands.utility.terminal_helper import (
|
|||
TerminalHelper,
|
||||
)
|
||||
from registrar.models.contact import Contact
|
||||
from registrar.models.domain_application import DomainApplication
|
||||
from registrar.models.domain_request import DomainRequest
|
||||
from registrar.models.domain_information import DomainInformation
|
||||
from registrar.models.user import User
|
||||
|
||||
|
@ -817,9 +817,9 @@ class Command(BaseCommand):
|
|||
raise Exception(f"Domain {existing_domain} wants to be added" "but doesn't exist in the DB")
|
||||
invitation.save()
|
||||
|
||||
valid_org_choices = [(name, value) for name, value in DomainApplication.OrganizationChoices.choices]
|
||||
valid_fed_choices = [value for name, value in DomainApplication.BranchChoices.choices]
|
||||
valid_agency_choices = DomainApplication.AGENCIES
|
||||
valid_org_choices = [(name, value) for name, value in DomainRequest.OrganizationChoices.choices]
|
||||
valid_fed_choices = [value for name, value in DomainRequest.BranchChoices.choices]
|
||||
valid_agency_choices = DomainRequest.AGENCIES
|
||||
# ======================================================
|
||||
# ================= DOMAIN INFORMATION =================
|
||||
logger.info(
|
||||
|
|
|
@ -168,7 +168,7 @@ class Migration(migrations.Migration):
|
|||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="DomainApplication",
|
||||
name="DomainRequest",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
|
|
|
@ -142,14 +142,14 @@ class Migration(migrations.Migration):
|
|||
},
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="requested_domain",
|
||||
field=models.OneToOneField(
|
||||
blank=True,
|
||||
help_text="The requested domain",
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.PROTECT,
|
||||
related_name="domain_application",
|
||||
related_name="domain_request",
|
||||
to="registrar.domain",
|
||||
),
|
||||
),
|
||||
|
|
|
@ -10,48 +10,48 @@ class Migration(migrations.Migration):
|
|||
|
||||
operations = [
|
||||
migrations.RenameField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
old_name="is_election_office",
|
||||
new_name="is_election_board",
|
||||
),
|
||||
migrations.RenameField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
old_name="acknowledged_policy",
|
||||
new_name="is_policy_acknowledged",
|
||||
),
|
||||
migrations.RenameField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
old_name="zip_code",
|
||||
new_name="zipcode",
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="federal_branch",
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="street_address",
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="unit_number",
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="unit_type",
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="address_line1",
|
||||
field=models.TextField(blank=True, help_text="Address line 1", null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="address_line2",
|
||||
field=models.CharField(blank=True, help_text="Address line 2", max_length=15, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="federal_type",
|
||||
field=models.CharField(
|
||||
blank=True,
|
||||
|
@ -66,7 +66,7 @@ class Migration(migrations.Migration):
|
|||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="organization_type",
|
||||
field=models.CharField(
|
||||
blank=True,
|
||||
|
|
|
@ -7,13 +7,13 @@ class Migration(migrations.Migration):
|
|||
dependencies = [
|
||||
(
|
||||
"registrar",
|
||||
"0003_rename_is_election_office_domainapplication_is_election_board_and_more",
|
||||
"0003_rename_is_election_office_DomainRequest_is_election_board_and_more",
|
||||
),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="federal_agency",
|
||||
field=models.TextField(help_text="Top level federal agency", null=True),
|
||||
),
|
||||
|
|
|
@ -5,22 +5,22 @@ from django.db import migrations, models
|
|||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("registrar", "0004_domainapplication_federal_agency"),
|
||||
("registrar", "0004_DomainRequest_federal_agency"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="city",
|
||||
field=models.TextField(blank=True, help_text="City", null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="urbanization",
|
||||
field=models.TextField(blank=True, help_text="Urbanization", null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="federal_agency",
|
||||
field=models.TextField(blank=True, help_text="Top level federal agency", null=True),
|
||||
),
|
||||
|
|
|
@ -6,7 +6,7 @@ import phonenumber_field.modelfields # type: ignore
|
|||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("registrar", "0005_domainapplication_city_and_more"),
|
||||
("registrar", "0005_DomainRequest_city_and_more"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
|
|
|
@ -10,7 +10,7 @@ class Migration(migrations.Migration):
|
|||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="more_organization_information",
|
||||
field=models.TextField(
|
||||
blank=True,
|
||||
|
@ -19,27 +19,27 @@ class Migration(migrations.Migration):
|
|||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="type_of_work",
|
||||
field=models.TextField(blank=True, help_text="Type of work of the organization", null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="address_line1",
|
||||
field=models.TextField(blank=True, help_text="Street address", null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="address_line2",
|
||||
field=models.CharField(blank=True, help_text="Street address line 2", max_length=15, null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="federal_agency",
|
||||
field=models.TextField(blank=True, help_text="Federal agency", null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="federal_type",
|
||||
field=models.CharField(
|
||||
blank=True,
|
||||
|
@ -54,7 +54,7 @@ class Migration(migrations.Migration):
|
|||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="organization_type",
|
||||
field=models.CharField(
|
||||
blank=True,
|
||||
|
@ -89,12 +89,12 @@ class Migration(migrations.Migration):
|
|||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="purpose",
|
||||
field=models.TextField(blank=True, help_text="Purpose of your domain", null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="state_territory",
|
||||
field=models.CharField(
|
||||
blank=True,
|
||||
|
@ -104,12 +104,12 @@ class Migration(migrations.Migration):
|
|||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="urbanization",
|
||||
field=models.TextField(blank=True, help_text="Urbanization (Puerto Rico only)", null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="zipcode",
|
||||
field=models.CharField(
|
||||
blank=True,
|
||||
|
|
|
@ -6,7 +6,7 @@ import django.utils.timezone
|
|||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("registrar", "0007_domainapplication_more_organization_information_and_more"),
|
||||
("registrar", "0007_DomainRequest_more_organization_information_and_more"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
|
|
|
@ -10,17 +10,17 @@ class Migration(migrations.Migration):
|
|||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="federally_recognized_tribe",
|
||||
field=models.BooleanField(help_text="Is the tribe federally recognized", null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="state_recognized_tribe",
|
||||
field=models.BooleanField(help_text="Is the tribe recognized by a state", null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="tribe_name",
|
||||
field=models.TextField(blank=True, help_text="Name of tribe", null=True),
|
||||
),
|
||||
|
|
|
@ -5,12 +5,12 @@ from django.db import migrations, models
|
|||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("registrar", "0009_domainapplication_federally_recognized_tribe_and_more"),
|
||||
("registrar", "0009_DomainRequest_federally_recognized_tribe_and_more"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="no_other_contacts_rationale",
|
||||
field=models.TextField(
|
||||
blank=True,
|
||||
|
|
|
@ -5,12 +5,12 @@ from django.db import migrations
|
|||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("registrar", "0010_domainapplication_no_other_contacts_rationale"),
|
||||
("registrar", "0010_DomainRequest_no_other_contacts_rationale"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="security_email",
|
||||
),
|
||||
]
|
||||
|
|
|
@ -7,7 +7,7 @@ import django.db.models.deletion
|
|||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("registrar", "0011_remove_domainapplication_security_email"),
|
||||
("registrar", "0011_remove_DomainRequest_security_email"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
|
|
|
@ -11,7 +11,7 @@ class Migration(migrations.Migration):
|
|||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="status",
|
||||
field=django_fsm.FSMField(
|
||||
choices=[
|
||||
|
|
|
@ -7,7 +7,7 @@ import django.db.models.deletion
|
|||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("registrar", "0017_alter_domainapplication_status_and_more"),
|
||||
("registrar", "0017_alter_DomainRequest_status_and_more"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
|
@ -229,14 +229,14 @@ class Migration(migrations.Migration):
|
|||
),
|
||||
),
|
||||
(
|
||||
"domain_application",
|
||||
"domain_request",
|
||||
models.OneToOneField(
|
||||
blank=True,
|
||||
help_text="Associated domain application",
|
||||
help_text="Associated domain request",
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.PROTECT,
|
||||
related_name="domainapplication_info",
|
||||
to="registrar.domainapplication",
|
||||
related_name="DomainRequest_info",
|
||||
to="registrar.DomainRequest",
|
||||
),
|
||||
),
|
||||
(
|
||||
|
|
|
@ -10,7 +10,7 @@ class Migration(migrations.Migration):
|
|||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="organization_type",
|
||||
field=models.CharField(
|
||||
blank=True,
|
||||
|
|
|
@ -5,7 +5,7 @@ from django.db import migrations
|
|||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("registrar", "0019_alter_domainapplication_organization_type"),
|
||||
("registrar", "0019_alter_DomainRequest_organization_type"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
|
|
|
@ -40,26 +40,26 @@ class Migration(migrations.Migration):
|
|||
bases=(models.Model, registrar.models.utility.domain_helper.DomainHelper), # type: ignore
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="approved_domain",
|
||||
field=models.OneToOneField(
|
||||
blank=True,
|
||||
help_text="The approved domain",
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.PROTECT,
|
||||
related_name="domain_application",
|
||||
related_name="domain_request",
|
||||
to="registrar.domain",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="requested_domain",
|
||||
field=models.OneToOneField(
|
||||
blank=True,
|
||||
help_text="The requested domain",
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.PROTECT,
|
||||
related_name="domain_application",
|
||||
related_name="domain_request",
|
||||
to="registrar.draftdomain",
|
||||
),
|
||||
),
|
||||
|
|
|
@ -5,7 +5,7 @@ from django.db import migrations, models
|
|||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("registrar", "0022_draftdomain_domainapplication_approved_domain_and_more"),
|
||||
("registrar", "0022_draftdomain_DomainRequest_approved_domain_and_more"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
|
|
|
@ -10,7 +10,7 @@ class Migration(migrations.Migration):
|
|||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="address_line2",
|
||||
field=models.TextField(blank=True, help_text="Street address line 2", null=True),
|
||||
),
|
||||
|
|
|
@ -5,7 +5,7 @@ from django.db import migrations, models
|
|||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("registrar", "0026_alter_domainapplication_address_line2_and_more"),
|
||||
("registrar", "0026_alter_DomainRequest_address_line2_and_more"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
|
|
|
@ -13,7 +13,7 @@ class Migration(migrations.Migration):
|
|||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="status",
|
||||
field=django_fsm.FSMField(
|
||||
choices=[
|
||||
|
|
|
@ -6,7 +6,7 @@ import django_fsm
|
|||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("registrar", "0028_alter_domainapplication_status"),
|
||||
("registrar", "0028_alter_DomainRequest_status"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
|
@ -22,7 +22,7 @@ class Migration(migrations.Migration):
|
|||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="status",
|
||||
field=django_fsm.FSMField(
|
||||
choices=[
|
||||
|
|
|
@ -5,7 +5,7 @@ from django.db import migrations, models
|
|||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("registrar", "0029_user_status_alter_domainapplication_status"),
|
||||
("registrar", "0029_user_status_alter_DomainRequest_status"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
|
|
|
@ -77,11 +77,11 @@ class Migration(migrations.Migration):
|
|||
},
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="more_organization_information",
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="type_of_work",
|
||||
),
|
||||
migrations.RemoveField(
|
||||
|
@ -93,7 +93,7 @@ class Migration(migrations.Migration):
|
|||
name="type_of_work",
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="about_your_organization",
|
||||
field=models.TextField(blank=True, help_text="Information about your organization", null=True),
|
||||
),
|
||||
|
@ -103,14 +103,14 @@ class Migration(migrations.Migration):
|
|||
field=models.TextField(blank=True, help_text="Information about your organization", null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="approved_domain",
|
||||
field=models.OneToOneField(
|
||||
blank=True,
|
||||
help_text="The approved domain",
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
related_name="domain_application",
|
||||
related_name="domain_request",
|
||||
to="registrar.domain",
|
||||
),
|
||||
),
|
||||
|
|
|
@ -10,7 +10,7 @@ class Migration(migrations.Migration):
|
|||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="organization_type",
|
||||
field=models.CharField(
|
||||
blank=True,
|
||||
|
|
|
@ -25,7 +25,7 @@ def create_groups(apps, schema_editor) -> Any:
|
|||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("registrar", "0041_alter_domainapplication_organization_type_and_more"),
|
||||
("registrar", "0041_alter_DomainRequest_organization_type_and_more"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
|
|
|
@ -10,14 +10,14 @@ class Migration(migrations.Migration):
|
|||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="current_websites",
|
||||
field=models.ManyToManyField(
|
||||
blank=True, related_name="current+", to="registrar.website", verbose_name="websites"
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="other_contacts",
|
||||
field=models.ManyToManyField(
|
||||
blank=True, related_name="contact_applications", to="registrar.contact", verbose_name="contacts"
|
||||
|
|
|
@ -5,7 +5,7 @@ from django.db import migrations, models
|
|||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("registrar", "0049_alter_domainapplication_current_websites_and_more"),
|
||||
("registrar", "0049_alter_DomainRequest_current_websites_and_more"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
|
@ -15,7 +15,7 @@ class Migration(migrations.Migration):
|
|||
field=models.TextField(blank=True, help_text="Middle name (optional)", null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="address_line2",
|
||||
field=models.TextField(blank=True, help_text="Street address line 2 (optional)", null=True),
|
||||
),
|
||||
|
|
|
@ -10,7 +10,7 @@ class Migration(migrations.Migration):
|
|||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="urbanization",
|
||||
field=models.TextField(blank=True, help_text="Urbanization (required for Puerto Rico only)", null=True),
|
||||
),
|
||||
|
|
|
@ -5,12 +5,12 @@ from django.db import migrations, models
|
|||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("registrar", "0051_alter_domainapplication_urbanization_and_more"),
|
||||
("registrar", "0051_alter_DomainRequest_urbanization_and_more"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="anything_else",
|
||||
field=models.TextField(blank=True, help_text="Anything else?", null=True),
|
||||
),
|
||||
|
|
|
@ -25,7 +25,7 @@ def create_groups(apps, schema_editor) -> Any:
|
|||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("registrar", "0052_alter_domainapplication_anything_else_and_more"),
|
||||
("registrar", "0052_alter_DomainRequest_anything_else_and_more"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
|
|
|
@ -10,7 +10,7 @@ class Migration(migrations.Migration):
|
|||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="federal_agency",
|
||||
field=models.TextField(
|
||||
blank=True,
|
||||
|
@ -317,7 +317,7 @@ class Migration(migrations.Migration):
|
|||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="state_territory",
|
||||
field=models.CharField(
|
||||
blank=True,
|
||||
|
|
|
@ -5,7 +5,7 @@ from django.db import migrations, models
|
|||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("registrar", "0054_alter_domainapplication_federal_agency_and_more"),
|
||||
("registrar", "0054_alter_DomainRequest_federal_agency_and_more"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
|
|
|
@ -28,7 +28,7 @@ class Migration(migrations.Migration):
|
|||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="status",
|
||||
field=django_fsm.FSMField(
|
||||
choices=[
|
||||
|
|
|
@ -5,12 +5,12 @@ from django.db import migrations, models
|
|||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("registrar", "0056_alter_domain_state_alter_domainapplication_status_and_more"),
|
||||
("registrar", "0056_alter_domain_state_alter_DomainRequest_status_and_more"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="submission_date",
|
||||
field=models.DateField(blank=True, default=None, help_text="Date submitted", null=True),
|
||||
),
|
||||
|
|
|
@ -5,7 +5,7 @@ from django.db import migrations
|
|||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("registrar", "0057_domainapplication_submission_date"),
|
||||
("registrar", "0057_DomainRequest_submission_date"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
|
|
|
@ -10,12 +10,12 @@ class Migration(migrations.Migration):
|
|||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="address_line1",
|
||||
field=models.TextField(blank=True, help_text="Street address", null=True, verbose_name="Address line 1"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="address_line2",
|
||||
field=models.TextField(
|
||||
blank=True, help_text="Street address line 2 (optional)", null=True, verbose_name="Address line 2"
|
||||
|
|
|
@ -25,7 +25,7 @@ def create_groups(apps, schema_editor) -> Any:
|
|||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("registrar", "0064_alter_domainapplication_address_line1_and_more"),
|
||||
("registrar", "0064_alter_DomainRequest_address_line1_and_more"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
|
|
|
@ -10,7 +10,7 @@ class Migration(migrations.Migration):
|
|||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="notes",
|
||||
field=models.TextField(blank=True, help_text="Notes about this request", null=True),
|
||||
),
|
||||
|
|
|
@ -6,7 +6,7 @@ import phonenumber_field.modelfields
|
|||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("registrar", "0068_domainapplication_notes_domaininformation_notes"),
|
||||
("registrar", "0068_DomainRequest_notes_domaininformation_notes"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
|
|
|
@ -10,7 +10,7 @@ class Migration(migrations.Migration):
|
|||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="rejection_reason",
|
||||
field=models.TextField(
|
||||
blank=True,
|
||||
|
|
|
@ -7,7 +7,7 @@ import phonenumber_field.modelfields
|
|||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("registrar", "0070_domainapplication_rejection_reason"),
|
||||
("registrar", "0070_DomainRequest_rejection_reason"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
|
@ -32,24 +32,24 @@ class Migration(migrations.Migration):
|
|||
field=models.CharField(blank=True, null=True, verbose_name="title or role in your organization"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="address_line1",
|
||||
field=models.CharField(blank=True, help_text="Street address", null=True, verbose_name="Address line 1"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="address_line2",
|
||||
field=models.CharField(
|
||||
blank=True, help_text="Street address line 2 (optional)", null=True, verbose_name="Address line 2"
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="city",
|
||||
field=models.CharField(blank=True, help_text="City", null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="federal_agency",
|
||||
field=models.CharField(
|
||||
blank=True,
|
||||
|
@ -356,17 +356,17 @@ class Migration(migrations.Migration):
|
|||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="organization_name",
|
||||
field=models.CharField(blank=True, db_index=True, help_text="Organization name", null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="tribe_name",
|
||||
field=models.CharField(blank=True, help_text="Name of tribe", null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="domainapplication",
|
||||
model_name="DomainRequest",
|
||||
name="urbanization",
|
||||
field=models.CharField(blank=True, help_text="Urbanization (required for Puerto Rico only)", null=True),
|
||||
),
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
from auditlog.registry import auditlog # type: ignore
|
||||
from .contact import Contact
|
||||
from .domain_application import DomainApplication
|
||||
from .domain_request import DomainRequest
|
||||
from .domain_information import DomainInformation
|
||||
from .domain import Domain
|
||||
from .draft_domain import DraftDomain
|
||||
|
@ -17,7 +17,7 @@ from .verified_by_staff import VerifiedByStaff
|
|||
|
||||
__all__ = [
|
||||
"Contact",
|
||||
"DomainApplication",
|
||||
"DomainRequest",
|
||||
"DomainInformation",
|
||||
"Domain",
|
||||
"DraftDomain",
|
||||
|
@ -34,7 +34,7 @@ __all__ = [
|
|||
]
|
||||
|
||||
auditlog.register(Contact)
|
||||
auditlog.register(DomainApplication)
|
||||
auditlog.register(DomainRequest)
|
||||
auditlog.register(Domain)
|
||||
auditlog.register(DraftDomain)
|
||||
auditlog.register(DomainInvitation)
|
||||
|
|
|
@ -897,8 +897,8 @@ class Domain(TimeStampedModel, DomainHelper):
|
|||
def security_contact(self, contact: PublicContact):
|
||||
"""makes the contact in the registry,
|
||||
for security the public contact should have the org or registrant information
|
||||
from domain information (not domain application)
|
||||
and should have the security email from DomainApplication"""
|
||||
from domain information (not domain request)
|
||||
and should have the security email from DomainRequest"""
|
||||
logger.info("making security contact in registry")
|
||||
self._set_singleton_contact(contact, expectedType=contact.ContactTypeChoices.SECURITY)
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ from itertools import chain
|
|||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class DomainApplication(TimeStampedModel):
|
||||
class DomainRequest(TimeStampedModel):
|
||||
"""A registrant's application for a new domain."""
|
||||
|
||||
# Constants for choice fields
|
||||
|
@ -512,7 +512,7 @@ class DomainApplication(TimeStampedModel):
|
|||
null=True,
|
||||
blank=True,
|
||||
help_text="The approved domain",
|
||||
related_name="domain_application",
|
||||
related_name="domain_request",
|
||||
on_delete=models.SET_NULL,
|
||||
)
|
||||
|
||||
|
@ -521,7 +521,7 @@ class DomainApplication(TimeStampedModel):
|
|||
null=True,
|
||||
blank=True,
|
||||
help_text="The requested domain",
|
||||
related_name="domain_application",
|
||||
related_name="domain_request",
|
||||
on_delete=models.PROTECT,
|
||||
)
|
||||
alternative_domains = models.ManyToManyField(
|
||||
|
@ -722,7 +722,7 @@ class DomainApplication(TimeStampedModel):
|
|||
if self.status == self.ApplicationStatus.REJECTED:
|
||||
self.rejection_reason = None
|
||||
|
||||
literal = DomainApplication.ApplicationStatus.IN_REVIEW
|
||||
literal = DomainRequest.ApplicationStatus.IN_REVIEW
|
||||
# Check if the tuple exists, then grab its value
|
||||
in_review = literal if literal is not None else "In Review"
|
||||
logger.info(f"A status change occurred. {self} was changed to '{in_review}'")
|
||||
|
@ -754,7 +754,7 @@ class DomainApplication(TimeStampedModel):
|
|||
if self.status == self.ApplicationStatus.REJECTED:
|
||||
self.rejection_reason = None
|
||||
|
||||
literal = DomainApplication.ApplicationStatus.ACTION_NEEDED
|
||||
literal = DomainRequest.ApplicationStatus.ACTION_NEEDED
|
||||
# Check if the tuple is setup correctly, then grab its value
|
||||
action_needed = literal if literal is not None else "Action Needed"
|
||||
logger.info(f"A status change occurred. {self} was changed to '{action_needed}'")
|
||||
|
@ -786,9 +786,9 @@ class DomainApplication(TimeStampedModel):
|
|||
created_domain = Domain.objects.create(name=self.requested_domain.name)
|
||||
self.approved_domain = created_domain
|
||||
|
||||
# copy the information from domainapplication into domaininformation
|
||||
# copy the information from DomainRequest into domaininformation
|
||||
DomainInformation = apps.get_model("registrar.DomainInformation")
|
||||
DomainInformation.create_from_da(domain_application=self, domain=created_domain)
|
||||
DomainInformation.create_from_da(domain_request=self, domain=created_domain)
|
||||
|
||||
# create the permission for the user
|
||||
UserDomainRole = apps.get_model("registrar.UserDomainRole")
|
||||
|
@ -875,12 +875,12 @@ class DomainApplication(TimeStampedModel):
|
|||
def show_organization_federal(self) -> bool:
|
||||
"""Show this step if the answer to the first question was "federal"."""
|
||||
user_choice = self.organization_type
|
||||
return user_choice == DomainApplication.OrganizationChoices.FEDERAL
|
||||
return user_choice == DomainRequest.OrganizationChoices.FEDERAL
|
||||
|
||||
def show_tribal_government(self) -> bool:
|
||||
"""Show this step if the answer to the first question was "tribal"."""
|
||||
user_choice = self.organization_type
|
||||
return user_choice == DomainApplication.OrganizationChoices.TRIBAL
|
||||
return user_choice == DomainRequest.OrganizationChoices.TRIBAL
|
||||
|
||||
def show_organization_election(self) -> bool:
|
||||
"""Show this step if the answer to the first question implies it.
|
||||
|
@ -890,9 +890,9 @@ class DomainApplication(TimeStampedModel):
|
|||
"""
|
||||
user_choice = self.organization_type
|
||||
excluded = [
|
||||
DomainApplication.OrganizationChoices.FEDERAL,
|
||||
DomainApplication.OrganizationChoices.INTERSTATE,
|
||||
DomainApplication.OrganizationChoices.SCHOOL_DISTRICT,
|
||||
DomainRequest.OrganizationChoices.FEDERAL,
|
||||
DomainRequest.OrganizationChoices.INTERSTATE,
|
||||
DomainRequest.OrganizationChoices.SCHOOL_DISTRICT,
|
||||
]
|
||||
return bool(user_choice and user_choice not in excluded)
|
||||
|
||||
|
@ -900,8 +900,8 @@ class DomainApplication(TimeStampedModel):
|
|||
"""Show this step if this is a special district or interstate."""
|
||||
user_choice = self.organization_type
|
||||
return user_choice in [
|
||||
DomainApplication.OrganizationChoices.SPECIAL_DISTRICT,
|
||||
DomainApplication.OrganizationChoices.INTERSTATE,
|
||||
DomainRequest.OrganizationChoices.SPECIAL_DISTRICT,
|
||||
DomainRequest.OrganizationChoices.INTERSTATE,
|
||||
]
|
||||
|
||||
def has_rationale(self) -> bool:
|
||||
|
@ -920,7 +920,7 @@ class DomainApplication(TimeStampedModel):
|
|||
if not self.organization_type:
|
||||
# organization_type is either blank or None, can't answer
|
||||
return None
|
||||
if self.organization_type == DomainApplication.OrganizationChoices.FEDERAL:
|
||||
if self.organization_type == DomainRequest.OrganizationChoices.FEDERAL:
|
||||
return True
|
||||
return False
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@ from __future__ import annotations
|
|||
from django.db import transaction
|
||||
|
||||
from registrar.models.utility.domain_helper import DomainHelper
|
||||
from .domain_application import DomainApplication
|
||||
from .domain_request import DomainRequest
|
||||
from .utility.time_stamped_model import TimeStampedModel
|
||||
|
||||
import logging
|
||||
|
@ -15,20 +15,20 @@ logger = logging.getLogger(__name__)
|
|||
|
||||
class DomainInformation(TimeStampedModel):
|
||||
"""A registrant's domain information for that domain, exported from
|
||||
DomainApplication. We use these field from DomainApplication with few exceptions
|
||||
DomainRequest. We use these field from DomainRequest with few exceptions
|
||||
which are 'removed' via pop at the bottom of this file. Most of design for domain
|
||||
management's user information are based on application, but we cannot change
|
||||
the application once approved, so copying them that way we can make changes
|
||||
after its approved. Most fields here are copied from Application."""
|
||||
|
||||
StateTerritoryChoices = DomainApplication.StateTerritoryChoices
|
||||
StateTerritoryChoices = DomainRequest.StateTerritoryChoices
|
||||
|
||||
# use the short names in Django admin
|
||||
OrganizationChoices = DomainApplication.OrganizationChoices
|
||||
OrganizationChoices = DomainRequest.OrganizationChoices
|
||||
|
||||
BranchChoices = DomainApplication.BranchChoices
|
||||
BranchChoices = DomainRequest.BranchChoices
|
||||
|
||||
AGENCY_CHOICES = DomainApplication.AGENCY_CHOICES
|
||||
AGENCY_CHOICES = DomainRequest.AGENCY_CHOICES
|
||||
|
||||
# This is the application user who created this application. The contact
|
||||
# information that they gave is in the `submitter` field
|
||||
|
@ -38,13 +38,13 @@ class DomainInformation(TimeStampedModel):
|
|||
related_name="information_created",
|
||||
)
|
||||
|
||||
domain_application = models.OneToOneField(
|
||||
"registrar.DomainApplication",
|
||||
domain_request = models.OneToOneField(
|
||||
"registrar.DomainRequest",
|
||||
on_delete=models.PROTECT,
|
||||
blank=True,
|
||||
null=True,
|
||||
related_name="domainapplication_info",
|
||||
help_text="Associated domain application",
|
||||
related_name="DomainRequest_info",
|
||||
help_text="Associated domain request",
|
||||
unique=True,
|
||||
)
|
||||
|
||||
|
@ -220,25 +220,25 @@ class DomainInformation(TimeStampedModel):
|
|||
return ""
|
||||
|
||||
@classmethod
|
||||
def create_from_da(cls, domain_application: DomainApplication, domain=None):
|
||||
"""Takes in a DomainApplication and converts it into DomainInformation"""
|
||||
def create_from_da(cls, domain_request: DomainRequest, domain=None):
|
||||
"""Takes in a DomainRequest and converts it into DomainInformation"""
|
||||
|
||||
# Throw an error if we get None - we can't create something from nothing
|
||||
if domain_application is None:
|
||||
raise ValueError("The provided DomainApplication is None")
|
||||
if domain_request is None:
|
||||
raise ValueError("The provided DomainRequest is None")
|
||||
|
||||
# Throw an error if the da doesn't have an id
|
||||
if not hasattr(domain_application, "id"):
|
||||
raise ValueError("The provided DomainApplication has no id")
|
||||
if not hasattr(domain_request, "id"):
|
||||
raise ValueError("The provided DomainRequest has no id")
|
||||
|
||||
# check if we have a record that corresponds with the domain
|
||||
# application, if so short circuit the create
|
||||
existing_domain_info = cls.objects.filter(domain_application__id=domain_application.id).first()
|
||||
existing_domain_info = cls.objects.filter(domain_request__id=domain_request.id).first()
|
||||
if existing_domain_info:
|
||||
return existing_domain_info
|
||||
|
||||
# Get the fields that exist on both DomainApplication and DomainInformation
|
||||
common_fields = DomainHelper.get_common_fields(DomainApplication, DomainInformation)
|
||||
# Get the fields that exist on both DomainRequest and DomainInformation
|
||||
common_fields = DomainHelper.get_common_fields(DomainRequest, DomainInformation)
|
||||
|
||||
# Get a list of all many_to_many relations on DomainInformation (needs to be saved differently)
|
||||
info_many_to_many_fields = DomainInformation._get_many_to_many_fields()
|
||||
|
@ -249,11 +249,11 @@ class DomainInformation(TimeStampedModel):
|
|||
for field in common_fields:
|
||||
# If the field isn't many_to_many, populate the da_dict.
|
||||
# If it is, populate da_many_to_many_dict as we need to save this later.
|
||||
if hasattr(domain_application, field):
|
||||
if hasattr(domain_request, field):
|
||||
if field not in info_many_to_many_fields:
|
||||
da_dict[field] = getattr(domain_application, field)
|
||||
da_dict[field] = getattr(domain_request, field)
|
||||
else:
|
||||
da_many_to_many_dict[field] = getattr(domain_application, field).all()
|
||||
da_many_to_many_dict[field] = getattr(domain_request, field).all()
|
||||
|
||||
# This will not happen in normal code flow, but having some redundancy doesn't hurt.
|
||||
# da_dict should not have "id" under any circumstances.
|
||||
|
@ -266,8 +266,8 @@ class DomainInformation(TimeStampedModel):
|
|||
# Create a placeholder DomainInformation object
|
||||
domain_info = DomainInformation(**da_dict)
|
||||
|
||||
# Add the domain_application and domain fields
|
||||
domain_info.domain_application = domain_application
|
||||
# Add the domain_request and domain fields
|
||||
domain_info.domain_request = domain_request
|
||||
if domain:
|
||||
domain_info.domain = domain
|
||||
|
||||
|
|
|
@ -33,8 +33,8 @@ class UserGroup(Group):
|
|||
},
|
||||
{
|
||||
"app_label": "registrar",
|
||||
"model": "domainapplication",
|
||||
"permissions": ["change_domainapplication"],
|
||||
"model": "DomainRequest",
|
||||
"permissions": ["change_DomainRequest"],
|
||||
},
|
||||
{
|
||||
"app_label": "registrar",
|
||||
|
|
|
@ -184,7 +184,7 @@ class DomainHelper:
|
|||
model_1_fields = set(field.name for field in model_1._meta.get_fields() if field.name != "id")
|
||||
model_2_fields = set(field.name for field in model_2._meta.get_fields() if field.name != "id")
|
||||
|
||||
# Get the fields that exist on both DomainApplication and DomainInformation
|
||||
# Get the fields that exist on both DomainRequest and DomainInformation
|
||||
common_fields = model_1_fields & model_2_fields
|
||||
|
||||
return common_fields
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
{% load custom_filters %}
|
||||
|
||||
{% block title %}Domain request status | {{ domainapplication.requested_domain.name }} | {% endblock %}
|
||||
{% block title %}Domain request status | {{ DomainRequest.requested_domain.name }} | {% endblock %}
|
||||
{% load static url_helpers %}
|
||||
|
||||
{% block content %}
|
||||
|
@ -17,7 +17,7 @@
|
|||
Back to manage your domains
|
||||
</p>
|
||||
</a>
|
||||
<h1>Domain request for {{ domainapplication.requested_domain.name }}</h1>
|
||||
<h1>Domain request for {{ DomainRequest.requested_domain.name }}</h1>
|
||||
<div
|
||||
class="usa-summary-box dotgov-status-box margin-top-3 padding-left-2"
|
||||
role="region"
|
||||
|
@ -30,21 +30,21 @@
|
|||
<span class="text-bold text-primary-darker">
|
||||
Status:
|
||||
</span>
|
||||
{% if domainapplication.status == 'approved' %} Approved
|
||||
{% elif domainapplication.status == 'in review' %} In review
|
||||
{% elif domainapplication.status == 'rejected' %} Rejected
|
||||
{% elif domainapplication.status == 'submitted' %} Submitted
|
||||
{% elif domainapplication.status == 'ineligible' %} Ineligible
|
||||
{% if DomainRequest.status == 'approved' %} Approved
|
||||
{% elif DomainRequest.status == 'in review' %} In review
|
||||
{% elif DomainRequest.status == 'rejected' %} Rejected
|
||||
{% elif DomainRequest.status == 'submitted' %} Submitted
|
||||
{% elif DomainRequest.status == 'ineligible' %} Ineligible
|
||||
{% else %}ERROR Please contact technical support/dev
|
||||
{% endif %}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
<p> <b class="review__step__name">Last updated:</b> {{domainapplication.updated_at|date:"F j, Y"}}<br>
|
||||
<b class="review__step__name">Request #:</b> {{domainapplication.id}}</p>
|
||||
<p>{% include "includes/domain_application.html" %}</p>
|
||||
<p><a href="{% url 'application-withdraw-confirmation' pk=domainapplication.id %}" class="usa-button usa-button--outline withdraw_outline">
|
||||
<p> <b class="review__step__name">Last updated:</b> {{DomainRequest.updated_at|date:"F j, Y"}}<br>
|
||||
<b class="review__step__name">Request #:</b> {{DomainRequest.id}}</p>
|
||||
<p>{% include "includes/domain_request.html" %}</p>
|
||||
<p><a href="{% url 'application-withdraw-confirmation' pk=DomainRequest.id %}" class="usa-button usa-button--outline withdraw_outline">
|
||||
Withdraw request</a>
|
||||
</p>
|
||||
</div>
|
||||
|
@ -52,72 +52,72 @@
|
|||
<div class="grid-col desktop:grid-offset-2 maxw-tablet">
|
||||
<h2 class="text-primary-darker"> Summary of your domain request </h2>
|
||||
{% with heading_level='h3' %}
|
||||
{% with org_type=domainapplication.get_organization_type_display %}
|
||||
{% with org_type=DomainRequest.get_organization_type_display %}
|
||||
{% include "includes/summary_item.html" with title='Type of organization' value=org_type heading_level=heading_level %}
|
||||
{% endwith %}
|
||||
|
||||
{% if domainapplication.tribe_name %}
|
||||
{% include "includes/summary_item.html" with title='Tribal government' value=domainapplication.tribe_name heading_level=heading_level %}
|
||||
{% if DomainRequest.tribe_name %}
|
||||
{% include "includes/summary_item.html" with title='Tribal government' value=DomainRequest.tribe_name heading_level=heading_level %}
|
||||
|
||||
{% if domainapplication.federally_recognized_tribe %}
|
||||
{% if DomainRequest.federally_recognized_tribe %}
|
||||
<p>Federally-recognized tribe</p>
|
||||
{% endif %}
|
||||
|
||||
{% if domainapplication.state_recognized_tribe %}
|
||||
{% if DomainRequest.state_recognized_tribe %}
|
||||
<p>State-recognized tribe</p>
|
||||
{% endif %}
|
||||
|
||||
{% endif %}
|
||||
|
||||
{% if domainapplication.get_federal_type_display %}
|
||||
{% include "includes/summary_item.html" with title='Federal government branch' value=domainapplication.get_federal_type_display heading_level=heading_level %}
|
||||
{% if DomainRequest.get_federal_type_display %}
|
||||
{% include "includes/summary_item.html" with title='Federal government branch' value=DomainRequest.get_federal_type_display heading_level=heading_level %}
|
||||
{% endif %}
|
||||
|
||||
{% if domainapplication.is_election_board %}
|
||||
{% with value=domainapplication.is_election_board|yesno:"Yes,No,Incomplete" %}
|
||||
{% if DomainRequest.is_election_board %}
|
||||
{% with value=DomainRequest.is_election_board|yesno:"Yes,No,Incomplete" %}
|
||||
{% include "includes/summary_item.html" with title='Election office' value=value heading_level=heading_level %}
|
||||
{% endwith %}
|
||||
{% endif %}
|
||||
|
||||
{% if domainapplication.organization_name %}
|
||||
{% include "includes/summary_item.html" with title='Organization name and mailing address' value=domainapplication address='true' heading_level=heading_level %}
|
||||
{% if DomainRequest.organization_name %}
|
||||
{% include "includes/summary_item.html" with title='Organization name and mailing address' value=DomainRequest address='true' heading_level=heading_level %}
|
||||
{% endif %}
|
||||
|
||||
{% if domainapplication.about_your_organization %}
|
||||
{% include "includes/summary_item.html" with title='About your organization' value=domainapplication.about_your_organization heading_level=heading_level %}
|
||||
{% if DomainRequest.about_your_organization %}
|
||||
{% include "includes/summary_item.html" with title='About your organization' value=DomainRequest.about_your_organization heading_level=heading_level %}
|
||||
{% endif %}
|
||||
|
||||
{% if domainapplication.authorizing_official %}
|
||||
{% include "includes/summary_item.html" with title='Authorizing official' value=domainapplication.authorizing_official contact='true' heading_level=heading_level %}
|
||||
{% if DomainRequest.authorizing_official %}
|
||||
{% include "includes/summary_item.html" with title='Authorizing official' value=DomainRequest.authorizing_official contact='true' heading_level=heading_level %}
|
||||
{% endif %}
|
||||
|
||||
{% if domainapplication.current_websites.all %}
|
||||
{% include "includes/summary_item.html" with title='Current websites' value=domainapplication.current_websites.all list='true' heading_level=heading_level %}
|
||||
{% if DomainRequest.current_websites.all %}
|
||||
{% include "includes/summary_item.html" with title='Current websites' value=DomainRequest.current_websites.all list='true' heading_level=heading_level %}
|
||||
{% endif %}
|
||||
|
||||
{% if domainapplication.requested_domain %}
|
||||
{% include "includes/summary_item.html" with title='.gov domain' value=domainapplication.requested_domain heading_level=heading_level %}
|
||||
{% if DomainRequest.requested_domain %}
|
||||
{% include "includes/summary_item.html" with title='.gov domain' value=DomainRequest.requested_domain heading_level=heading_level %}
|
||||
{% endif %}
|
||||
|
||||
{% if domainapplication.alternative_domains.all %}
|
||||
{% include "includes/summary_item.html" with title='Alternative domains' value=domainapplication.alternative_domains.all list='true' heading_level=heading_level %}
|
||||
{% if DomainRequest.alternative_domains.all %}
|
||||
{% include "includes/summary_item.html" with title='Alternative domains' value=DomainRequest.alternative_domains.all list='true' heading_level=heading_level %}
|
||||
{% endif %}
|
||||
|
||||
{% if domainapplication.purpose %}
|
||||
{% include "includes/summary_item.html" with title='Purpose of your domain' value=domainapplication.purpose heading_level=heading_level %}
|
||||
{% if DomainRequest.purpose %}
|
||||
{% include "includes/summary_item.html" with title='Purpose of your domain' value=DomainRequest.purpose heading_level=heading_level %}
|
||||
{% endif %}
|
||||
|
||||
{% if domainapplication.submitter %}
|
||||
{% include "includes/summary_item.html" with title='Your contact information' value=domainapplication.submitter contact='true' heading_level=heading_level %}
|
||||
{% if DomainRequest.submitter %}
|
||||
{% include "includes/summary_item.html" with title='Your contact information' value=DomainRequest.submitter contact='true' heading_level=heading_level %}
|
||||
{% endif %}
|
||||
|
||||
{% if domainapplication.other_contacts.all %}
|
||||
{% include "includes/summary_item.html" with title='Other employees from your organization' value=domainapplication.other_contacts.all contact='true' list='true' heading_level=heading_level %}
|
||||
{% if DomainRequest.other_contacts.all %}
|
||||
{% include "includes/summary_item.html" with title='Other employees from your organization' value=DomainRequest.other_contacts.all contact='true' list='true' heading_level=heading_level %}
|
||||
{% else %}
|
||||
{% include "includes/summary_item.html" with title='Other employees from your organization' value=domainapplication.no_other_contacts_rationale heading_level=heading_level %}
|
||||
{% include "includes/summary_item.html" with title='Other employees from your organization' value=DomainRequest.no_other_contacts_rationale heading_level=heading_level %}
|
||||
{% endif %}
|
||||
|
||||
{% include "includes/summary_item.html" with title='Anything else?' value=domainapplication.anything_else|default:"No" heading_level=heading_level %}
|
||||
{% include "includes/summary_item.html" with title='Anything else?' value=DomainRequest.anything_else|default:"No" heading_level=heading_level %}
|
||||
|
||||
{% endwith %}
|
||||
</div>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{% extends 'base.html' %}
|
||||
|
||||
{% block title %}Withdraw request for {{ domainapplication.requested_domain.name }} | {% endblock %}
|
||||
{% block title %}Withdraw request for {{ DomainRequest.requested_domain.name }} | {% endblock %}
|
||||
{% load static url_helpers %}
|
||||
|
||||
{% block content %}
|
||||
|
@ -8,12 +8,12 @@
|
|||
<div class="grid-col desktop:grid-offset-2 desktop:grid-col-8">
|
||||
|
||||
|
||||
<h1>Withdraw request for {{ domainapplication.requested_domain.name }}?</h1>
|
||||
<h1>Withdraw request for {{ DomainRequest.requested_domain.name }}?</h1>
|
||||
|
||||
<p>If you withdraw your request, we won't review it. Once you withdraw your request, you can edit it and submit it again. </p>
|
||||
|
||||
<p><a href="{% url 'application-withdrawn' domainapplication.id %}" class="usa-button withdraw">Withdraw request</a>
|
||||
<a href="{% url 'application-status' domainapplication.id %}">Cancel</a></p>
|
||||
<p><a href="{% url 'application-withdrawn' DomainRequest.id %}" class="usa-button withdraw">Withdraw request</a>
|
||||
<a href="{% url 'application-status' DomainRequest.id %}">Cancel</a></p>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -103,7 +103,7 @@
|
|||
|
||||
<section class="section--outlined">
|
||||
<h2>Domain requests</h2>
|
||||
{% if domain_applications %}
|
||||
{% if domain_requests %}
|
||||
<table class="usa-table usa-table--borderless usa-table--stacked dotgov-table dotgov-table--stacked">
|
||||
<caption class="sr-only">Your domain requests</caption>
|
||||
<thead>
|
||||
|
@ -118,7 +118,7 @@
|
|||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for application in domain_applications %}
|
||||
{% for application in domain_requests %}
|
||||
<tr>
|
||||
<th th scope="row" role="rowheader" data-label="Domain name">
|
||||
{% if application.requested_domain is None %}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import logging
|
||||
from django import template
|
||||
import re
|
||||
from registrar.models.domain_application import DomainApplication
|
||||
from registrar.models.domain_request import DomainRequest
|
||||
|
||||
register = template.Library()
|
||||
logger = logging.getLogger(__name__)
|
||||
|
@ -55,7 +55,7 @@ def contains_checkbox(html_list):
|
|||
|
||||
@register.filter
|
||||
def get_organization_long_name(organization_type):
|
||||
organization_choices_dict = dict(DomainApplication.OrganizationChoicesVerbose.choices)
|
||||
organization_choices_dict = dict(DomainRequest.OrganizationChoicesVerbose.choices)
|
||||
long_form_type = organization_choices_dict[organization_type]
|
||||
if long_form_type is None:
|
||||
logger.error("Organization type error, triggered by a template's custom filter")
|
||||
|
|
|
@ -18,7 +18,7 @@ from registrar.models import (
|
|||
Contact,
|
||||
DraftDomain,
|
||||
Website,
|
||||
DomainApplication,
|
||||
DomainRequest,
|
||||
DomainInvitation,
|
||||
User,
|
||||
UserGroup,
|
||||
|
@ -365,13 +365,13 @@ class AuditedAdminMockData:
|
|||
self,
|
||||
domain_type,
|
||||
item_name,
|
||||
status=DomainApplication.ApplicationStatus.STARTED,
|
||||
status=DomainRequest.ApplicationStatus.STARTED,
|
||||
org_type="federal",
|
||||
federal_type="executive",
|
||||
purpose="Purpose of the site",
|
||||
):
|
||||
"""
|
||||
Returns a prebuilt kwarg dictionary for DomainApplication,
|
||||
Returns a prebuilt kwarg dictionary for DomainRequest,
|
||||
DomainInformation, or DomainInvitation.
|
||||
Args:
|
||||
domain_type (str): is either 'application', 'information',
|
||||
|
@ -381,8 +381,8 @@ class AuditedAdminMockData:
|
|||
organization_name, address_line1, address_line2,
|
||||
title, email, and username.
|
||||
|
||||
status (str - optional): Defines the status for DomainApplication,
|
||||
e.g. DomainApplication.ApplicationStatus.STARTED
|
||||
status (str - optional): Defines the status for DomainRequest,
|
||||
e.g. DomainRequest.ApplicationStatus.STARTED
|
||||
|
||||
org_type (str - optional): Sets a domains org_type
|
||||
|
||||
|
@ -391,7 +391,7 @@ class AuditedAdminMockData:
|
|||
purpose (str - optional): Sets a domains purpose
|
||||
Returns:
|
||||
dict: Returns a dictionary structurally consistent with the expected input
|
||||
of either DomainApplication, DomainInvitation, or DomainInformation
|
||||
of either DomainRequest, DomainInvitation, or DomainInformation
|
||||
based on the 'domain_type' field.
|
||||
""" # noqa
|
||||
common_args = self.get_common_domain_arg_dictionary(item_name, org_type, federal_type, purpose)
|
||||
|
@ -405,11 +405,11 @@ class AuditedAdminMockData:
|
|||
status=status,
|
||||
)
|
||||
case self.INFORMATION:
|
||||
domain_app = self.create_full_dummy_domain_application(item_name)
|
||||
domain_app = self.create_full_dummy_domain_request(item_name)
|
||||
full_arg_dict = dict(
|
||||
**common_args,
|
||||
domain=self.dummy_domain(item_name, True),
|
||||
domain_application=domain_app,
|
||||
domain_request=domain_app,
|
||||
)
|
||||
case self.INVITATION:
|
||||
full_arg_dict = dict(
|
||||
|
@ -419,22 +419,22 @@ class AuditedAdminMockData:
|
|||
)
|
||||
return full_arg_dict
|
||||
|
||||
def create_full_dummy_domain_application(self, item_name, status=DomainApplication.ApplicationStatus.STARTED):
|
||||
"""Creates a dummy domain application object"""
|
||||
domain_application_kwargs = self.dummy_kwarg_boilerplate(self.APPLICATION, item_name, status)
|
||||
application = DomainApplication.objects.get_or_create(**domain_application_kwargs)[0]
|
||||
def create_full_dummy_domain_request(self, item_name, status=DomainRequest.ApplicationStatus.STARTED):
|
||||
"""Creates a dummy domain request object"""
|
||||
domain_request_kwargs = self.dummy_kwarg_boilerplate(self.APPLICATION, item_name, status)
|
||||
application = DomainRequest.objects.get_or_create(**domain_request_kwargs)[0]
|
||||
return application
|
||||
|
||||
def create_full_dummy_domain_information(self, item_name, status=DomainApplication.ApplicationStatus.STARTED):
|
||||
def create_full_dummy_domain_information(self, item_name, status=DomainRequest.ApplicationStatus.STARTED):
|
||||
"""Creates a dummy domain information object"""
|
||||
domain_application_kwargs = self.dummy_kwarg_boilerplate(self.INFORMATION, item_name, status)
|
||||
application = DomainInformation.objects.get_or_create(**domain_application_kwargs)[0]
|
||||
domain_request_kwargs = self.dummy_kwarg_boilerplate(self.INFORMATION, item_name, status)
|
||||
application = DomainInformation.objects.get_or_create(**domain_request_kwargs)[0]
|
||||
return application
|
||||
|
||||
def create_full_dummy_domain_invitation(self, item_name, status=DomainApplication.ApplicationStatus.STARTED):
|
||||
def create_full_dummy_domain_invitation(self, item_name, status=DomainRequest.ApplicationStatus.STARTED):
|
||||
"""Creates a dummy domain invitation object"""
|
||||
domain_application_kwargs = self.dummy_kwarg_boilerplate(self.INVITATION, item_name, status)
|
||||
application = DomainInvitation.objects.get_or_create(**domain_application_kwargs)[0]
|
||||
domain_request_kwargs = self.dummy_kwarg_boilerplate(self.INVITATION, item_name, status)
|
||||
application = DomainInvitation.objects.get_or_create(**domain_request_kwargs)[0]
|
||||
|
||||
return application
|
||||
|
||||
|
@ -445,13 +445,13 @@ class AuditedAdminMockData:
|
|||
has_other_contacts=True,
|
||||
has_current_website=True,
|
||||
has_alternative_gov_domain=True,
|
||||
status=DomainApplication.ApplicationStatus.STARTED,
|
||||
status=DomainRequest.ApplicationStatus.STARTED,
|
||||
):
|
||||
"""A helper to create a dummy domain application object"""
|
||||
"""A helper to create a dummy domain request object"""
|
||||
application = None
|
||||
match domain_type:
|
||||
case self.APPLICATION:
|
||||
application = self.create_full_dummy_domain_application(item_name, status)
|
||||
application = self.create_full_dummy_domain_request(item_name, status)
|
||||
case self.INVITATION:
|
||||
application = self.create_full_dummy_domain_invitation(item_name, status)
|
||||
case self.INFORMATION:
|
||||
|
@ -526,12 +526,12 @@ def completed_application(
|
|||
has_alternative_gov_domain=True,
|
||||
has_about_your_organization=True,
|
||||
has_anything_else=True,
|
||||
status=DomainApplication.ApplicationStatus.STARTED,
|
||||
status=DomainRequest.ApplicationStatus.STARTED,
|
||||
user=False,
|
||||
submitter=False,
|
||||
name="city.gov",
|
||||
):
|
||||
"""A completed domain application."""
|
||||
"""A completed domain request."""
|
||||
if not user:
|
||||
user = get_user_model().objects.create(username="username" + str(uuid.uuid4())[:8])
|
||||
ao, _ = Contact.objects.get_or_create(
|
||||
|
@ -559,7 +559,7 @@ def completed_application(
|
|||
email="testy2@town.com",
|
||||
phone="(555) 555 5557",
|
||||
)
|
||||
domain_application_kwargs = dict(
|
||||
domain_request_kwargs = dict(
|
||||
organization_type="federal",
|
||||
federal_type="executive",
|
||||
purpose="Purpose of the site",
|
||||
|
@ -576,11 +576,11 @@ def completed_application(
|
|||
status=status,
|
||||
)
|
||||
if has_about_your_organization:
|
||||
domain_application_kwargs["about_your_organization"] = "e-Government"
|
||||
domain_request_kwargs["about_your_organization"] = "e-Government"
|
||||
if has_anything_else:
|
||||
domain_application_kwargs["anything_else"] = "There is more"
|
||||
domain_request_kwargs["anything_else"] = "There is more"
|
||||
|
||||
application, _ = DomainApplication.objects.get_or_create(**domain_application_kwargs)
|
||||
application, _ = DomainRequest.objects.get_or_create(**domain_request_kwargs)
|
||||
|
||||
if has_other_contacts:
|
||||
application.other_contacts.add(other)
|
||||
|
|
|
@ -7,8 +7,8 @@ from django.contrib import messages
|
|||
from django.urls import reverse
|
||||
from registrar.admin import (
|
||||
DomainAdmin,
|
||||
DomainApplicationAdmin,
|
||||
DomainApplicationAdminForm,
|
||||
DomainRequestAdmin,
|
||||
DomainRequestAdminForm,
|
||||
DomainInvitationAdmin,
|
||||
ListHeaderAdmin,
|
||||
MyUserAdmin,
|
||||
|
@ -18,7 +18,7 @@ from registrar.admin import (
|
|||
UserDomainRoleAdmin,
|
||||
VerifiedByStaffAdmin,
|
||||
)
|
||||
from registrar.models import Domain, DomainApplication, DomainInformation, User, DomainInvitation, Contact, Website
|
||||
from registrar.models import Domain, DomainRequest, DomainInformation, User, DomainInvitation, Contact, Website
|
||||
from registrar.models.user_domain_role import UserDomainRole
|
||||
from registrar.models.verified_by_staff import VerifiedByStaff
|
||||
from .common import (
|
||||
|
@ -236,7 +236,7 @@ class TestDomainAdmin(MockEppLib, WebTest):
|
|||
"""
|
||||
with less_console_noise():
|
||||
self.client.force_login(self.superuser)
|
||||
application = completed_application(status=DomainApplication.ApplicationStatus.IN_REVIEW)
|
||||
application = completed_application(status=DomainRequest.ApplicationStatus.IN_REVIEW)
|
||||
mock_client = MockSESClient()
|
||||
with boto3_mocking.clients.handler_for("sesv2", mock_client):
|
||||
application.approve()
|
||||
|
@ -435,11 +435,11 @@ class TestDomainAdmin(MockEppLib, WebTest):
|
|||
super().tearDown()
|
||||
Domain.objects.all().delete()
|
||||
DomainInformation.objects.all().delete()
|
||||
DomainApplication.objects.all().delete()
|
||||
DomainRequest.objects.all().delete()
|
||||
User.objects.all().delete()
|
||||
|
||||
|
||||
class TestDomainApplicationAdminForm(TestCase):
|
||||
class TestDomainRequestAdminForm(TestCase):
|
||||
def setUp(self):
|
||||
# Create a test application with an initial state of started
|
||||
self.application = completed_application()
|
||||
|
@ -447,7 +447,7 @@ class TestDomainApplicationAdminForm(TestCase):
|
|||
def test_form_choices(self):
|
||||
with less_console_noise():
|
||||
# Create a form instance with the test application
|
||||
form = DomainApplicationAdminForm(instance=self.application)
|
||||
form = DomainRequestAdminForm(instance=self.application)
|
||||
|
||||
# Verify that the form choices match the available transitions for started
|
||||
expected_choices = [("started", "Started"), ("submitted", "Submitted")]
|
||||
|
@ -456,41 +456,41 @@ class TestDomainApplicationAdminForm(TestCase):
|
|||
def test_form_choices_when_no_instance(self):
|
||||
with less_console_noise():
|
||||
# Create a form instance without an instance
|
||||
form = DomainApplicationAdminForm()
|
||||
form = DomainRequestAdminForm()
|
||||
|
||||
# Verify that the form choices show all choices when no instance is provided;
|
||||
# this is necessary to show all choices when creating a new domain
|
||||
# application in django admin;
|
||||
# note that FSM ensures that no domain application exists with invalid status,
|
||||
# note that FSM ensures that no domain request exists with invalid status,
|
||||
# so don't need to test for invalid status
|
||||
self.assertEqual(
|
||||
form.fields["status"].widget.choices,
|
||||
DomainApplication._meta.get_field("status").choices,
|
||||
DomainRequest._meta.get_field("status").choices,
|
||||
)
|
||||
|
||||
def test_form_choices_when_ineligible(self):
|
||||
with less_console_noise():
|
||||
# Create a form instance with a domain application with ineligible status
|
||||
ineligible_application = DomainApplication(status="ineligible")
|
||||
# Create a form instance with a domain request with ineligible status
|
||||
ineligible_application = DomainRequest(status="ineligible")
|
||||
|
||||
# Attempt to create a form with the ineligible application
|
||||
# The form should not raise an error, but choices should be the
|
||||
# full list of possible choices
|
||||
form = DomainApplicationAdminForm(instance=ineligible_application)
|
||||
form = DomainRequestAdminForm(instance=ineligible_application)
|
||||
|
||||
self.assertEqual(
|
||||
form.fields["status"].widget.choices,
|
||||
DomainApplication._meta.get_field("status").choices,
|
||||
DomainRequest._meta.get_field("status").choices,
|
||||
)
|
||||
|
||||
|
||||
@boto3_mocking.patching
|
||||
class TestDomainApplicationAdmin(MockEppLib):
|
||||
class TestDomainRequestAdmin(MockEppLib):
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.site = AdminSite()
|
||||
self.factory = RequestFactory()
|
||||
self.admin = DomainApplicationAdmin(model=DomainApplication, admin_site=self.site)
|
||||
self.admin = DomainRequestAdmin(model=DomainRequest, admin_site=self.site)
|
||||
self.superuser = create_superuser()
|
||||
self.staffuser = create_user()
|
||||
self.client = Client(HTTP_HOST="localhost:8080")
|
||||
|
@ -498,13 +498,13 @@ class TestDomainApplicationAdmin(MockEppLib):
|
|||
factory=self.factory,
|
||||
user=self.superuser,
|
||||
admin=self.admin,
|
||||
url="/admin/registrar/DomainApplication/",
|
||||
model=DomainApplication,
|
||||
url="/admin/registrar/DomainRequest/",
|
||||
model=DomainRequest,
|
||||
)
|
||||
self.mock_client = MockSESClient()
|
||||
|
||||
def test_domain_sortable(self):
|
||||
"""Tests if the DomainApplication sorts by domain correctly"""
|
||||
"""Tests if the DomainRequest sorts by domain correctly"""
|
||||
with less_console_noise():
|
||||
p = "adminpass"
|
||||
self.client.login(username="superuser", password=p)
|
||||
|
@ -518,7 +518,7 @@ class TestDomainApplicationAdmin(MockEppLib):
|
|||
self.test_helper.assert_table_sorted("-1", ("-requested_domain__name",))
|
||||
|
||||
def test_submitter_sortable(self):
|
||||
"""Tests if the DomainApplication sorts by domain correctly"""
|
||||
"""Tests if the DomainRequest sorts by domain correctly"""
|
||||
with less_console_noise():
|
||||
p = "adminpass"
|
||||
self.client.login(username="superuser", password=p)
|
||||
|
@ -549,7 +549,7 @@ class TestDomainApplicationAdmin(MockEppLib):
|
|||
)
|
||||
|
||||
def test_investigator_sortable(self):
|
||||
"""Tests if the DomainApplication sorts by domain correctly"""
|
||||
"""Tests if the DomainRequest sorts by domain correctly"""
|
||||
with less_console_noise():
|
||||
p = "adminpass"
|
||||
self.client.login(username="superuser", password=p)
|
||||
|
@ -585,7 +585,7 @@ class TestDomainApplicationAdmin(MockEppLib):
|
|||
with less_console_noise():
|
||||
self.client.force_login(self.superuser)
|
||||
completed_application()
|
||||
response = self.client.get("/admin/registrar/domainapplication/")
|
||||
response = self.client.get("/admin/registrar/DomainRequest/")
|
||||
# There are 4 template references to Federal (4) plus two references in the table
|
||||
# for our actual application
|
||||
self.assertContains(response, "Federal", count=6)
|
||||
|
@ -600,7 +600,7 @@ class TestDomainApplicationAdmin(MockEppLib):
|
|||
with boto3_mocking.clients.handler_for("sesv2", self.mock_client):
|
||||
with less_console_noise():
|
||||
# Create a mock request
|
||||
request = self.factory.post("/admin/registrar/domainapplication/{}/change/".format(application.pk))
|
||||
request = self.factory.post("/admin/registrar/DomainRequest/{}/change/".format(application.pk))
|
||||
|
||||
# Modify the application's properties
|
||||
application.status = status
|
||||
|
@ -661,39 +661,39 @@ class TestDomainApplicationAdmin(MockEppLib):
|
|||
application = completed_application()
|
||||
|
||||
# Test Submitted Status from started
|
||||
self.transition_state_and_send_email(application, DomainApplication.ApplicationStatus.SUBMITTED)
|
||||
self.transition_state_and_send_email(application, DomainRequest.ApplicationStatus.SUBMITTED)
|
||||
self.assert_email_is_accurate("We received your .gov domain request.", 0, EMAIL, True)
|
||||
self.assertEqual(len(self.mock_client.EMAILS_SENT), 1)
|
||||
|
||||
# Test Withdrawn Status
|
||||
self.transition_state_and_send_email(application, DomainApplication.ApplicationStatus.WITHDRAWN)
|
||||
self.transition_state_and_send_email(application, DomainRequest.ApplicationStatus.WITHDRAWN)
|
||||
self.assert_email_is_accurate(
|
||||
"Your .gov domain request has been withdrawn and will not be reviewed by our team.", 1, EMAIL, True
|
||||
)
|
||||
self.assertEqual(len(self.mock_client.EMAILS_SENT), 2)
|
||||
|
||||
# Test Submitted Status Again (from withdrawn)
|
||||
self.transition_state_and_send_email(application, DomainApplication.ApplicationStatus.SUBMITTED)
|
||||
self.transition_state_and_send_email(application, DomainRequest.ApplicationStatus.SUBMITTED)
|
||||
self.assertEqual(len(self.mock_client.EMAILS_SENT), 3)
|
||||
|
||||
# Move it to IN_REVIEW
|
||||
self.transition_state_and_send_email(application, DomainApplication.ApplicationStatus.IN_REVIEW)
|
||||
self.transition_state_and_send_email(application, DomainRequest.ApplicationStatus.IN_REVIEW)
|
||||
self.assertEqual(len(self.mock_client.EMAILS_SENT), 3)
|
||||
|
||||
# Test Submitted Status Again from in IN_REVIEW, no new email should be sent
|
||||
self.transition_state_and_send_email(application, DomainApplication.ApplicationStatus.SUBMITTED)
|
||||
self.transition_state_and_send_email(application, DomainRequest.ApplicationStatus.SUBMITTED)
|
||||
self.assertEqual(len(self.mock_client.EMAILS_SENT), 3)
|
||||
|
||||
# Move it to IN_REVIEW
|
||||
self.transition_state_and_send_email(application, DomainApplication.ApplicationStatus.IN_REVIEW)
|
||||
self.transition_state_and_send_email(application, DomainRequest.ApplicationStatus.IN_REVIEW)
|
||||
self.assertEqual(len(self.mock_client.EMAILS_SENT), 3)
|
||||
|
||||
# Move it to ACTION_NEEDED
|
||||
self.transition_state_and_send_email(application, DomainApplication.ApplicationStatus.ACTION_NEEDED)
|
||||
self.transition_state_and_send_email(application, DomainRequest.ApplicationStatus.ACTION_NEEDED)
|
||||
self.assertEqual(len(self.mock_client.EMAILS_SENT), 3)
|
||||
|
||||
# Test Submitted Status Again from in ACTION_NEEDED, no new email should be sent
|
||||
self.transition_state_and_send_email(application, DomainApplication.ApplicationStatus.SUBMITTED)
|
||||
self.transition_state_and_send_email(application, DomainRequest.ApplicationStatus.SUBMITTED)
|
||||
self.assertEqual(len(self.mock_client.EMAILS_SENT), 3)
|
||||
|
||||
@override_settings(IS_PRODUCTION=True)
|
||||
|
@ -718,40 +718,40 @@ class TestDomainApplicationAdmin(MockEppLib):
|
|||
application = completed_application()
|
||||
|
||||
# Test Submitted Status from started
|
||||
self.transition_state_and_send_email(application, DomainApplication.ApplicationStatus.SUBMITTED)
|
||||
self.transition_state_and_send_email(application, DomainRequest.ApplicationStatus.SUBMITTED)
|
||||
self.assert_email_is_accurate("We received your .gov domain request.", 0, EMAIL, False, BCC_EMAIL)
|
||||
self.assertEqual(len(self.mock_client.EMAILS_SENT), 1)
|
||||
|
||||
# Test Withdrawn Status
|
||||
self.transition_state_and_send_email(application, DomainApplication.ApplicationStatus.WITHDRAWN)
|
||||
self.transition_state_and_send_email(application, DomainRequest.ApplicationStatus.WITHDRAWN)
|
||||
self.assert_email_is_accurate(
|
||||
"Your .gov domain request has been withdrawn and will not be reviewed by our team.", 1, EMAIL
|
||||
)
|
||||
self.assertEqual(len(self.mock_client.EMAILS_SENT), 2)
|
||||
|
||||
# Test Submitted Status Again (from withdrawn)
|
||||
self.transition_state_and_send_email(application, DomainApplication.ApplicationStatus.SUBMITTED)
|
||||
self.transition_state_and_send_email(application, DomainRequest.ApplicationStatus.SUBMITTED)
|
||||
self.assert_email_is_accurate("We received your .gov domain request.", 0, EMAIL, False, BCC_EMAIL)
|
||||
self.assertEqual(len(self.mock_client.EMAILS_SENT), 3)
|
||||
|
||||
# Move it to IN_REVIEW
|
||||
self.transition_state_and_send_email(application, DomainApplication.ApplicationStatus.IN_REVIEW)
|
||||
self.transition_state_and_send_email(application, DomainRequest.ApplicationStatus.IN_REVIEW)
|
||||
self.assertEqual(len(self.mock_client.EMAILS_SENT), 3)
|
||||
|
||||
# Test Submitted Status Again from in IN_REVIEW, no new email should be sent
|
||||
self.transition_state_and_send_email(application, DomainApplication.ApplicationStatus.SUBMITTED)
|
||||
self.transition_state_and_send_email(application, DomainRequest.ApplicationStatus.SUBMITTED)
|
||||
self.assertEqual(len(self.mock_client.EMAILS_SENT), 3)
|
||||
|
||||
# Move it to IN_REVIEW
|
||||
self.transition_state_and_send_email(application, DomainApplication.ApplicationStatus.IN_REVIEW)
|
||||
self.transition_state_and_send_email(application, DomainRequest.ApplicationStatus.IN_REVIEW)
|
||||
self.assertEqual(len(self.mock_client.EMAILS_SENT), 3)
|
||||
|
||||
# Move it to ACTION_NEEDED
|
||||
self.transition_state_and_send_email(application, DomainApplication.ApplicationStatus.ACTION_NEEDED)
|
||||
self.transition_state_and_send_email(application, DomainRequest.ApplicationStatus.ACTION_NEEDED)
|
||||
self.assertEqual(len(self.mock_client.EMAILS_SENT), 3)
|
||||
|
||||
# Test Submitted Status Again from in ACTION_NEEDED, no new email should be sent
|
||||
self.transition_state_and_send_email(application, DomainApplication.ApplicationStatus.SUBMITTED)
|
||||
self.transition_state_and_send_email(application, DomainRequest.ApplicationStatus.SUBMITTED)
|
||||
self.assertEqual(len(self.mock_client.EMAILS_SENT), 3)
|
||||
|
||||
def test_save_model_sends_approved_email(self):
|
||||
|
@ -764,24 +764,24 @@ class TestDomainApplicationAdmin(MockEppLib):
|
|||
User.objects.filter(email=EMAIL).delete()
|
||||
|
||||
# Create a sample application
|
||||
application = completed_application(status=DomainApplication.ApplicationStatus.IN_REVIEW)
|
||||
application = completed_application(status=DomainRequest.ApplicationStatus.IN_REVIEW)
|
||||
|
||||
# Test Submitted Status
|
||||
self.transition_state_and_send_email(application, DomainApplication.ApplicationStatus.APPROVED)
|
||||
self.transition_state_and_send_email(application, DomainRequest.ApplicationStatus.APPROVED)
|
||||
self.assert_email_is_accurate("Congratulations! Your .gov domain request has been approved.", 0, EMAIL)
|
||||
self.assertEqual(len(self.mock_client.EMAILS_SENT), 1)
|
||||
|
||||
# Test Withdrawn Status
|
||||
self.transition_state_and_send_email(
|
||||
application,
|
||||
DomainApplication.ApplicationStatus.REJECTED,
|
||||
DomainApplication.RejectionReasons.DOMAIN_PURPOSE,
|
||||
DomainRequest.ApplicationStatus.REJECTED,
|
||||
DomainRequest.RejectionReasons.DOMAIN_PURPOSE,
|
||||
)
|
||||
self.assert_email_is_accurate("Your .gov domain request has been rejected.", 1, EMAIL)
|
||||
self.assertEqual(len(self.mock_client.EMAILS_SENT), 2)
|
||||
|
||||
# Test Submitted Status Again (No new email should be sent)
|
||||
self.transition_state_and_send_email(application, DomainApplication.ApplicationStatus.APPROVED)
|
||||
self.transition_state_and_send_email(application, DomainRequest.ApplicationStatus.APPROVED)
|
||||
self.assertEqual(len(self.mock_client.EMAILS_SENT), 3)
|
||||
|
||||
def test_save_model_sends_rejected_email_purpose_not_met(self):
|
||||
|
@ -794,13 +794,13 @@ class TestDomainApplicationAdmin(MockEppLib):
|
|||
User.objects.filter(email=EMAIL).delete()
|
||||
|
||||
# Create a sample application
|
||||
application = completed_application(status=DomainApplication.ApplicationStatus.IN_REVIEW)
|
||||
application = completed_application(status=DomainRequest.ApplicationStatus.IN_REVIEW)
|
||||
|
||||
# Reject for reason DOMAIN_PURPOSE and test email
|
||||
self.transition_state_and_send_email(
|
||||
application,
|
||||
DomainApplication.ApplicationStatus.REJECTED,
|
||||
DomainApplication.RejectionReasons.DOMAIN_PURPOSE,
|
||||
DomainRequest.ApplicationStatus.REJECTED,
|
||||
DomainRequest.RejectionReasons.DOMAIN_PURPOSE,
|
||||
)
|
||||
self.assert_email_is_accurate(
|
||||
"Your domain request was rejected because the purpose you provided did not meet our \nrequirements.",
|
||||
|
@ -810,7 +810,7 @@ class TestDomainApplicationAdmin(MockEppLib):
|
|||
self.assertEqual(len(self.mock_client.EMAILS_SENT), 1)
|
||||
|
||||
# Approve
|
||||
self.transition_state_and_send_email(application, DomainApplication.ApplicationStatus.APPROVED)
|
||||
self.transition_state_and_send_email(application, DomainRequest.ApplicationStatus.APPROVED)
|
||||
self.assert_email_is_accurate("Congratulations! Your .gov domain request has been approved.", 1, EMAIL)
|
||||
self.assertEqual(len(self.mock_client.EMAILS_SENT), 2)
|
||||
|
||||
|
@ -824,11 +824,11 @@ class TestDomainApplicationAdmin(MockEppLib):
|
|||
User.objects.filter(email=EMAIL).delete()
|
||||
|
||||
# Create a sample application
|
||||
application = completed_application(status=DomainApplication.ApplicationStatus.IN_REVIEW)
|
||||
application = completed_application(status=DomainRequest.ApplicationStatus.IN_REVIEW)
|
||||
|
||||
# Reject for reason REQUESTOR and test email including dynamic organization name
|
||||
self.transition_state_and_send_email(
|
||||
application, DomainApplication.ApplicationStatus.REJECTED, DomainApplication.RejectionReasons.REQUESTOR
|
||||
application, DomainRequest.ApplicationStatus.REJECTED, DomainRequest.RejectionReasons.REQUESTOR
|
||||
)
|
||||
self.assert_email_is_accurate(
|
||||
"Your domain request was rejected because we don’t believe you’re eligible to request a \n.gov "
|
||||
|
@ -839,7 +839,7 @@ class TestDomainApplicationAdmin(MockEppLib):
|
|||
self.assertEqual(len(self.mock_client.EMAILS_SENT), 1)
|
||||
|
||||
# Approve
|
||||
self.transition_state_and_send_email(application, DomainApplication.ApplicationStatus.APPROVED)
|
||||
self.transition_state_and_send_email(application, DomainRequest.ApplicationStatus.APPROVED)
|
||||
self.assert_email_is_accurate("Congratulations! Your .gov domain request has been approved.", 1, EMAIL)
|
||||
self.assertEqual(len(self.mock_client.EMAILS_SENT), 2)
|
||||
|
||||
|
@ -853,13 +853,13 @@ class TestDomainApplicationAdmin(MockEppLib):
|
|||
User.objects.filter(email=EMAIL).delete()
|
||||
|
||||
# Create a sample application
|
||||
application = completed_application(status=DomainApplication.ApplicationStatus.IN_REVIEW)
|
||||
application = completed_application(status=DomainRequest.ApplicationStatus.IN_REVIEW)
|
||||
|
||||
# Reject for reason SECOND_DOMAIN_REASONING and test email including dynamic organization name
|
||||
self.transition_state_and_send_email(
|
||||
application,
|
||||
DomainApplication.ApplicationStatus.REJECTED,
|
||||
DomainApplication.RejectionReasons.SECOND_DOMAIN_REASONING,
|
||||
DomainRequest.ApplicationStatus.REJECTED,
|
||||
DomainRequest.RejectionReasons.SECOND_DOMAIN_REASONING,
|
||||
)
|
||||
self.assert_email_is_accurate(
|
||||
"Your domain request was rejected because Testorg has a .gov domain.", 0, EMAIL
|
||||
|
@ -867,7 +867,7 @@ class TestDomainApplicationAdmin(MockEppLib):
|
|||
self.assertEqual(len(self.mock_client.EMAILS_SENT), 1)
|
||||
|
||||
# Approve
|
||||
self.transition_state_and_send_email(application, DomainApplication.ApplicationStatus.APPROVED)
|
||||
self.transition_state_and_send_email(application, DomainRequest.ApplicationStatus.APPROVED)
|
||||
self.assert_email_is_accurate("Congratulations! Your .gov domain request has been approved.", 1, EMAIL)
|
||||
self.assertEqual(len(self.mock_client.EMAILS_SENT), 2)
|
||||
|
||||
|
@ -881,13 +881,13 @@ class TestDomainApplicationAdmin(MockEppLib):
|
|||
User.objects.filter(email=EMAIL).delete()
|
||||
|
||||
# Create a sample application
|
||||
application = completed_application(status=DomainApplication.ApplicationStatus.IN_REVIEW)
|
||||
application = completed_application(status=DomainRequest.ApplicationStatus.IN_REVIEW)
|
||||
|
||||
# Reject for reason CONTACTS_OR_ORGANIZATION_LEGITIMACY and test email including dynamic organization name
|
||||
self.transition_state_and_send_email(
|
||||
application,
|
||||
DomainApplication.ApplicationStatus.REJECTED,
|
||||
DomainApplication.RejectionReasons.CONTACTS_OR_ORGANIZATION_LEGITIMACY,
|
||||
DomainRequest.ApplicationStatus.REJECTED,
|
||||
DomainRequest.RejectionReasons.CONTACTS_OR_ORGANIZATION_LEGITIMACY,
|
||||
)
|
||||
self.assert_email_is_accurate(
|
||||
"Your domain request was rejected because we could not verify the organizational \n"
|
||||
|
@ -898,7 +898,7 @@ class TestDomainApplicationAdmin(MockEppLib):
|
|||
self.assertEqual(len(self.mock_client.EMAILS_SENT), 1)
|
||||
|
||||
# Approve
|
||||
self.transition_state_and_send_email(application, DomainApplication.ApplicationStatus.APPROVED)
|
||||
self.transition_state_and_send_email(application, DomainRequest.ApplicationStatus.APPROVED)
|
||||
self.assert_email_is_accurate("Congratulations! Your .gov domain request has been approved.", 1, EMAIL)
|
||||
self.assertEqual(len(self.mock_client.EMAILS_SENT), 2)
|
||||
|
||||
|
@ -912,13 +912,13 @@ class TestDomainApplicationAdmin(MockEppLib):
|
|||
User.objects.filter(email=EMAIL).delete()
|
||||
|
||||
# Create a sample application
|
||||
application = completed_application(status=DomainApplication.ApplicationStatus.IN_REVIEW)
|
||||
application = completed_application(status=DomainRequest.ApplicationStatus.IN_REVIEW)
|
||||
|
||||
# Reject for reason ORGANIZATION_ELIGIBILITY and test email including dynamic organization name
|
||||
self.transition_state_and_send_email(
|
||||
application,
|
||||
DomainApplication.ApplicationStatus.REJECTED,
|
||||
DomainApplication.RejectionReasons.ORGANIZATION_ELIGIBILITY,
|
||||
DomainRequest.ApplicationStatus.REJECTED,
|
||||
DomainRequest.RejectionReasons.ORGANIZATION_ELIGIBILITY,
|
||||
)
|
||||
self.assert_email_is_accurate(
|
||||
"Your domain request was rejected because we determined that Testorg is not \neligible for "
|
||||
|
@ -929,7 +929,7 @@ class TestDomainApplicationAdmin(MockEppLib):
|
|||
self.assertEqual(len(self.mock_client.EMAILS_SENT), 1)
|
||||
|
||||
# Approve
|
||||
self.transition_state_and_send_email(application, DomainApplication.ApplicationStatus.APPROVED)
|
||||
self.transition_state_and_send_email(application, DomainRequest.ApplicationStatus.APPROVED)
|
||||
self.assert_email_is_accurate("Congratulations! Your .gov domain request has been approved.", 1, EMAIL)
|
||||
self.assertEqual(len(self.mock_client.EMAILS_SENT), 2)
|
||||
|
||||
|
@ -943,13 +943,13 @@ class TestDomainApplicationAdmin(MockEppLib):
|
|||
User.objects.filter(email=EMAIL).delete()
|
||||
|
||||
# Create a sample application
|
||||
application = completed_application(status=DomainApplication.ApplicationStatus.IN_REVIEW)
|
||||
application = completed_application(status=DomainRequest.ApplicationStatus.IN_REVIEW)
|
||||
|
||||
# Reject for reason NAMING_REQUIREMENTS and test email including dynamic organization name
|
||||
self.transition_state_and_send_email(
|
||||
application,
|
||||
DomainApplication.ApplicationStatus.REJECTED,
|
||||
DomainApplication.RejectionReasons.NAMING_REQUIREMENTS,
|
||||
DomainRequest.ApplicationStatus.REJECTED,
|
||||
DomainRequest.RejectionReasons.NAMING_REQUIREMENTS,
|
||||
)
|
||||
self.assert_email_is_accurate(
|
||||
"Your domain request was rejected because it does not meet our naming requirements.", 0, EMAIL
|
||||
|
@ -957,7 +957,7 @@ class TestDomainApplicationAdmin(MockEppLib):
|
|||
self.assertEqual(len(self.mock_client.EMAILS_SENT), 1)
|
||||
|
||||
# Approve
|
||||
self.transition_state_and_send_email(application, DomainApplication.ApplicationStatus.APPROVED)
|
||||
self.transition_state_and_send_email(application, DomainRequest.ApplicationStatus.APPROVED)
|
||||
self.assert_email_is_accurate("Congratulations! Your .gov domain request has been approved.", 1, EMAIL)
|
||||
self.assertEqual(len(self.mock_client.EMAILS_SENT), 2)
|
||||
|
||||
|
@ -971,19 +971,19 @@ class TestDomainApplicationAdmin(MockEppLib):
|
|||
User.objects.filter(email=EMAIL).delete()
|
||||
|
||||
# Create a sample application
|
||||
application = completed_application(status=DomainApplication.ApplicationStatus.IN_REVIEW)
|
||||
application = completed_application(status=DomainRequest.ApplicationStatus.IN_REVIEW)
|
||||
|
||||
# Reject for reason NAMING_REQUIREMENTS and test email including dynamic organization name
|
||||
self.transition_state_and_send_email(
|
||||
application,
|
||||
DomainApplication.ApplicationStatus.REJECTED,
|
||||
DomainApplication.RejectionReasons.OTHER,
|
||||
DomainRequest.ApplicationStatus.REJECTED,
|
||||
DomainRequest.RejectionReasons.OTHER,
|
||||
)
|
||||
self.assert_email_is_accurate("Choosing a .gov domain name", 0, EMAIL)
|
||||
self.assertEqual(len(self.mock_client.EMAILS_SENT), 1)
|
||||
|
||||
# Approve
|
||||
self.transition_state_and_send_email(application, DomainApplication.ApplicationStatus.APPROVED)
|
||||
self.transition_state_and_send_email(application, DomainRequest.ApplicationStatus.APPROVED)
|
||||
self.assert_email_is_accurate("Congratulations! Your .gov domain request has been approved.", 1, EMAIL)
|
||||
self.assertEqual(len(self.mock_client.EMAILS_SENT), 2)
|
||||
|
||||
|
@ -995,15 +995,15 @@ class TestDomainApplicationAdmin(MockEppLib):
|
|||
"""
|
||||
|
||||
with less_console_noise():
|
||||
application = completed_application(status=DomainApplication.ApplicationStatus.APPROVED)
|
||||
application = completed_application(status=DomainRequest.ApplicationStatus.APPROVED)
|
||||
|
||||
# Create a request object with a superuser
|
||||
request = self.factory.post("/admin/registrar/domainapplication/{}/change/".format(application.pk))
|
||||
request = self.factory.post("/admin/registrar/DomainRequest/{}/change/".format(application.pk))
|
||||
request.user = self.superuser
|
||||
|
||||
with ExitStack() as stack:
|
||||
stack.enter_context(patch.object(messages, "error"))
|
||||
application.status = DomainApplication.ApplicationStatus.REJECTED
|
||||
application.status = DomainRequest.ApplicationStatus.REJECTED
|
||||
|
||||
self.admin.save_model(request, application, None, True)
|
||||
|
||||
|
@ -1013,7 +1013,7 @@ class TestDomainApplicationAdmin(MockEppLib):
|
|||
)
|
||||
|
||||
application.refresh_from_db()
|
||||
self.assertEqual(application.status, DomainApplication.ApplicationStatus.APPROVED)
|
||||
self.assertEqual(application.status, DomainRequest.ApplicationStatus.APPROVED)
|
||||
|
||||
def test_transition_to_rejected_with_rejection_reason_does_not_trigger_error(self):
|
||||
"""
|
||||
|
@ -1023,23 +1023,23 @@ class TestDomainApplicationAdmin(MockEppLib):
|
|||
"""
|
||||
|
||||
with less_console_noise():
|
||||
application = completed_application(status=DomainApplication.ApplicationStatus.APPROVED)
|
||||
application = completed_application(status=DomainRequest.ApplicationStatus.APPROVED)
|
||||
|
||||
# Create a request object with a superuser
|
||||
request = self.factory.post("/admin/registrar/domainapplication/{}/change/".format(application.pk))
|
||||
request = self.factory.post("/admin/registrar/DomainRequest/{}/change/".format(application.pk))
|
||||
request.user = self.superuser
|
||||
|
||||
with ExitStack() as stack:
|
||||
stack.enter_context(patch.object(messages, "error"))
|
||||
application.status = DomainApplication.ApplicationStatus.REJECTED
|
||||
application.rejection_reason = DomainApplication.RejectionReasons.CONTACTS_OR_ORGANIZATION_LEGITIMACY
|
||||
application.status = DomainRequest.ApplicationStatus.REJECTED
|
||||
application.rejection_reason = DomainRequest.RejectionReasons.CONTACTS_OR_ORGANIZATION_LEGITIMACY
|
||||
|
||||
self.admin.save_model(request, application, None, True)
|
||||
|
||||
messages.error.assert_not_called()
|
||||
|
||||
application.refresh_from_db()
|
||||
self.assertEqual(application.status, DomainApplication.ApplicationStatus.REJECTED)
|
||||
self.assertEqual(application.status, DomainRequest.ApplicationStatus.REJECTED)
|
||||
|
||||
def test_save_model_sends_withdrawn_email(self):
|
||||
"""When transitioning to withdrawn on a domain request,
|
||||
|
@ -1051,22 +1051,22 @@ class TestDomainApplicationAdmin(MockEppLib):
|
|||
User.objects.filter(email=EMAIL).delete()
|
||||
|
||||
# Create a sample application
|
||||
application = completed_application(status=DomainApplication.ApplicationStatus.IN_REVIEW)
|
||||
application = completed_application(status=DomainRequest.ApplicationStatus.IN_REVIEW)
|
||||
|
||||
# Test Submitted Status
|
||||
self.transition_state_and_send_email(application, DomainApplication.ApplicationStatus.WITHDRAWN)
|
||||
self.transition_state_and_send_email(application, DomainRequest.ApplicationStatus.WITHDRAWN)
|
||||
self.assert_email_is_accurate(
|
||||
"Your .gov domain request has been withdrawn and will not be reviewed by our team.", 0, EMAIL
|
||||
)
|
||||
self.assertEqual(len(self.mock_client.EMAILS_SENT), 1)
|
||||
|
||||
# Test Withdrawn Status
|
||||
self.transition_state_and_send_email(application, DomainApplication.ApplicationStatus.SUBMITTED)
|
||||
self.transition_state_and_send_email(application, DomainRequest.ApplicationStatus.SUBMITTED)
|
||||
self.assert_email_is_accurate("We received your .gov domain request.", 1, EMAIL)
|
||||
self.assertEqual(len(self.mock_client.EMAILS_SENT), 2)
|
||||
|
||||
# Test Submitted Status Again (No new email should be sent)
|
||||
self.transition_state_and_send_email(application, DomainApplication.ApplicationStatus.WITHDRAWN)
|
||||
self.transition_state_and_send_email(application, DomainRequest.ApplicationStatus.WITHDRAWN)
|
||||
self.assertEqual(len(self.mock_client.EMAILS_SENT), 3)
|
||||
|
||||
def test_save_model_sets_approved_domain(self):
|
||||
|
@ -1076,14 +1076,14 @@ class TestDomainApplicationAdmin(MockEppLib):
|
|||
User.objects.filter(email=EMAIL).delete()
|
||||
|
||||
# Create a sample application
|
||||
application = completed_application(status=DomainApplication.ApplicationStatus.IN_REVIEW)
|
||||
application = completed_application(status=DomainRequest.ApplicationStatus.IN_REVIEW)
|
||||
|
||||
# Create a mock request
|
||||
request = self.factory.post("/admin/registrar/domainapplication/{}/change/".format(application.pk))
|
||||
request = self.factory.post("/admin/registrar/DomainRequest/{}/change/".format(application.pk))
|
||||
|
||||
with boto3_mocking.clients.handler_for("sesv2", self.mock_client):
|
||||
# Modify the application's property
|
||||
application.status = DomainApplication.ApplicationStatus.APPROVED
|
||||
application.status = DomainRequest.ApplicationStatus.APPROVED
|
||||
|
||||
# Use the model admin's save_model method
|
||||
self.admin.save_model(request, application, form=None, change=True)
|
||||
|
@ -1098,14 +1098,14 @@ class TestDomainApplicationAdmin(MockEppLib):
|
|||
User.objects.filter(email=EMAIL).delete()
|
||||
|
||||
# Create a sample application
|
||||
application = completed_application(status=DomainApplication.ApplicationStatus.IN_REVIEW)
|
||||
application = completed_application(status=DomainRequest.ApplicationStatus.IN_REVIEW)
|
||||
|
||||
# Create a mock request
|
||||
request = self.factory.post("/admin/registrar/domainapplication/{}/change/".format(application.pk))
|
||||
request = self.factory.post("/admin/registrar/DomainRequest/{}/change/".format(application.pk))
|
||||
|
||||
with boto3_mocking.clients.handler_for("sesv2", self.mock_client):
|
||||
# Modify the application's property
|
||||
application.status = DomainApplication.ApplicationStatus.INELIGIBLE
|
||||
application.status = DomainRequest.ApplicationStatus.INELIGIBLE
|
||||
|
||||
# Use the model admin's save_model method
|
||||
self.admin.save_model(request, application, form=None, change=True)
|
||||
|
@ -1115,7 +1115,7 @@ class TestDomainApplicationAdmin(MockEppLib):
|
|||
|
||||
def test_readonly_when_restricted_creator(self):
|
||||
with less_console_noise():
|
||||
application = completed_application(status=DomainApplication.ApplicationStatus.IN_REVIEW)
|
||||
application = completed_application(status=DomainRequest.ApplicationStatus.IN_REVIEW)
|
||||
with boto3_mocking.clients.handler_for("sesv2", self.mock_client):
|
||||
application.creator.status = User.RESTRICTED
|
||||
application.creator.save()
|
||||
|
@ -1201,7 +1201,7 @@ class TestDomainApplicationAdmin(MockEppLib):
|
|||
def test_saving_when_restricted_creator(self):
|
||||
with less_console_noise():
|
||||
# Create an instance of the model
|
||||
application = completed_application(status=DomainApplication.ApplicationStatus.IN_REVIEW)
|
||||
application = completed_application(status=DomainRequest.ApplicationStatus.IN_REVIEW)
|
||||
with boto3_mocking.clients.handler_for("sesv2", self.mock_client):
|
||||
application.creator.status = User.RESTRICTED
|
||||
application.creator.save()
|
||||
|
@ -1221,19 +1221,19 @@ class TestDomainApplicationAdmin(MockEppLib):
|
|||
)
|
||||
|
||||
# Assert that the status has not changed
|
||||
self.assertEqual(application.status, DomainApplication.ApplicationStatus.IN_REVIEW)
|
||||
self.assertEqual(application.status, DomainRequest.ApplicationStatus.IN_REVIEW)
|
||||
|
||||
def test_change_view_with_restricted_creator(self):
|
||||
with less_console_noise():
|
||||
# Create an instance of the model
|
||||
application = completed_application(status=DomainApplication.ApplicationStatus.IN_REVIEW)
|
||||
application = completed_application(status=DomainRequest.ApplicationStatus.IN_REVIEW)
|
||||
with boto3_mocking.clients.handler_for("sesv2", self.mock_client):
|
||||
application.creator.status = User.RESTRICTED
|
||||
application.creator.save()
|
||||
|
||||
with patch("django.contrib.messages.warning") as mock_warning:
|
||||
# Create a request object with a superuser
|
||||
request = self.factory.get("/admin/your_app/domainapplication/{}/change/".format(application.pk))
|
||||
request = self.factory.get("/admin/your_app/DomainRequest/{}/change/".format(application.pk))
|
||||
request.user = self.superuser
|
||||
|
||||
self.admin.display_restricted_warning(request, application)
|
||||
|
@ -1253,14 +1253,14 @@ class TestDomainApplicationAdmin(MockEppLib):
|
|||
|
||||
with less_console_noise():
|
||||
# Create an instance of the model
|
||||
application = completed_application(status=DomainApplication.ApplicationStatus.APPROVED)
|
||||
application = completed_application(status=DomainRequest.ApplicationStatus.APPROVED)
|
||||
domain = Domain.objects.create(name=application.requested_domain.name)
|
||||
domain_information = DomainInformation.objects.create(creator=self.superuser, domain=domain)
|
||||
application.approved_domain = domain
|
||||
application.save()
|
||||
|
||||
# Create a request object with a superuser
|
||||
request = self.factory.post("/admin/registrar/domainapplication/{}/change/".format(application.pk))
|
||||
request = self.factory.post("/admin/registrar/DomainRequest/{}/change/".format(application.pk))
|
||||
request.user = self.superuser
|
||||
|
||||
# Define a custom implementation for is_active
|
||||
|
@ -1299,38 +1299,38 @@ class TestDomainApplicationAdmin(MockEppLib):
|
|||
domain_information.refresh_from_db()
|
||||
|
||||
def test_error_when_saving_approved_to_in_review_and_domain_is_active(self):
|
||||
self.trigger_saving_approved_to_another_state(True, DomainApplication.ApplicationStatus.IN_REVIEW)
|
||||
self.trigger_saving_approved_to_another_state(True, DomainRequest.ApplicationStatus.IN_REVIEW)
|
||||
|
||||
def test_error_when_saving_approved_to_action_needed_and_domain_is_active(self):
|
||||
self.trigger_saving_approved_to_another_state(True, DomainApplication.ApplicationStatus.ACTION_NEEDED)
|
||||
self.trigger_saving_approved_to_another_state(True, DomainRequest.ApplicationStatus.ACTION_NEEDED)
|
||||
|
||||
def test_error_when_saving_approved_to_rejected_and_domain_is_active(self):
|
||||
self.trigger_saving_approved_to_another_state(True, DomainApplication.ApplicationStatus.REJECTED)
|
||||
self.trigger_saving_approved_to_another_state(True, DomainRequest.ApplicationStatus.REJECTED)
|
||||
|
||||
def test_error_when_saving_approved_to_ineligible_and_domain_is_active(self):
|
||||
self.trigger_saving_approved_to_another_state(True, DomainApplication.ApplicationStatus.INELIGIBLE)
|
||||
self.trigger_saving_approved_to_another_state(True, DomainRequest.ApplicationStatus.INELIGIBLE)
|
||||
|
||||
def test_side_effects_when_saving_approved_to_in_review(self):
|
||||
self.trigger_saving_approved_to_another_state(False, DomainApplication.ApplicationStatus.IN_REVIEW)
|
||||
self.trigger_saving_approved_to_another_state(False, DomainRequest.ApplicationStatus.IN_REVIEW)
|
||||
|
||||
def test_side_effects_when_saving_approved_to_action_needed(self):
|
||||
self.trigger_saving_approved_to_another_state(False, DomainApplication.ApplicationStatus.ACTION_NEEDED)
|
||||
self.trigger_saving_approved_to_another_state(False, DomainRequest.ApplicationStatus.ACTION_NEEDED)
|
||||
|
||||
def test_side_effects_when_saving_approved_to_rejected(self):
|
||||
self.trigger_saving_approved_to_another_state(
|
||||
False,
|
||||
DomainApplication.ApplicationStatus.REJECTED,
|
||||
DomainApplication.RejectionReasons.CONTACTS_OR_ORGANIZATION_LEGITIMACY,
|
||||
DomainRequest.ApplicationStatus.REJECTED,
|
||||
DomainRequest.RejectionReasons.CONTACTS_OR_ORGANIZATION_LEGITIMACY,
|
||||
)
|
||||
|
||||
def test_side_effects_when_saving_approved_to_ineligible(self):
|
||||
self.trigger_saving_approved_to_another_state(False, DomainApplication.ApplicationStatus.INELIGIBLE)
|
||||
self.trigger_saving_approved_to_another_state(False, DomainRequest.ApplicationStatus.INELIGIBLE)
|
||||
|
||||
def test_has_correct_filters(self):
|
||||
"""
|
||||
This test verifies that DomainApplicationAdmin has the correct filters set up.
|
||||
This test verifies that DomainRequestAdmin has the correct filters set up.
|
||||
|
||||
It retrieves the current list of filters from DomainApplicationAdmin
|
||||
It retrieves the current list of filters from DomainRequestAdmin
|
||||
and checks that it matches the expected list of filters.
|
||||
"""
|
||||
with less_console_noise():
|
||||
|
@ -1343,32 +1343,32 @@ class TestDomainApplicationAdmin(MockEppLib):
|
|||
"status",
|
||||
"organization_type",
|
||||
"federal_type",
|
||||
DomainApplicationAdmin.ElectionOfficeFilter,
|
||||
DomainRequestAdmin.ElectionOfficeFilter,
|
||||
"rejection_reason",
|
||||
DomainApplicationAdmin.InvestigatorFilter,
|
||||
DomainRequestAdmin.InvestigatorFilter,
|
||||
)
|
||||
|
||||
self.assertEqual(readonly_fields, expected_fields)
|
||||
|
||||
def test_table_sorted_alphabetically(self):
|
||||
"""
|
||||
This test verifies that the DomainApplicationAdmin table is sorted alphabetically
|
||||
This test verifies that the DomainRequestAdmin table is sorted alphabetically
|
||||
by the 'requested_domain__name' field.
|
||||
|
||||
It creates a list of DomainApplication instances in a non-alphabetical order,
|
||||
then retrieves the queryset from the DomainApplicationAdmin and checks
|
||||
It creates a list of DomainRequest instances in a non-alphabetical order,
|
||||
then retrieves the queryset from the DomainRequestAdmin and checks
|
||||
that it matches the expected queryset,
|
||||
which is sorted alphabetically by the 'requested_domain__name' field.
|
||||
"""
|
||||
with less_console_noise():
|
||||
# Creates a list of DomainApplications in scrambled order
|
||||
# Creates a list of DomainRequests in scrambled order
|
||||
multiple_unalphabetical_domain_objects("application")
|
||||
|
||||
request = self.factory.get("/")
|
||||
request.user = self.superuser
|
||||
|
||||
# Get the expected list of alphabetically sorted DomainApplications
|
||||
expected_order = DomainApplication.objects.order_by("requested_domain__name")
|
||||
# Get the expected list of alphabetically sorted DomainRequests
|
||||
expected_order = DomainRequest.objects.order_by("requested_domain__name")
|
||||
|
||||
# Get the returned queryset
|
||||
queryset = self.admin.get_queryset(request)
|
||||
|
@ -1382,11 +1382,11 @@ class TestDomainApplicationAdmin(MockEppLib):
|
|||
def test_displays_investigator_filter(self):
|
||||
"""
|
||||
This test verifies that the investigator filter in the admin interface for
|
||||
the DomainApplication model displays correctly.
|
||||
the DomainRequest model displays correctly.
|
||||
|
||||
It creates two DomainApplication instances, each with a different investigator.
|
||||
It creates two DomainRequest instances, each with a different investigator.
|
||||
It then simulates a staff user logging in and applying the investigator filter
|
||||
on the DomainApplication admin page.
|
||||
on the DomainRequest admin page.
|
||||
|
||||
We then test if the page displays the filter we expect, but we do not test
|
||||
if we get back the correct response in the table. This is to isolate if
|
||||
|
@ -1394,8 +1394,8 @@ class TestDomainApplicationAdmin(MockEppLib):
|
|||
"""
|
||||
|
||||
with less_console_noise():
|
||||
# Create a mock DomainApplication object, with a fake investigator
|
||||
application: DomainApplication = generic_domain_object("application", "SomeGuy")
|
||||
# Create a mock DomainRequest object, with a fake investigator
|
||||
application: DomainRequest = generic_domain_object("application", "SomeGuy")
|
||||
investigator_user = User.objects.filter(username=application.investigator.username).get()
|
||||
investigator_user.is_staff = True
|
||||
investigator_user.save()
|
||||
|
@ -1403,7 +1403,7 @@ class TestDomainApplicationAdmin(MockEppLib):
|
|||
p = "userpass"
|
||||
self.client.login(username="staffuser", password=p)
|
||||
response = self.client.get(
|
||||
"/admin/registrar/domainapplication/",
|
||||
"/admin/registrar/DomainRequest/",
|
||||
{
|
||||
"investigator__id__exact": investigator_user.id,
|
||||
},
|
||||
|
@ -1428,25 +1428,25 @@ class TestDomainApplicationAdmin(MockEppLib):
|
|||
|
||||
def test_investigator_dropdown_displays_only_staff(self):
|
||||
"""
|
||||
This test verifies that the dropdown for the 'investigator' field in the DomainApplicationAdmin
|
||||
This test verifies that the dropdown for the 'investigator' field in the DomainRequestAdmin
|
||||
interface only displays users who are marked as staff.
|
||||
|
||||
It creates two DomainApplication instances, one with an investigator
|
||||
It creates two DomainRequest instances, one with an investigator
|
||||
who is a staff user and another with an investigator who is not a staff user.
|
||||
|
||||
It then retrieves the queryset for the 'investigator' dropdown from DomainApplicationAdmin
|
||||
It then retrieves the queryset for the 'investigator' dropdown from DomainRequestAdmin
|
||||
and checks that it matches the expected queryset, which only includes staff users.
|
||||
"""
|
||||
|
||||
with less_console_noise():
|
||||
# Create a mock DomainApplication object, with a fake investigator
|
||||
application: DomainApplication = generic_domain_object("application", "SomeGuy")
|
||||
# Create a mock DomainRequest object, with a fake investigator
|
||||
application: DomainRequest = generic_domain_object("application", "SomeGuy")
|
||||
investigator_user = User.objects.filter(username=application.investigator.username).get()
|
||||
investigator_user.is_staff = True
|
||||
investigator_user.save()
|
||||
|
||||
# Create a mock DomainApplication object, with a user that is not staff
|
||||
application_2: DomainApplication = generic_domain_object("application", "SomeOtherGuy")
|
||||
# Create a mock DomainRequest object, with a user that is not staff
|
||||
application_2: DomainRequest = generic_domain_object("application", "SomeOtherGuy")
|
||||
investigator_user_2 = User.objects.filter(username=application_2.investigator.username).get()
|
||||
investigator_user_2.is_staff = False
|
||||
investigator_user_2.save()
|
||||
|
@ -1454,10 +1454,10 @@ class TestDomainApplicationAdmin(MockEppLib):
|
|||
p = "userpass"
|
||||
self.client.login(username="staffuser", password=p)
|
||||
|
||||
request = self.factory.post("/admin/registrar/domainapplication/{}/change/".format(application.pk))
|
||||
request = self.factory.post("/admin/registrar/DomainRequest/{}/change/".format(application.pk))
|
||||
|
||||
# Get the actual field from the model's meta information
|
||||
investigator_field = DomainApplication._meta.get_field("investigator")
|
||||
investigator_field = DomainRequest._meta.get_field("investigator")
|
||||
|
||||
# We should only be displaying staff users, in alphabetical order
|
||||
sorted_fields = ["first_name", "last_name", "email"]
|
||||
|
@ -1466,7 +1466,7 @@ class TestDomainApplicationAdmin(MockEppLib):
|
|||
# Grab the current dropdown. We do an API call to autocomplete to get this info.
|
||||
application_queryset = self.admin.formfield_for_foreignkey(investigator_field, request).queryset
|
||||
user_request = self.factory.post(
|
||||
"/admin/autocomplete/?app_label=registrar&model_name=domainapplication&field_name=investigator"
|
||||
"/admin/autocomplete/?app_label=registrar&model_name=DomainRequest&field_name=investigator"
|
||||
)
|
||||
user_admin = MyUserAdmin(User, self.site)
|
||||
user_queryset = user_admin.get_search_results(user_request, application_queryset, None)[0]
|
||||
|
@ -1483,19 +1483,19 @@ class TestDomainApplicationAdmin(MockEppLib):
|
|||
is displayed alphabetically
|
||||
"""
|
||||
with less_console_noise():
|
||||
# Create a mock DomainApplication object, with a fake investigator
|
||||
application: DomainApplication = generic_domain_object("application", "SomeGuy")
|
||||
# Create a mock DomainRequest object, with a fake investigator
|
||||
application: DomainRequest = generic_domain_object("application", "SomeGuy")
|
||||
investigator_user = User.objects.filter(username=application.investigator.username).get()
|
||||
investigator_user.is_staff = True
|
||||
investigator_user.save()
|
||||
|
||||
application_2: DomainApplication = generic_domain_object("application", "AGuy")
|
||||
application_2: DomainRequest = generic_domain_object("application", "AGuy")
|
||||
investigator_user_2 = User.objects.filter(username=application_2.investigator.username).get()
|
||||
investigator_user_2.first_name = "AGuy"
|
||||
investigator_user_2.is_staff = True
|
||||
investigator_user_2.save()
|
||||
|
||||
application_3: DomainApplication = generic_domain_object("application", "FinalGuy")
|
||||
application_3: DomainRequest = generic_domain_object("application", "FinalGuy")
|
||||
investigator_user_3 = User.objects.filter(username=application_3.investigator.username).get()
|
||||
investigator_user_3.first_name = "FinalGuy"
|
||||
investigator_user_3.is_staff = True
|
||||
|
@ -1522,7 +1522,7 @@ class TestDomainApplicationAdmin(MockEppLib):
|
|||
super().tearDown()
|
||||
Domain.objects.all().delete()
|
||||
DomainInformation.objects.all().delete()
|
||||
DomainApplication.objects.all().delete()
|
||||
DomainRequest.objects.all().delete()
|
||||
User.objects.all().delete()
|
||||
Contact.objects.all().delete()
|
||||
Website.objects.all().delete()
|
||||
|
@ -1617,7 +1617,7 @@ class TestDomainInformationAdmin(TestCase):
|
|||
def tearDown(self):
|
||||
"""Delete all Users, Domains, and UserDomainRoles"""
|
||||
DomainInformation.objects.all().delete()
|
||||
DomainApplication.objects.all().delete()
|
||||
DomainRequest.objects.all().delete()
|
||||
Domain.objects.all().delete()
|
||||
Contact.objects.all().delete()
|
||||
User.objects.all().delete()
|
||||
|
@ -1635,7 +1635,7 @@ class TestDomainInformationAdmin(TestCase):
|
|||
"type_of_work",
|
||||
"more_organization_information",
|
||||
"domain",
|
||||
"domain_application",
|
||||
"domain_request",
|
||||
"submitter",
|
||||
"no_other_contacts_rationale",
|
||||
"anything_else",
|
||||
|
@ -1809,7 +1809,7 @@ class ListHeaderAdminTest(TestCase):
|
|||
def setUp(self):
|
||||
self.site = AdminSite()
|
||||
self.factory = RequestFactory()
|
||||
self.admin = ListHeaderAdmin(model=DomainApplication, admin_site=None)
|
||||
self.admin = ListHeaderAdmin(model=DomainRequest, admin_site=None)
|
||||
self.client = Client(HTTP_HOST="localhost:8080")
|
||||
self.superuser = create_superuser()
|
||||
|
||||
|
@ -1824,7 +1824,7 @@ class ListHeaderAdminTest(TestCase):
|
|||
# which handles CSRF
|
||||
# Follow=True handles the redirect
|
||||
response = self.client.get(
|
||||
"/admin/registrar/domainapplication/",
|
||||
"/admin/registrar/DomainRequest/",
|
||||
{
|
||||
"status__exact": "started",
|
||||
"investigator__id__exact": user.id,
|
||||
|
@ -1874,7 +1874,7 @@ class ListHeaderAdminTest(TestCase):
|
|||
def tearDown(self):
|
||||
# delete any applications too
|
||||
DomainInformation.objects.all().delete()
|
||||
DomainApplication.objects.all().delete()
|
||||
DomainRequest.objects.all().delete()
|
||||
User.objects.all().delete()
|
||||
|
||||
|
||||
|
@ -1943,7 +1943,7 @@ class AuditedAdminTest(TestCase):
|
|||
|
||||
return ordered_list
|
||||
|
||||
def test_alphabetically_sorted_domain_application_investigator(self):
|
||||
def test_alphabetically_sorted_domain_request_investigator(self):
|
||||
"""Tests if the investigator field is alphabetically sorted by mimicking
|
||||
the call event flow"""
|
||||
# Creates multiple domain applications - review status does not matter
|
||||
|
@ -1951,16 +1951,16 @@ class AuditedAdminTest(TestCase):
|
|||
|
||||
# Create a mock request
|
||||
application_request = self.factory.post(
|
||||
"/admin/registrar/domainapplication/{}/change/".format(applications[0].pk)
|
||||
"/admin/registrar/DomainRequest/{}/change/".format(applications[0].pk)
|
||||
)
|
||||
|
||||
# Get the formfield data from the application page
|
||||
application_admin = AuditedAdmin(DomainApplication, self.site)
|
||||
field = DomainApplication.investigator.field
|
||||
application_admin = AuditedAdmin(DomainRequest, self.site)
|
||||
field = DomainRequest.investigator.field
|
||||
application_queryset = application_admin.formfield_for_foreignkey(field, application_request).queryset
|
||||
|
||||
request = self.factory.post(
|
||||
"/admin/autocomplete/?app_label=registrar&model_name=domainapplication&field_name=investigator"
|
||||
"/admin/autocomplete/?app_label=registrar&model_name=DomainRequest&field_name=investigator"
|
||||
)
|
||||
|
||||
sorted_fields = ["first_name", "last_name", "email"]
|
||||
|
@ -1978,23 +1978,23 @@ class AuditedAdminTest(TestCase):
|
|||
)
|
||||
|
||||
# This test case should be refactored in general, as it is too overly specific and engineered
|
||||
def test_alphabetically_sorted_fk_fields_domain_application(self):
|
||||
def test_alphabetically_sorted_fk_fields_domain_request(self):
|
||||
with less_console_noise():
|
||||
tested_fields = [
|
||||
DomainApplication.authorizing_official.field,
|
||||
DomainApplication.submitter.field,
|
||||
# DomainApplication.investigator.field,
|
||||
DomainApplication.creator.field,
|
||||
DomainApplication.requested_domain.field,
|
||||
DomainRequest.authorizing_official.field,
|
||||
DomainRequest.submitter.field,
|
||||
# DomainRequest.investigator.field,
|
||||
DomainRequest.creator.field,
|
||||
DomainRequest.requested_domain.field,
|
||||
]
|
||||
|
||||
# Creates multiple domain applications - review status does not matter
|
||||
applications = multiple_unalphabetical_domain_objects("application")
|
||||
|
||||
# Create a mock request
|
||||
request = self.factory.post("/admin/registrar/domainapplication/{}/change/".format(applications[0].pk))
|
||||
request = self.factory.post("/admin/registrar/DomainRequest/{}/change/".format(applications[0].pk))
|
||||
|
||||
model_admin = AuditedAdmin(DomainApplication, self.site)
|
||||
model_admin = AuditedAdmin(DomainRequest, self.site)
|
||||
|
||||
sorted_fields = []
|
||||
# Typically we wouldn't want two nested for fields,
|
||||
|
@ -2002,7 +2002,7 @@ class AuditedAdminTest(TestCase):
|
|||
# For test case purposes, this should be performant.
|
||||
for field in tested_fields:
|
||||
with self.subTest(field=field):
|
||||
isNamefield: bool = field == DomainApplication.requested_domain.field
|
||||
isNamefield: bool = field == DomainRequest.requested_domain.field
|
||||
if isNamefield:
|
||||
sorted_fields = ["name"]
|
||||
else:
|
||||
|
@ -2043,7 +2043,7 @@ class AuditedAdminTest(TestCase):
|
|||
DomainInformation.submitter.field,
|
||||
# DomainInformation.creator.field,
|
||||
(DomainInformation.domain.field, ["name"]),
|
||||
(DomainInformation.domain_application.field, ["requested_domain__name"]),
|
||||
(DomainInformation.domain_request.field, ["requested_domain__name"]),
|
||||
]
|
||||
# Creates multiple domain applications - review status does not matter
|
||||
applications = multiple_unalphabetical_domain_objects("information")
|
||||
|
@ -2083,7 +2083,7 @@ class AuditedAdminTest(TestCase):
|
|||
last = obj.last_name
|
||||
elif field_obj == DomainInformation.domain.field:
|
||||
first = obj.name
|
||||
elif field_obj == DomainInformation.domain_application.field:
|
||||
elif field_obj == DomainInformation.domain_request.field:
|
||||
first = obj.requested_domain.name
|
||||
|
||||
name_tuple = self.coerced_fk_field_helper(first, last, field_obj.name, ":")
|
||||
|
@ -2156,7 +2156,7 @@ class AuditedAdminTest(TestCase):
|
|||
|
||||
def tearDown(self):
|
||||
DomainInformation.objects.all().delete()
|
||||
DomainApplication.objects.all().delete()
|
||||
DomainRequest.objects.all().delete()
|
||||
DomainInvitation.objects.all().delete()
|
||||
|
||||
|
||||
|
@ -2342,14 +2342,14 @@ class ContactAdminTest(TestCase):
|
|||
mock_warning.assert_called_once_with(
|
||||
response.wsgi_request,
|
||||
"<ul class='messagelist_content-list--unstyled'>"
|
||||
"<li>Joined to DomainApplication: <a href='/admin/registrar/"
|
||||
f"domainapplication/{application1.pk}/change/'>city1.gov</a></li>"
|
||||
"<li>Joined to DomainApplication: <a href='/admin/registrar/"
|
||||
f"domainapplication/{application2.pk}/change/'>city2.gov</a></li>"
|
||||
"<li>Joined to DomainApplication: <a href='/admin/registrar/"
|
||||
f"domainapplication/{application3.pk}/change/'>city3.gov</a></li>"
|
||||
"<li>Joined to DomainApplication: <a href='/admin/registrar/"
|
||||
f"domainapplication/{application4.pk}/change/'>city4.gov</a></li>"
|
||||
"<li>Joined to DomainRequest: <a href='/admin/registrar/"
|
||||
f"DomainRequest/{application1.pk}/change/'>city1.gov</a></li>"
|
||||
"<li>Joined to DomainRequest: <a href='/admin/registrar/"
|
||||
f"DomainRequest/{application2.pk}/change/'>city2.gov</a></li>"
|
||||
"<li>Joined to DomainRequest: <a href='/admin/registrar/"
|
||||
f"DomainRequest/{application3.pk}/change/'>city3.gov</a></li>"
|
||||
"<li>Joined to DomainRequest: <a href='/admin/registrar/"
|
||||
f"DomainRequest/{application4.pk}/change/'>city4.gov</a></li>"
|
||||
"<li>Joined to User: <a href='/admin/registrar/"
|
||||
f"user/{self.staffuser.pk}/change/'>staff@example.com</a></li>"
|
||||
"</ul>",
|
||||
|
@ -2377,22 +2377,22 @@ class ContactAdminTest(TestCase):
|
|||
mock_warning.assert_called_once_with(
|
||||
response.wsgi_request,
|
||||
"<ul class='messagelist_content-list--unstyled'>"
|
||||
"<li>Joined to DomainApplication: <a href='/admin/registrar/"
|
||||
f"domainapplication/{application1.pk}/change/'>city1.gov</a></li>"
|
||||
"<li>Joined to DomainApplication: <a href='/admin/registrar/"
|
||||
f"domainapplication/{application2.pk}/change/'>city2.gov</a></li>"
|
||||
"<li>Joined to DomainApplication: <a href='/admin/registrar/"
|
||||
f"domainapplication/{application3.pk}/change/'>city3.gov</a></li>"
|
||||
"<li>Joined to DomainApplication: <a href='/admin/registrar/"
|
||||
f"domainapplication/{application4.pk}/change/'>city4.gov</a></li>"
|
||||
"<li>Joined to DomainApplication: <a href='/admin/registrar/"
|
||||
f"domainapplication/{application5.pk}/change/'>city5.gov</a></li>"
|
||||
"<li>Joined to DomainRequest: <a href='/admin/registrar/"
|
||||
f"DomainRequest/{application1.pk}/change/'>city1.gov</a></li>"
|
||||
"<li>Joined to DomainRequest: <a href='/admin/registrar/"
|
||||
f"DomainRequest/{application2.pk}/change/'>city2.gov</a></li>"
|
||||
"<li>Joined to DomainRequest: <a href='/admin/registrar/"
|
||||
f"DomainRequest/{application3.pk}/change/'>city3.gov</a></li>"
|
||||
"<li>Joined to DomainRequest: <a href='/admin/registrar/"
|
||||
f"DomainRequest/{application4.pk}/change/'>city4.gov</a></li>"
|
||||
"<li>Joined to DomainRequest: <a href='/admin/registrar/"
|
||||
f"DomainRequest/{application5.pk}/change/'>city5.gov</a></li>"
|
||||
"</ul>"
|
||||
"<p class='font-sans-3xs'>And 1 more...</p>",
|
||||
)
|
||||
|
||||
def tearDown(self):
|
||||
DomainApplication.objects.all().delete()
|
||||
DomainRequest.objects.all().delete()
|
||||
Contact.objects.all().delete()
|
||||
User.objects.all().delete()
|
||||
|
||||
|
|
|
@ -34,7 +34,7 @@ class TestGroups(TestCase):
|
|||
"view_logentry",
|
||||
"change_contact",
|
||||
"view_domain",
|
||||
"change_domainapplication",
|
||||
"change_DomainRequest",
|
||||
"change_domaininformation",
|
||||
"add_domaininvitation",
|
||||
"view_domaininvitation",
|
||||
|
|
|
@ -4,7 +4,7 @@ from unittest.mock import patch
|
|||
|
||||
from registrar.models import (
|
||||
Contact,
|
||||
DomainApplication,
|
||||
DomainRequest,
|
||||
DomainInformation,
|
||||
User,
|
||||
Website,
|
||||
|
@ -22,34 +22,34 @@ from django_fsm import TransitionNotAllowed
|
|||
|
||||
|
||||
# Test comment for push -- will remove
|
||||
# The DomainApplication submit method has a side effect of sending an email
|
||||
# The DomainRequest submit method has a side effect of sending an email
|
||||
# with AWS SES, so mock that out in all of these test cases
|
||||
@boto3_mocking.patching
|
||||
class TestDomainApplication(TestCase):
|
||||
class TestDomainRequest(TestCase):
|
||||
def setUp(self):
|
||||
self.started_application = completed_application(
|
||||
status=DomainApplication.ApplicationStatus.STARTED, name="started.gov"
|
||||
status=DomainRequest.ApplicationStatus.STARTED, name="started.gov"
|
||||
)
|
||||
self.submitted_application = completed_application(
|
||||
status=DomainApplication.ApplicationStatus.SUBMITTED, name="submitted.gov"
|
||||
status=DomainRequest.ApplicationStatus.SUBMITTED, name="submitted.gov"
|
||||
)
|
||||
self.in_review_application = completed_application(
|
||||
status=DomainApplication.ApplicationStatus.IN_REVIEW, name="in-review.gov"
|
||||
status=DomainRequest.ApplicationStatus.IN_REVIEW, name="in-review.gov"
|
||||
)
|
||||
self.action_needed_application = completed_application(
|
||||
status=DomainApplication.ApplicationStatus.ACTION_NEEDED, name="action-needed.gov"
|
||||
status=DomainRequest.ApplicationStatus.ACTION_NEEDED, name="action-needed.gov"
|
||||
)
|
||||
self.approved_application = completed_application(
|
||||
status=DomainApplication.ApplicationStatus.APPROVED, name="approved.gov"
|
||||
status=DomainRequest.ApplicationStatus.APPROVED, name="approved.gov"
|
||||
)
|
||||
self.withdrawn_application = completed_application(
|
||||
status=DomainApplication.ApplicationStatus.WITHDRAWN, name="withdrawn.gov"
|
||||
status=DomainRequest.ApplicationStatus.WITHDRAWN, name="withdrawn.gov"
|
||||
)
|
||||
self.rejected_application = completed_application(
|
||||
status=DomainApplication.ApplicationStatus.REJECTED, name="rejected.gov"
|
||||
status=DomainRequest.ApplicationStatus.REJECTED, name="rejected.gov"
|
||||
)
|
||||
self.ineligible_application = completed_application(
|
||||
status=DomainApplication.ApplicationStatus.INELIGIBLE, name="ineligible.gov"
|
||||
status=DomainRequest.ApplicationStatus.INELIGIBLE, name="ineligible.gov"
|
||||
)
|
||||
|
||||
self.mock_client = MockSESClient()
|
||||
|
@ -64,19 +64,19 @@ class TestDomainApplication(TestCase):
|
|||
return self.assertRaises(Exception, None, exception_type)
|
||||
|
||||
def test_empty_create_fails(self):
|
||||
"""Can't create a completely empty domain application.
|
||||
"""Can't create a completely empty domain request.
|
||||
NOTE: something about theexception this test raises messes up with the
|
||||
atomic block in a custom tearDown method for the parent test class."""
|
||||
with less_console_noise():
|
||||
with self.assertRaisesRegex(IntegrityError, "creator"):
|
||||
DomainApplication.objects.create()
|
||||
DomainRequest.objects.create()
|
||||
|
||||
def test_minimal_create(self):
|
||||
"""Can create with just a creator."""
|
||||
with less_console_noise():
|
||||
user, _ = User.objects.get_or_create(username="testy")
|
||||
application = DomainApplication.objects.create(creator=user)
|
||||
self.assertEqual(application.status, DomainApplication.ApplicationStatus.STARTED)
|
||||
application = DomainRequest.objects.create(creator=user)
|
||||
self.assertEqual(application.status, DomainRequest.ApplicationStatus.STARTED)
|
||||
|
||||
def test_full_create(self):
|
||||
"""Can create with all fields."""
|
||||
|
@ -86,11 +86,11 @@ class TestDomainApplication(TestCase):
|
|||
com_website, _ = Website.objects.get_or_create(website="igorville.com")
|
||||
gov_website, _ = Website.objects.get_or_create(website="igorville.gov")
|
||||
domain, _ = DraftDomain.objects.get_or_create(name="igorville.gov")
|
||||
application = DomainApplication.objects.create(
|
||||
application = DomainRequest.objects.create(
|
||||
creator=user,
|
||||
investigator=user,
|
||||
organization_type=DomainApplication.OrganizationChoices.FEDERAL,
|
||||
federal_type=DomainApplication.BranchChoices.EXECUTIVE,
|
||||
organization_type=DomainRequest.OrganizationChoices.FEDERAL,
|
||||
federal_type=DomainRequest.BranchChoices.EXECUTIVE,
|
||||
is_election_board=False,
|
||||
organization_name="Test",
|
||||
address_line1="100 Main St.",
|
||||
|
@ -140,7 +140,7 @@ class TestDomainApplication(TestCase):
|
|||
def test_status_fsm_submit_fail(self):
|
||||
with less_console_noise():
|
||||
user, _ = User.objects.get_or_create(username="testy")
|
||||
application = DomainApplication.objects.create(creator=user)
|
||||
application = DomainRequest.objects.create(creator=user)
|
||||
|
||||
with boto3_mocking.clients.handler_for("sesv2", self.mock_client):
|
||||
with less_console_noise():
|
||||
|
@ -152,7 +152,7 @@ class TestDomainApplication(TestCase):
|
|||
with less_console_noise():
|
||||
user, _ = User.objects.get_or_create(username="testy")
|
||||
site = DraftDomain.objects.create(name="igorville.gov")
|
||||
application = DomainApplication.objects.create(creator=user, requested_domain=site)
|
||||
application = DomainRequest.objects.create(creator=user, requested_domain=site)
|
||||
|
||||
# no submitter email so this emits a log warning
|
||||
|
||||
|
@ -186,37 +186,37 @@ class TestDomainApplication(TestCase):
|
|||
|
||||
def test_submit_from_withdrawn_sends_email(self):
|
||||
msg = "Create a withdrawn application and submit it and see if email was sent."
|
||||
application = completed_application(status=DomainApplication.ApplicationStatus.WITHDRAWN)
|
||||
application = completed_application(status=DomainRequest.ApplicationStatus.WITHDRAWN)
|
||||
self.check_email_sent(application, msg, "submit", 1)
|
||||
|
||||
def test_submit_from_action_needed_does_not_send_email(self):
|
||||
msg = "Create an application with ACTION_NEEDED status and submit it, check if email was not sent."
|
||||
application = completed_application(status=DomainApplication.ApplicationStatus.ACTION_NEEDED)
|
||||
application = completed_application(status=DomainRequest.ApplicationStatus.ACTION_NEEDED)
|
||||
self.check_email_sent(application, msg, "submit", 0)
|
||||
|
||||
def test_submit_from_in_review_does_not_send_email(self):
|
||||
msg = "Create a withdrawn application and submit it and see if email was sent."
|
||||
application = completed_application(status=DomainApplication.ApplicationStatus.IN_REVIEW)
|
||||
application = completed_application(status=DomainRequest.ApplicationStatus.IN_REVIEW)
|
||||
self.check_email_sent(application, msg, "submit", 0)
|
||||
|
||||
def test_approve_sends_email(self):
|
||||
msg = "Create an application and approve it and see if email was sent."
|
||||
application = completed_application(status=DomainApplication.ApplicationStatus.IN_REVIEW)
|
||||
application = completed_application(status=DomainRequest.ApplicationStatus.IN_REVIEW)
|
||||
self.check_email_sent(application, msg, "approve", 1)
|
||||
|
||||
def test_withdraw_sends_email(self):
|
||||
msg = "Create an application and withdraw it and see if email was sent."
|
||||
application = completed_application(status=DomainApplication.ApplicationStatus.IN_REVIEW)
|
||||
application = completed_application(status=DomainRequest.ApplicationStatus.IN_REVIEW)
|
||||
self.check_email_sent(application, msg, "withdraw", 1)
|
||||
|
||||
def test_reject_sends_email(self):
|
||||
msg = "Create an application and reject it and see if email was sent."
|
||||
application = completed_application(status=DomainApplication.ApplicationStatus.APPROVED)
|
||||
application = completed_application(status=DomainRequest.ApplicationStatus.APPROVED)
|
||||
self.check_email_sent(application, msg, "reject", 1)
|
||||
|
||||
def test_reject_with_prejudice_does_not_send_email(self):
|
||||
msg = "Create an application and reject it with prejudice and see if email was sent."
|
||||
application = completed_application(status=DomainApplication.ApplicationStatus.APPROVED)
|
||||
application = completed_application(status=DomainRequest.ApplicationStatus.APPROVED)
|
||||
self.check_email_sent(application, msg, "reject_with_prejudice", 0)
|
||||
|
||||
def test_submit_transition_allowed(self):
|
||||
|
@ -580,14 +580,14 @@ class TestDomainApplication(TestCase):
|
|||
|
||||
with less_console_noise():
|
||||
# Create a sample application
|
||||
application = completed_application(status=DomainApplication.ApplicationStatus.REJECTED)
|
||||
application.rejection_reason = DomainApplication.RejectionReasons.DOMAIN_PURPOSE
|
||||
application = completed_application(status=DomainRequest.ApplicationStatus.REJECTED)
|
||||
application.rejection_reason = DomainRequest.RejectionReasons.DOMAIN_PURPOSE
|
||||
|
||||
# Approve
|
||||
with boto3_mocking.clients.handler_for("sesv2", self.mock_client):
|
||||
application.approve()
|
||||
|
||||
self.assertEqual(application.status, DomainApplication.ApplicationStatus.APPROVED)
|
||||
self.assertEqual(application.status, DomainRequest.ApplicationStatus.APPROVED)
|
||||
self.assertEqual(application.rejection_reason, None)
|
||||
|
||||
def test_in_review_from_rejected_clears_rejection_reason(self):
|
||||
|
@ -596,15 +596,15 @@ class TestDomainApplication(TestCase):
|
|||
|
||||
with less_console_noise():
|
||||
# Create a sample application
|
||||
application = completed_application(status=DomainApplication.ApplicationStatus.REJECTED)
|
||||
application = completed_application(status=DomainRequest.ApplicationStatus.REJECTED)
|
||||
application.domain_is_not_active = True
|
||||
application.rejection_reason = DomainApplication.RejectionReasons.DOMAIN_PURPOSE
|
||||
application.rejection_reason = DomainRequest.RejectionReasons.DOMAIN_PURPOSE
|
||||
|
||||
# Approve
|
||||
with boto3_mocking.clients.handler_for("sesv2", self.mock_client):
|
||||
application.in_review()
|
||||
|
||||
self.assertEqual(application.status, DomainApplication.ApplicationStatus.IN_REVIEW)
|
||||
self.assertEqual(application.status, DomainRequest.ApplicationStatus.IN_REVIEW)
|
||||
self.assertEqual(application.rejection_reason, None)
|
||||
|
||||
def test_action_needed_from_rejected_clears_rejection_reason(self):
|
||||
|
@ -613,15 +613,15 @@ class TestDomainApplication(TestCase):
|
|||
|
||||
with less_console_noise():
|
||||
# Create a sample application
|
||||
application = completed_application(status=DomainApplication.ApplicationStatus.REJECTED)
|
||||
application = completed_application(status=DomainRequest.ApplicationStatus.REJECTED)
|
||||
application.domain_is_not_active = True
|
||||
application.rejection_reason = DomainApplication.RejectionReasons.DOMAIN_PURPOSE
|
||||
application.rejection_reason = DomainRequest.RejectionReasons.DOMAIN_PURPOSE
|
||||
|
||||
# Approve
|
||||
with boto3_mocking.clients.handler_for("sesv2", self.mock_client):
|
||||
application.action_needed()
|
||||
|
||||
self.assertEqual(application.status, DomainApplication.ApplicationStatus.ACTION_NEEDED)
|
||||
self.assertEqual(application.status, DomainRequest.ApplicationStatus.ACTION_NEEDED)
|
||||
self.assertEqual(application.rejection_reason, None)
|
||||
|
||||
def test_has_rationale_returns_true(self):
|
||||
|
@ -646,7 +646,7 @@ class TestDomainApplication(TestCase):
|
|||
"""has_other_contacts() returns false when an application has no other_contacts"""
|
||||
with less_console_noise():
|
||||
application = completed_application(
|
||||
status=DomainApplication.ApplicationStatus.STARTED, name="no-others.gov", has_other_contacts=False
|
||||
status=DomainRequest.ApplicationStatus.STARTED, name="no-others.gov", has_other_contacts=False
|
||||
)
|
||||
self.assertEquals(application.has_other_contacts(), False)
|
||||
|
||||
|
@ -666,12 +666,12 @@ class TestPermissions(TestCase):
|
|||
def test_approval_creates_role(self):
|
||||
draft_domain, _ = DraftDomain.objects.get_or_create(name="igorville.gov")
|
||||
user, _ = User.objects.get_or_create()
|
||||
application = DomainApplication.objects.create(creator=user, requested_domain=draft_domain)
|
||||
application = DomainRequest.objects.create(creator=user, requested_domain=draft_domain)
|
||||
|
||||
with boto3_mocking.clients.handler_for("sesv2", self.mock_client):
|
||||
with less_console_noise():
|
||||
# skip using the submit method
|
||||
application.status = DomainApplication.ApplicationStatus.SUBMITTED
|
||||
application.status = DomainRequest.ApplicationStatus.SUBMITTED
|
||||
application.approve()
|
||||
|
||||
# should be a role for this user
|
||||
|
@ -691,7 +691,7 @@ class TestDomainInformation(TestCase):
|
|||
self.mock_client.EMAILS_SENT.clear()
|
||||
Domain.objects.all().delete()
|
||||
DomainInformation.objects.all().delete()
|
||||
DomainApplication.objects.all().delete()
|
||||
DomainRequest.objects.all().delete()
|
||||
User.objects.all().delete()
|
||||
DraftDomain.objects.all().delete()
|
||||
|
||||
|
@ -700,12 +700,12 @@ class TestDomainInformation(TestCase):
|
|||
self.maxDiff = None
|
||||
draft_domain, _ = DraftDomain.objects.get_or_create(name="igorville.gov")
|
||||
user, _ = User.objects.get_or_create()
|
||||
application = DomainApplication.objects.create(creator=user, requested_domain=draft_domain, notes="test notes")
|
||||
application = DomainRequest.objects.create(creator=user, requested_domain=draft_domain, notes="test notes")
|
||||
|
||||
with boto3_mocking.clients.handler_for("sesv2", self.mock_client):
|
||||
with less_console_noise():
|
||||
# skip using the submit method
|
||||
application.status = DomainApplication.ApplicationStatus.SUBMITTED
|
||||
application.status = DomainRequest.ApplicationStatus.SUBMITTED
|
||||
application.approve()
|
||||
|
||||
# should be an information present for this domain
|
||||
|
@ -719,7 +719,7 @@ class TestDomainInformation(TestCase):
|
|||
creator=user,
|
||||
domain=domain,
|
||||
notes="test notes",
|
||||
domain_application=application,
|
||||
domain_request=application,
|
||||
).__dict__
|
||||
|
||||
# Test the two records for consistency
|
||||
|
@ -852,11 +852,11 @@ class TestContact(TestCase):
|
|||
self.contact, _ = Contact.objects.get_or_create(user=self.user)
|
||||
|
||||
self.contact_as_ao, _ = Contact.objects.get_or_create(email="newguy@igorville.gov")
|
||||
self.application = DomainApplication.objects.create(creator=self.user, authorizing_official=self.contact_as_ao)
|
||||
self.application = DomainRequest.objects.create(creator=self.user, authorizing_official=self.contact_as_ao)
|
||||
|
||||
def tearDown(self):
|
||||
super().tearDown()
|
||||
DomainApplication.objects.all().delete()
|
||||
DomainRequest.objects.all().delete()
|
||||
Contact.objects.all().delete()
|
||||
User.objects.all().delete()
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@ from django.utils.timezone import make_aware
|
|||
from registrar.models import Domain, Host, HostIP
|
||||
|
||||
from unittest import skip
|
||||
from registrar.models.domain_application import DomainApplication
|
||||
from registrar.models.domain_request import DomainRequest
|
||||
from registrar.models.domain_information import DomainInformation
|
||||
from registrar.models.draft_domain import DraftDomain
|
||||
from registrar.models.public_contact import PublicContact
|
||||
|
@ -311,25 +311,25 @@ class TestDomainCache(MockEppLib):
|
|||
|
||||
|
||||
class TestDomainCreation(MockEppLib):
|
||||
"""Rule: An approved domain application must result in a domain"""
|
||||
"""Rule: An approved domain request must result in a domain"""
|
||||
|
||||
@boto3_mocking.patching
|
||||
def test_approved_application_creates_domain_locally(self):
|
||||
"""
|
||||
Scenario: Analyst approves a domain application
|
||||
When the DomainApplication transitions to approved
|
||||
Scenario: Analyst approves a domain request
|
||||
When the DomainRequest transitions to approved
|
||||
Then a Domain exists in the database with the same `name`
|
||||
But a domain object does not exist in the registry
|
||||
"""
|
||||
with less_console_noise():
|
||||
draft_domain, _ = DraftDomain.objects.get_or_create(name="igorville.gov")
|
||||
user, _ = User.objects.get_or_create()
|
||||
application = DomainApplication.objects.create(creator=user, requested_domain=draft_domain)
|
||||
application = DomainRequest.objects.create(creator=user, requested_domain=draft_domain)
|
||||
|
||||
mock_client = MockSESClient()
|
||||
with boto3_mocking.clients.handler_for("sesv2", mock_client):
|
||||
# skip using the submit method
|
||||
application.status = DomainApplication.ApplicationStatus.SUBMITTED
|
||||
application.status = DomainRequest.ApplicationStatus.SUBMITTED
|
||||
# transition to approve state
|
||||
application.approve()
|
||||
# should have information present for this domain
|
||||
|
@ -395,7 +395,7 @@ class TestDomainCreation(MockEppLib):
|
|||
|
||||
def tearDown(self) -> None:
|
||||
DomainInformation.objects.all().delete()
|
||||
DomainApplication.objects.all().delete()
|
||||
DomainRequest.objects.all().delete()
|
||||
PublicContact.objects.all().delete()
|
||||
Domain.objects.all().delete()
|
||||
User.objects.all().delete()
|
||||
|
|
|
@ -5,7 +5,7 @@ from .common import MockEppLib # type: ignore
|
|||
|
||||
|
||||
from registrar.models import (
|
||||
DomainApplication,
|
||||
DomainRequest,
|
||||
DomainInformation,
|
||||
)
|
||||
import logging
|
||||
|
@ -47,7 +47,7 @@ class TestWithUser(MockEppLib):
|
|||
def tearDown(self):
|
||||
# delete any applications too
|
||||
super().tearDown()
|
||||
DomainApplication.objects.all().delete()
|
||||
DomainRequest.objects.all().delete()
|
||||
DomainInformation.objects.all().delete()
|
||||
self.user.delete()
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ from django_webtest import WebTest # type: ignore
|
|||
import boto3_mocking # type: ignore
|
||||
|
||||
from registrar.models import (
|
||||
DomainApplication,
|
||||
DomainRequest,
|
||||
DraftDomain,
|
||||
Domain,
|
||||
DomainInformation,
|
||||
|
@ -29,8 +29,8 @@ import logging
|
|||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class DomainApplicationTests(TestWithUser, WebTest):
|
||||
"""Webtests for domain application to test filling and submitting."""
|
||||
class DomainRequestTests(TestWithUser, WebTest):
|
||||
"""Webtests for domain request to test filling and submitting."""
|
||||
|
||||
# Doesn't work with CSRF checking
|
||||
# hypothesis is that CSRF_USE_SESSIONS is incompatible with WebTest
|
||||
|
@ -48,7 +48,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
|
||||
def test_application_form_intro_is_skipped_when_edit_access(self):
|
||||
"""Tests that user is NOT presented with intro acknowledgement page when accessed through 'edit'"""
|
||||
completed_application(status=DomainApplication.ApplicationStatus.STARTED, user=self.user)
|
||||
completed_application(status=DomainRequest.ApplicationStatus.STARTED, user=self.user)
|
||||
home_page = self.app.get("/")
|
||||
self.assertContains(home_page, "city.gov")
|
||||
# click the "Edit" link
|
||||
|
@ -146,7 +146,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||
type_result = type_form.submit()
|
||||
# should see results in db
|
||||
application = DomainApplication.objects.get() # there's only one
|
||||
application = DomainRequest.objects.get() # there's only one
|
||||
self.assertEqual(application.organization_type, "federal")
|
||||
# the post request should return a redirect to the next form in
|
||||
# the application
|
||||
|
@ -166,7 +166,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||
federal_result = federal_form.submit()
|
||||
# validate that data from this step are being saved
|
||||
application = DomainApplication.objects.get() # there's only one
|
||||
application = DomainRequest.objects.get() # there's only one
|
||||
self.assertEqual(application.federal_type, "executive")
|
||||
# the post request should return a redirect to the next form in
|
||||
# the application
|
||||
|
@ -193,7 +193,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||
org_contact_result = org_contact_form.submit()
|
||||
# validate that data from this step are being saved
|
||||
application = DomainApplication.objects.get() # there's only one
|
||||
application = DomainRequest.objects.get() # there's only one
|
||||
self.assertEqual(application.organization_name, "Testorg")
|
||||
self.assertEqual(application.address_line1, "address 1")
|
||||
self.assertEqual(application.address_line2, "address 2")
|
||||
|
@ -221,7 +221,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||
ao_result = ao_form.submit()
|
||||
# validate that data from this step are being saved
|
||||
application = DomainApplication.objects.get() # there's only one
|
||||
application = DomainRequest.objects.get() # there's only one
|
||||
self.assertEqual(application.authorizing_official.first_name, "Testy ATO")
|
||||
self.assertEqual(application.authorizing_official.last_name, "Tester ATO")
|
||||
self.assertEqual(application.authorizing_official.title, "Chief Tester")
|
||||
|
@ -243,7 +243,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||
current_sites_result = current_sites_form.submit()
|
||||
# validate that data from this step are being saved
|
||||
application = DomainApplication.objects.get() # there's only one
|
||||
application = DomainRequest.objects.get() # there's only one
|
||||
self.assertEqual(
|
||||
application.current_websites.filter(website="http://www.city.com").count(),
|
||||
1,
|
||||
|
@ -265,7 +265,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||
dotgov_result = dotgov_form.submit()
|
||||
# validate that data from this step are being saved
|
||||
application = DomainApplication.objects.get() # there's only one
|
||||
application = DomainRequest.objects.get() # there's only one
|
||||
self.assertEqual(application.requested_domain.name, "city.gov")
|
||||
self.assertEqual(application.alternative_domains.filter(website="city1.gov").count(), 1)
|
||||
# the post request should return a redirect to the next form in
|
||||
|
@ -285,7 +285,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||
purpose_result = purpose_form.submit()
|
||||
# validate that data from this step are being saved
|
||||
application = DomainApplication.objects.get() # there's only one
|
||||
application = DomainRequest.objects.get() # there's only one
|
||||
self.assertEqual(application.purpose, "For all kinds of things.")
|
||||
# the post request should return a redirect to the next form in
|
||||
# the application
|
||||
|
@ -309,7 +309,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||
your_contact_result = your_contact_form.submit()
|
||||
# validate that data from this step are being saved
|
||||
application = DomainApplication.objects.get() # there's only one
|
||||
application = DomainRequest.objects.get() # there's only one
|
||||
self.assertEqual(application.submitter.first_name, "Testy you")
|
||||
self.assertEqual(application.submitter.last_name, "Tester you")
|
||||
self.assertEqual(application.submitter.title, "Admin Tester")
|
||||
|
@ -342,7 +342,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||
other_contacts_result = other_contacts_form.submit()
|
||||
# validate that data from this step are being saved
|
||||
application = DomainApplication.objects.get() # there's only one
|
||||
application = DomainRequest.objects.get() # there's only one
|
||||
self.assertEqual(
|
||||
application.other_contacts.filter(
|
||||
first_name="Testy2",
|
||||
|
@ -371,7 +371,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||
anything_else_result = anything_else_form.submit()
|
||||
# validate that data from this step are being saved
|
||||
application = DomainApplication.objects.get() # there's only one
|
||||
application = DomainRequest.objects.get() # there's only one
|
||||
self.assertEqual(application.anything_else, "Nothing else.")
|
||||
# the post request should return a redirect to the next form in
|
||||
# the application
|
||||
|
@ -391,7 +391,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||
requirements_result = requirements_form.submit()
|
||||
# validate that data from this step are being saved
|
||||
application = DomainApplication.objects.get() # there's only one
|
||||
application = DomainRequest.objects.get() # there's only one
|
||||
self.assertEqual(application.is_policy_acknowledged, True)
|
||||
# the post request should return a redirect to the next form in
|
||||
# the application
|
||||
|
@ -663,7 +663,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
session_id = self.app.cookies[settings.SESSION_COOKIE_NAME]
|
||||
|
||||
type_form = type_page.forms[0]
|
||||
type_form["organization_type-organization_type"] = DomainApplication.OrganizationChoices.INTERSTATE
|
||||
type_form["organization_type-organization_type"] = DomainRequest.OrganizationChoices.INTERSTATE
|
||||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||
type_result = type_form.submit()
|
||||
|
||||
|
@ -708,7 +708,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
session_id = self.app.cookies[settings.SESSION_COOKIE_NAME]
|
||||
|
||||
type_form = type_page.forms[0]
|
||||
type_form["organization_type-organization_type"] = DomainApplication.OrganizationChoices.SPECIAL_DISTRICT
|
||||
type_form["organization_type-organization_type"] = DomainRequest.OrganizationChoices.SPECIAL_DISTRICT
|
||||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||
type_result = type_page.forms[0].submit()
|
||||
# follow first redirect
|
||||
|
@ -803,7 +803,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||
|
||||
# Verify that the no_other_contacts_rationale we saved earlier has been removed from the database
|
||||
application = DomainApplication.objects.get()
|
||||
application = DomainRequest.objects.get()
|
||||
self.assertEqual(
|
||||
application.other_contacts.count(),
|
||||
1,
|
||||
|
@ -845,7 +845,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||
|
||||
# Verify that the no_other_contacts_rationale we saved earlier has been removed from the database
|
||||
application = DomainApplication.objects.get()
|
||||
application = DomainRequest.objects.get()
|
||||
self.assertEqual(
|
||||
application.other_contacts.count(),
|
||||
0,
|
||||
|
@ -859,7 +859,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
def test_submitting_no_other_contacts_rationale_removes_reference_other_contacts_when_joined(self):
|
||||
"""When a user submits the Other Contacts form with no other contacts selected, the application's
|
||||
other contacts references get removed for other contacts that exist and are joined to other objects"""
|
||||
# Populate the database with a domain application that
|
||||
# Populate the database with a domain request that
|
||||
# has 1 "other contact" assigned to it
|
||||
# We'll do it from scratch so we can reuse the other contact
|
||||
ao, _ = Contact.objects.get_or_create(
|
||||
|
@ -883,7 +883,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
email="testy2@town.com",
|
||||
phone="(555) 555 5557",
|
||||
)
|
||||
application, _ = DomainApplication.objects.get_or_create(
|
||||
application, _ = DomainRequest.objects.get_or_create(
|
||||
organization_type="federal",
|
||||
federal_type="executive",
|
||||
purpose="Purpose of the site",
|
||||
|
@ -929,7 +929,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||
|
||||
# Verify that the no_other_contacts_rationale we saved earlier is no longer associated with the application
|
||||
application = DomainApplication.objects.get()
|
||||
application = DomainRequest.objects.get()
|
||||
self.assertEqual(
|
||||
application.other_contacts.count(),
|
||||
0,
|
||||
|
@ -986,7 +986,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
|
||||
This formset uses the DJANGO DELETE widget. We'll test that by setting 2 contacts on an application,
|
||||
loading the form and marking one contact up for deletion."""
|
||||
# Populate the database with a domain application that
|
||||
# Populate the database with a domain request that
|
||||
# has 2 "other contact" assigned to it
|
||||
# We'll do it from scratch so we can reuse the other contact
|
||||
ao, _ = Contact.objects.get_or_create(
|
||||
|
@ -1017,7 +1017,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
email="testy3@town.com",
|
||||
phone="(201) 555 5557",
|
||||
)
|
||||
application, _ = DomainApplication.objects.get_or_create(
|
||||
application, _ = DomainRequest.objects.get_or_create(
|
||||
organization_type="federal",
|
||||
federal_type="executive",
|
||||
purpose="Purpose of the site",
|
||||
|
@ -1061,13 +1061,13 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||
|
||||
# Verify that the first dude was deleted
|
||||
application = DomainApplication.objects.get()
|
||||
application = DomainRequest.objects.get()
|
||||
self.assertEqual(application.other_contacts.count(), 1)
|
||||
self.assertEqual(application.other_contacts.first().first_name, "Testy3")
|
||||
|
||||
def test_delete_other_contact_does_not_allow_zero_contacts(self):
|
||||
"""Delete Other Contact does not allow submission with zero contacts."""
|
||||
# Populate the database with a domain application that
|
||||
# Populate the database with a domain request that
|
||||
# has 1 "other contact" assigned to it
|
||||
# We'll do it from scratch so we can reuse the other contact
|
||||
ao, _ = Contact.objects.get_or_create(
|
||||
|
@ -1091,7 +1091,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
email="testy2@town.com",
|
||||
phone="(201) 555 5557",
|
||||
)
|
||||
application, _ = DomainApplication.objects.get_or_create(
|
||||
application, _ = DomainRequest.objects.get_or_create(
|
||||
organization_type="federal",
|
||||
federal_type="executive",
|
||||
purpose="Purpose of the site",
|
||||
|
@ -1133,7 +1133,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||
|
||||
# Verify that the contact was not deleted
|
||||
application = DomainApplication.objects.get()
|
||||
application = DomainRequest.objects.get()
|
||||
self.assertEqual(application.other_contacts.count(), 1)
|
||||
self.assertEqual(application.other_contacts.first().first_name, "Testy2")
|
||||
|
||||
|
@ -1144,7 +1144,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
3. then submit,
|
||||
The forms on page reload shows all the required fields and their errors."""
|
||||
|
||||
# Populate the database with a domain application that
|
||||
# Populate the database with a domain request that
|
||||
# has 1 "other contact" assigned to it
|
||||
# We'll do it from scratch so we can reuse the other contact
|
||||
ao, _ = Contact.objects.get_or_create(
|
||||
|
@ -1168,7 +1168,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
email="testy2@town.com",
|
||||
phone="(201) 555 5557",
|
||||
)
|
||||
application, _ = DomainApplication.objects.get_or_create(
|
||||
application, _ = DomainRequest.objects.get_or_create(
|
||||
organization_type="federal",
|
||||
federal_type="executive",
|
||||
purpose="Purpose of the site",
|
||||
|
@ -1220,7 +1220,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
2. then submit,
|
||||
The application is linked to the existing contact, and the existing contact updated."""
|
||||
|
||||
# Populate the database with a domain application that
|
||||
# Populate the database with a domain request that
|
||||
# has 1 "other contact" assigned to it
|
||||
# We'll do it from scratch
|
||||
ao, _ = Contact.objects.get_or_create(
|
||||
|
@ -1244,7 +1244,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
email="testy2@town.com",
|
||||
phone="(201) 555 5557",
|
||||
)
|
||||
application, _ = DomainApplication.objects.get_or_create(
|
||||
application, _ = DomainRequest.objects.get_or_create(
|
||||
organization_type="federal",
|
||||
federal_type="executive",
|
||||
purpose="Purpose of the site",
|
||||
|
@ -1301,7 +1301,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
2. then submit,
|
||||
The application is linked to a new contact, and the new contact is updated."""
|
||||
|
||||
# Populate the database with a domain application that
|
||||
# Populate the database with a domain request that
|
||||
# has 1 "other contact" assigned to it, the other contact is also
|
||||
# the authorizing official initially
|
||||
# We'll do it from scratch
|
||||
|
@ -1319,7 +1319,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
email="testy-admin@town.com",
|
||||
phone="(201) 555 5556",
|
||||
)
|
||||
application, _ = DomainApplication.objects.get_or_create(
|
||||
application, _ = DomainRequest.objects.get_or_create(
|
||||
organization_type="federal",
|
||||
federal_type="executive",
|
||||
purpose="Purpose of the site",
|
||||
|
@ -1381,7 +1381,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
2. then submit,
|
||||
The application is linked to the existing ao, and the ao updated."""
|
||||
|
||||
# Populate the database with a domain application that
|
||||
# Populate the database with a domain request that
|
||||
# has an authorizing_official (ao)
|
||||
# We'll do it from scratch
|
||||
ao, _ = Contact.objects.get_or_create(
|
||||
|
@ -1391,7 +1391,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
email="testy@town.com",
|
||||
phone="(201) 555 5555",
|
||||
)
|
||||
application, _ = DomainApplication.objects.get_or_create(
|
||||
application, _ = DomainRequest.objects.get_or_create(
|
||||
organization_type="federal",
|
||||
federal_type="executive",
|
||||
purpose="Purpose of the site",
|
||||
|
@ -1446,7 +1446,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
2. then submit,
|
||||
The application is linked to a new Contact, and the new Contact is updated."""
|
||||
|
||||
# Populate the database with a domain application that
|
||||
# Populate the database with a domain request that
|
||||
# has authorizing official assigned to it, the authorizing offical is also
|
||||
# an other contact initially
|
||||
# We'll do it from scratch
|
||||
|
@ -1457,7 +1457,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
email="testy@town.com",
|
||||
phone="(201) 555 5555",
|
||||
)
|
||||
application, _ = DomainApplication.objects.get_or_create(
|
||||
application, _ = DomainRequest.objects.get_or_create(
|
||||
organization_type="federal",
|
||||
federal_type="executive",
|
||||
purpose="Purpose of the site",
|
||||
|
@ -1518,7 +1518,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
2. then submit,
|
||||
The application is linked to the existing submitter, and the submitter updated."""
|
||||
|
||||
# Populate the database with a domain application that
|
||||
# Populate the database with a domain request that
|
||||
# has a submitter
|
||||
# We'll do it from scratch
|
||||
you, _ = Contact.objects.get_or_create(
|
||||
|
@ -1528,7 +1528,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
email="testy@town.com",
|
||||
phone="(201) 555 5555",
|
||||
)
|
||||
application, _ = DomainApplication.objects.get_or_create(
|
||||
application, _ = DomainRequest.objects.get_or_create(
|
||||
organization_type="federal",
|
||||
federal_type="executive",
|
||||
purpose="Purpose of the site",
|
||||
|
@ -1582,7 +1582,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
2. then submit,
|
||||
The application is linked to a new Contact, and the new Contact is updated."""
|
||||
|
||||
# Populate the database with a domain application that
|
||||
# Populate the database with a domain request that
|
||||
# has submitter assigned to it, the submitter is also
|
||||
# an other contact initially
|
||||
# We'll do it from scratch
|
||||
|
@ -1593,7 +1593,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
email="testy@town.com",
|
||||
phone="(201) 555 5555",
|
||||
)
|
||||
application, _ = DomainApplication.objects.get_or_create(
|
||||
application, _ = DomainRequest.objects.get_or_create(
|
||||
organization_type="federal",
|
||||
federal_type="executive",
|
||||
purpose="Purpose of the site",
|
||||
|
@ -1667,7 +1667,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
session_id = self.app.cookies[settings.SESSION_COOKIE_NAME]
|
||||
|
||||
type_form = type_page.forms[0]
|
||||
type_form["organization_type-organization_type"] = DomainApplication.OrganizationChoices.INTERSTATE
|
||||
type_form["organization_type-organization_type"] = DomainRequest.OrganizationChoices.INTERSTATE
|
||||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||
type_result = type_form.submit()
|
||||
# follow first redirect
|
||||
|
@ -1695,7 +1695,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
session_id = self.app.cookies[settings.SESSION_COOKIE_NAME]
|
||||
|
||||
type_form = type_page.forms[0]
|
||||
type_form["organization_type-organization_type"] = DomainApplication.OrganizationChoices.TRIBAL
|
||||
type_form["organization_type-organization_type"] = DomainRequest.OrganizationChoices.TRIBAL
|
||||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||
type_result = type_form.submit()
|
||||
# the tribal government page comes immediately afterwards
|
||||
|
@ -1900,7 +1900,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
self.assertEqual(value, "https://example.com")
|
||||
self.assertIn("current_sites-1-website", current_sites_form.fields)
|
||||
# and it is correctly referenced in the ManyToOne relationship
|
||||
application = DomainApplication.objects.get() # there's only one
|
||||
application = DomainRequest.objects.get() # there's only one
|
||||
self.assertEqual(
|
||||
application.current_websites.filter(website="https://example.com").count(),
|
||||
1,
|
||||
|
@ -1935,7 +1935,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
email="testy2@town.com",
|
||||
phone="(555) 555 5557",
|
||||
)
|
||||
application, _ = DomainApplication.objects.get_or_create(
|
||||
application, _ = DomainRequest.objects.get_or_create(
|
||||
organization_type="federal",
|
||||
federal_type="executive",
|
||||
purpose="Purpose of the site",
|
||||
|
@ -2068,7 +2068,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
|
|||
self.assertContains(review_page, "You are about to submit an incomplete request")
|
||||
|
||||
|
||||
class DomainApplicationTestDifferentStatuses(TestWithUser, WebTest):
|
||||
class DomainRequestTestDifferentStatuses(TestWithUser, WebTest):
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.app.set_user(self.user.username)
|
||||
|
@ -2076,7 +2076,7 @@ class DomainApplicationTestDifferentStatuses(TestWithUser, WebTest):
|
|||
|
||||
def test_application_status(self):
|
||||
"""Checking application status page"""
|
||||
application = completed_application(status=DomainApplication.ApplicationStatus.SUBMITTED, user=self.user)
|
||||
application = completed_application(status=DomainRequest.ApplicationStatus.SUBMITTED, user=self.user)
|
||||
application.save()
|
||||
|
||||
home_page = self.app.get("/")
|
||||
|
@ -2096,7 +2096,7 @@ class DomainApplicationTestDifferentStatuses(TestWithUser, WebTest):
|
|||
self.user.status = "ineligible"
|
||||
self.user.save()
|
||||
|
||||
application = completed_application(status=DomainApplication.ApplicationStatus.SUBMITTED, user=self.user)
|
||||
application = completed_application(status=DomainRequest.ApplicationStatus.SUBMITTED, user=self.user)
|
||||
application.save()
|
||||
|
||||
home_page = self.app.get("/")
|
||||
|
@ -2111,7 +2111,7 @@ class DomainApplicationTestDifferentStatuses(TestWithUser, WebTest):
|
|||
|
||||
def test_application_withdraw(self):
|
||||
"""Checking application status page"""
|
||||
application = completed_application(status=DomainApplication.ApplicationStatus.SUBMITTED, user=self.user)
|
||||
application = completed_application(status=DomainRequest.ApplicationStatus.SUBMITTED, user=self.user)
|
||||
application.save()
|
||||
|
||||
home_page = self.app.get("/")
|
||||
|
@ -2146,7 +2146,7 @@ class DomainApplicationTestDifferentStatuses(TestWithUser, WebTest):
|
|||
"""Can't withdraw applications as a restricted user."""
|
||||
self.user.status = User.RESTRICTED
|
||||
self.user.save()
|
||||
application = completed_application(status=DomainApplication.ApplicationStatus.SUBMITTED, user=self.user)
|
||||
application = completed_application(status=DomainRequest.ApplicationStatus.SUBMITTED, user=self.user)
|
||||
application.save()
|
||||
|
||||
home_page = self.app.get("/")
|
||||
|
@ -2171,7 +2171,7 @@ class DomainApplicationTestDifferentStatuses(TestWithUser, WebTest):
|
|||
|
||||
def test_application_status_no_permissions(self):
|
||||
"""Can't access applications without being the creator."""
|
||||
application = completed_application(status=DomainApplication.ApplicationStatus.SUBMITTED, user=self.user)
|
||||
application = completed_application(status=DomainRequest.ApplicationStatus.SUBMITTED, user=self.user)
|
||||
other_user = User()
|
||||
other_user.save()
|
||||
application.creator = other_user
|
||||
|
@ -2191,7 +2191,7 @@ class DomainApplicationTestDifferentStatuses(TestWithUser, WebTest):
|
|||
def test_approved_application_not_in_active_requests(self):
|
||||
"""An approved application is not shown in the Active
|
||||
Requests table on home.html."""
|
||||
application = completed_application(status=DomainApplication.ApplicationStatus.APPROVED, user=self.user)
|
||||
application = completed_application(status=DomainRequest.ApplicationStatus.APPROVED, user=self.user)
|
||||
application.save()
|
||||
|
||||
home_page = self.app.get("/")
|
||||
|
@ -2222,7 +2222,7 @@ class TestWizardUnlockingSteps(TestWithUser, WebTest):
|
|||
def test_unlocked_steps_full_application(self):
|
||||
"""Test when all fields in the application are filled."""
|
||||
|
||||
completed_application(status=DomainApplication.ApplicationStatus.STARTED, user=self.user)
|
||||
completed_application(status=DomainRequest.ApplicationStatus.STARTED, user=self.user)
|
||||
# Make a request to the home page
|
||||
home_page = self.app.get("/")
|
||||
# django-webtest does not handle cookie-based sessions well because it keeps
|
||||
|
@ -2280,10 +2280,10 @@ class TestWizardUnlockingSteps(TestWithUser, WebTest):
|
|||
contact_user, _ = Contact.objects.get_or_create(user=self.user)
|
||||
|
||||
site = DraftDomain.objects.create(name="igorville.gov")
|
||||
application = DomainApplication.objects.create(
|
||||
application = DomainRequest.objects.create(
|
||||
creator=self.user,
|
||||
requested_domain=site,
|
||||
status=DomainApplication.ApplicationStatus.WITHDRAWN,
|
||||
status=DomainRequest.ApplicationStatus.WITHDRAWN,
|
||||
authorizing_official=contact,
|
||||
submitter=contact_user,
|
||||
)
|
||||
|
@ -2341,11 +2341,11 @@ class HomeTests(TestWithUser):
|
|||
super().tearDown()
|
||||
Contact.objects.all().delete()
|
||||
|
||||
def test_home_lists_domain_applications(self):
|
||||
def test_home_lists_domain_requests(self):
|
||||
response = self.client.get("/")
|
||||
self.assertNotContains(response, "igorville.gov")
|
||||
site = DraftDomain.objects.create(name="igorville.gov")
|
||||
application = DomainApplication.objects.create(creator=self.user, requested_domain=site)
|
||||
application = DomainRequest.objects.create(creator=self.user, requested_domain=site)
|
||||
response = self.client.get("/")
|
||||
|
||||
# count = 7 because of screenreader content
|
||||
|
@ -2464,12 +2464,12 @@ class HomeTests(TestWithUser):
|
|||
# Check that we have the right text content.
|
||||
self.assertContains(response, unknown_text, count=1)
|
||||
|
||||
def test_home_deletes_withdrawn_domain_application(self):
|
||||
"""Tests if the user can delete a DomainApplication in the 'withdrawn' status"""
|
||||
def test_home_deletes_withdrawn_domain_request(self):
|
||||
"""Tests if the user can delete a DomainRequest in the 'withdrawn' status"""
|
||||
|
||||
site = DraftDomain.objects.create(name="igorville.gov")
|
||||
application = DomainApplication.objects.create(
|
||||
creator=self.user, requested_domain=site, status=DomainApplication.ApplicationStatus.WITHDRAWN
|
||||
application = DomainRequest.objects.create(
|
||||
creator=self.user, requested_domain=site, status=DomainRequest.ApplicationStatus.WITHDRAWN
|
||||
)
|
||||
|
||||
# Ensure that igorville.gov exists on the page
|
||||
|
@ -2488,12 +2488,12 @@ class HomeTests(TestWithUser):
|
|||
# clean up
|
||||
application.delete()
|
||||
|
||||
def test_home_deletes_started_domain_application(self):
|
||||
"""Tests if the user can delete a DomainApplication in the 'started' status"""
|
||||
def test_home_deletes_started_domain_request(self):
|
||||
"""Tests if the user can delete a DomainRequest in the 'started' status"""
|
||||
|
||||
site = DraftDomain.objects.create(name="igorville.gov")
|
||||
application = DomainApplication.objects.create(
|
||||
creator=self.user, requested_domain=site, status=DomainApplication.ApplicationStatus.STARTED
|
||||
application = DomainRequest.objects.create(
|
||||
creator=self.user, requested_domain=site, status=DomainRequest.ApplicationStatus.STARTED
|
||||
)
|
||||
|
||||
# Ensure that igorville.gov exists on the page
|
||||
|
@ -2512,20 +2512,20 @@ class HomeTests(TestWithUser):
|
|||
# clean up
|
||||
application.delete()
|
||||
|
||||
def test_home_doesnt_delete_other_domain_applications(self):
|
||||
def test_home_doesnt_delete_other_domain_requests(self):
|
||||
"""Tests to ensure the user can't delete Applications not in the status of STARTED or WITHDRAWN"""
|
||||
|
||||
# Given that we are including a subset of items that can be deleted while excluding the rest,
|
||||
# subTest is appropriate here as otherwise we would need many duplicate tests for the same reason.
|
||||
with less_console_noise():
|
||||
draft_domain = DraftDomain.objects.create(name="igorville.gov")
|
||||
for status in DomainApplication.ApplicationStatus:
|
||||
for status in DomainRequest.ApplicationStatus:
|
||||
if status not in [
|
||||
DomainApplication.ApplicationStatus.STARTED,
|
||||
DomainApplication.ApplicationStatus.WITHDRAWN,
|
||||
DomainRequest.ApplicationStatus.STARTED,
|
||||
DomainRequest.ApplicationStatus.WITHDRAWN,
|
||||
]:
|
||||
with self.subTest(status=status):
|
||||
application = DomainApplication.objects.create(
|
||||
application = DomainRequest.objects.create(
|
||||
creator=self.user, requested_domain=draft_domain, status=status
|
||||
)
|
||||
|
||||
|
@ -2537,16 +2537,16 @@ class HomeTests(TestWithUser):
|
|||
# Check for a 403 error - the end user should not be allowed to do this
|
||||
self.assertEqual(response.status_code, 403)
|
||||
|
||||
desired_application = DomainApplication.objects.filter(requested_domain=draft_domain)
|
||||
desired_application = DomainRequest.objects.filter(requested_domain=draft_domain)
|
||||
|
||||
# Make sure the DomainApplication wasn't deleted
|
||||
# Make sure the DomainRequest wasn't deleted
|
||||
self.assertEqual(desired_application.count(), 1)
|
||||
|
||||
# clean up
|
||||
application.delete()
|
||||
|
||||
def test_home_deletes_domain_application_and_orphans(self):
|
||||
"""Tests if delete for DomainApplication deletes orphaned Contact objects"""
|
||||
def test_home_deletes_domain_request_and_orphans(self):
|
||||
"""Tests if delete for DomainRequest deletes orphaned Contact objects"""
|
||||
|
||||
# Create the site and contacts to delete (orphaned)
|
||||
contact = Contact.objects.create(
|
||||
|
@ -2568,10 +2568,10 @@ class HomeTests(TestWithUser):
|
|||
contact_user, _ = Contact.objects.get_or_create(user=self.user)
|
||||
|
||||
site = DraftDomain.objects.create(name="igorville.gov")
|
||||
application = DomainApplication.objects.create(
|
||||
application = DomainRequest.objects.create(
|
||||
creator=self.user,
|
||||
requested_domain=site,
|
||||
status=DomainApplication.ApplicationStatus.WITHDRAWN,
|
||||
status=DomainRequest.ApplicationStatus.WITHDRAWN,
|
||||
authorizing_official=contact,
|
||||
submitter=contact_user,
|
||||
)
|
||||
|
@ -2579,10 +2579,10 @@ class HomeTests(TestWithUser):
|
|||
|
||||
# Create a second application to attach contacts to
|
||||
site_2 = DraftDomain.objects.create(name="teaville.gov")
|
||||
application_2 = DomainApplication.objects.create(
|
||||
application_2 = DomainRequest.objects.create(
|
||||
creator=self.user,
|
||||
requested_domain=site_2,
|
||||
status=DomainApplication.ApplicationStatus.STARTED,
|
||||
status=DomainRequest.ApplicationStatus.STARTED,
|
||||
authorizing_official=contact_2,
|
||||
submitter=contact_shared,
|
||||
)
|
||||
|
@ -2616,7 +2616,7 @@ class HomeTests(TestWithUser):
|
|||
|
||||
self.assertEqual(edge_case, contact_2)
|
||||
|
||||
def test_home_deletes_domain_application_and_shared_orphans(self):
|
||||
def test_home_deletes_domain_request_and_shared_orphans(self):
|
||||
"""Test the edge case for an object that will become orphaned after a delete
|
||||
(but is not an orphan at the time of deletion)"""
|
||||
|
||||
|
@ -2640,10 +2640,10 @@ class HomeTests(TestWithUser):
|
|||
contact_user, _ = Contact.objects.get_or_create(user=self.user)
|
||||
|
||||
site = DraftDomain.objects.create(name="igorville.gov")
|
||||
application = DomainApplication.objects.create(
|
||||
application = DomainRequest.objects.create(
|
||||
creator=self.user,
|
||||
requested_domain=site,
|
||||
status=DomainApplication.ApplicationStatus.WITHDRAWN,
|
||||
status=DomainRequest.ApplicationStatus.WITHDRAWN,
|
||||
authorizing_official=contact,
|
||||
submitter=contact_user,
|
||||
)
|
||||
|
@ -2651,10 +2651,10 @@ class HomeTests(TestWithUser):
|
|||
|
||||
# Create a second application to attach contacts to
|
||||
site_2 = DraftDomain.objects.create(name="teaville.gov")
|
||||
application_2 = DomainApplication.objects.create(
|
||||
application_2 = DomainRequest.objects.create(
|
||||
creator=self.user,
|
||||
requested_domain=site_2,
|
||||
status=DomainApplication.ApplicationStatus.STARTED,
|
||||
status=DomainRequest.ApplicationStatus.STARTED,
|
||||
authorizing_official=contact_2,
|
||||
submitter=contact_shared,
|
||||
)
|
||||
|
@ -2679,7 +2679,7 @@ class HomeTests(TestWithUser):
|
|||
"You’re about to start your .gov domain request.",
|
||||
)
|
||||
|
||||
def test_domain_application_form_with_ineligible_user(self):
|
||||
def test_domain_request_form_with_ineligible_user(self):
|
||||
"""Application form not accessible for an ineligible user.
|
||||
This test should be solid enough since all application wizard
|
||||
views share the same permissions class"""
|
||||
|
|
|
@ -21,7 +21,7 @@ from registrar.utility.errors import (
|
|||
)
|
||||
|
||||
from registrar.models import (
|
||||
DomainApplication,
|
||||
DomainRequest,
|
||||
Domain,
|
||||
DomainInformation,
|
||||
DomainInvitation,
|
||||
|
@ -120,7 +120,7 @@ class TestWithDomainPermissions(TestWithUser):
|
|||
UserDomainRole.objects.all().delete()
|
||||
if hasattr(self.domain, "contacts"):
|
||||
self.domain.contacts.all().delete()
|
||||
DomainApplication.objects.all().delete()
|
||||
DomainRequest.objects.all().delete()
|
||||
DomainInformation.objects.all().delete()
|
||||
PublicContact.objects.all().delete()
|
||||
HostIP.objects.all().delete()
|
||||
|
@ -311,7 +311,7 @@ class TestDomainDetail(TestDomainOverview):
|
|||
|
||||
def test_domain_detail_with_no_information_or_application(self):
|
||||
"""Test that domain management page returns 200 and displays error
|
||||
when no domain information or domain application exist"""
|
||||
when no domain information or domain request exist"""
|
||||
with less_console_noise():
|
||||
# have to use staff user for this test
|
||||
staff_user = create_user()
|
||||
|
|
|
@ -9,16 +9,16 @@ from django.views.generic import TemplateView
|
|||
from django.contrib import messages
|
||||
|
||||
from registrar.forms import application_wizard as forms
|
||||
from registrar.models import DomainApplication
|
||||
from registrar.models import DomainRequest
|
||||
from registrar.models.contact import Contact
|
||||
from registrar.models.user import User
|
||||
from registrar.utility import StrEnum
|
||||
from registrar.views.utility import StepsHelper
|
||||
from registrar.views.utility.permission_views import DomainApplicationPermissionDeleteView
|
||||
from registrar.views.utility.permission_views import DomainRequestPermissionDeleteView
|
||||
|
||||
from .utility import (
|
||||
DomainApplicationPermissionView,
|
||||
DomainApplicationPermissionWithdrawView,
|
||||
DomainRequestPermissionView,
|
||||
DomainRequestPermissionWithdrawView,
|
||||
ApplicationWizardPermissionView,
|
||||
)
|
||||
|
||||
|
@ -54,7 +54,7 @@ class ApplicationWizard(ApplicationWizardPermissionView, TemplateView):
|
|||
"""
|
||||
A common set of methods and configuration.
|
||||
|
||||
The registrar's domain application is several pages of "steps".
|
||||
The registrar's domain request is several pages of "steps".
|
||||
Together, these steps constitute a "wizard".
|
||||
|
||||
This base class sets up a shared state (stored in the user's session)
|
||||
|
@ -111,7 +111,7 @@ class ApplicationWizard(ApplicationWizardPermissionView, TemplateView):
|
|||
self._application = None # for caching
|
||||
|
||||
def has_pk(self):
|
||||
"""Does this wizard know about a DomainApplication database record?"""
|
||||
"""Does this wizard know about a DomainRequest database record?"""
|
||||
return "application_id" in self.storage
|
||||
|
||||
@property
|
||||
|
@ -122,9 +122,9 @@ class ApplicationWizard(ApplicationWizardPermissionView, TemplateView):
|
|||
return "wizard_application"
|
||||
|
||||
@property
|
||||
def application(self) -> DomainApplication:
|
||||
def application(self) -> DomainRequest:
|
||||
"""
|
||||
Attempt to match the current wizard with a DomainApplication.
|
||||
Attempt to match the current wizard with a DomainRequest.
|
||||
|
||||
Will create an application if none exists.
|
||||
"""
|
||||
|
@ -142,15 +142,15 @@ class ApplicationWizard(ApplicationWizardPermissionView, TemplateView):
|
|||
if self.has_pk():
|
||||
id = self.storage["application_id"]
|
||||
try:
|
||||
self._application = DomainApplication.objects.get(
|
||||
self._application = DomainRequest.objects.get(
|
||||
creator=creator,
|
||||
pk=id,
|
||||
)
|
||||
return self._application
|
||||
except DomainApplication.DoesNotExist:
|
||||
logger.debug("Application id %s did not have a DomainApplication" % id)
|
||||
except DomainRequest.DoesNotExist:
|
||||
logger.debug("Application id %s did not have a DomainRequest" % id)
|
||||
|
||||
self._application = DomainApplication.objects.create(creator=self.request.user)
|
||||
self._application = DomainRequest.objects.create(creator=self.request.user)
|
||||
|
||||
self.storage["application_id"] = self._application.id
|
||||
return self._application
|
||||
|
@ -236,7 +236,7 @@ class ApplicationWizard(ApplicationWizardPermissionView, TemplateView):
|
|||
context["forms"] = self.get_forms()
|
||||
|
||||
# if pending requests exist and user does not have approved domains,
|
||||
# present message that domain application cannot be submitted
|
||||
# present message that domain request cannot be submitted
|
||||
pending_requests = self.pending_requests()
|
||||
if len(pending_requests) > 0:
|
||||
message_header = "You cannot submit this request yet"
|
||||
|
@ -310,8 +310,8 @@ class ApplicationWizard(ApplicationWizardPermissionView, TemplateView):
|
|||
|
||||
def approved_applications_exist(self):
|
||||
"""Checks if user is creator of applications with ApplicationStatus.APPROVED status"""
|
||||
approved_application_count = DomainApplication.objects.filter(
|
||||
creator=self.request.user, status=DomainApplication.ApplicationStatus.APPROVED
|
||||
approved_application_count = DomainRequest.objects.filter(
|
||||
creator=self.request.user, status=DomainRequest.ApplicationStatus.APPROVED
|
||||
).count()
|
||||
return approved_application_count > 0
|
||||
|
||||
|
@ -326,14 +326,14 @@ class ApplicationWizard(ApplicationWizardPermissionView, TemplateView):
|
|||
"""Returns a List of user's applications with one of the following states:
|
||||
ApplicationStatus.SUBMITTED, ApplicationStatus.IN_REVIEW, ApplicationStatus.ACTION_NEEDED"""
|
||||
# if the current application has ApplicationStatus.ACTION_NEEDED status, this check should not be performed
|
||||
if self.application.status == DomainApplication.ApplicationStatus.ACTION_NEEDED:
|
||||
if self.application.status == DomainRequest.ApplicationStatus.ACTION_NEEDED:
|
||||
return []
|
||||
check_statuses = [
|
||||
DomainApplication.ApplicationStatus.SUBMITTED,
|
||||
DomainApplication.ApplicationStatus.IN_REVIEW,
|
||||
DomainApplication.ApplicationStatus.ACTION_NEEDED,
|
||||
DomainRequest.ApplicationStatus.SUBMITTED,
|
||||
DomainRequest.ApplicationStatus.IN_REVIEW,
|
||||
DomainRequest.ApplicationStatus.ACTION_NEEDED,
|
||||
]
|
||||
return DomainApplication.objects.filter(creator=self.request.user, status__in=check_statuses)
|
||||
return DomainRequest.objects.filter(creator=self.request.user, status__in=check_statuses)
|
||||
|
||||
def db_check_for_unlocking_steps(self):
|
||||
"""Helper for get_context_data
|
||||
|
@ -635,21 +635,21 @@ class Finished(ApplicationWizard):
|
|||
return render(self.request, self.template_name, context)
|
||||
|
||||
|
||||
class ApplicationStatus(DomainApplicationPermissionView):
|
||||
class ApplicationStatus(DomainRequestPermissionView):
|
||||
template_name = "application_status.html"
|
||||
|
||||
|
||||
class ApplicationWithdrawConfirmation(DomainApplicationPermissionWithdrawView):
|
||||
class ApplicationWithdrawConfirmation(DomainRequestPermissionWithdrawView):
|
||||
"""This page will ask user to confirm if they want to withdraw
|
||||
|
||||
The DomainApplicationPermissionView restricts access so that only the
|
||||
The DomainRequestPermissionView restricts access so that only the
|
||||
`creator` of the application may withdraw it.
|
||||
"""
|
||||
|
||||
template_name = "application_withdraw_confirmation.html"
|
||||
|
||||
|
||||
class ApplicationWithdrawn(DomainApplicationPermissionWithdrawView):
|
||||
class ApplicationWithdrawn(DomainRequestPermissionWithdrawView):
|
||||
# this view renders no template
|
||||
template_name = ""
|
||||
|
||||
|
@ -659,16 +659,16 @@ class ApplicationWithdrawn(DomainApplicationPermissionWithdrawView):
|
|||
If user click on withdraw confirm button, this view updates the status
|
||||
to withdraw and send back to homepage.
|
||||
"""
|
||||
application = DomainApplication.objects.get(id=self.kwargs["pk"])
|
||||
application = DomainRequest.objects.get(id=self.kwargs["pk"])
|
||||
application.withdraw()
|
||||
application.save()
|
||||
return HttpResponseRedirect(reverse("home"))
|
||||
|
||||
|
||||
class DomainApplicationDeleteView(DomainApplicationPermissionDeleteView):
|
||||
"""Delete view for home that allows the end user to delete DomainApplications"""
|
||||
class DomainRequestDeleteView(DomainRequestPermissionDeleteView):
|
||||
"""Delete view for home that allows the end user to delete DomainRequests"""
|
||||
|
||||
object: DomainApplication # workaround for type mismatch in DeleteView
|
||||
object: DomainRequest # workaround for type mismatch in DeleteView
|
||||
|
||||
def has_permission(self):
|
||||
"""Custom override for has_permission to exclude all statuses, except WITHDRAWN and STARTED"""
|
||||
|
@ -677,7 +677,7 @@ class DomainApplicationDeleteView(DomainApplicationPermissionDeleteView):
|
|||
return False
|
||||
|
||||
status = self.get_object().status
|
||||
valid_statuses = [DomainApplication.ApplicationStatus.WITHDRAWN, DomainApplication.ApplicationStatus.STARTED]
|
||||
valid_statuses = [DomainRequest.ApplicationStatus.WITHDRAWN, DomainRequest.ApplicationStatus.STARTED]
|
||||
if status not in valid_statuses:
|
||||
return False
|
||||
|
||||
|
@ -689,10 +689,10 @@ class DomainApplicationDeleteView(DomainApplicationPermissionDeleteView):
|
|||
|
||||
def post(self, request, *args, **kwargs):
|
||||
# Grab all orphaned contacts
|
||||
application: DomainApplication = self.get_object()
|
||||
application: DomainRequest = self.get_object()
|
||||
contacts_to_delete, duplicates = self._get_orphaned_contacts(application)
|
||||
|
||||
# Delete the DomainApplication
|
||||
# Delete the DomainRequest
|
||||
response = super().post(request, *args, **kwargs)
|
||||
|
||||
# Delete orphaned contacts - but only for if they are not associated with a user
|
||||
|
@ -707,16 +707,16 @@ class DomainApplicationDeleteView(DomainApplicationPermissionDeleteView):
|
|||
|
||||
return response
|
||||
|
||||
def _get_orphaned_contacts(self, application: DomainApplication, check_db=False):
|
||||
def _get_orphaned_contacts(self, application: DomainRequest, check_db=False):
|
||||
"""
|
||||
Collects all orphaned contacts associated with a given DomainApplication object.
|
||||
Collects all orphaned contacts associated with a given DomainRequest object.
|
||||
|
||||
An orphaned contact is defined as a contact that is associated with the application,
|
||||
but not with any other application. This includes the authorizing official, the submitter,
|
||||
and any other contacts linked to the application.
|
||||
|
||||
Parameters:
|
||||
application (DomainApplication): The DomainApplication object for which to find orphaned contacts.
|
||||
application (DomainRequest): The DomainRequest object for which to find orphaned contacts.
|
||||
check_db (bool, optional): A flag indicating whether to check the database for the existence of the contacts.
|
||||
Defaults to False.
|
||||
|
||||
|
@ -726,7 +726,7 @@ class DomainApplicationDeleteView(DomainApplicationPermissionDeleteView):
|
|||
"""
|
||||
contacts_to_delete = []
|
||||
|
||||
# Get each contact object on the DomainApplication object
|
||||
# Get each contact object on the DomainRequest object
|
||||
ao = application.authorizing_official
|
||||
submitter = application.submitter
|
||||
other_contacts = list(application.other_contacts.all())
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
from django.shortcuts import render
|
||||
|
||||
from registrar.models import DomainApplication, Domain, UserDomainRole
|
||||
from registrar.models import DomainRequest, Domain, UserDomainRole
|
||||
|
||||
|
||||
def index(request):
|
||||
|
@ -10,7 +10,7 @@ def index(request):
|
|||
# Get all domain applications the user has access to
|
||||
applications, deletable_applications = _get_applications(request)
|
||||
|
||||
context["domain_applications"] = applications
|
||||
context["domain_requests"] = applications
|
||||
|
||||
# Get all domains the user has access to
|
||||
domains = _get_domains(request)
|
||||
|
@ -35,19 +35,19 @@ def index(request):
|
|||
|
||||
def _get_applications(request):
|
||||
"""Given the current request,
|
||||
get all DomainApplications that are associated with the UserDomainRole object.
|
||||
get all DomainRequests that are associated with the UserDomainRole object.
|
||||
|
||||
Returns a tuple of all applications, and those that are deletable by the user.
|
||||
"""
|
||||
# Let's exclude the approved applications since our
|
||||
# domain_applications context will be used to populate
|
||||
# domain_requests context will be used to populate
|
||||
# the active applications table
|
||||
applications = DomainApplication.objects.filter(creator=request.user).exclude(
|
||||
status=DomainApplication.ApplicationStatus.APPROVED
|
||||
applications = DomainRequest.objects.filter(creator=request.user).exclude(
|
||||
status=DomainRequest.ApplicationStatus.APPROVED
|
||||
)
|
||||
|
||||
# Create a placeholder DraftDomain for each incomplete draft
|
||||
valid_statuses = [DomainApplication.ApplicationStatus.STARTED, DomainApplication.ApplicationStatus.WITHDRAWN]
|
||||
valid_statuses = [DomainRequest.ApplicationStatus.STARTED, DomainRequest.ApplicationStatus.WITHDRAWN]
|
||||
deletable_applications = applications.filter(status__in=valid_statuses)
|
||||
|
||||
return (applications, deletable_applications)
|
||||
|
|
|
@ -3,8 +3,8 @@ from .always_404 import always_404
|
|||
|
||||
from .permission_views import (
|
||||
DomainPermissionView,
|
||||
DomainApplicationPermissionView,
|
||||
DomainApplicationPermissionWithdrawView,
|
||||
DomainRequestPermissionView,
|
||||
DomainRequestPermissionWithdrawView,
|
||||
DomainInvitationPermissionDeleteView,
|
||||
ApplicationWizardPermissionView,
|
||||
)
|
||||
|
|
|
@ -4,7 +4,7 @@ from django.contrib.auth.mixins import PermissionRequiredMixin
|
|||
|
||||
from registrar.models import (
|
||||
Domain,
|
||||
DomainApplication,
|
||||
DomainRequest,
|
||||
DomainInvitation,
|
||||
DomainInformation,
|
||||
UserDomainRole,
|
||||
|
@ -230,10 +230,10 @@ class DomainPermission(PermissionsLoginMixin):
|
|||
|
||||
# Analysts may manage domains, when they are in these statuses:
|
||||
valid_domain_statuses = [
|
||||
DomainApplication.ApplicationStatus.APPROVED,
|
||||
DomainApplication.ApplicationStatus.IN_REVIEW,
|
||||
DomainApplication.ApplicationStatus.REJECTED,
|
||||
DomainApplication.ApplicationStatus.ACTION_NEEDED,
|
||||
DomainRequest.ApplicationStatus.APPROVED,
|
||||
DomainRequest.ApplicationStatus.IN_REVIEW,
|
||||
DomainRequest.ApplicationStatus.REJECTED,
|
||||
DomainRequest.ApplicationStatus.ACTION_NEEDED,
|
||||
# Edge case - some domains do not have
|
||||
# a status or DomainInformation... aka a status of 'None'.
|
||||
# It is necessary to access those to correct errors.
|
||||
|
@ -246,12 +246,12 @@ class DomainPermission(PermissionsLoginMixin):
|
|||
|
||||
# if no domain information or application exist, the user
|
||||
# should be able to manage the domain; however, if domain information
|
||||
# and domain application exist, and application is not in valid status,
|
||||
# and domain request exist, and application is not in valid status,
|
||||
# user should not be able to manage domain
|
||||
if (
|
||||
requested_domain
|
||||
and requested_domain.domain_application
|
||||
and requested_domain.domain_application.status not in valid_domain_statuses
|
||||
and requested_domain.domain_request
|
||||
and requested_domain.domain_request.status not in valid_domain_statuses
|
||||
):
|
||||
return False
|
||||
|
||||
|
@ -261,12 +261,12 @@ class DomainPermission(PermissionsLoginMixin):
|
|||
return True
|
||||
|
||||
|
||||
class DomainApplicationPermission(PermissionsLoginMixin):
|
||||
"""Permission mixin that redirects to domain application if user
|
||||
class DomainRequestPermission(PermissionsLoginMixin):
|
||||
"""Permission mixin that redirects to domain request if user
|
||||
has access, otherwise 403"""
|
||||
|
||||
def has_permission(self):
|
||||
"""Check if this user has access to this domain application.
|
||||
"""Check if this user has access to this domain request.
|
||||
|
||||
The user is in self.request.user and the domain needs to be looked
|
||||
up from the domain's primary key in self.kwargs["pk"]
|
||||
|
@ -275,9 +275,9 @@ class DomainApplicationPermission(PermissionsLoginMixin):
|
|||
return False
|
||||
|
||||
# user needs to be the creator of the application
|
||||
# this query is empty if there isn't a domain application with this
|
||||
# this query is empty if there isn't a domain request with this
|
||||
# id and this user as creator
|
||||
if not DomainApplication.objects.filter(creator=self.request.user, id=self.kwargs["pk"]).exists():
|
||||
if not DomainRequest.objects.filter(creator=self.request.user, id=self.kwargs["pk"]).exists():
|
||||
return False
|
||||
|
||||
return True
|
||||
|
@ -288,7 +288,7 @@ class UserDeleteDomainRolePermission(PermissionsLoginMixin):
|
|||
has access, otherwise 403"""
|
||||
|
||||
def has_permission(self):
|
||||
"""Check if this user has access to this domain application.
|
||||
"""Check if this user has access to this domain request.
|
||||
|
||||
The user is in self.request.user and the domain needs to be looked
|
||||
up from the domain's primary key in self.kwargs["pk"]
|
||||
|
@ -319,19 +319,19 @@ class UserDeleteDomainRolePermission(PermissionsLoginMixin):
|
|||
return True
|
||||
|
||||
|
||||
class DomainApplicationPermissionWithdraw(PermissionsLoginMixin):
|
||||
"""Permission mixin that redirects to withdraw action on domain application
|
||||
class DomainRequestPermissionWithdraw(PermissionsLoginMixin):
|
||||
"""Permission mixin that redirects to withdraw action on domain request
|
||||
if user has access, otherwise 403"""
|
||||
|
||||
def has_permission(self):
|
||||
"""Check if this user has access to withdraw this domain application."""
|
||||
"""Check if this user has access to withdraw this domain request."""
|
||||
if not self.request.user.is_authenticated:
|
||||
return False
|
||||
|
||||
# user needs to be the creator of the application
|
||||
# this query is empty if there isn't a domain application with this
|
||||
# this query is empty if there isn't a domain request with this
|
||||
# id and this user as creator
|
||||
if not DomainApplication.objects.filter(creator=self.request.user, id=self.kwargs["pk"]).exists():
|
||||
if not DomainRequest.objects.filter(creator=self.request.user, id=self.kwargs["pk"]).exists():
|
||||
return False
|
||||
|
||||
# Restricted users should not be able to withdraw domain requests
|
||||
|
@ -342,7 +342,7 @@ class DomainApplicationPermissionWithdraw(PermissionsLoginMixin):
|
|||
|
||||
|
||||
class ApplicationWizardPermission(PermissionsLoginMixin):
|
||||
"""Permission mixin that redirects to start or edit domain application if
|
||||
"""Permission mixin that redirects to start or edit domain request if
|
||||
user has access, otherwise 403"""
|
||||
|
||||
def has_permission(self):
|
||||
|
|
|
@ -3,13 +3,13 @@
|
|||
import abc # abstract base class
|
||||
|
||||
from django.views.generic import DetailView, DeleteView, TemplateView
|
||||
from registrar.models import Domain, DomainApplication, DomainInvitation
|
||||
from registrar.models import Domain, DomainRequest, DomainInvitation
|
||||
from registrar.models.user_domain_role import UserDomainRole
|
||||
|
||||
from .mixins import (
|
||||
DomainPermission,
|
||||
DomainApplicationPermission,
|
||||
DomainApplicationPermissionWithdraw,
|
||||
DomainRequestPermission,
|
||||
DomainRequestPermissionWithdraw,
|
||||
DomainInvitationPermission,
|
||||
ApplicationWizardPermission,
|
||||
UserDeleteDomainRolePermission,
|
||||
|
@ -56,7 +56,7 @@ class DomainPermissionView(DomainPermission, DetailView, abc.ABC):
|
|||
raise NotImplementedError
|
||||
|
||||
|
||||
class DomainApplicationPermissionView(DomainApplicationPermission, DetailView, abc.ABC):
|
||||
class DomainRequestPermissionView(DomainRequestPermission, DetailView, abc.ABC):
|
||||
"""Abstract base view for domain applications that enforces permissions
|
||||
|
||||
This abstract view cannot be instantiated. Actual views must specify
|
||||
|
@ -64,9 +64,9 @@ class DomainApplicationPermissionView(DomainApplicationPermission, DetailView, a
|
|||
"""
|
||||
|
||||
# DetailView property for what model this is viewing
|
||||
model = DomainApplication
|
||||
model = DomainRequest
|
||||
# variable name in template context for the model object
|
||||
context_object_name = "domainapplication"
|
||||
context_object_name = "DomainRequest"
|
||||
|
||||
# Abstract property enforces NotImplementedError on an attribute.
|
||||
@property
|
||||
|
@ -75,17 +75,17 @@ class DomainApplicationPermissionView(DomainApplicationPermission, DetailView, a
|
|||
raise NotImplementedError
|
||||
|
||||
|
||||
class DomainApplicationPermissionWithdrawView(DomainApplicationPermissionWithdraw, DetailView, abc.ABC):
|
||||
"""Abstract base view for domain application withdraw function
|
||||
class DomainRequestPermissionWithdrawView(DomainRequestPermissionWithdraw, DetailView, abc.ABC):
|
||||
"""Abstract base view for domain request withdraw function
|
||||
|
||||
This abstract view cannot be instantiated. Actual views must specify
|
||||
`template_name`.
|
||||
"""
|
||||
|
||||
# DetailView property for what model this is viewing
|
||||
model = DomainApplication
|
||||
model = DomainRequest
|
||||
# variable name in template context for the model object
|
||||
context_object_name = "domainapplication"
|
||||
context_object_name = "DomainRequest"
|
||||
|
||||
# Abstract property enforces NotImplementedError on an attribute.
|
||||
@property
|
||||
|
@ -121,11 +121,11 @@ class DomainInvitationPermissionDeleteView(DomainInvitationPermission, DeleteVie
|
|||
object: DomainInvitation # workaround for type mismatch in DeleteView
|
||||
|
||||
|
||||
class DomainApplicationPermissionDeleteView(DomainApplicationPermission, DeleteView, abc.ABC):
|
||||
"""Abstract view for deleting a DomainApplication."""
|
||||
class DomainRequestPermissionDeleteView(DomainRequestPermission, DeleteView, abc.ABC):
|
||||
"""Abstract view for deleting a DomainRequest."""
|
||||
|
||||
model = DomainApplication
|
||||
object: DomainApplication
|
||||
model = DomainRequest
|
||||
object: DomainRequest
|
||||
|
||||
|
||||
class UserDomainRolePermissionDeleteView(UserDeleteDomainRolePermission, DeleteView, abc.ABC):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue