MCPcopy
hub / github.com/1Panel-dev/MaxKB / insert

Method insert

apps/trigger/serializers/trigger.py:351–399  ·  view source on GitHub ↗
(self, instance, with_valid=True)

Source from the content-addressed store, hash-verified

349
350 @transaction.atomic
351 def insert(self, instance, with_valid=True):
352 from trigger.handler.simple_tools import deploy
353
354 if with_valid:
355 self.is_valid(raise_exception=True)
356 serializer = TriggerCreateRequest(data=instance)
357 serializer.is_valid(raise_exception=True)
358 valid_data = serializer.validated_data
359
360 trigger_id = valid_data.get('id') if valid_data.get('id') else uuid.uuid7()
361
362 trigger_model = Trigger(
363 id=trigger_id,
364 name=valid_data.get('name'),
365 workspace_id=self.data.get('workspace_id'),
366 desc=valid_data.get('desc') or '',
367 trigger_type=valid_data.get('trigger_type'),
368 trigger_setting=valid_data.get('trigger_setting'),
369 meta=valid_data.get('meta', {}),
370 is_active=valid_data.get('is_active') or False,
371 user_id=self.data.get('user_id'),
372 )
373 trigger_model.save()
374
375 trigger_tasks = valid_data.get('trigger_task')
376 if trigger_tasks:
377
378 is_active_map = self.batch_get_source_active_status(trigger_tasks)
379
380 trigger_task_models = [
381 TriggerTask(
382 id=uuid.uuid7(),
383 trigger_id=trigger_id,
384 source_type=task_data.get('source_type'),
385 source_id=task_data.get('source_id'),
386 is_active=is_active_map.get((task_data.get('source_type'), task_data.get('source_id'))) or False,
387 parameter=task_data.get('parameter', {}),
388 meta=task_data.get('meta', {})
389 )
390 for task_data in trigger_tasks
391 ]
392
393 TriggerTask.objects.bulk_create(trigger_task_models)
394 else:
395 raise AppApiException(500, _('Trigger task can not be empty'))
396
397 if trigger_model.is_active:
398 deploy(TriggerModelSerializer(trigger_model).data, **{})
399 return TriggerResponse(trigger_model).data
400
401 @staticmethod
402 def batch_get_source_active_status(trigger_tasks: list) -> Dict[tuple, bool]:

Callers 2

postMethod · 0.45
postMethod · 0.45

Calls 11

TriggerClass · 0.90
TriggerTaskClass · 0.90
AppApiExceptionClass · 0.90
deployFunction · 0.90
TriggerResponseClass · 0.85
is_validMethod · 0.45
getMethod · 0.45
saveMethod · 0.45

Tested by

no test coverage detected