def main(): setup_logger() args = parse_args() api = create_api(server=args.server, username=args.username, password=args.password) p = { 'fields': 'id,name,description,leftSide[expression],rightSide[expression]', 'paging': False } data = api.get('validationRules', params=p).json() uid_cache = set() for i, rule in enumerate(data['validationRules'], 1): info_msg = "{}/{} Analyzing Validation Rule '{}' ({})" logger.info( info_msg.format(i, len(data['validationRules']), rule['name'], rule['id'])) uids_in_expressions = extract_uids(rule) for uid in uids_in_expressions: if uid not in uid_cache: try: api.get('identifiableObjects/{}'.format(uid)).json() except APIException as exc: if exc.code == 404: logger.warn( "UID in expression not identified: {}".format(uid)) else: logger.error(exc) else: uid_cache.add(uid)
def main(): args, password = parse_args() setup_logger(include_caller=False) api = create_api(server=args.server, username=args.username, password=password) validate_file(args.css) post_file(api, filename=args.css) logger.info( "{} CSS posted to {}. Clear your Browser cache / use Incognito.". format(args.css, api.api_url))
def main(): setup_logger(include_caller=False) args, password = parse_args() api = create_api(server=args.server, username=args.username, password=password) check_validation_rules(api) check_option_sets(api) check_category_options(api) check_categories(api) check_category_combos(api)
def main(): setup_logger(include_caller=False) args = parse_args() if args.logging_to_file: if args.debug: setup_logger(logfile=args.logging_to_file, log_level=DEBUG, include_caller=True) else: setup_logger(logfile=args.logging_to_file, include_caller=False) elif args.debug: setup_logger(log_level=DEBUG, include_caller=True) api = create_api(server=args.server, username=args.username, password=args.password, api_version=args.api_version) validate_args(args, api.version_int) public_access = Permission.from_public_args(args.public_access) collection = ShareableObjectCollection(api, args.object_type, args.filter) usergroups = UserGroupsCollection(api, args.groups) validate_data_access(public_access, collection, usergroups, api.version_int) logger.info(u"Public access ➜ {}".format(public_access)) for i, element in enumerate(collection.elements, 1): update = ShareableObject(obj_type=element.obj_type, uid=element.uid, name=element.name, code=element.code, public_access=public_access, usergroup_accesses=usergroups.accesses) pointer = u"{0}/{1} {2} {3}".format(i, len(collection.elements), collection.name, element.uid) if not skip(args.overwrite, element, update): logger.info(u"{0} {1}".format(pointer, element.log_identifier)) share(api, update) else: logger.warning(u'Not overwriting: {0} {1}'.format( pointer, element.log_identifier))
def main(): setup_logger(include_caller=False) args, password = parse_args() api = create_api(server=args.server, username=args.username, password=password, api_version=args.api_version) file_name = '{}-{}.csv'.format(args.indicator_type, file_timestamp(api.api_url)) if args.indicator_type == 'indicators': fields = ','.join( [x for x in indicator_fields.values() if x != 'type']) elif args.indicator_type == 'programIndicators': fields = ','.join([ x for x in program_indicator_fields.values() if x not in ('type', 'program_name') ]) else: raise SystemExit('Cannot process argument -t {}'.format( args.indicator_type)) indicators = api.get(endpoint=args.indicator_type, params=get_params(args.indicator_filter, fields)).json() message = analyze_result(args.indicator_type, indicators, args.indicator_filter) logger.info(message) logger.info("Analyzing metadata...") object_mapping = object_map(api) write_to_csv(api, args.indicator_type, indicators, object_mapping, file_name)
def main(): setup_logger() args = parse_args() api = create_api(server=args.server, username=args.username, password=args.password) Attribute = namedtuple('Attribute', 'uid name') Attribute.uid = args.attribute_uid Attribute.name = get_attribute_name(api, args.attribute_uid) typ = args.object_type attribute_is_on_model(api, Attribute, typ) data = list(load_csv(args.source_csv)) validate_csv(data) logger.info(u"Updating values for Attribute '{}' ({}) on {} {} ...".format( Attribute.name, Attribute.uid, len(data), typ)) for i in range(3, 0, -1): time.sleep(i) print('Proceeding in {}...'.format(i)) for i, obj in enumerate(data, 1): obj_uid = obj['uid'] attribute_value = obj['attributeValue'] obj_old = api.get('{}/{}'.format(args.object_type, obj_uid), params={ 'fields': ':owner' }).json() obj_updated = create_or_update_attribute_values( obj_old, Attribute.uid, attribute_value) api.put('{}/{}'.format(typ, obj_uid), data=obj_updated) logger.info(u"{}/{} - Updated AttributeValue: {} - {}: {}".format( i, len(data), attribute_value, typ[:-1], obj_uid))
def main(): setup_logger(include_caller=False) args, password = parse_args() if args.logging_to_file: if args.debug: setup_logger(logfile=args.logging_to_file, log_level=DEBUG, include_caller=True) else: setup_logger(logfile=args.logging_to_file, include_caller=False) elif args.debug: setup_logger(log_level=DEBUG, include_caller=True) api = create_api(server=args.server, username=args.username, password=password, api_version=args.api_version) validate_args(args, api.version_int) public_access_permission = Permission.from_public_args(args.public_access) collection = ShareableObjectCollection(api, args.object_type, args.filter) usergroups = UserGroupsCollection(api, args.groups) validate_data_access(public_access_permission, collection, usergroups, api.version_int) # sort by name try: elements = sorted(collection.elements, key=operator.attrgetter('name')) except AttributeError: elements = collection.elements # handle log messages and collection-wide public access and usergroup access if applicable if args.extend: if not args.public_access: logger.warning(u"Public access {} INHERIT".format(ARROW)) else: logger.info(u"Public access {} {}".format( ARROW, public_access_permission)) public_access = Permission.from_public_args(args.public_access) logger.warning(u"Extending with additional User Groups...") else: logger.info(u"Public access {} {}".format(ARROW, public_access_permission)) public_access = Permission.from_public_args(args.public_access) usergroup_accesses = usergroups.accesses time.sleep(2) for i, element in enumerate(elements, 1): if args.extend: # merge user group accesses usergroup_accesses = merge(server_uga=element.usergroup_accesses, local_uga=usergroups.accesses) # if public access is not provided via argument, re-use public access from object on server if not args.public_access: public_access = element.public_access # no issue for public_access and usergroup_accesses since it's set above with same if/else check # to improve performance and allow for logical logging message placement # noinspection PyUnboundLocalVariable update = ShareableObject(obj_type=element.obj_type, uid=element.uid, name=element.name, code=element.code, public_access=public_access, usergroup_accesses=usergroup_accesses) pointer = u"{0}/{1} {2} {3}".format(i, len(collection.elements), collection.name, element.uid) if not skip(args.overwrite, element, update): logger.info(u"{0} {1}".format(pointer, element.log_identifier)) share(api, update) else: logger.warning(u'Skipping (already shared): {0} {1}'.format( pointer, element.log_identifier))