Skip to content

Commit 44238fd

Browse files
committed
Fix #172; integrate review of #159.
* added a counter to the excluded_stray case in rules.py * while I was there, cleaned up all PEP 8 style warnings (mostly redundant parentheses and better comparisons with None). * make the umapi api_key setting a credential (a 1-line change, thanks to the refactoring done in my last commit! :)
1 parent 0552f06 commit 44238fd

File tree

2 files changed

+38
-40
lines changed

2 files changed

+38
-40
lines changed

user_sync/connector/umapi.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@ def __init__(self, name, caller_options):
6161
enterprise_config = caller_config.get_dict_config('enterprise')
6262
enterprise_builder = user_sync.config.OptionsBuilder(enterprise_config)
6363
enterprise_builder.require_string_value('org_id')
64-
enterprise_builder.require_string_value('api_key')
6564
enterprise_builder.require_string_value('tech_acct')
6665
options['enterprise'] = enterprise_options = enterprise_builder.get_options()
6766
self.options = options
@@ -75,8 +74,8 @@ def __init__(self, name, caller_options):
7574
auth_dict = {
7675
'org_id': org_id,
7776
'tech_acct_id': enterprise_options['tech_acct'],
78-
'api_key': enterprise_options['api_key'],
79-
'client_secret': enterprise_config.get_credential('client_secret', org_id)
77+
'api_key': enterprise_config.get_credential('api_key', org_id),
78+
'client_secret': enterprise_config.get_credential('client_secret', org_id),
8079
}
8180
# get the private key
8281
key_path = enterprise_config.get_string('priv_key_path', True)

user_sync/rules.py

Lines changed: 36 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -123,10 +123,10 @@ def __init__(self, caller_options):
123123
'hook_storage': None, # for exclusive use by hook code; persists across calls
124124
}
125125

126-
if (logger.isEnabledFor(logging.DEBUG)):
126+
if logger.isEnabledFor(logging.DEBUG):
127127
options_to_report = options.copy()
128128
username_filter_regex = options_to_report['username_filter_regex']
129-
if (username_filter_regex != None):
129+
if username_filter_regex is not None:
130130
options_to_report['username_filter_regex'] = "%s: %s" % (type(username_filter_regex), username_filter_regex.pattern)
131131
logger.debug('Initialized with options: %s', options_to_report)
132132

@@ -140,7 +140,7 @@ def run(self, directory_groups, directory_connector, umapi_connectors):
140140

141141
self.prepare_umapi_infos()
142142

143-
if (directory_connector != None):
143+
if directory_connector is not None:
144144
load_directory_stats = user_sync.helper.JobStats("Load from Directory", divider = "-")
145145
load_directory_stats.log_start(logger)
146146
self.read_desired_user_groups(directory_groups, directory_connector)
@@ -250,7 +250,7 @@ def will_manage_groups(self):
250250

251251
def get_umapi_info(self, umapi_name):
252252
umapi_info = self.umapi_info_by_name.get(umapi_name)
253-
if (umapi_info == None):
253+
if umapi_info is None:
254254
self.umapi_info_by_name[umapi_name] = umapi_info = UmapiTargetInfo(umapi_name)
255255
return umapi_info
256256

@@ -271,15 +271,15 @@ def read_desired_user_groups(self, mappings, directory_connector):
271271

272272
options = self.options
273273
directory_group_filter = options['directory_group_filter']
274-
if (directory_group_filter != None):
274+
if directory_group_filter is not None:
275275
directory_group_filter = set(directory_group_filter)
276276
extended_attributes = options.get('extended_attributes')
277277

278278
directory_user_by_user_key = self.directory_user_by_user_key
279279
filtered_directory_user_by_user_key = self.filtered_directory_user_by_user_key
280280

281281
directory_groups = set(mappings.iterkeys())
282-
if (directory_group_filter != None):
282+
if directory_group_filter is not None:
283283
directory_groups.update(directory_group_filter)
284284
directory_users = directory_connector.load_users_and_groups(directory_groups, extended_attributes)
285285

@@ -329,14 +329,14 @@ def read_desired_user_groups(self, mappings, directory_connector):
329329

330330
for target_group_qualified_name in self.after_mapping_hook_scope['target_groups']:
331331
target_group = AdobeGroup.lookup(target_group_qualified_name)
332-
if (target_group is not None):
332+
if target_group is not None:
333333
umapi_info = self.get_umapi_info(target_group.get_umapi_name())
334334
umapi_info.add_desired_group_for(user_key, target_group.get_group_name())
335335
else:
336336
self.logger.error('Target adobe group %s is not known; ignored', target_group_qualified_name)
337337

338338
self.logger.debug('Total directory users after filtering: %d', len(filtered_directory_user_by_user_key))
339-
if (self.logger.isEnabledFor(logging.DEBUG)):
339+
if self.logger.isEnabledFor(logging.DEBUG):
340340
self.logger.debug('Group work list: %s', dict([(umapi_name, umapi_info.get_desired_groups_by_user_key())
341341
for umapi_name, umapi_info
342342
in self.umapi_info_by_name.iteritems()]))
@@ -350,7 +350,7 @@ def is_directory_user_in_groups(self, directory_user, groups):
350350
if groups == None:
351351
return True
352352
for directory_user_group in directory_user['groups']:
353-
if (directory_user_group in groups):
353+
if directory_user_group in groups:
354354
return True
355355
return False
356356

