Пример #1
0
async def save_pipeline(
    pipeline: Pipeline,
    principal_service: PrincipalService = Depends(get_admin_principal)
) -> Pipeline:
    validate_tenant_id(pipeline, principal_service)
    pipeline_service = get_pipeline_service(principal_service)
    action = ask_save_pipeline_action(pipeline_service, principal_service)
    return trans(pipeline_service, lambda: action(pipeline))
async def save_topic(
    topic: Topic,
    principal_service: PrincipalService = Depends(get_admin_principal)
) -> Topic:
    validate_tenant_id(topic, principal_service)
    topic_service = get_topic_service(principal_service)
    action = ask_save_topic_action(topic_service, principal_service, True)
    return trans_with_tail(topic_service, lambda: action(topic))
async def save_user_group(
    user_group: UserGroup,
    principal_service: PrincipalService = Depends(get_admin_principal)
) -> UserGroup:
    validate_tenant_id(user_group, principal_service)
    user_group_service = get_user_group_service(principal_service)
    action = ask_save_user_group_action(user_group_service, principal_service)
    return trans(user_group_service, lambda: action(user_group))
Пример #4
0
async def save_user(
    user: User,
    principal_service: PrincipalService = Depends(get_any_admin_principal)
) -> User:
    validate_tenant_id(user, principal_service)
    user_service = get_user_service(principal_service)
    action = ask_save_user_action(user_service, principal_service)
    return trans(user_service, lambda: action(user))
async def save_catalog(
    catalog: Catalog,
    principal_service: PrincipalService = Depends(get_admin_principal)
) -> Catalog:
    validate_tenant_id(catalog, principal_service)
    catalog_service = get_catalog_service(principal_service)
    action = ask_save_catalog_action(catalog_service, principal_service)
    return trans(catalog_service, lambda: action(catalog))
Пример #6
0
async def save_scheduler(
    scheduler: TopicSnapshotScheduler,
    principal_service: PrincipalService = Depends(get_admin_principal)
) -> TopicSnapshotScheduler:
    validate_tenant_id(scheduler, principal_service)
    scheduler_service = get_topic_snapshot_scheduler_service(principal_service)
    action = ask_save_scheduler_action(scheduler_service, principal_service)
    return trans_with_tail(scheduler_service, lambda: action(scheduler))
async def save_monitor_rules(
		rules: List[MonitorRule], principal_service: PrincipalService = Depends(get_admin_principal)
) -> List[MonitorRule]:
	monitor_rule_service = get_monitor_rule_service(principal_service)

	ArrayHelper(rules).each(lambda x: validate_tenant_id(x, principal_service))

	def for_one(rule: MonitorRule) -> MonitorRule:
		if monitor_rule_service.is_storable_id_faked(rule.ruleId):
			monitor_rule_service.redress_storable_id(rule)
			monitor_rule = monitor_rule_service.create(rule)
		else:
			existing_rule: Optional[MonitorRule] = monitor_rule_service.find_by_id(rule.ruleId)
			if existing_rule is None:
				raise_404()
			if existing_rule.tenantId != principal_service.get_tenant_id():
				raise_404()
			monitor_rule = monitor_rule_service.update(rule)
		# noinspection PyTypeChecker
		return monitor_rule

	def action() -> List[MonitorRule]:
		save_rules = ArrayHelper(rules).map(for_one).to_list()
		monitor_rule_service.delete_others_by_ids(
			ArrayHelper(save_rules).map(lambda x: x.ruleId).to_list(), principal_service.get_tenant_id())
		return save_rules

	return trans(monitor_rule_service, action)
async def save_bucket(bucket: Bucket, principal_service: PrincipalService = Depends(get_admin_principal)) -> Bucket:
	validate_tenant_id(bucket, principal_service)
	bucket_service = get_bucket_service(principal_service)

	# noinspection DuplicatedCode
	def action(a_bucket: Bucket) -> Bucket:
		if bucket_service.is_storable_id_faked(a_bucket.bucketId):
			bucket_service.redress_storable_id(a_bucket)
			# noinspection PyTypeChecker
			a_bucket: Bucket = bucket_service.create(a_bucket)
		else:
			# noinspection PyTypeChecker
			existing_bucket: Optional[Bucket] = bucket_service.find_by_id(a_bucket.bucketId)
			if existing_bucket is not None:
				if existing_bucket.tenantId != a_bucket.tenantId:
					raise_403()

			# noinspection PyTypeChecker
			a_bucket: Bucket = bucket_service.update(a_bucket)

		return a_bucket

	return trans(bucket_service, lambda: action(bucket))
