Add DomainGroup and Suborg models

This commit is contained in:
Erin 2024-06-20 14:19:59 -07:00
parent fa502151a2
commit 2995792375
No known key found for this signature in database
GPG key ID: 1CAD275313C62460
6 changed files with 129 additions and 0 deletions

View file

@ -2655,6 +2655,27 @@ class WaffleFlagAdmin(FlagAdmin):
model = models.WaffleFlag
fields = "__all__"
class DomainGroupResource(resources.ModelResource):
"""defines how each field in the referenced model should be mapped to the corresponding fields in the
import/export file"""
class Meta:
model = models.DomainGroup
class DomainGroupAdmin(ListHeaderAdmin, ImportExportModelAdmin):
resource_classes = [DomainGroupResource]
list_display = ["name", "portfolio"]
class SuborganizationResource(resources.ModelResource):
"""defines how each field in the referenced model should be mapped to the corresponding fields in the
import/export file"""
class Meta:
model = models.Suborganization
class SuborganizationAdmin(ListHeaderAdmin, ImportExportModelAdmin):
resource_classes = [SuborganizationResource]
list_display = ["name", "portfolio"]
admin.site.unregister(LogEntry) # Unregister the default registration
@ -2679,6 +2700,8 @@ admin.site.register(models.DomainRequest, DomainRequestAdmin)
admin.site.register(models.TransitionDomain, TransitionDomainAdmin)
admin.site.register(models.VerifiedByStaff, VerifiedByStaffAdmin)
admin.site.register(models.Portfolio, PortfolioAdmin)
admin.site.register(models.DomainGroup, DomainGroupAdmin)
admin.site.register(models.Suborganization, SuborganizationAdmin)
# Register our custom waffle implementations
admin.site.register(models.WaffleFlag, WaffleFlagAdmin)

View file

@ -0,0 +1,41 @@
# Generated by Django 4.2.10 on 2024-06-20 21:18
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
("registrar", "0104_create_groups_v13"),
]
operations = [
migrations.CreateModel(
name="Suborganization",
fields=[
("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
("created_at", models.DateTimeField(auto_now_add=True)),
("updated_at", models.DateTimeField(auto_now=True)),
("name", models.CharField(blank=True, help_text="Domain group", null=True, unique=True)),
("portfolio", models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to="registrar.portfolio")),
],
options={
"abstract": False,
},
),
migrations.CreateModel(
name="DomainGroup",
fields=[
("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
("created_at", models.DateTimeField(auto_now_add=True)),
("updated_at", models.DateTimeField(auto_now=True)),
("name", models.CharField(blank=True, help_text="Domain group", null=True, unique=True)),
("domains", models.ManyToManyField(blank=True, to="registrar.domaininformation")),
("portfolio", models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to="registrar.portfolio")),
],
options={
"unique_together": {("name", "portfolio")},
},
),
]

View file

@ -17,6 +17,8 @@ from .transition_domain import TransitionDomain
from .verified_by_staff import VerifiedByStaff
from .waffle_flag import WaffleFlag
from .portfolio import Portfolio
from .domain_group import DomainGroup
from .suborganization import Suborganization
__all__ = [
@ -38,6 +40,8 @@ __all__ = [
"VerifiedByStaff",
"WaffleFlag",
"Portfolio",
"DomainGroup",
"Suborganization"
]
auditlog.register(Contact)
@ -58,3 +62,5 @@ auditlog.register(TransitionDomain)
auditlog.register(VerifiedByStaff)
auditlog.register(WaffleFlag)
auditlog.register(Portfolio)
auditlog.register(DomainGroup)
auditlog.register(Suborganization)

View file

@ -0,0 +1,33 @@
from django.db import models
from .utility.time_stamped_model import TimeStampedModel
from registrar.models.portfolio import Portfolio
from registrar.models.domain_information import DomainInformation
class DomainGroup(TimeStampedModel):
class Meta:
unique_together = [("name", "portfolio")]
"""
TODO: Write DomainGroup description
"""
name = models.CharField(
null=True,
blank=True,
unique=True,
help_text="Domain group",
)
portfolio = models.ForeignKey(
"registrar.Portfolio",
on_delete=models.PROTECT
)
domains = models.ManyToManyField(
"registrar.DomainInformation",
blank=True
)
def __str__(self) -> str:
return f"{self.name}"

View file

@ -97,3 +97,6 @@ class Portfolio(TimeStampedModel):
verbose_name="security contact e-mail",
max_length=320,
)
def __str__(self) -> str:
return f"{self.organization_name}"

View file

@ -0,0 +1,23 @@
from django.db import models
from .utility.time_stamped_model import TimeStampedModel
from registrar.models.portfolio import Portfolio
class Suborganization(TimeStampedModel):
"""
TODO: Write DomainGroup description
"""
name = models.CharField(
null=True,
blank=True,
unique=True,
help_text="Domain group",
)
portfolio = models.ForeignKey(
"registrar.Portfolio",
on_delete=models.PROTECT,
)
def __str__(self) -> str:
return f"{self.name}"