@@ -388,7 +388,7 @@ def process_umapi_users(self, umapi_connectors):
388388
# Now manage the adobe groups in the secondaries
389389
for umapi_name, umapi_connector in umapi_connectors.get_secondary_connectors().iteritems():
390390
secondary_umapi_info = self.get_umapi_info(umapi_name)
391-
if (len(secondary_umapi_info.get_mapped_groups()) == 0):
391+
if len(secondary_umapi_info.get_mapped_groups()) == 0:
392392
continue
393393
self.logger.debug('Syncing users to secondary umapi %s...', umapi_name)
394394
secondary_updates_by_user_key = self.update_umapi_users_for_connector(secondary_umapi_info, umapi_connector)
@@ -401,10 +401,10 @@ def is_selected_user_key(self, user_key):
401401
:type user_key: str
402402
'''
403403
username_filter_regex = self.options['username_filter_regex']
404-
if (username_filter_regex != None):
404+
if username_filter_regex is not None:
405405
username = self.get_username_from_user_key(user_key)
406406
search_result = username_filter_regex.search(username)
407-
if (search_result == None):
407+
if search_result is None:
408408
return False
409409
return True
410410

@@ -541,25 +541,24 @@ def get_user_attributes(self, directory_user):
541541

542542
def get_identity_type_from_directory_user(self, directory_user):
543543
identity_type = directory_user.get('identity_type')
544-
if (identity_type == None):
544+
if identity_type is None:
545545
identity_type = self.options['new_account_type']
546546
self.logger.warning('Found user with no identity type, using %s: %s', identity_type, directory_user)
547547
return identity_type
548548

549549
def get_identity_type_from_umapi_user(self, umapi_user):
550550
identity_type = umapi_user.get('type')
551-
if (identity_type == None):
551+
if identity_type is None:
552552
identity_type = self.options['new_account_type']
553553
self.logger.error('Found adobe user with no identity type, using %s: %s', identity_type, umapi_user)
554554
return identity_type
555555

556556
def create_commands_from_directory_user(self, directory_user, identity_type = None):
557557
'''
558-
:type user_key: str
559-
:type identity_type: str
560558
:type directory_user: dict
559+
:type identity_type: str
561560
'''
562-
if (identity_type == None):
561+
if identity_type is None:
563562
identity_type = self.get_identity_type_from_directory_user(directory_user)
564563
commands = user_sync.connector.umapi.Commands(identity_type, directory_user['email'],
565564
directory_user['username'], directory_user['domain'])
@@ -595,17 +594,17 @@ def add_umapi_user(self, user_key, groups_to_add, umapi_connectors):
595594
" and no default has been specified.", user_key)
596595
return
597596
attributes['country'] = country
598-
if (attributes.get('firstname') == None):
597+
if attributes.get('firstname') is None:
599598
attributes.pop('firstname', None)
600-
if (attributes.get('lastname') == None):
599+
if attributes.get('lastname') is None:
601600
attributes.pop('lastname', None)
602601
attributes['option'] = "updateIfAlreadyExists" if update_user_info else 'ignoreIfAlreadyExists'
603602

604603
# add the user to primary with groups
605604
self.logger.info('Adding directory user with user key: %s', user_key)
606605
self.action_summary['adobe_users_created'] += 1
607606
primary_commands.add_user(attributes)
608-
if (manage_groups):
607+
if manage_groups:
609608
primary_commands.add_groups(groups_to_add)
610609
umapi_connectors.get_primary_connector().send_commands(primary_commands)
611610
# add the user to secondaries without groups
@@ -726,6 +725,7 @@ def update_umapi_users_for_connector(self, umapi_info, umapi_connector):
726725
# for removal from any mapped groups.
727726
if exclude_strays:
728727
self.logger.debug("Excluding Adobe-only user: %s", user_key)
728+
self.excluded_user_count += 1
729729
elif will_process_strays:
730730
self.logger.debug("Found Adobe-only user: %s", user_key)
731731
self.add_stray(umapi_info.get_name(), user_key,
@@ -781,7 +781,7 @@ def normalize_groups(group_names):
781781
:rtype set(str)
782782
'''
783783
result = set()
784-
if (group_names != None):
784+
if group_names is not None:
785785
for group_name in group_names:
786786
normalized_group_name = user_sync.helper.normalize_string(group_name)
787787
result.add(normalized_group_name)
@@ -809,9 +809,9 @@ def calculate_groups_to_remove(self, umapi_info, user_key, desired_groups):
809809
:type desired_groups: set(str)
810810
'''
811811
groups_to_remove = self.get_new_groups(umapi_info.groups_removed_by_user_key, user_key, desired_groups)
812-
if (desired_groups != None and self.logger.isEnabledFor(logging.DEBUG)):
812+
if desired_groups is not None and self.logger.isEnabledFor(logging.DEBUG):
813813
groups_already_removed = desired_groups - groups_to_remove
814-
if (len(groups_already_removed) > 0):
814+
if len(groups_already_removed) > 0:
815815
self.logger.debug('Skipped removed groups for user: %s groups: %s', user_key, groups_already_removed)
816816
return groups_to_remove
817817

@@ -823,14 +823,14 @@ def get_new_groups(self, current_groups_by_user_key, user_key, desired_groups):
823823
:type desired_groups: set(str)
824824
'''
825825
new_groups = None
826-
if (desired_groups != None):
826+
if desired_groups is not None:
827827
current_groups = current_groups_by_user_key.get(user_key)
828-
if (current_groups != None):
828+
if current_groups is not None:
829829
new_groups = desired_groups - current_groups
830830
else:
831831
new_groups = desired_groups
832-
if (len(new_groups) > 0):
833-
if (current_groups == None):
832+
if len(new_groups) > 0:
833+
if current_groups is None:
834834
current_groups_by_user_key[user_key] = current_groups = set()
835835
current_groups |= new_groups
836836
return new_groups
@@ -841,7 +841,7 @@ def get_user_attribute_difference(self, directory_user, umapi_user):
841841
attributes = self.get_user_attributes(directory_user)
842842
for key, value in attributes.iteritems():
843843
umapi_value = umapi_user.get(key)
844-
if (value != umapi_value):
844+
if value != umapi_value:
845845
differences[key] = value
846846
return differences
847847

