mirror of
https://github.com/GAM-team/GAM.git
synced 2026-07-05 21:31:35 +00:00
phase 2 continued
This commit is contained in:
@@ -228,373 +228,22 @@ def redactable_debug_print(*args):
|
||||
# Multiprocessing lock
|
||||
mplock = None
|
||||
|
||||
# stdin/stdout/stderr — extracted to gam.util.output
|
||||
from util.output import readStdin # noqa: E402
|
||||
from util.output import stdErrorExit # noqa: E402
|
||||
from util.output import writeStdout # noqa: E402
|
||||
from util.output import flushStdout # noqa: E402
|
||||
from util.output import writeStderr # noqa: E402
|
||||
from util.output import flushStderr # noqa: E402
|
||||
from util.output import setSysExitRC # noqa: E402
|
||||
from util.output import stderrErrorMsg # noqa: E402
|
||||
from util.output import stderrWarningMsg # noqa: E402
|
||||
from util.output import systemErrorExit # noqa: E402
|
||||
from util.output import printErrorMessage # noqa: E402
|
||||
from util.output import printWarningMessage # noqa: E402
|
||||
from util.output import supportsColoredText # noqa: E402
|
||||
from util.output import createColoredText # noqa: E402
|
||||
from util.output import createRedText # noqa: E402
|
||||
from util.output import createGreenText # noqa: E402
|
||||
from util.output import createYellowText # noqa: E402
|
||||
from util.output import executeBatch # noqa: E402
|
||||
from util.output import _stripControlCharsFromName # noqa: E402
|
||||
from util.output import currentCount # noqa: E402
|
||||
from util.output import currentCountNL # noqa: E402
|
||||
from util.output import formatKeyValueList # noqa: E402
|
||||
|
||||
# File I/O — extracted to gam.util.fileio
|
||||
from util.fileio import cleanFilename # noqa: E402
|
||||
from util.fileio import setFilePath # noqa: E402
|
||||
from util.fileio import uniqueFilename # noqa: E402
|
||||
from util.fileio import cleanFilepath # noqa: E402
|
||||
from util.fileio import fileErrorMessage # noqa: E402
|
||||
from util.fileio import fdErrorMessage # noqa: E402
|
||||
from util.fileio import setEncoding # noqa: E402
|
||||
from util.fileio import StringIOobject # noqa: E402
|
||||
from util.fileio import openFile # noqa: E402
|
||||
from util.fileio import closeFile # noqa: E402
|
||||
from util.fileio import readFile # noqa: E402
|
||||
from util.fileio import writeFile # noqa: E402
|
||||
from util.fileio import writeFileReturnError # noqa: E402
|
||||
from util.fileio import deleteFile # noqa: E402
|
||||
from util.fileio import getGDocSheetDataRetryWarning # noqa: E402
|
||||
from util.fileio import getGDocSheetDataFailedExit # noqa: E402
|
||||
from util.fileio import incrAPICallsRetryData # noqa: E402
|
||||
from util.fileio import initAPICallsRateCheck # noqa: E402
|
||||
from util.fileio import checkAPICallsRate # noqa: E402
|
||||
from util.fileio import openGAMCommandLog # noqa: E402
|
||||
from util.fileio import writeGAMCommandLog # noqa: E402
|
||||
from util.fileio import closeGAMCommandLog # noqa: E402
|
||||
|
||||
# Display / warning / action — extracted to gam.util.display
|
||||
from util.display import badRequestWarning # noqa: E402
|
||||
from util.display import emptyQuery # noqa: E402
|
||||
from util.display import invalidQuery # noqa: E402
|
||||
from util.display import invalidMember # noqa: E402
|
||||
from util.display import invalidUserSchema # noqa: E402
|
||||
from util.display import userServiceNotEnabledWarning # noqa: E402
|
||||
from util.display import userAlertsServiceNotEnabledWarning # noqa: E402
|
||||
from util.display import userAnalyticsServiceNotEnabledWarning # noqa: E402
|
||||
from util.display import userCalServiceNotEnabledWarning # noqa: E402
|
||||
from util.display import userChatServiceNotEnabledWarning # noqa: E402
|
||||
from util.display import userContactDelegateServiceNotEnabledWarning # noqa: E402
|
||||
from util.display import userDriveServiceNotEnabledWarning # noqa: E402
|
||||
from util.display import userKeepServiceNotEnabledWarning # noqa: E402
|
||||
from util.display import userGmailServiceNotEnabledWarning # noqa: E402
|
||||
from util.display import userLookerStudioServiceNotEnabledWarning # noqa: E402
|
||||
from util.display import userPeopleServiceNotEnabledWarning # noqa: E402
|
||||
from util.display import userTasksServiceNotEnabledWarning # noqa: E402
|
||||
from util.display import userYouTubeServiceNotEnabledWarning # noqa: E402
|
||||
from util.display import entityServiceNotApplicableWarning # noqa: E402
|
||||
from util.display import entityDoesNotExistWarning # noqa: E402
|
||||
from util.display import entityListDoesNotExistWarning # noqa: E402
|
||||
from util.display import entityDoesNotHaveItemWarning # noqa: E402
|
||||
from util.display import entityDuplicateWarning # noqa: E402
|
||||
from util.display import entityActionFailedWarning # noqa: E402
|
||||
from util.display import entityModifierItemValueListActionFailedWarning # noqa: E402
|
||||
from util.display import entityModifierActionFailedWarning # noqa: E402
|
||||
from util.display import entityModifierNewValueActionFailedWarning # noqa: E402
|
||||
from util.display import entityNumEntitiesActionFailedWarning # noqa: E402
|
||||
from util.display import entityActionNotPerformedWarning # noqa: E402
|
||||
from util.display import entityItemValueListActionNotPerformedWarning # noqa: E402
|
||||
from util.display import entityModifierItemValueListActionNotPerformedWarning # noqa: E402
|
||||
from util.display import entityNumEntitiesActionNotPerformedWarning # noqa: E402
|
||||
from util.display import entityBadRequestWarning # noqa: E402
|
||||
from util.display import printGettingAllAccountEntities # noqa: E402
|
||||
from util.display import printGotAccountEntities # noqa: E402
|
||||
from util.display import setGettingAllEntityItemsForWhom # noqa: E402
|
||||
from util.display import printGettingAllEntityItemsForWhom # noqa: E402
|
||||
from util.display import printGotEntityItemsForWhom # noqa: E402
|
||||
from util.display import printGettingEntityItem # noqa: E402
|
||||
from util.display import printGettingEntityItemForWhom # noqa: E402
|
||||
from util.display import stderrEntityMessage # noqa: E402
|
||||
from util.display import FIRST_ITEM_MARKER # noqa: E402
|
||||
from util.display import LAST_ITEM_MARKER # noqa: E402
|
||||
from util.display import TOTAL_ITEMS_MARKER # noqa: E402
|
||||
from util.display import getPageMessage # noqa: E402
|
||||
from util.display import getPageMessageForWhom # noqa: E402
|
||||
from util.display import printLine # noqa: E402
|
||||
from util.display import printBlankLine # noqa: E402
|
||||
from util.display import printKeyValueList # noqa: E402
|
||||
from util.display import printKeyValueListWithCount # noqa: E402
|
||||
from util.display import printKeyValueDict # noqa: E402
|
||||
from util.display import printKeyValueWithCRsNLs # noqa: E402
|
||||
from util.display import printJSONKey # noqa: E402
|
||||
from util.display import printJSONValue # noqa: E402
|
||||
from util.display import printEntity # noqa: E402
|
||||
from util.display import printEntityMessage # noqa: E402
|
||||
from util.display import printEntitiesCount # noqa: E402
|
||||
from util.display import printEntityKVList # noqa: E402
|
||||
from util.display import performAction # noqa: E402
|
||||
from util.display import performActionNumItems # noqa: E402
|
||||
from util.display import performActionModifierNumItems # noqa: E402
|
||||
from util.display import actionPerformedNumItems # noqa: E402
|
||||
from util.display import actionFailedNumItems # noqa: E402
|
||||
from util.display import actionNotPerformedNumItemsWarning # noqa: E402
|
||||
from util.display import entityPerformAction # noqa: E402
|
||||
from util.display import entityPerformActionNumItems # noqa: E402
|
||||
from util.display import entityPerformActionModifierNumItems # noqa: E402
|
||||
from util.display import entityPerformActionNumItemsModifier # noqa: E402
|
||||
from util.display import entityPerformActionSubItemModifierNumItems # noqa: E402
|
||||
from util.display import entityPerformActionSubItemModifierNumItemsModifierNewValue # noqa: E402
|
||||
from util.display import entityPerformActionModifierNumItemsModifier # noqa: E402
|
||||
from util.display import entityPerformActionModifierItemValueList # noqa: E402
|
||||
from util.display import entityPerformActionModifierNewValue # noqa: E402
|
||||
from util.display import entityPerformActionModifierNewValueItemValueList # noqa: E402
|
||||
from util.display import entityPerformActionItemValue # noqa: E402
|
||||
from util.display import entityPerformActionInfo # noqa: E402
|
||||
from util.display import entityActionPerformed # noqa: E402
|
||||
from util.display import entityActionPerformedMessage # noqa: E402
|
||||
from util.display import entityNumItemsActionPerformed # noqa: E402
|
||||
from util.display import entityModifierActionPerformed # noqa: E402
|
||||
from util.display import entityModifierItemValueListActionPerformed # noqa: E402
|
||||
from util.display import entityModifierNewValueActionPerformed # noqa: E402
|
||||
from util.display import entityModifierNewValueItemValueListActionPerformed # noqa: E402
|
||||
from util.display import entityModifierNewValueKeyValueActionPerformed # noqa: E402
|
||||
|
||||
from util.errors import invalidClientSecretsJsonExit # noqa: E402
|
||||
from util.errors import invalidOauth2serviceJsonExit # noqa: E402
|
||||
from util.errors import invalidOauth2TxtExit # noqa: E402
|
||||
from util.errors import expiredRevokedOauth2TxtExit # noqa: E402
|
||||
from util.errors import invalidDiscoveryJsonExit # noqa: E402
|
||||
from util.errors import entityActionFailedExit # noqa: E402
|
||||
from util.errors import entityDoesNotExistExit # noqa: E402
|
||||
from util.errors import entityDoesNotHaveItemExit # noqa: E402
|
||||
from util.errors import entityIsNotUniqueExit # noqa: E402
|
||||
from util.errors import usageErrorExit # noqa: E402
|
||||
from util.errors import csvFieldErrorExit # noqa: E402
|
||||
from util.errors import csvDataAlreadySavedErrorExit # noqa: E402
|
||||
# Imports used by __init__.py's own dispatch tables and functions
|
||||
from util.output import setSysExitRC, systemErrorExit, printErrorMessage # noqa: E402
|
||||
from util.output import writeStderr, formatKeyValueList # noqa: E402
|
||||
from util.errors import unknownArgumentExit # noqa: E402
|
||||
from util.errors import expectedArgumentExit # noqa: E402
|
||||
from util.errors import blankArgumentExit # noqa: E402
|
||||
from util.errors import emptyArgumentExit # noqa: E402
|
||||
from util.errors import invalidArgumentExit # noqa: E402
|
||||
from util.errors import missingArgumentExit # noqa: E402
|
||||
from util.errors import deprecatedArgument # noqa: E402
|
||||
from util.errors import deprecatedArgumentExit # noqa: E402
|
||||
from util.errors import deprecatedCommandExit # noqa: E402
|
||||
from util.errors import formatChoiceList # noqa: E402
|
||||
from util.errors import invalidChoiceExit # noqa: E402
|
||||
from util.errors import missingChoiceExit # noqa: E402
|
||||
|
||||
from util.args import * # noqa: E402,F403 - re-exports ~155 symbols
|
||||
|
||||
from util.connection import getLocalGoogleTimeOffset # noqa: E402
|
||||
from util.connection import _getServerTLSUsed # noqa: E402
|
||||
from util.connection import getOSPlatform # noqa: E402
|
||||
from util.connection import inspect_untrusted_cert # noqa: E402
|
||||
from util.connection import doCheckConnection # noqa: E402
|
||||
from util.connection import doComment # noqa: E402
|
||||
from util.connection import doVersion # noqa: E402
|
||||
from util.connection import doUsage # noqa: E402
|
||||
from util.connection import MACOS_CODENAMES # noqa: E402
|
||||
|
||||
# API transport, service builders, and call wrappers — extracted to gam.util.api
|
||||
from util.api import handleServerError # noqa: E402
|
||||
from util.api import getHttpObj # noqa: E402
|
||||
from util.api import _force_user_agent # noqa: E402
|
||||
from util.api import transportAgentRequest # noqa: E402
|
||||
from util.api import transportAuthorizedHttp # noqa: E402
|
||||
from util.api import transportCreateRequest # noqa: E402
|
||||
from util.api import doGAMCheckForUpdates # noqa: E402
|
||||
from util.api import signjwtJWTCredentials # noqa: E402
|
||||
from util.api import signjwtCredentials # noqa: E402
|
||||
from util.api import get_adc_request # noqa: E402
|
||||
from util.api import signjwtSignJwt # noqa: E402
|
||||
from util.api import handleOAuthTokenError # noqa: E402
|
||||
from util.api import getOauth2TxtCredentials # noqa: E402
|
||||
from util.api import _getValueFromOAuth # noqa: E402
|
||||
from util.api import _getAdminEmail # noqa: E402
|
||||
from util.api import writeClientCredentials # noqa: E402
|
||||
from util.api import shortenURL # noqa: E402
|
||||
from util.api import runSqliteQuery # noqa: E402
|
||||
from util.api import refreshCredentialsWithReauth # noqa: E402
|
||||
from util.api import getClientCredentials # noqa: E402
|
||||
from util.api import waitOnFailure # noqa: E402
|
||||
from util.api import clearServiceCache # noqa: E402
|
||||
from util.api import getAPIService # noqa: E402
|
||||
from util.api import getService # noqa: E402
|
||||
from util.api import defaultSvcAcctScopes # noqa: E402
|
||||
from util.api import _getSvcAcctData # noqa: E402
|
||||
from util.api import getSvcAcctCredentials # noqa: E402
|
||||
from util.api import getGDataOAuthToken # noqa: E402
|
||||
from util.api import checkGDataError # noqa: E402
|
||||
from util.api import callGData # noqa: E402
|
||||
from util.api import callGDataPages # noqa: E402
|
||||
from util.api import checkGAPIError # noqa: E402
|
||||
from util.api import callGAPI # noqa: E402
|
||||
from util.api import _showGAPIpagesResult # noqa: E402
|
||||
from util.api import callGAPIpages # noqa: E402
|
||||
from util.api import yieldGAPIpages # noqa: E402
|
||||
from util.api import callGAPIitems # noqa: E402
|
||||
from util.api import readDiscoveryFile # noqa: E402
|
||||
from util.api import buildGAPIObject # noqa: E402
|
||||
from util.api import buildGAPIServiceObject # noqa: E402
|
||||
from util.api import buildGAPIObjectNoAuthentication # noqa: E402
|
||||
from util.api import initGDataObject # noqa: E402
|
||||
from util.api import getGDataUserCredentials # noqa: E402
|
||||
from util.api import getContactsObject # noqa: E402
|
||||
from util.api import getContactsQuery # noqa: E402
|
||||
from util.api import getEmailAuditObject # noqa: E402
|
||||
from util.api import _processGAPIpagesResult # noqa: E402
|
||||
from util.api import _finalizeGAPIpagesResult # noqa: E402
|
||||
from util.api import _setMaxArgResults # noqa: E402
|
||||
from util.api import writeGotMessage # noqa: E402
|
||||
from util.api import getSaUser # noqa: E402
|
||||
from util.api import chooseSaAPI # noqa: E402
|
||||
|
||||
# Entity resolution — extracted to gam.util.entity
|
||||
from util.entity import getUserEmailFromID # noqa: E402
|
||||
from util.entity import getGroupEmailFromID # noqa: E402
|
||||
from util.entity import getServiceAccountEmailFromID # noqa: E402
|
||||
from util.entity import convertUIDtoEmailAddressWithType # noqa: E402
|
||||
from util.entity import NON_EMAIL_MEMBER_PREFIXES # noqa: E402
|
||||
from util.entity import convertUIDtoEmailAddress # noqa: E402
|
||||
from util.entity import convertEmailAddressToUID # noqa: E402
|
||||
from util.entity import convertUserIDtoEmail # noqa: E402
|
||||
from util.entity import splitEmailAddressOrUID # noqa: E402
|
||||
from util.entity import convertOrgUnitIDtoPath # noqa: E402
|
||||
from util.entity import shlexSplitList # noqa: E402
|
||||
from util.entity import shlexSplitListStatus # noqa: E402
|
||||
from util.entity import getQueries # noqa: E402
|
||||
from util.entity import _validateDeviceQuery # noqa: E402
|
||||
from util.entity import getDeviceQueries # noqa: E402
|
||||
from util.entity import convertEntityToList # noqa: E402
|
||||
from util.entity import GROUP_ROLES_MAP # noqa: E402
|
||||
from util.entity import ALL_GROUP_ROLES # noqa: E402
|
||||
from util.entity import _getRoleVerification # noqa: E402
|
||||
from util.entity import _getCIRoleVerification # noqa: E402
|
||||
from util.entity import _checkMemberStatusIsSuspendedIsArchived # noqa: E402
|
||||
from util.entity import _checkMemberIsSuspendedIsArchived # noqa: E402
|
||||
from util.entity import _checkMemberRole # noqa: E402
|
||||
from util.entity import _checkMemberRoleIsSuspendedIsArchived # noqa: E402
|
||||
from util.entity import _checkMemberCategory # noqa: E402
|
||||
from util.entity import _checkCIMemberCategory # noqa: E402
|
||||
from util.entity import getCIGroupMemberRoleFixType # noqa: E402
|
||||
from util.entity import getCIGroupTransitiveMemberRoleFixType # noqa: E402
|
||||
from util.entity import convertGroupCloudIDToEmail # noqa: E402
|
||||
from util.entity import convertGroupEmailToCloudID # noqa: E402
|
||||
from util.entity import CIGROUP_DISCUSSION_FORUM_LABEL # noqa: E402
|
||||
from util.entity import CIGROUP_DYNAMIC_LABEL # noqa: E402
|
||||
from util.entity import CIGROUP_SECURITY_LABEL # noqa: E402
|
||||
from util.entity import CIGROUP_LOCKED_LABEL # noqa: E402
|
||||
from util.entity import getCIGroupMembershipGraph # noqa: E402
|
||||
from util.entity import checkGroupExists # noqa: E402
|
||||
from util.entity import getItemsToModify # noqa: E402
|
||||
from util.entity import splitEntityList # noqa: E402
|
||||
from util.entity import splitEntityListShlex # noqa: E402
|
||||
from util.entity import fileDataErrorExit # noqa: E402
|
||||
from util.entity import getEntitiesFromFile # noqa: E402
|
||||
from util.entity import getEntitiesFromCSVFile # noqa: E402
|
||||
from util.entity import getEntitiesFromCSVbyField # noqa: E402
|
||||
from util.entity import mapEntityType # noqa: E402
|
||||
from util.entity import getEntityArgument # noqa: E402
|
||||
from util.entity import getEntityToModify # noqa: E402
|
||||
from util.entity import getEntitySelector # noqa: E402
|
||||
from util.entity import getEntitySelection # noqa: E402
|
||||
from util.entity import getEntityList # noqa: E402
|
||||
from util.entity import getNormalizedEmailAddressEntity # noqa: E402
|
||||
from util.entity import getUserObjectEntity # noqa: E402
|
||||
from util.entity import _validateUserGetObjectList # noqa: E402
|
||||
from util.entity import _validateUserGetMessageIds # noqa: E402
|
||||
from util.entity import checkUserExists # noqa: E402
|
||||
from util.entity import checkUserSuspended # noqa: E402
|
||||
|
||||
# CSV Print Framework — extracted to gam.util.csv_pf
|
||||
from util.csv_pf import addFieldToFieldsList # noqa: E402
|
||||
from util.csv_pf import _getFieldsList # noqa: E402
|
||||
from util.csv_pf import _getRawFields # noqa: E402
|
||||
from util.csv_pf import CheckInputRowFilterHeaders # noqa: E402
|
||||
from util.csv_pf import RowFilterMatch # noqa: E402
|
||||
from util.csv_pf import getFieldsList # noqa: E402
|
||||
from util.csv_pf import getFieldsFromFieldsList # noqa: E402
|
||||
from util.csv_pf import getItemFieldsFromFieldsList # noqa: E402
|
||||
from util.csv_pf import CSVPrintFile # noqa: E402
|
||||
from util.csv_pf import writeEntityNoHeaderCSVFile # noqa: E402
|
||||
from util.csv_pf import getTodriveOnly # noqa: E402
|
||||
from util.csv_pf import DEFAULT_SKIP_OBJECTS # noqa: E402
|
||||
from util.csv_pf import cleanJSON # noqa: E402
|
||||
from util.csv_pf import flattenJSON # noqa: E402
|
||||
from util.csv_pf import showJSON # noqa: E402
|
||||
from util.csv_pf import FormatJSONQuoteChar # noqa: E402
|
||||
from util.csv_pf import RI_ENTITY # noqa: E402
|
||||
from util.csv_pf import RI_I # noqa: E402
|
||||
from util.csv_pf import RI_COUNT # noqa: E402
|
||||
from util.csv_pf import RI_J # noqa: E402
|
||||
from util.csv_pf import RI_JCOUNT # noqa: E402
|
||||
from util.csv_pf import RI_ITEM # noqa: E402
|
||||
from util.csv_pf import RI_ROLE # noqa: E402
|
||||
from util.csv_pf import RI_OPTION # noqa: E402
|
||||
from util.csv_pf import batchRequestID # noqa: E402
|
||||
# OrgUnit helpers — extracted to gam.util.orgunits
|
||||
from util.orgunits import getOrgUnitItem # noqa: E402
|
||||
from util.orgunits import getTopLevelOrgId # noqa: E402
|
||||
from util.orgunits import getOrgUnitId # noqa: E402
|
||||
from util.orgunits import getAllParentOrgUnitsForUser # noqa: E402
|
||||
# GDoc/GSheet/Storage/CSV readers — extracted to gam.util.gdoc
|
||||
from util.gdoc import GDOC_FORMAT_MIME_TYPES # noqa: E402
|
||||
from util.gdoc import getGDocData # noqa: E402
|
||||
from util.gdoc import HTML_TITLE_PATTERN # noqa: E402
|
||||
from util.gdoc import getGSheetData # noqa: E402
|
||||
from util.gdoc import BUCKET_OBJECT_PATTERNS # noqa: E402
|
||||
from util.gdoc import getBucketObjectName # noqa: E402
|
||||
from util.gdoc import GCS_FORMAT_MIME_TYPES # noqa: E402
|
||||
from util.gdoc import getStorageFileData # noqa: E402
|
||||
from util.gdoc import openCSVFileReader # noqa: E402
|
||||
# Configuration — extracted to gam.util.config
|
||||
from util.args import getArgument, getChoice, getInteger, getStringReturnInList # noqa: E402
|
||||
from util.args import checkArgumentPresent, normalizeEmailAddressOrUID, NO_DEFAULT # noqa: E402
|
||||
from util.connection import doCheckConnection, doComment, doVersion, doUsage # noqa: E402
|
||||
from util.entity import getEntityArgument, getEntityList, getEntityToModify # noqa: E402
|
||||
from util.config import SetGlobalVariables # noqa: E402
|
||||
# Batch/multiprocess infrastructure — extracted to gam.util.batch
|
||||
from util.batch import NullHandler # noqa: E402
|
||||
from util.batch import initializeLogging # noqa: E402
|
||||
from util.batch import saveNonPickleableValues # noqa: E402
|
||||
from util.batch import restoreNonPickleableValues # noqa: E402
|
||||
from util.batch import CSVFileQueueHandler # noqa: E402
|
||||
from util.batch import initializeCSVFileQueueHandler # noqa: E402
|
||||
from util.batch import terminateCSVFileQueueHandler # noqa: E402
|
||||
from util.batch import StdQueueHandler # noqa: E402
|
||||
from util.batch import initializeStdQueueHandler # noqa: E402
|
||||
from util.batch import batchWriteStderr # noqa: E402
|
||||
from util.batch import writeStdQueueHandler # noqa: E402
|
||||
from util.batch import terminateStdQueueHandler # noqa: E402
|
||||
from util.batch import ProcessGAMCommandMulti # noqa: E402
|
||||
from util.batch import checkChildProcessRC # noqa: E402
|
||||
from util.batch import initGamWorker # noqa: E402
|
||||
from util.batch import MultiprocessGAMCommands # noqa: E402
|
||||
from util.batch import threadBatchWorker # noqa: E402
|
||||
from util.batch import ThreadBatchGAMCommands # noqa: E402
|
||||
from util.batch import _getShowCommands # noqa: E402
|
||||
from util.batch import _getSkipRows # noqa: E402
|
||||
from util.batch import _getMaxRows # noqa: E402
|
||||
from util.batch import doBatch # noqa: E402
|
||||
from util.batch import doThreadBatch # noqa: E402
|
||||
from util.batch import doAutoBatch # noqa: E402
|
||||
from util.batch import getSubFields # noqa: E402
|
||||
from util.batch import processSubFields # noqa: E402
|
||||
from util.batch import doCSV # noqa: E402
|
||||
from util.batch import doCSVTest # noqa: E402
|
||||
from util.batch import doLoop # noqa: E402
|
||||
from util.batch import _doList # noqa: E402
|
||||
from util.batch import doListType # noqa: E402
|
||||
from util.batch import doListCrOS # noqa: E402
|
||||
from util.batch import doListUser # noqa: E402
|
||||
from util.batch import _showCount # noqa: E402
|
||||
from util.batch import showCountCrOS # noqa: E402
|
||||
from util.batch import showCountUser # noqa: E402
|
||||
from util.fileio import closeGAMCommandLog, writeGAMCommandLog # noqa: E402
|
||||
from util.batch import ( # noqa: E402
|
||||
batchWriteStderr, doBatch, doThreadBatch, doAutoBatch,
|
||||
doCSV, doCSVTest, doLoop, doListType, doListCrOS, doListUser,
|
||||
showCountCrOS, showCountUser,
|
||||
)
|
||||
|
||||
# Command module re-exports for routing tables
|
||||
# Command function references (lazy-loaded at first call)
|
||||
# These replace the old `from gam.cmd.X import func` re-exports
|
||||
# gam.cmd.admin
|
||||
|
||||
# Command module imports
|
||||
from gam.cmd.admin import (
|
||||
@@ -1504,46 +1153,7 @@ def doResetYubiKeyPIV():
|
||||
yk.reset_piv()
|
||||
|
||||
|
||||
# Audit command utilities
|
||||
def ACLRuleDict(rule):
|
||||
if rule['scope']['type'] != 'default':
|
||||
return {'Scope': f'{rule["scope"]["type"]}:{rule["scope"]["value"]}', 'Role': rule['role']}
|
||||
return {'Scope': f'{rule["scope"]["type"]}', 'Role': rule['role']}
|
||||
|
||||
def ACLRuleKeyValueList(rule):
|
||||
if rule['scope']['type'] != 'default':
|
||||
return ['Scope', f'{rule["scope"]["type"]}:{rule["scope"]["value"]}', 'Role', rule['role']]
|
||||
return ['Scope', f'{rule["scope"]["type"]}', 'Role', rule['role']]
|
||||
|
||||
def formatACLRule(rule):
|
||||
return formatKeyValueList('(', ACLRuleKeyValueList(rule), ')')
|
||||
|
||||
def formatACLScopeRole(scope, role):
|
||||
if role:
|
||||
return formatKeyValueList('(', ['Scope', scope, 'Role', role], ')')
|
||||
return formatKeyValueList('(', ['Scope', scope], ')')
|
||||
|
||||
def normalizeRuleId(ruleId):
|
||||
ruleIdParts = ruleId.split(':', 1)
|
||||
if (len(ruleIdParts) == 1) or not ruleIdParts[1]:
|
||||
if ruleIdParts[0] == 'default':
|
||||
return ruleId
|
||||
if ruleIdParts[0] == 'domain':
|
||||
return f'domain:{GC.Values[GC.DOMAIN]}'
|
||||
return f'user:{normalizeEmailAddressOrUID(ruleIdParts[0], noUid=True)}'
|
||||
if ruleIdParts[0] in {'user', 'group'}:
|
||||
return f'{ruleIdParts[0]}:{normalizeEmailAddressOrUID(ruleIdParts[1], noUid=True)}'
|
||||
return ruleId
|
||||
|
||||
def makeRoleRuleIdBody(role, ruleId):
|
||||
ruleIdParts = ruleId.split(':', 1)
|
||||
if len(ruleIdParts) == 1:
|
||||
if ruleIdParts[0] == 'default':
|
||||
return {'role': role, 'scope': {'type': ruleIdParts[0]}}
|
||||
if ruleIdParts[0] == 'domain':
|
||||
return {'role': role, 'scope': {'type': ruleIdParts[0], 'value': GC.Values[GC.DOMAIN]}}
|
||||
return {'role': role, 'scope': {'type': 'user', 'value': ruleIdParts[0]}}
|
||||
return {'role': role, 'scope': {'type': ruleIdParts[0], 'value': ruleIdParts[1]}}
|
||||
|
||||
BUILDING_ADDRESS_FIELD_MAP = {
|
||||
'address': 'addressLines',
|
||||
|
||||
Reference in New Issue
Block a user