mirror of
https://github.com/sartography/cr-connect-workflow.git
synced 2025-02-22 12:48:25 +00:00
Merge pull request #492 from sartography/columns-missing-from-logs-678
Columns missing from logs #678
This commit is contained in:
commit
562ad1ac27
@ -1,7 +1,5 @@
|
||||
import time
|
||||
import uuid
|
||||
|
||||
from SpiffWorkflow.util.metrics import firsttime, timeit, sincetime
|
||||
from flask import g
|
||||
|
||||
from crc import session
|
||||
@ -9,13 +7,10 @@ from crc.api.common import ApiError, ApiErrorSchema
|
||||
from crc.models.api_models import WorkflowApiSchema
|
||||
from crc.models.study import StudyModel, WorkflowMetadata, StudyStatus
|
||||
from crc.models.task_event import TaskEventModel, TaskEvent, TaskEventSchema
|
||||
from crc.models.task_log import TaskLogModelSchema, TaskLogQuery, TaskLogQuerySchema
|
||||
from crc.models.workflow import WorkflowModel, WorkflowSpecInfoSchema, WorkflowSpecCategorySchema
|
||||
from crc.services.error_service import ValidationErrorService
|
||||
from crc.services.lookup_service import LookupService
|
||||
from crc.services.spec_file_service import SpecFileService
|
||||
from crc.services.study_service import StudyService
|
||||
from crc.services.task_logging_service import TaskLoggingService
|
||||
from crc.services.user_service import UserService
|
||||
from crc.services.workflow_processor import WorkflowProcessor
|
||||
from crc.services.workflow_service import WorkflowService
|
||||
|
@ -43,6 +43,4 @@ class GetLogsByWorkflow(Script):
|
||||
def do_task(self, task, study_id, workflow_id, *args, **kwargs):
|
||||
level, code, size = self.get_parameters(args, kwargs)
|
||||
log_models = TaskLoggingService().get_logs_for_workflow(workflow_id=workflow_id, level=level, code=code, size=size)
|
||||
# query = TaskLogQuery(code=code, per_page=size)
|
||||
# log_models = TaskLoggingService.get_logs_for_workflow(workflow_id, query).items
|
||||
return TaskLogModelSchema(many=True).dump(log_models)
|
||||
|
@ -1,7 +1,5 @@
|
||||
from SpiffWorkflow.exceptions import WorkflowTaskExecException
|
||||
|
||||
from crc import session
|
||||
from crc.api.common import ApiError
|
||||
from crc.models.task_log import TaskLogModel, TaskLogModelSchema, TaskLogLevels
|
||||
from crc.scripts.script import Script
|
||||
from crc.services.task_logging_service import TaskLoggingService
|
||||
@ -45,8 +43,6 @@ class TaskLog(Script):
|
||||
raise WorkflowTaskExecException(task, 'You must include a level, code, and message'
|
||||
' when calling the log() script')
|
||||
|
||||
|
||||
|
||||
def do_task_validate_only(self, task, study_id, workflow_id, *args, **kwargs):
|
||||
level, code, message = self.get_arguments(task, *args, **kwargs)
|
||||
log_model = TaskLogModel(level=level,
|
||||
@ -61,4 +57,3 @@ class TaskLog(Script):
|
||||
level, code, message = self.get_arguments(task, *args, **kwargs)
|
||||
log_model = TaskLoggingService.add_log(task, level, code, message, study_id, workflow_id)
|
||||
return TaskLogModelSchema().dump(log_model)
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
from crc import app, session
|
||||
from crc.api.common import ApiError
|
||||
from crc.models.task_log import TaskLogModel, TaskLogLevels, TaskLogQuery, TaskLogModelSchema
|
||||
from crc.models.workflow import WorkflowModel
|
||||
from crc.services.user_service import UserService
|
||||
|
||||
from sqlalchemy import desc
|
||||
@ -24,15 +25,22 @@ class TaskLoggingService(object):
|
||||
user_uid = UserService.current_user().uid
|
||||
except ApiError as e:
|
||||
user_uid = "unknown"
|
||||
log_message = f"Workflow {workflow_id}, study {study_id}, task {task.get_name()}, user {user_uid}: {message}"
|
||||
if workflow_id:
|
||||
workflow_spec_id = session.query(WorkflowModel.workflow_spec_id).\
|
||||
filter(WorkflowModel.id == workflow_id).\
|
||||
scalar()
|
||||
else:
|
||||
workflow_spec_id = None
|
||||
log_message = f"Workflow Spec {workflow_spec_id}, study {study_id}, task {task.get_name()}, user {user_uid}: {message}"
|
||||
app.logger.log(TaskLogLevels[level].value, log_message)
|
||||
log_model = TaskLogModel(level=level,
|
||||
code=code,
|
||||
user_uid=user_uid,
|
||||
message=message,
|
||||
study_id=study_id,
|
||||
workflow_id=workflow_id,
|
||||
task=task.get_name())
|
||||
task=task.get_name(),
|
||||
user_uid=user_uid,
|
||||
workflow_spec_id=workflow_spec_id)
|
||||
session.add(log_model)
|
||||
session.commit()
|
||||
return log_model
|
||||
|
@ -42,6 +42,7 @@ class TestTaskLogging(BaseTest):
|
||||
self.assertEqual('test_code', log_model.code)
|
||||
self.assertEqual('info', log_model.level)
|
||||
self.assertEqual('Activity_LogEvent', log_model.task)
|
||||
self.assertEqual('logging_task', log_model.workflow_spec_id)
|
||||
|
||||
def test_add_metrics_log(self):
|
||||
log_data = {'level': 'metrics',
|
||||
@ -51,6 +52,7 @@ class TestTaskLogging(BaseTest):
|
||||
log_model = session.query(TaskLogModel).filter(TaskLogModel.id == log_id).first()
|
||||
|
||||
self.assertEqual('metrics', log_model.level)
|
||||
self.assertEqual('logging_task', log_model.workflow_spec_id)
|
||||
|
||||
def test_get_logging_validation(self):
|
||||
self.load_test_spec('empty_workflow', master_spec=True)
|
||||
@ -71,6 +73,10 @@ class TestTaskLogging(BaseTest):
|
||||
self.assertIn(task.data['logging_models_debug_post'][0], task.data['logging_models_all_post'])
|
||||
self.assertEqual('test_code', task.data['logging_models_info_post'][0]['code'])
|
||||
self.assertEqual('debug_test_code', task.data['logging_models_debug_post'][0]['code'])
|
||||
self.assertEqual('Test Workflows', task.data['logging_models_info_post'][0]['category'])
|
||||
self.assertEqual('Test Workflows', task.data['logging_models_debug_post'][0]['category'])
|
||||
self.assertEqual('get_logging', task.data['logging_models_info_post'][0]['workflow'])
|
||||
self.assertEqual('get_logging', task.data['logging_models_debug_post'][0]['workflow'])
|
||||
|
||||
def test_get_logs_for_study(self):
|
||||
self.add_studies()
|
||||
@ -102,7 +108,11 @@ class TestTaskLogging(BaseTest):
|
||||
workflow_logs = task_api.data['workflow_logs']
|
||||
study_logs = task_api.data['study_logs']
|
||||
self.assertEqual(3, len(workflow_logs))
|
||||
self.assertEqual('Test Workflows', workflow_logs[0]['category'])
|
||||
self.assertEqual('get_logging_for_study', workflow_logs[0]['workflow'])
|
||||
self.assertEqual(5, len(study_logs))
|
||||
self.assertEqual('Test Workflows', study_logs[0]['category'])
|
||||
self.assertEqual('hello_world', study_logs[0]['workflow'])
|
||||
|
||||
def test_logging_api(self):
|
||||
workflow = self.create_workflow('logging_task')
|
||||
@ -129,6 +139,8 @@ class TestTaskLogging(BaseTest):
|
||||
self.assertEqual('info', logs[0]['level'])
|
||||
self.assertEqual(self.test_uid, logs[0]['user_uid'])
|
||||
self.assertEqual('You forgot to include the correct data.', logs[0]['message'])
|
||||
self.assertEqual('Test Workflows', logs[0]['category'])
|
||||
self.assertEqual('logging_task', logs[0]['workflow'])
|
||||
|
||||
def test_logging_service_paginates_and_sorts(self):
|
||||
self.add_studies()
|
||||
|
Loading…
x
Reference in New Issue
Block a user