async def save_enum(
    an_enum: Enum,
    principal_service: PrincipalService = Depends(get_admin_principal)
) -> Enum:
    validate_tenant_id(an_enum, principal_service)

    enum_service = get_enum_service(principal_service)

    def action(enumeration: Enum) -> Enum:
        if enum_service.is_storable_id_faked(enumeration.enumId):
            enum_service.redress_storable_id(enumeration)
            if enumeration.items is None:
                enumeration.items = []
            # noinspection PyTypeChecker
            enumeration: Enum = enum_service.create(enumeration)
            enum_item_service = get_enum_item_service(enum_service)
            ArrayHelper(enumeration.items).each(
                lambda x: create_enum_item(enum_item_service, x, enumeration))
        else:
            # noinspection PyTypeChecker
            existing_enum: Optional[Enum] = enum_service.find_by_id(
                enumeration.enumId)
            if existing_enum is not None:
                if existing_enum.tenantId != enumeration.tenantId:
                    raise_403()

            if enumeration.items is None:
                enumeration.items = []
            # noinspection PyTypeChecker
            enumeration: Enum = enum_service.update(enumeration)
            enum_item_service = get_enum_item_service(enum_service)
            enum_item_service.delete_by_enum_id(enumeration.enumId)
            ArrayHelper(enumeration.items).each(
                lambda x: create_enum_item(enum_item_service, x, enumeration))
        return enumeration

    return trans(enum_service, lambda: action(an_enum))
Пример #10
0
async def save_indicator(
		indicator: Indicator, principal_service: PrincipalService = Depends(get_admin_principal)) -> Indicator:
	validate_tenant_id(indicator, principal_service)
	indicator_service = get_indicator_service(principal_service)

	# noinspection DuplicatedCode
	def action(an_indicator: Indicator) -> Indicator:
		if indicator_service.is_storable_id_faked(an_indicator.indicatorId):
			indicator_service.redress_storable_id(an_indicator)
			user_group_ids = ArrayHelper(an_indicator.groupIds).distinct().to_list()
			an_indicator.groupIds = user_group_ids
			# noinspection PyTypeChecker
			an_indicator: Indicator = indicator_service.create(an_indicator)
			# synchronize space to user groups
			sync_indicator_to_groups(indicator_service, an_indicator.indicatorId, user_group_ids, indicator.tenantId)
		else:
			# noinspection PyTypeChecker
			existing_indicator: Optional[Indicator] = indicator_service.find_by_id(an_indicator.indicatorId)
			if existing_indicator is not None:
				if existing_indicator.tenantId != an_indicator.tenantId:
					raise_403()

			user_group_ids = ArrayHelper(an_indicator.groupIds).distinct().to_list()
			an_indicator.groupIds = user_group_ids
			# noinspection PyTypeChecker
			an_indicator: Indicator = indicator_service.update(an_indicator)
			# remove indicator from user groups, in case user groups are removed
			removed_user_group_ids = ArrayHelper(existing_indicator.groupIds).difference(user_group_ids).to_list()
			remove_indicator_from_groups(
				indicator_service, indicator.indicatorId, removed_user_group_ids, indicator.tenantId)
			# synchronize indicator to user groups
			sync_indicator_to_groups(indicator_service, indicator.indicatorId, user_group_ids, indicator.tenantId)

		return an_indicator

	return trans(indicator_service, lambda: action(indicator))
Пример #11
0
async def save_space(
		space: Space, principal_service: PrincipalService = Depends(get_admin_principal)) -> Space:
	validate_tenant_id(space, principal_service)
	space_service = get_space_service(principal_service)
	action = ask_save_space_action(space_service, principal_service)
	return trans(space_service, lambda: action(space))