@@ -882,7 +882,7 @@ def get_user_key(self, id_type, username, domain, email=None):
882882
return None
883883
if not username:
884884
return None
885-
if (username.find('@') >= 0):
885+
if username.find('@') >= 0:
886886
domain = ""
887887
elif not domain:
888888
return None
@@ -903,7 +903,6 @@ def read_stray_key_map(self, file_path, delimiter = None):
903903
Load the users to be removed from a CSV file. Returns the stray key map.
904904
:type file_path: str
905905
:type delimiter: str
906-
:type logger: logging.Logger
907906
'''
908907
self.logger.info('Reading Adobe-only users from: %s', file_path)
909908
id_type_column_name = 'type'
@@ -975,16 +974,16 @@ def write_stray_key_map(self):
975974
logger.info('Wrote %d Adobe-only user%s.', user_count, user_plural)
976975

977976
def log_after_mapping_hook_scope(self, before_call=None, after_call=None):
978-
if ((before_call is None and after_call is None) or (before_call is not None and after_call is not None)):
977+
if (before_call is None and after_call is None) or (before_call is not None and after_call is not None):
979978
raise ValueError("Exactly one of 'before_call', 'after_call' must be passed (and not None)")
980979
when = 'before' if before_call is not None else 'after'
981-
if (before_call is not None):
980+
if before_call is not None:
982981
self.logger.debug('.')
983982
self.logger.debug('Source attrs, %s: %s', when, self.after_mapping_hook_scope['source_attributes'])
984983
self.logger.debug('Source groups, %s: %s', when, self.after_mapping_hook_scope['source_groups'])
985984
self.logger.debug('Target attrs, %s: %s', when, self.after_mapping_hook_scope['target_attributes'])
986985
self.logger.debug('Target groups, %s: %s', when, self.after_mapping_hook_scope['target_groups'])
987-
if (after_call is not None):
986+
if after_call is not None:
988987
self.logger.debug('Hook storage, %s: %s', when, self.after_mapping_hook_scope['hook_storage'])
989988

990989

@@ -1046,7 +1045,7 @@ def __str__(self):
10461045

10471046
def get_qualified_name(self):
10481047
prefix = ""
1049-
if (self.umapi_name is not None and self.umapi_name != PRIMARY_UMAPI_NAME):
1048+
if self.umapi_name is not None and self.umapi_name != PRIMARY_UMAPI_NAME:
10501049
prefix = self.umapi_name + GROUP_NAME_DELIMITER
10511050
return prefix + self.group_name
10521051

@@ -1065,7 +1064,7 @@ def _parse(qualified_name):
10651064
parts = qualified_name.split(GROUP_NAME_DELIMITER)
10661065
group_name = parts.pop()
10671066
umapi_name = GROUP_NAME_DELIMITER.join(parts)
1068-
if (len(umapi_name) == 0):
1067+
if len(umapi_name) == 0:
10691068
umapi_name = PRIMARY_UMAPI_NAME
10701069
return group_name, umapi_name
10711070

@@ -1132,9 +1131,9 @@ def add_desired_group_for(self, user_key, group):
11321131
:type group: str
11331132
'''
11341133
desired_groups = self.get_desired_groups(user_key)
1135-
if (desired_groups == None):
1134+
if desired_groups is None:
11361135
self.desired_groups_by_user_key[user_key] = desired_groups = set()
1137-
if (group != None):
1136+
if group is not None:
11381137
normalized_group_name = user_sync.helper.normalize_string(group)
11391138
desired_groups.add(normalized_group_name)
11401139

0 commit comments

Comments
 (0)