mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-07-30 14:36:32 +02:00
Customize contacts list, domain applications list, domain application detail view with search, sorts, filters, fieldsets, search helper text. Document django admin CISA analyst access group.
This commit is contained in:
parent
9e0c11129a
commit
64767a4af0
2 changed files with 52 additions and 1 deletions
20
docs/django-admin/roles.md
Normal file
20
docs/django-admin/roles.md
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
# Django admin user roles
|
||||||
|
|
||||||
|
Roles other than superuser should be defined in authentication and authorization groups in django admin
|
||||||
|
|
||||||
|
## Superuser
|
||||||
|
|
||||||
|
Full access
|
||||||
|
|
||||||
|
## CISA analyst
|
||||||
|
|
||||||
|
### Basic permission level
|
||||||
|
|
||||||
|
Staff
|
||||||
|
|
||||||
|
### Additional group permissions
|
||||||
|
|
||||||
|
admin | log entry | can view log entry
|
||||||
|
registrar | contact | can view contact
|
||||||
|
registrar | domain application | can view domain application
|
||||||
|
registrar | domain application | can change domain application
|
|
@ -78,11 +78,42 @@ class DomainAdmin(AuditedAdmin):
|
||||||
return HttpResponseRedirect(".")
|
return HttpResponseRedirect(".")
|
||||||
|
|
||||||
return super().response_change(request, obj)
|
return super().response_change(request, obj)
|
||||||
|
|
||||||
|
|
||||||
|
class ContactAdmin(AuditedAdmin):
|
||||||
|
|
||||||
|
"""Custom contact admin class to add search."""
|
||||||
|
|
||||||
|
search_fields = ["email", "first_name", "last_name"]
|
||||||
|
|
||||||
|
search_help_text = "Search by firstname, lastname or email."
|
||||||
|
|
||||||
|
|
||||||
class DomainApplicationAdmin(AuditedAdmin):
|
class DomainApplicationAdmin(AuditedAdmin):
|
||||||
|
|
||||||
"""Customize the applications listing view."""
|
"""Customize the applications listing view."""
|
||||||
|
|
||||||
|
list_display = ["requested_domain", "status", "organization_type", "created_at", "submitter", "investigator"]
|
||||||
|
|
||||||
|
list_filter = ('status', "organization_type", "investigator")
|
||||||
|
|
||||||
|
search_fields = ["requested_domain__name", "submitter__email", "submitter__first_name", "submitter__last_name"]
|
||||||
|
|
||||||
|
search_help_text = "Search by domain or submitter."
|
||||||
|
|
||||||
|
fieldsets = [
|
||||||
|
(None, {"fields": ["status", "investigator", "creator", "is_policy_acknowledged"]}),
|
||||||
|
("Type of organization", {"fields": ["organization_type", "federally_recognized_tribe", "state_recognized_tribe", "tribe_name", "federal_agency", "federal_type", "is_election_board", "type_of_work", "more_organization_information"]}),
|
||||||
|
("Organization name and mailing address", {"fields": ["organization_name", "address_line1", "address_line2", "city", "state_territory", "zipcode", "urbanization"]}),
|
||||||
|
("Authorizing official", {"fields": ["authorizing_official"]}),
|
||||||
|
("Current websites", {"fields": ["current_websites"]}),
|
||||||
|
(".gov domain", {"fields": ["requested_domain", "alternative_domains"]}),
|
||||||
|
("Purpose of your domain", {"fields": ["purpose"]}),
|
||||||
|
("Your contact information", {"fields": ["submitter"]}),
|
||||||
|
("Other employees from your organization?", {"fields": ["other_contacts"]}),
|
||||||
|
("No other employees from your organization?", {"fields": ["no_other_contacts_rationale"]}),
|
||||||
|
("Anything else we should know?", {"fields": ["anything_else"]}),
|
||||||
|
]
|
||||||
|
|
||||||
# Trigger action when a fieldset is changed
|
# Trigger action when a fieldset is changed
|
||||||
def save_model(self, request, obj, form, change):
|
def save_model(self, request, obj, form, change):
|
||||||
|
@ -106,7 +137,7 @@ class DomainApplicationAdmin(AuditedAdmin):
|
||||||
|
|
||||||
admin.site.register(models.User, MyUserAdmin)
|
admin.site.register(models.User, MyUserAdmin)
|
||||||
admin.site.register(models.UserDomainRole, AuditedAdmin)
|
admin.site.register(models.UserDomainRole, AuditedAdmin)
|
||||||
admin.site.register(models.Contact, AuditedAdmin)
|
admin.site.register(models.Contact, ContactAdmin)
|
||||||
admin.site.register(models.DomainInvitation, AuditedAdmin)
|
admin.site.register(models.DomainInvitation, AuditedAdmin)
|
||||||
admin.site.register(models.DomainInformation, AuditedAdmin)
|
admin.site.register(models.DomainInformation, AuditedAdmin)
|
||||||
admin.site.register(models.Domain, DomainAdmin)
|
admin.site.register(models.Domain, DomainAdmin)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue