from atlas_um.pgdb import ( BusinessUnit, PersonnelType, JobCategory, ResourceGroup, InternalUserDomain, ClaimName, ClaimValue, Tag, ) from .base import AdminSettingsBaseView from .forms import ( BusinessUnitForm, JobCategoryForm, PersonnelTypeForm, ResourceGroupForm, InternalUserDomainForm, ClaimNameForm, GlobalClaimNameForm, ClaimValueForm, TagForm, ) from .services import ( UpdateJobCategoryService, UpdateBusinessUnitService, UpdatePersonnelTypeService, UpdateResourceGroupService, UpdateClaimNameService, UpdateClaimValueService, UpdateGlobalClaimNameService, UpdateTagService, UpdateInternalUserDomainService, ) class BusinessUnitsView(AdminSettingsBaseView): model = BusinessUnit service_class = UpdateBusinessUnitService form_class = BusinessUnitForm title = "Business Units" url_prefix = "business_units" template = "admin_settings/user_details_list.html" search_fields = (BusinessUnit.name, BusinessUnit.slug) class JobCategoriesView(AdminSettingsBaseView): model = JobCategory service_class = UpdateJobCategoryService form_class = JobCategoryForm title = "Job Categories" url_prefix = "job_categories" template = "admin_settings/user_details_list.html" search_fields = (JobCategory.name, JobCategory.slug) class PersonnelTypesView(AdminSettingsBaseView): model = PersonnelType service_class = UpdatePersonnelTypeService form_class = PersonnelTypeForm title = "Personnel Types" url_prefix = "personnel_types" template = "admin_settings/user_details_list.html" search_fields = (PersonnelType.name, PersonnelType.slug) class TagsView(AdminSettingsBaseView): model = Tag service_class = UpdateTagService form_class = TagForm title = "Tags" url_prefix = "tags" template = "admin_settings/user_details_list.html" search_fields = (Tag.name, Tag.slug) class ResourceGroupsView(AdminSettingsBaseView): model = ResourceGroup affected_by_field = "resource_group_id" service_class = UpdateResourceGroupService form_class = ResourceGroupForm title = "Resource Groups" url_prefix = "resource_groups" template = "admin_settings/resource_groups_list.html" ordering_fields = [ ResourceGroup.id, ResourceGroup.name, ResourceGroup.namespace_url, ResourceGroup.external_id, ResourceGroup.service_url, ] search_fields = ( ResourceGroup.name, ResourceGroup.external_id, ResourceGroup.namespace_url, ResourceGroup.service_url, ) class InternalUserDomainView(AdminSettingsBaseView): model = InternalUserDomain service_class = UpdateInternalUserDomainService form_class = InternalUserDomainForm title = "Internal User Domains" url_prefix = "internal_domains" template = "admin_settings/internal_user_domains_list.html" ordering_fields = [ InternalUserDomain.domain, ] search_fields = (InternalUserDomain.domain,) class ClaimNamesView(AdminSettingsBaseView): model = ClaimName affected_by_field = "claim_name_id" holder_model = ResourceGroup service_class = UpdateClaimNameService form_class = ClaimNameForm title = "Claim Names" template = "admin_settings/claim_names_list.html" url_prefix = "claim_names" filter_args = "" holder_arg = "resource_group_id" ordering_fields = [ ClaimName.id, ClaimName.friendly, ClaimName.path, ClaimName.external_id, ClaimName.claim_values_serializer, ] search_fields = (ClaimName.friendly, ClaimName.path, ClaimName.external_id) def get_title(self): holder = self.get_holder() return f"{holder.name} - {self.title}" class ClaimValuesView(AdminSettingsBaseView): model = ClaimValue affected_by_field = "claim_value_id" holder_model = ClaimName service_class = UpdateClaimValueService form_class = ClaimValueForm title = "Claim Values" template = "admin_settings/claim_values_list.html" url_prefix = "claim_values" filter_args = "" holder_arg = "claim_name_id" ordering_fields = [ ClaimValue.id, ClaimValue.friendly, ClaimValue.external_id, ] search_fields = (ClaimValue.friendly, ClaimValue.external_id) def get_title(self): holder = self.get_holder() return f"{holder.resource_group.name} - {holder.friendly}" class GlobalClaimNamesView(AdminSettingsBaseView): model = ClaimName affected_by_field = "claim_values_source_id" service_class = UpdateGlobalClaimNameService form_class = GlobalClaimNameForm title = "Global Claim Names" template = "admin_settings/global_claim_names_list.html" url_prefix = "global_claim_names" ordering_fields = [ ClaimName.id, ClaimName.friendly, ClaimName.path, ClaimName.external_id, ClaimName.claim_values_serializer, ] search_fields = (ClaimName.friendly, ClaimName.external_id, ClaimName.path) def get_query(self): return super().get_query().filter_global() class GlobalClaimValuesView(AdminSettingsBaseView): model = ClaimValue affected_by_field = "claim_value_id" holder_model = ClaimName service_class = UpdateClaimValueService form_class = ClaimValueForm title = "Claim Values" template = "admin_settings/global_claim_values_list.html" url_prefix = "global_claim_values" filter_args = "" holder_arg = "claim_name_id" ordering_fields = [ ClaimValue.id, ClaimValue.friendly, ClaimValue.external_id, ] parent_arg = "parent_id" search_fields = (ClaimValue.friendly, ClaimValue.external_id) def get_title(self): holder = self.get_holder() return holder.friendly