feat(github): add members_can_delete_repositories to organization service

- Add members_can_delete_repositories field to Org model
- Extract members_can_delete_repositories setting from GitHub API
- Improve organization/repository argument handling in provider
- Deduplicate organizations and repositories lists
This commit is contained in:
Shria Halkoda committed 2026-02-26 20:12:11 -06:00
1 parent 4128d6ab78
commit 804528be8f
2 files changed
+23 -2

No files matched your search

+17 -2
View File
@@ -238,6 +238,21 @@ class Provider(ABC):
fixer_config=fixer_config,
)
elif "github" in provider_class_name.lower():
orgs=[]
repos=[]
if getattr(arguments, "organization", None):
orgs.extend(arguments.organization)
if getattr(arguments, "organizations", None):
orgs.extend(arguments.organizations)
if getattr(arguments, "repository", None):
repos.extend(arguments.repository)
if getattr(arguments, "repositories", None):
repos.extend(arguments.repositories)
orgs=list(dict.fromkeys(orgs))
repos=list(dict.fromkeys(repos))
provider_class(
personal_access_token=arguments.personal_access_token,
oauth_app_token=arguments.oauth_app_token,
@@ -245,8 +260,8 @@ class Provider(ABC):
github_app_id=arguments.github_app_id,
mutelist_path=arguments.mutelist_file,
config_path=arguments.config_file,
repositories=arguments.repository,
organizations=arguments.organization,
repositories=repos,
organizations=orgs,
)
elif "googleworkspace" in provider_class_name.lower():
provider_class(
@@ -76,6 +76,7 @@ class Organization(GithubService):
id=user.id,
name=user.login,
mfa_required=None, # Users don't have MFA requirements like orgs
members_can_delete_repositories=None,
is_verified=None,
)
logger.info(
@@ -189,6 +190,9 @@ class Organization(GithubService):
repo_creation_settings["members_allowed_repository_creation_type"] = (
_extract_flag("members_allowed_repository_creation_type", str)
)
members_can_delete_repositories = _extract_flag(
"members_can_delete_repositories", bool
)
base_permission_raw = _extract_flag("default_repository_permission", str)
base_permission = (
@@ -201,6 +205,7 @@ class Organization(GithubService):
id=org.id,
name=org.login,
mfa_required=require_mfa,
members_can_delete_repositories=members_can_delete_repositories,
members_can_create_repositories=repo_creation_settings[
"members_can_create_repositories"
],
@@ -227,6 +232,7 @@ class Org(BaseModel):
id: int
name: str
mfa_required: Optional[bool] = False
members_can_delete_repositories: Optional[bool] = None
members_can_create_repositories: Optional[bool] = None
members_can_create_public_repositories: Optional[bool] = None
members_can_create_private_repositories: Optional[bool] = None