diff --git a/docs/architecture/diagrams/models_diagram.md b/docs/architecture/diagrams/models_diagram.md index 20061bd07..947dfcc95 100644 --- a/docs/architecture/diagrams/models_diagram.md +++ b/docs/architecture/diagrams/models_diagram.md @@ -1,24 +1,34 @@ # Complete model documentation This is an auto-generated diagram of our data models generated with the -[django-model2puml](https://github.com/sen-den/django-model2puml) library -using the command +[django-model2puml](https://github.com/sen-den/django-model2puml) library. + +## How to generate the puml + +1. Uncomment `puml_generator` from `INSTALLED_APPS` in settings.py and docker-compose down and up +2. Run the following command to generate a puml file ```bash -$ docker compose exec app ./manage.py generate_puml --include registrar +docker compose exec app ./manage.py generate_puml --include registrar ``` -Note: You must uncomment `puml_generator` from `INSTALLED_APPS` in settings.py and docker-compose down and up before running the above command + ![Complete data models diagram](./models_diagram.svg)
PlantUML source code -To regenerate this image using Docker, run +## How To regenerate the database svg image + +1. Copy your puml file contents into the bottom of this file and replace the current code marked by `plantuml` +2. Run the following command ```bash -$ docker run -v $(pwd):$(pwd) -w $(pwd) -it plantuml/plantuml -tsvg models_diagram.md +docker run -v $(pwd):$(pwd) -w $(pwd) -it plantuml/plantuml -tsvg models_diagram.md ``` +3. Remove the puml file from earlier if you still have it and commit the image and this md file + + ```plantuml @startuml class "registrar.Contact " as registrar.Contact #d6f4e9 { @@ -28,17 +38,97 @@ class "registrar.Contact " as registrar.Contact #d6f4e9 { + created_at (DateTimeField) + updated_at (DateTimeField) ~ user (OneToOneField) - + first_name (TextField) - + middle_name (TextField) - + last_name (TextField) - + title (TextField) - + email (TextField) + + first_name (CharField) + + middle_name (CharField) + + last_name (CharField) + + title (CharField) + + email (EmailField) + phone (PhoneNumberField) -- } registrar.Contact -- registrar.User +class "registrar.Host " as registrar.Host #d6f4e9 { + host + -- + + id (BigAutoField) + + created_at (DateTimeField) + + updated_at (DateTimeField) + + name (CharField) + ~ domain (ForeignKey) + -- +} +registrar.Host -- registrar.Domain + + +class "registrar.HostIP " as registrar.HostIP #d6f4e9 { + host ip + -- + + id (BigAutoField) + + created_at (DateTimeField) + + updated_at (DateTimeField) + + address (CharField) + ~ host (ForeignKey) + -- +} +registrar.HostIP -- registrar.Host + + +class "registrar.PublicContact " as registrar.PublicContact #d6f4e9 { + public contact + -- + + id (BigAutoField) + + created_at (DateTimeField) + + updated_at (DateTimeField) + + contact_type (CharField) + + registry_id (CharField) + ~ domain (ForeignKey) + + name (CharField) + + org (CharField) + + street1 (CharField) + + street2 (CharField) + + street3 (CharField) + + city (CharField) + + sp (CharField) + + pc (CharField) + + cc (CharField) + + email (EmailField) + + voice (CharField) + + fax (CharField) + + pw (CharField) + -- +} +registrar.PublicContact -- registrar.Domain + + +class "registrar.Domain " as registrar.Domain #d6f4e9 { + domain + -- + + id (BigAutoField) + + created_at (DateTimeField) + + updated_at (DateTimeField) + + name (DomainField) + + state (FSMField) + + expiration_date (DateField) + + security_contact_registry_id (TextField) + + deleted (DateField) + + first_ready (DateField) + -- +} + + +class "registrar.FederalAgency " as registrar.FederalAgency #d6f4e9 { + Federal agency + -- + + id (BigAutoField) + + created_at (DateTimeField) + + updated_at (DateTimeField) + + agency (CharField) + -- +} + + class "registrar.DomainRequest " as registrar.DomainRequest #d6f4e9 { domain request -- @@ -46,24 +136,25 @@ class "registrar.DomainRequest " as registrar.DomainRequest #d6f4e9 { + created_at (DateTimeField) + updated_at (DateTimeField) + status (FSMField) + + rejection_reason (TextField) + ~ federal_agency (ForeignKey) ~ creator (ForeignKey) ~ investigator (ForeignKey) + + generic_org_type (CharField) + + is_election_board (BooleanField) + organization_type (CharField) + federally_recognized_tribe (BooleanField) + state_recognized_tribe (BooleanField) - + tribe_name (TextField) - + federal_agency (TextField) + + tribe_name (CharField) + federal_type (CharField) - + is_election_board (BooleanField) - + organization_name (TextField) - + address_line1 (TextField) + + organization_name (CharField) + + address_line1 (CharField) + address_line2 (CharField) - + city (TextField) + + city (CharField) + state_territory (CharField) + zipcode (CharField) - + urbanization (TextField) - + type_of_work (TextField) - + more_organization_information (TextField) + + urbanization (CharField) + + about_your_organization (TextField) ~ authorizing_official (ForeignKey) ~ approved_domain (OneToOneField) ~ requested_domain (OneToOneField) @@ -71,17 +162,23 @@ class "registrar.DomainRequest " as registrar.DomainRequest #d6f4e9 { + purpose (TextField) + no_other_contacts_rationale (TextField) + anything_else (TextField) + + has_anything_else_text (BooleanField) + + cisa_representative_email (EmailField) + + has_cisa_representative (BooleanField) + is_policy_acknowledged (BooleanField) + + submission_date (DateField) + + notes (TextField) # current_websites (ManyToManyField) # alternative_domains (ManyToManyField) # other_contacts (ManyToManyField) -- } +registrar.DomainRequest -- registrar.FederalAgency registrar.DomainRequest -- registrar.User registrar.DomainRequest -- registrar.User registrar.DomainRequest -- registrar.Contact -registrar.DomainRequest -- registrar.DraftDomain registrar.DomainRequest -- registrar.Domain +registrar.DomainRequest -- registrar.DraftDomain registrar.DomainRequest -- registrar.Contact registrar.DomainRequest *--* registrar.Website registrar.DomainRequest *--* registrar.Website @@ -94,35 +191,37 @@ class "registrar.DomainInformation " as registrar.DomainInformation # + id (BigAutoField) + created_at (DateTimeField) + updated_at (DateTimeField) + ~ federal_agency (ForeignKey) ~ creator (ForeignKey) ~ domain_request (OneToOneField) + + generic_org_type (CharField) + organization_type (CharField) + federally_recognized_tribe (BooleanField) + state_recognized_tribe (BooleanField) - + tribe_name (TextField) - + federal_agency (TextField) + + tribe_name (CharField) + federal_type (CharField) + is_election_board (BooleanField) - + organization_name (TextField) - + address_line1 (TextField) + + organization_name (CharField) + + address_line1 (CharField) + address_line2 (CharField) - + city (TextField) + + city (CharField) + state_territory (CharField) + zipcode (CharField) - + urbanization (TextField) - + type_of_work (TextField) - + more_organization_information (TextField) + + urbanization (CharField) + + about_your_organization (TextField) ~ authorizing_official (ForeignKey) ~ domain (OneToOneField) ~ submitter (ForeignKey) + purpose (TextField) + no_other_contacts_rationale (TextField) + anything_else (TextField) + + cisa_representative_email (EmailField) + is_policy_acknowledged (BooleanField) - + security_email (EmailField) + + notes (TextField) # other_contacts (ManyToManyField) -- } +registrar.DomainInformation -- registrar.FederalAgency registrar.DomainInformation -- registrar.User registrar.DomainInformation -- registrar.DomainRequest registrar.DomainInformation -- registrar.Contact @@ -142,43 +241,6 @@ class "registrar.DraftDomain " as registrar.DraftDomain #d6f4e9 { } -class "registrar.Domain " as registrar.Domain #d6f4e9 { - domain - -- - + id (BigAutoField) - + created_at (DateTimeField) - + updated_at (DateTimeField) - + name (CharField) - -- -} - - -class "registrar.HostIP " as registrar.HostIP #d6f4e9 { - host ip - -- - + id (BigAutoField) - + created_at (DateTimeField) - + updated_at (DateTimeField) - + address (CharField) - ~ host (ForeignKey) - -- -} -registrar.HostIP -- registrar.Host - - -class "registrar.Host " as registrar.Host #d6f4e9 { - host - -- - + id (BigAutoField) - + created_at (DateTimeField) - + updated_at (DateTimeField) - + name (CharField) - ~ domain (ForeignKey) - -- -} -registrar.Host -- registrar.Domain - - class "registrar.UserDomainRole " as registrar.UserDomainRole #d6f4e9 { user domain role -- @@ -208,47 +270,49 @@ class "registrar.DomainInvitation " as registrar.DomainInvitation #d6 registrar.DomainInvitation -- registrar.Domain -class "registrar.Nameserver " as registrar.Nameserver #d6f4e9 { - nameserver +class "registrar.TransitionDomain " as registrar.TransitionDomain #d6f4e9 { + transition domain -- + id (BigAutoField) + created_at (DateTimeField) + updated_at (DateTimeField) - + name (CharField) - ~ domain (ForeignKey) - ~ host_ptr (OneToOneField) + + username (CharField) + + domain_name (CharField) + + status (CharField) + + email_sent (BooleanField) + + processed (BooleanField) + + generic_org_type (CharField) + + organization_name (CharField) + + federal_type (CharField) + + federal_agency (CharField) + + epp_creation_date (DateField) + + epp_expiration_date (DateField) + + first_name (CharField) + + middle_name (CharField) + + last_name (CharField) + + title (CharField) + + email (EmailField) + + phone (CharField) + + address_line (CharField) + + city (CharField) + + state_territory (CharField) + + zipcode (CharField) -- } -registrar.Nameserver -- registrar.Domain -registrar.Nameserver -- registrar.Host -class "registrar.PublicContact " as registrar.PublicContact #d6f4e9 { - public contact +class "registrar.VerifiedByStaff " as registrar.VerifiedByStaff #d6f4e9 { + verified by staff -- + id (BigAutoField) + created_at (DateTimeField) + updated_at (DateTimeField) - + contact_type (CharField) - + registry_id (CharField) - ~ domain (ForeignKey) - + name (TextField) - + org (TextField) - + street1 (TextField) - + street2 (TextField) - + street3 (TextField) - + city (TextField) - + sp (TextField) - + pc (TextField) - + cc (TextField) - + email (TextField) - + voice (TextField) - + fax (TextField) - + pw (TextField) + + email (EmailField) + ~ requestor (ForeignKey) + + notes (TextField) -- } - -registrar.PublicContact -- registrar.Domain +registrar.VerifiedByStaff -- registrar.User class "registrar.User " as registrar.User #d6f4e9 { @@ -265,7 +329,11 @@ class "registrar.User " as registrar.User #d6f4e9 { + is_staff (BooleanField) + is_active (BooleanField) + date_joined (DateTimeField) + + status (CharField) + phone (PhoneNumberField) + + middle_name (CharField) + + title (CharField) + + verification_type (CharField) # groups (ManyToManyField) # user_permissions (ManyToManyField) # domains (ManyToManyField) @@ -274,6 +342,17 @@ class "registrar.User " as registrar.User #d6f4e9 { registrar.User *--* registrar.Domain +class "registrar.UserGroup " as registrar.UserGroup #d6f4e9 { + User group + -- + - id (AutoField) + + name (CharField) + ~ group_ptr (OneToOneField) + # permissions (ManyToManyField) + -- +} + + class "registrar.Website " as registrar.Website #d6f4e9 { website -- @@ -285,6 +364,29 @@ class "registrar.Website " as registrar.Website #d6f4e9 { } +class "registrar.WaffleFlag " as registrar.WaffleFlag #d6f4e9 { + waffle flag + -- + + id (BigAutoField) + + name (CharField) + + everyone (BooleanField) + + percent (DecimalField) + + testing (BooleanField) + + superusers (BooleanField) + + staff (BooleanField) + + authenticated (BooleanField) + + languages (TextField) + + rollout (BooleanField) + + note (TextField) + + created (DateTimeField) + + modified (DateTimeField) + # groups (ManyToManyField) + # users (ManyToManyField) + -- +} +registrar.WaffleFlag *--* registrar.User + + @enduml ``` diff --git a/docs/architecture/diagrams/models_diagram.svg b/docs/architecture/diagrams/models_diagram.svg index 49999454c..3fbc7dc10 100644 --- a/docs/architecture/diagrams/models_diagram.svg +++ b/docs/architecture/diagrams/models_diagram.svg @@ -1 +1 @@ -registrarregistrar.ContactRegistrarcontactid (BigAutoField)created_at (DateTimeField)updated_at (DateTimeField)user (OneToOneField)first_name (TextField)middle_name (TextField)last_name (TextField)title (TextField)email (TextField)phone (PhoneNumberField)registrar.UserRegistraruserid (BigAutoField)password (CharField)last_login (DateTimeField)is_superuser (BooleanField)username (CharField)first_name (CharField)last_name (CharField)email (EmailField)is_staff (BooleanField)is_active (BooleanField)date_joined (DateTimeField)phone (PhoneNumberField)groups (ManyToManyField)user_permissions (ManyToManyField)domains (ManyToManyField)registrar.DomainRequestRegistrardomain requestid (BigAutoField)created_at (DateTimeField)updated_at (DateTimeField)status (FSMField)creator (ForeignKey)investigator (ForeignKey)organization_type (CharField)federally_recognized_tribe (BooleanField)state_recognized_tribe (BooleanField)tribe_name (TextField)federal_agency (TextField)federal_type (CharField)is_election_board (BooleanField)organization_name (TextField)address_line1 (TextField)address_line2 (CharField)city (TextField)state_territory (CharField)zipcode (CharField)urbanization (TextField)type_of_work (TextField)more_organization_information (TextField)authorizing_official (ForeignKey)approved_domain (OneToOneField)requested_domain (OneToOneField)submitter (ForeignKey)purpose (TextField)no_other_contacts_rationale (TextField)anything_else (TextField)is_policy_acknowledged (BooleanField)current_websites (ManyToManyField)alternative_domains (ManyToManyField)other_contacts (ManyToManyField)registrar.DraftDomainRegistrardraft domainid (BigAutoField)created_at (DateTimeField)updated_at (DateTimeField)name (CharField)registrar.DomainRegistrardomainid (BigAutoField)created_at (DateTimeField)updated_at (DateTimeField)name (CharField)registrar.WebsiteRegistrarwebsiteid (BigAutoField)created_at (DateTimeField)updated_at (DateTimeField)website (CharField)registrar.DomainInformationRegistrardomain informationid (BigAutoField)created_at (DateTimeField)updated_at (DateTimeField)creator (ForeignKey)domain_request (OneToOneField)organization_type (CharField)federally_recognized_tribe (BooleanField)state_recognized_tribe (BooleanField)tribe_name (TextField)federal_agency (TextField)federal_type (CharField)is_election_board (BooleanField)organization_name (TextField)address_line1 (TextField)address_line2 (CharField)city (TextField)state_territory (CharField)zipcode (CharField)urbanization (TextField)type_of_work (TextField)more_organization_information (TextField)authorizing_official (ForeignKey)domain (OneToOneField)submitter (ForeignKey)purpose (TextField)no_other_contacts_rationale (TextField)anything_else (TextField)is_policy_acknowledged (BooleanField)security_email (EmailField)other_contacts (ManyToManyField)registrar.HostIPRegistrarhost ipid (BigAutoField)created_at (DateTimeField)updated_at (DateTimeField)address (CharField)host (ForeignKey)registrar.HostRegistrarhostid (BigAutoField)created_at (DateTimeField)updated_at (DateTimeField)name (CharField)domain (ForeignKey)registrar.UserDomainRoleRegistraruser domain roleid (BigAutoField)created_at (DateTimeField)updated_at (DateTimeField)user (ForeignKey)domain (ForeignKey)role (TextField)registrar.DomainInvitationRegistrardomain invitationid (BigAutoField)created_at (DateTimeField)updated_at (DateTimeField)email (EmailField)domain (ForeignKey)status (FSMField)registrar.NameserverRegistrarnameserverid (BigAutoField)created_at (DateTimeField)updated_at (DateTimeField)name (CharField)domain (ForeignKey)host_ptr (OneToOneField)registrar.PublicContactRegistrarpublic contactid (BigAutoField)created_at (DateTimeField)updated_at (DateTimeField)contact_type (CharField)registry_id (CharField)domain (ForeignKey)name (TextField)org (TextField)street1 (TextField)street2 (TextField)street3 (TextField)city (TextField)sp (TextField)pc (TextField)cc (TextField)email (TextField)voice (TextField)fax (TextField)pw (TextField) \ No newline at end of file +registrarregistrar.ContactRegistrarcontactid (BigAutoField)created_at (DateTimeField)updated_at (DateTimeField)user (OneToOneField)first_name (CharField)middle_name (CharField)last_name (CharField)title (CharField)email (EmailField)phone (PhoneNumberField)registrar.UserRegistraruserid (BigAutoField)password (CharField)last_login (DateTimeField)is_superuser (BooleanField)username (CharField)first_name (CharField)last_name (CharField)email (EmailField)is_staff (BooleanField)is_active (BooleanField)date_joined (DateTimeField)status (CharField)phone (PhoneNumberField)middle_name (CharField)title (CharField)verification_type (CharField)groups (ManyToManyField)user_permissions (ManyToManyField)domains (ManyToManyField)registrar.HostRegistrarhostid (BigAutoField)created_at (DateTimeField)updated_at (DateTimeField)name (CharField)domain (ForeignKey)registrar.DomainRegistrardomainid (BigAutoField)created_at (DateTimeField)updated_at (DateTimeField)name (DomainField)state (FSMField)expiration_date (DateField)security_contact_registry_id (TextField)deleted (DateField)first_ready (DateField)registrar.HostIPRegistrarhost ipid (BigAutoField)created_at (DateTimeField)updated_at (DateTimeField)address (CharField)host (ForeignKey)registrar.PublicContactRegistrarpublic contactid (BigAutoField)created_at (DateTimeField)updated_at (DateTimeField)contact_type (CharField)registry_id (CharField)domain (ForeignKey)name (CharField)org (CharField)street1 (CharField)street2 (CharField)street3 (CharField)city (CharField)sp (CharField)pc (CharField)cc (CharField)email (EmailField)voice (CharField)fax (CharField)pw (CharField)registrar.FederalAgencyRegistrarFederal agencyid (BigAutoField)created_at (DateTimeField)updated_at (DateTimeField)agency (CharField)registrar.DomainRequestRegistrardomain requestid (BigAutoField)created_at (DateTimeField)updated_at (DateTimeField)status (FSMField)rejection_reason (TextField)federal_agency (ForeignKey)creator (ForeignKey)investigator (ForeignKey)generic_org_type (CharField)is_election_board (BooleanField)organization_type (CharField)federally_recognized_tribe (BooleanField)state_recognized_tribe (BooleanField)tribe_name (CharField)federal_type (CharField)organization_name (CharField)address_line1 (CharField)address_line2 (CharField)city (CharField)state_territory (CharField)zipcode (CharField)urbanization (CharField)about_your_organization (TextField)authorizing_official (ForeignKey)approved_domain (OneToOneField)requested_domain (OneToOneField)submitter (ForeignKey)purpose (TextField)no_other_contacts_rationale (TextField)anything_else (TextField)has_anything_else_text (BooleanField)cisa_representative_email (EmailField)has_cisa_representative (BooleanField)is_policy_acknowledged (BooleanField)submission_date (DateField)notes (TextField)current_websites (ManyToManyField)alternative_domains (ManyToManyField)other_contacts (ManyToManyField)registrar.DraftDomainRegistrardraft domainid (BigAutoField)created_at (DateTimeField)updated_at (DateTimeField)name (CharField)registrar.WebsiteRegistrarwebsiteid (BigAutoField)created_at (DateTimeField)updated_at (DateTimeField)website (CharField)registrar.DomainInformationRegistrardomain informationid (BigAutoField)created_at (DateTimeField)updated_at (DateTimeField)federal_agency (ForeignKey)creator (ForeignKey)domain_request (OneToOneField)generic_org_type (CharField)organization_type (CharField)federally_recognized_tribe (BooleanField)state_recognized_tribe (BooleanField)tribe_name (CharField)federal_type (CharField)is_election_board (BooleanField)organization_name (CharField)address_line1 (CharField)address_line2 (CharField)city (CharField)state_territory (CharField)zipcode (CharField)urbanization (CharField)about_your_organization (TextField)authorizing_official (ForeignKey)domain (OneToOneField)submitter (ForeignKey)purpose (TextField)no_other_contacts_rationale (TextField)anything_else (TextField)cisa_representative_email (EmailField)is_policy_acknowledged (BooleanField)notes (TextField)other_contacts (ManyToManyField)registrar.UserDomainRoleRegistraruser domain roleid (BigAutoField)created_at (DateTimeField)updated_at (DateTimeField)user (ForeignKey)domain (ForeignKey)role (TextField)registrar.DomainInvitationRegistrardomain invitationid (BigAutoField)created_at (DateTimeField)updated_at (DateTimeField)email (EmailField)domain (ForeignKey)status (FSMField)registrar.TransitionDomainRegistrartransition domainid (BigAutoField)created_at (DateTimeField)updated_at (DateTimeField)username (CharField)domain_name (CharField)status (CharField)email_sent (BooleanField)processed (BooleanField)generic_org_type (CharField)organization_name (CharField)federal_type (CharField)federal_agency (CharField)epp_creation_date (DateField)epp_expiration_date (DateField)first_name (CharField)middle_name (CharField)last_name (CharField)title (CharField)email (EmailField)phone (CharField)address_line (CharField)city (CharField)state_territory (CharField)zipcode (CharField)registrar.VerifiedByStaffRegistrarverified by staffid (BigAutoField)created_at (DateTimeField)updated_at (DateTimeField)email (EmailField)requestor (ForeignKey)notes (TextField)registrar.UserGroupRegistrarUser groupid (AutoField)name (CharField)group_ptr (OneToOneField)permissions (ManyToManyField)registrar.WaffleFlagRegistrarwaffle flagid (BigAutoField)name (CharField)everyone (BooleanField)percent (DecimalField)testing (BooleanField)superusers (BooleanField)staff (BooleanField)authenticated (BooleanField)languages (TextField)rollout (BooleanField)note (TextField)created (DateTimeField)modified (DateTimeField)groups (ManyToManyField)users (ManyToManyField) \ No newline at end of file diff --git a/src/models_diagram.puml b/src/models_diagram.puml deleted file mode 100644 index a58994642..000000000 --- a/src/models_diagram.puml +++ /dev/null @@ -1,358 +0,0 @@ -@startuml -class "registrar.Contact " as registrar.Contact #d6f4e9 { - contact - -- - + id (BigAutoField) - + created_at (DateTimeField) - + updated_at (DateTimeField) - ~ user (OneToOneField) - + first_name (CharField) - + middle_name (CharField) - + last_name (CharField) - + title (CharField) - + email (EmailField) - + phone (PhoneNumberField) - -- -} -registrar.Contact -- registrar.User - - -class "registrar.Host " as registrar.Host #d6f4e9 { - host - -- - + id (BigAutoField) - + created_at (DateTimeField) - + updated_at (DateTimeField) - + name (CharField) - ~ domain (ForeignKey) - -- -} -registrar.Host -- registrar.Domain - - -class "registrar.HostIP " as registrar.HostIP #d6f4e9 { - host ip - -- - + id (BigAutoField) - + created_at (DateTimeField) - + updated_at (DateTimeField) - + address (CharField) - ~ host (ForeignKey) - -- -} -registrar.HostIP -- registrar.Host - - -class "registrar.PublicContact " as registrar.PublicContact #d6f4e9 { - public contact - -- - + id (BigAutoField) - + created_at (DateTimeField) - + updated_at (DateTimeField) - + contact_type (CharField) - + registry_id (CharField) - ~ domain (ForeignKey) - + name (CharField) - + org (CharField) - + street1 (CharField) - + street2 (CharField) - + street3 (CharField) - + city (CharField) - + sp (CharField) - + pc (CharField) - + cc (CharField) - + email (EmailField) - + voice (CharField) - + fax (CharField) - + pw (CharField) - -- -} -registrar.PublicContact -- registrar.Domain - - -class "registrar.Domain " as registrar.Domain #d6f4e9 { - domain - -- - + id (BigAutoField) - + created_at (DateTimeField) - + updated_at (DateTimeField) - + name (DomainField) - + state (FSMField) - + expiration_date (DateField) - + security_contact_registry_id (TextField) - + deleted (DateField) - + first_ready (DateField) - -- -} - - -class "registrar.FederalAgency " as registrar.FederalAgency #d6f4e9 { - Federal agency - -- - + id (BigAutoField) - + created_at (DateTimeField) - + updated_at (DateTimeField) - + agency (CharField) - -- -} - - -class "registrar.DomainRequest " as registrar.DomainRequest #d6f4e9 { - domain request - -- - + id (BigAutoField) - + created_at (DateTimeField) - + updated_at (DateTimeField) - + status (FSMField) - + rejection_reason (TextField) - ~ federal_agency (ForeignKey) - ~ creator (ForeignKey) - ~ investigator (ForeignKey) - + generic_org_type (CharField) - + is_election_board (BooleanField) - + organization_type (CharField) - + federally_recognized_tribe (BooleanField) - + state_recognized_tribe (BooleanField) - + tribe_name (CharField) - + federal_type (CharField) - + organization_name (CharField) - + address_line1 (CharField) - + address_line2 (CharField) - + city (CharField) - + state_territory (CharField) - + zipcode (CharField) - + urbanization (CharField) - + about_your_organization (TextField) - ~ authorizing_official (ForeignKey) - ~ approved_domain (OneToOneField) - ~ requested_domain (OneToOneField) - ~ submitter (ForeignKey) - + purpose (TextField) - + no_other_contacts_rationale (TextField) - + anything_else (TextField) - + has_anything_else_text (BooleanField) - + cisa_representative_email (EmailField) - + has_cisa_representative (BooleanField) - + is_policy_acknowledged (BooleanField) - + submission_date (DateField) - + notes (TextField) - # current_websites (ManyToManyField) - # alternative_domains (ManyToManyField) - # other_contacts (ManyToManyField) - -- -} -registrar.DomainRequest -- registrar.FederalAgency -registrar.DomainRequest -- registrar.User -registrar.DomainRequest -- registrar.User -registrar.DomainRequest -- registrar.Contact -registrar.DomainRequest -- registrar.Domain -registrar.DomainRequest -- registrar.DraftDomain -registrar.DomainRequest -- registrar.Contact -registrar.DomainRequest *--* registrar.Website -registrar.DomainRequest *--* registrar.Website -registrar.DomainRequest *--* registrar.Contact - - -class "registrar.DomainInformation " as registrar.DomainInformation #d6f4e9 { - domain information - -- - + id (BigAutoField) - + created_at (DateTimeField) - + updated_at (DateTimeField) - ~ federal_agency (ForeignKey) - ~ creator (ForeignKey) - ~ domain_request (OneToOneField) - + generic_org_type (CharField) - + organization_type (CharField) - + federally_recognized_tribe (BooleanField) - + state_recognized_tribe (BooleanField) - + tribe_name (CharField) - + federal_type (CharField) - + is_election_board (BooleanField) - + organization_name (CharField) - + address_line1 (CharField) - + address_line2 (CharField) - + city (CharField) - + state_territory (CharField) - + zipcode (CharField) - + urbanization (CharField) - + about_your_organization (TextField) - ~ authorizing_official (ForeignKey) - ~ domain (OneToOneField) - ~ submitter (ForeignKey) - + purpose (TextField) - + no_other_contacts_rationale (TextField) - + anything_else (TextField) - + cisa_representative_email (EmailField) - + is_policy_acknowledged (BooleanField) - + notes (TextField) - # other_contacts (ManyToManyField) - -- -} -registrar.DomainInformation -- registrar.FederalAgency -registrar.DomainInformation -- registrar.User -registrar.DomainInformation -- registrar.DomainRequest -registrar.DomainInformation -- registrar.Contact -registrar.DomainInformation -- registrar.Domain -registrar.DomainInformation -- registrar.Contact -registrar.DomainInformation *--* registrar.Contact - - -class "registrar.DraftDomain " as registrar.DraftDomain #d6f4e9 { - draft domain - -- - + id (BigAutoField) - + created_at (DateTimeField) - + updated_at (DateTimeField) - + name (CharField) - -- -} - - -class "registrar.UserDomainRole " as registrar.UserDomainRole #d6f4e9 { - user domain role - -- - + id (BigAutoField) - + created_at (DateTimeField) - + updated_at (DateTimeField) - ~ user (ForeignKey) - ~ domain (ForeignKey) - + role (TextField) - -- -} -registrar.UserDomainRole -- registrar.User -registrar.UserDomainRole -- registrar.Domain - - -class "registrar.DomainInvitation " as registrar.DomainInvitation #d6f4e9 { - domain invitation - -- - + id (BigAutoField) - + created_at (DateTimeField) - + updated_at (DateTimeField) - + email (EmailField) - ~ domain (ForeignKey) - + status (FSMField) - -- -} -registrar.DomainInvitation -- registrar.Domain - - -class "registrar.TransitionDomain " as registrar.TransitionDomain #d6f4e9 { - transition domain - -- - + id (BigAutoField) - + created_at (DateTimeField) - + updated_at (DateTimeField) - + username (CharField) - + domain_name (CharField) - + status (CharField) - + email_sent (BooleanField) - + processed (BooleanField) - + generic_org_type (CharField) - + organization_name (CharField) - + federal_type (CharField) - + federal_agency (CharField) - + epp_creation_date (DateField) - + epp_expiration_date (DateField) - + first_name (CharField) - + middle_name (CharField) - + last_name (CharField) - + title (CharField) - + email (EmailField) - + phone (CharField) - + address_line (CharField) - + city (CharField) - + state_territory (CharField) - + zipcode (CharField) - -- -} - - -class "registrar.VerifiedByStaff " as registrar.VerifiedByStaff #d6f4e9 { - verified by staff - -- - + id (BigAutoField) - + created_at (DateTimeField) - + updated_at (DateTimeField) - + email (EmailField) - ~ requestor (ForeignKey) - + notes (TextField) - -- -} -registrar.VerifiedByStaff -- registrar.User - - -class "registrar.User " as registrar.User #d6f4e9 { - user - -- - + id (BigAutoField) - + password (CharField) - + last_login (DateTimeField) - + is_superuser (BooleanField) - + username (CharField) - + first_name (CharField) - + last_name (CharField) - + email (EmailField) - + is_staff (BooleanField) - + is_active (BooleanField) - + date_joined (DateTimeField) - + status (CharField) - + phone (PhoneNumberField) - + middle_name (CharField) - + title (CharField) - + verification_type (CharField) - # groups (ManyToManyField) - # user_permissions (ManyToManyField) - # domains (ManyToManyField) - -- -} -registrar.User *--* registrar.Domain - - -class "registrar.UserGroup " as registrar.UserGroup #d6f4e9 { - User group - -- - - id (AutoField) - + name (CharField) - ~ group_ptr (OneToOneField) - # permissions (ManyToManyField) - -- -} - - -class "registrar.Website " as registrar.Website #d6f4e9 { - website - -- - + id (BigAutoField) - + created_at (DateTimeField) - + updated_at (DateTimeField) - + website (CharField) - -- -} - - -class "registrar.WaffleFlag " as registrar.WaffleFlag #d6f4e9 { - waffle flag - -- - + id (BigAutoField) - + name (CharField) - + everyone (BooleanField) - + percent (DecimalField) - + testing (BooleanField) - + superusers (BooleanField) - + staff (BooleanField) - + authenticated (BooleanField) - + languages (TextField) - + rollout (BooleanField) - + note (TextField) - + created (DateTimeField) - + modified (DateTimeField) - # groups (ManyToManyField) - # users (ManyToManyField) - -- -} -registrar.WaffleFlag *--* registrar.User - - -@enduml