Con Athento es posible filtrar las bandejas por tipo de tarea, para ello, se debe usar una máscara que modifique el comportamiento de la bandeja.
En este caso, es necesario usar una máscara para filtrar por tipo de tarea. Solo se mostrarán en la bandeja los documentos que tengan una tarea del tipo filtrado y que dicha tarea esté en estado "open" o "abierta".
Código de la máscara
Para crear una máscara que filtre por tipo de tarea, se puede partir del siguiente código:
import time
import datetime
import json
def run(q, items, **kwargs):
from users.utils import UsersUtils
other_data = {}
new_items = []
params = q.mask_params
params = json.loads(params)
tareas = params.get('tareas', '')
task_names = tareas.split(',')
for i in items:
doc = i.get('doc')
tasks = doc.get_workflow_tasks()
tasks = tasks.filter(status='Open', removed=False)
if tasks:
for task in tasks:
task_name = task.task_type.name
task_name = str(task_name)
if task_name in task_names:
new_doc = i.copy()
new_items.append(new_doc)
new_doc['task_name'] = task.task_type.name
return new_items
Este código puede modificarse para añadir más filtros o condiciones, según se requiera.
Instalación
Las máscaras deben añadirse al repositorio personalizado en la carpeta "queuemasks" y ser archivos de código Python.
Después de añadirlas al repositorio, es necesario actualizar la instancia (lo que actualiza el código custom). Esta actualización puede solicitarse al soporte técnico o realizarse desde la propia instancia, si la función está habilitada en el centro de actualizaciones.
Una vez actualizada la instancia, se debe configurar, desde el avanzado de la bandeja, el campo "Mask method" reemplazando en custom.<nombre_del_repositorio>.queuemasks.<nombre_de_la_mascara> el nombre_del_repositorio y el nombre_de_la_mascara:
Finalmente, para elegir que tasks types se van a mostrar, en el campo "Masks params" debe añadirse un JSON con el siguiente formato:
Donde la clave (key) sea "tareas" y en el valor (value) se añadan los nombres de los task types separados por coma. Estos nombres, se obtienen del avanzado en los document workflow tasks types, copiando el name de la tarea:
Con los cambios realizados, la bandeja ya mostrará solo los documentos que tengan tareas abiertas de los tipos seleccionados.
Filtrar por tareas asignadas al usuario actual
También se puede añadir un filtro para que solo se muestren los documentos con tareas abiertas asignadas al usuario actual (el que consulta la bandeja). Para ello, se debe modificar el código añadiendo lo que está en negrita y comentando la línea que obtiene las tareas del documento.
import time
import datetime
import json
def run(q, items, **kwargs):
from django_currentuser.middleware import get_current_user
from users.utils import UsersUtils
current_user = UsersUtils.get_current_user()
other_data = {}
new_items = []
params = q.mask_params
params = json.loads(params)
tareas = params.get('tareas', '')
task_names = tareas.split(',')
for i in items:
doc = i.get('doc')
#tasks = doc.get_workflow_tasks()
tasks = current_user.get_workflow_tasks(doc)
tasks = tasks.filter(status='Open', removed=False)
if tasks:
for task in tasks:
task_name = task.task_type.name
task_name = str(task_name)
if task_name in task_names:
new_doc = i.copy()
new_items.append(new_doc)
new_doc['task_name'] = task.task_type.name
return new_items
Comentarios
0 comentarios
Inicie sesión para dejar un comentario.