misc: move get_role_translation function to formdata (#38254)
This commit is contained in:
parent
a0a88ef952
commit
e4c5bea0d8
|
@ -75,7 +75,7 @@ from wcs.formdata import FormData
|
|||
from wcs.formdef import FormDef
|
||||
from wcs.roles import logged_users_role, Role
|
||||
from wcs.variables import LazyFieldVar
|
||||
from wcs.workflows import get_role_translation, template_on_formdata, WorkflowStatusItem
|
||||
from wcs.workflows import template_on_formdata, WorkflowStatusItem
|
||||
|
||||
from .submission import FormFillPage
|
||||
|
||||
|
@ -3292,7 +3292,7 @@ class FormBackOfficeStatusPage(FormStatusPage):
|
|||
r += htmltext('<ul class="form-inspector biglist">')
|
||||
for key, label in (workflow.roles or {}).items():
|
||||
r += htmltext('<li><span class="label">%s</span>') % label
|
||||
acting_role_id = get_role_translation(self.filled, key)
|
||||
acting_role_id = self.filled.get_role_translation(key)
|
||||
if acting_role_id:
|
||||
try:
|
||||
acting_role = Role.get(acting_role_id)
|
||||
|
|
|
@ -676,12 +676,25 @@ class FormData(StorableObject):
|
|||
def get_display_id(self):
|
||||
return str(self.id_display or self.id)
|
||||
|
||||
def get_role_translation(self, role_name):
|
||||
if role_name == '_submitter':
|
||||
raise Exception('_submitter is not a valid role')
|
||||
elif str(role_name).startswith('_'):
|
||||
role_id = None
|
||||
if self.workflow_roles:
|
||||
role_id = self.workflow_roles.get(role_name)
|
||||
if not role_id and self.formdef.workflow_roles:
|
||||
role_id = self.formdef.workflow_roles.get(role_name)
|
||||
if role_id is None:
|
||||
return role_id
|
||||
return str(role_id)
|
||||
else:
|
||||
return str(role_name)
|
||||
|
||||
def get_handling_role_id(self):
|
||||
# TODO: look at current status and return the role(s) actually
|
||||
# concerned by the handling of the formdata
|
||||
from wcs.workflows import get_role_translation
|
||||
|
||||
return get_role_translation(self, '_receiver')
|
||||
return self.get_role_translation('_receiver')
|
||||
|
||||
def get_handling_role(self):
|
||||
try:
|
||||
|
@ -986,10 +999,8 @@ class FormData(StorableObject):
|
|||
# make sure the handling roles always gets access to the formdata, till
|
||||
# the very end (where it may be that there is no workflow status item
|
||||
# at all).
|
||||
from wcs.workflows import get_role_translation
|
||||
|
||||
for function_key in self.formdef.workflow.roles.keys():
|
||||
handling_role = get_role_translation(self, function_key)
|
||||
handling_role = self.get_role_translation(function_key)
|
||||
if handling_role:
|
||||
status_action_roles.add(handling_role)
|
||||
|
||||
|
@ -1010,8 +1021,6 @@ class FormData(StorableObject):
|
|||
if not wf_status:
|
||||
return []
|
||||
|
||||
from wcs.workflows import get_role_translation
|
||||
|
||||
status_action_roles = set()
|
||||
for item in wf_status.items or []:
|
||||
if not hasattr(item, 'by') or not item.by:
|
||||
|
@ -1023,7 +1032,7 @@ class FormData(StorableObject):
|
|||
if role == '_submitter':
|
||||
status_action_roles.add(role)
|
||||
else:
|
||||
real_role = get_role_translation(self, role)
|
||||
real_role = self.get_role_translation(role)
|
||||
if real_role:
|
||||
status_action_roles.add(real_role)
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@ from ..qommon import errors
|
|||
|
||||
from wcs.api import get_user_from_api_query_string, is_url_signed
|
||||
from wcs.roles import logged_users_role
|
||||
from wcs.workflows import WorkflowGlobalActionWebserviceTrigger, get_role_translation, perform_items
|
||||
from wcs.workflows import WorkflowGlobalActionWebserviceTrigger, perform_items
|
||||
|
||||
|
||||
class HookDirectory(Directory):
|
||||
|
@ -49,7 +49,7 @@ class HookDirectory(Directory):
|
|||
break
|
||||
if not user:
|
||||
continue
|
||||
if get_role_translation(self.formdata, role) in user.get_roles():
|
||||
if self.formdata.get_role_translation(role) in user.get_roles():
|
||||
break
|
||||
else:
|
||||
raise errors.AccessForbiddenError('insufficient roles')
|
||||
|
|
|
@ -21,8 +21,7 @@ from ..qommon.form import *
|
|||
from ..qommon.cron import CronJob
|
||||
from ..qommon import emails
|
||||
|
||||
from wcs.workflows import WorkflowStatusItem, register_item_class, get_role_translation
|
||||
|
||||
from wcs.workflows import WorkflowStatusItem, register_item_class
|
||||
from wcs.roles import Role
|
||||
|
||||
|
||||
|
@ -66,7 +65,7 @@ class AggregationEmailWorkflowStatusItem(WorkflowStatusItem):
|
|||
return
|
||||
|
||||
for dest in self.to:
|
||||
dest = get_role_translation(formdata, dest)
|
||||
dest = formdata.get_role_translation(dest)
|
||||
try:
|
||||
aggregate = AggregationEmail.get(dest)
|
||||
except KeyError:
|
||||
|
|
|
@ -24,7 +24,7 @@ from ..qommon.template import TemplateError
|
|||
from ..qommon import get_logger
|
||||
|
||||
from wcs.roles import Role
|
||||
from wcs.workflows import WorkflowStatusItem, register_item_class, template_on_formdata, get_role_translation
|
||||
from wcs.workflows import WorkflowStatusItem, register_item_class, template_on_formdata
|
||||
from .wscall import WebserviceCallStatusItem
|
||||
|
||||
|
||||
|
@ -152,7 +152,7 @@ class SendNotificationWorkflowStatusItem(WebserviceCallStatusItem):
|
|||
users.append(formdata.get_user())
|
||||
continue
|
||||
|
||||
dest = get_role_translation(formdata, dest)
|
||||
dest = formdata.get_role_translation(dest)
|
||||
try:
|
||||
role = Role.get(dest)
|
||||
except KeyError:
|
||||
|
|
|
@ -522,7 +522,7 @@ class Workflow(StorableObject):
|
|||
actions.append(action)
|
||||
break
|
||||
roles = [
|
||||
get_role_translation(formdata, x) for x in (trigger.roles or []) if x != '_submitter'
|
||||
formdata.get_role_translation(x) for x in (trigger.roles or []) if x != '_submitter'
|
||||
]
|
||||
if set(roles).intersection(user.get_roles()):
|
||||
actions.append(action)
|
||||
|
@ -1633,7 +1633,7 @@ class WorkflowStatus(object):
|
|||
continue
|
||||
if user is None:
|
||||
continue
|
||||
role = get_role_translation(filled, role)
|
||||
role = filled.get_role_translation(role)
|
||||
if role in user.get_roles():
|
||||
break
|
||||
else:
|
||||
|
@ -1724,7 +1724,7 @@ class WorkflowStatus(object):
|
|||
|
||||
for role in visibility_roles:
|
||||
if role != '_submitter':
|
||||
role = get_role_translation(formdata, role)
|
||||
role = formdata.get_role_translation(role)
|
||||
if role in user_roles:
|
||||
return True
|
||||
return False
|
||||
|
@ -1926,7 +1926,7 @@ class WorkflowStatusItem(XmlSerialisable):
|
|||
continue
|
||||
if not user:
|
||||
continue
|
||||
role = get_role_translation(formdata, role)
|
||||
role = formdata.get_role_translation(role)
|
||||
if role in user.get_roles():
|
||||
return True
|
||||
|
||||
|
@ -2392,22 +2392,6 @@ class WorkflowStatusJumpItem(WorkflowStatusItem):
|
|||
return ('status', 'set_marker_on_status', 'condition')
|
||||
|
||||
|
||||
def get_role_translation(formdata, role_name):
|
||||
if role_name == '_submitter':
|
||||
raise Exception('_submitter is not a valid role')
|
||||
elif str(role_name).startswith('_'):
|
||||
role_id = None
|
||||
if formdata.workflow_roles:
|
||||
role_id = formdata.workflow_roles.get(role_name)
|
||||
if not role_id and formdata.formdef.workflow_roles:
|
||||
role_id = formdata.formdef.workflow_roles.get(role_name)
|
||||
if role_id is None:
|
||||
return role_id
|
||||
return str(role_id)
|
||||
else:
|
||||
return str(role_name)
|
||||
|
||||
|
||||
def get_role_translation_label(workflow, role_id):
|
||||
if role_id == logged_users_role().id:
|
||||
return logged_users_role().name
|
||||
|
@ -2967,7 +2951,7 @@ class SendmailWorkflowStatusItem(WorkflowStatusItem):
|
|||
addresses.append(submitter_email)
|
||||
continue
|
||||
|
||||
dest = get_role_translation(formdata, dest)
|
||||
dest = formdata.get_role_translation(dest)
|
||||
|
||||
try:
|
||||
role = Role.get(dest)
|
||||
|
@ -3160,7 +3144,7 @@ class DisplayMessageWorkflowStatusItem(WorkflowStatusItem):
|
|||
if filled.is_submitter(user):
|
||||
return True
|
||||
elif user:
|
||||
role = get_role_translation(filled, role)
|
||||
role = filled.get_role_translation(role)
|
||||
if role in user.get_roles():
|
||||
return True
|
||||
return False
|
||||
|
|
Loading…
Reference in New Issue