Пример #1
0
def push_notification(sender, document, **kwargs):
    from kairon import Utility
    from kairon.shared.data.data_objects import ModelTraining, ModelDeployment, TrainingDataGenerator
    from kairon.shared.importer.data_objects import ValidationLogs
    from kairon.shared.test.data_objects import ModelTestingLogs

    is_enabled = Utility.environment['notifications']['enable']
    message_type_events = [ModelTraining, ModelTestingLogs, ModelDeployment, TrainingDataGenerator, ValidationLogs]
    message_type_events = {event.__name__ for event in message_type_events}
    if is_enabled:
        try:
            metadata = document.to_mongo().to_dict()

            for key in metadata:
                if isinstance(metadata[key], ObjectId):
                    metadata[key] = metadata[key].__str__()
                elif isinstance(metadata[key], datetime.datetime):
                    metadata[key] = metadata[key].__str__()

            if sender.__name__ in message_type_events:
                event_type = 'message'
            elif kwargs.get('created'):
                event_type = 'create'
            else:
                event_type = 'update'
                if metadata.get('status') is False:
                    event_type = 'delete'
            Utility.push_notification(document.bot, event_type, sender.__name__, metadata)
        except Exception as e:
            logger.exception(e)
Пример #2
0
def push_bulk_update_notification(sender, documents, **kwargs):
    from kairon import Utility

    is_enabled = Utility.environment['notifications']['enable']
    if is_enabled:
        try:
            if isinstance(documents, QuerySet):
                documents = list(documents)
            if documents:
                channel = kwargs['bot']
                event_type = kwargs['event_type']
                metadata = []
                for doc in documents:
                    doc = doc.to_mongo().to_dict()
                    metadata.append({'_id': doc['_id'].__str__()})
                Utility.push_notification(channel, event_type, sender.__name__, metadata)
        except Exception as e:
            logger.exception(e)