def resolve(obj, *args, **kwargs): """Resolve the action taken in the approval action.""" from invenio_workflows import ObjectStatus from inspirehep.modules.workflows.utils import log_workflows_action value = kwargs.get("request_data", {}).get("value", "") reason = kwargs.get("request_data", {}).get("reason", "") # Audit logging prediction_results = obj.extra_data.get("relevance_prediction", {}) log_workflows_action( action="resolve", prediction_results=prediction_results, object_id=obj.id, user_id=kwargs.get('id_user'), source="holdingpen", user_action=value, ) upload_pdf = kwargs.get("pdf_submission", False) approved = value in ('accept', 'accept_core') obj.extra_data["approved"] = approved obj.remove_action() obj.extra_data["user_action"] = value obj.extra_data["core"] = value == "accept_core" obj.extra_data["reason"] = reason obj.extra_data["pdf_upload"] = True if upload_pdf == "true" else False obj.status = ObjectStatus.WAITING obj.save() obj.continue_workflow(delayed=True) return approved
def test_audit(app): user_id = None workflow_id = None with app.app_context(): user = User(email="*****@*****.**", active=True) user.password = "******" db.session.add(user) workflows_object = WorkflowObject.create_object() workflows_object.save() db.session.commit() user_id = user.id workflow_id = workflows_object.id with app.app_context(): logging_info = { 'object_id': workflow_id, 'user_id': user_id, 'score': 0.222113, 'user_action': "Non-CORE", 'decision': "Rejected", 'source': "test", 'action': "accept" } audit = WorkflowsAudit(**logging_info) audit.save() db.session.commit() assert WorkflowsAudit.query.count() == 1 audit_entry = WorkflowsAudit.query.filter( WorkflowsAudit.object_id == workflow_id ).one() assert audit_entry assert audit_entry.action == "accept" assert audit_entry.score == 0.222113 prediction_results = dict( max_score=0.222113, decision="Rejected" ) with app.app_context(): log_workflows_action( action="accept_core", prediction_results=prediction_results, object_id=workflow_id, user_id=None, source="test", user_action="accept" ) db.session.commit() assert WorkflowsAudit.query.count() == 2 audit_entry = WorkflowsAudit.query.filter( WorkflowsAudit.action == "accept_core" ).one() assert audit_entry assert audit_entry.action == "accept_core" assert audit_entry.score == 0.222113
def test_audit(small_app): user_id = None workflow_id = None with small_app.app_context(): user = User(email="*****@*****.**", active=True) user.password = "******" db.session.add(user) workflows_object = workflow_object_class.create({}, data_type="hep") db.session.commit() user_id = user.id workflow_id = workflows_object.id with small_app.app_context(): logging_info = { 'object_id': workflow_id, 'user_id': user_id, 'score': 0.222113, 'user_action': "Non-CORE", 'decision': "Rejected", 'source': "test", 'action': "accept" } audit = WorkflowsAudit(**logging_info) audit.save() db.session.commit() assert WorkflowsAudit.query.count() == 1 audit_entry = WorkflowsAudit.query.filter( WorkflowsAudit.object_id == workflow_id ).one() assert audit_entry assert audit_entry.action == "accept" assert audit_entry.score == 0.222113 prediction_results = dict( max_score=0.222113, decision="Rejected" ) with small_app.app_context(): log_workflows_action( action="accept_core", prediction_results=prediction_results, object_id=workflow_id, user_id=None, source="test", user_action="accept" ) db.session.commit() assert WorkflowsAudit.query.count() == 2 audit_entry = WorkflowsAudit.query.filter( WorkflowsAudit.action == "accept_core" ).one() assert audit_entry assert audit_entry.action == "accept_core" assert audit_entry.score == 0.222113
def _reject_record(obj, *args, **kwargs): relevance_prediction = obj.extra_data.get("relevance_prediction") log_workflows_action( action="reject_record", relevance_prediction=relevance_prediction, object_id=obj.id, user_id=None, source="workflow", ) obj.extra_data["approved"] = False obj.extra_data["reason"] = message obj.log.info(message)
def _reject_record(obj, *args, **kwargs): from inspirehep.modules.workflows.utils import log_workflows_action prediction_results = obj.extra_data.get("relevance_prediction") log_workflows_action( action="reject_record", prediction_results=prediction_results, object_id=obj.id, user_id=0, source="workflow", ) obj.extra_data["approved"] = False obj.extra_data["reason"] = message obj.log.info(message)
def resolve(obj, *args, **kwargs): """Resolve the action taken in the approval action.""" from invenio_workflows import ObjectStatus from inspirehep.modules.workflows.utils import log_workflows_action value = kwargs.get("request_data", {}).get("value", "") reason = kwargs.get("request_data", {}).get("reason", "") upload_pdf = kwargs.get("request_data", {}).get("pdf_upload", False) # Audit logging relevance_prediction = obj.extra_data.get("relevance_prediction", {}) log_workflows_action( action="resolve", relevance_prediction=relevance_prediction, object_id=obj.id, user_id=kwargs.get('id_user'), source="holdingpen", user_action=value, ) if not upload_pdf: if 'fulltext.pdf' in obj.files: del obj.files['fulltext.pdf'] documents = obj.data.get('documents', []) for doc in documents: if doc['key'] == 'fulltext.pdf': documents.remove(doc) break approved = value in ('accept', 'accept_core') obj.extra_data["approved"] = approved obj.remove_action() obj.extra_data["user_action"] = value obj.extra_data["upload_pdf"] = upload_pdf obj.extra_data["core"] = value == "accept_core" obj.extra_data["reason"] = reason obj.status = ObjectStatus.WAITING obj.save() obj.continue_workflow(delayed=True) return approved
def resolve(obj, *args, **kwargs): """Resolve the action taken in the approval action.""" from invenio_db import db from invenio_workflows import ObjectStatus from inspirehep.modules.workflows.utils import log_workflows_action value = kwargs.get("value", "") if value: res = value[0] # value was ['accept'] # Audit logging results = obj.extra_data.get("_tasks_results", {}) prediction_results = results.get("arxiv_guessing", {}) log_workflows_action( action="resolve", prediction_results=prediction_results, object_id=obj.id, user_id=kwargs.get('id_user'), source="holdingpen", user_action=res, ) upload_pdf = kwargs.get("pdf_submission", False) approved = res in ('accept', 'accept_core') obj.extra_data["approved"] = approved obj.remove_action() obj.extra_data["core"] = res == "accept_core" obj.extra_data["reason"] = kwargs.get("text", "") obj.extra_data["pdf_upload"] = True if upload_pdf == "true" else False obj.status = ObjectStatus.WAITING obj.save() db.session.commit() obj.continue_workflow(delayed=True) return approved