本文整理汇总了Python中bika.lims.browser.bika_listing.WorkflowAction.__call__方法的典型用法代码示例。如果您正苦于以下问题:Python WorkflowAction.__call__方法的具体用法?Python WorkflowAction.__call__怎么用?Python WorkflowAction.__call__使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类bika.lims.browser.bika_listing.WorkflowAction
的用法示例。
在下文中一共展示了WorkflowAction.__call__方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __call__
# 需要导入模块: from bika.lims.browser.bika_listing import WorkflowAction [as 别名]
# 或者: from bika.lims.browser.bika_listing.WorkflowAction import __call__ [as 别名]
def __call__(self):
form = self.request.form
plone.protect.CheckAuthenticator(form)
workflow = getToolByName(self.context, 'portal_workflow')
rc = getToolByName(self.context, REFERENCE_CATALOG)
action, came_from = WorkflowAction._get_form_workflow_action(self)
if action == 'reassign':
selected_worksheets = WorkflowAction._get_selected_items(self)
selected_worksheet_uids = selected_worksheets.keys()
if selected_worksheets:
changes = False
for uid in selected_worksheet_uids:
worksheet = selected_worksheets[uid]
# Double-check the state first
if workflow.getInfoFor(worksheet, 'review_state') == 'open':
worksheet.setAnalyst(form['Analyst'][0][uid])
changes = True
if changes:
message = self.context.translate(PMF('Changes saved.'))
self.context.plone_utils.addPortalMessage(message, 'info')
self.destination_url = self.request.get_header("referer",
self.context.absolute_url())
self.request.response.redirect(self.destination_url)
else:
# default bika_listing.py/WorkflowAction for other transitions
WorkflowAction.__call__(self)
示例2: __call__
# 需要导入模块: from bika.lims.browser.bika_listing import WorkflowAction [as 别名]
# 或者: from bika.lims.browser.bika_listing.WorkflowAction import __call__ [as 别名]
def __call__(self):
form = self.request.form
plone.protect.CheckAuthenticator(form)
action, came_from = WorkflowAction._get_form_workflow_action(self)
if action == 'submit':
objects = WorkflowAction._get_selected_items(self)
if not objects:
message = self.context.translate(
_b("No analyses have been selected"))
self.context.plone_utils.addPortalMessage(message, 'info')
self.destination_url = self.context.absolute_url() + \
"/batchbook"
self.request.response.redirect(self.destination_url)
return
for ar_uid, ar in objects.items():
for analysis in ar.getAnalyses(full_objects=True):
kw = analysis.getKeyword()
values = form.get(kw)
analysis.setResult(values[0][ar_uid])
if values[0][ar_uid]:
doActionFor(analysis, 'submit')
message = self.context.translate(_p("Changes saved."))
self.context.plone_utils.addPortalMessage(message, 'info')
self.request.response.redirect(self.request.get('URL'))
return
else:
WorkflowAction.__call__(self)
示例3: workflow_action_receive
# 需要导入模块: from bika.lims.browser.bika_listing import WorkflowAction [as 别名]
# 或者: from bika.lims.browser.bika_listing.WorkflowAction import __call__ [as 别名]
def workflow_action_receive(self):
# default bika_listing.py/WorkflowAction, but then
# print automatic labels.
if 'receive' in self.context.bika_setup.getAutoPrintLabels():
size = self.context.bika_setup.getAutoLabelSize()
q = "/sticker?size=%s&items=%s" % (size, self.context.getId())
self.destination_url = self.context.absolute_url() + q
WorkflowAction.__call__(self)
示例4: __call__
# 需要导入模块: from bika.lims.browser.bika_listing import WorkflowAction [as 别名]
# 或者: from bika.lims.browser.bika_listing.WorkflowAction import __call__ [as 别名]
def __call__(self):
form = self.request.form
plone.protect.CheckAuthenticator(form)
workflow = getToolByName(self.context, 'portal_workflow')
rc = getToolByName(self.context, REFERENCE_CATALOG)
uc = getToolByName(self.context, 'uid_catalog')
action, came_from = WorkflowAction._get_form_workflow_action(self)
if action == 'duplicate':
selected_services = WorkflowAction._get_selected_items(self)
## Create a copy of the selected services
folder = self.context.bika_setup.bika_analysisservices
created = []
for service in selected_services.values():
_id = folder.invokeFactory('AnalysisService', id = 'tmp')
dup = folder[_id]
dup.setTitle('%s (copy)' % service.Title())
_id = renameAfterCreation(dup)
dup.edit(
description = service.Description(),
PointOfCapture = service.getPointOfCapture(),
ReportDryMatter = service.getReportDryMatter(),
Unit = service.getUnit(),
Precision = service.getPrecision(),
Price = service.getPrice(),
CorporatePrice = service.getCorporatePrice(),
VAT = service.getVAT(),
Calculation = service.getCalculation(),
Instrument = service.getInstrument(),
MaxTimeAllowed = service.getMaxTimeAllowed(),
DuplicateVariation = service.getDuplicateVariation(),
Category = service.getCategory(),
Department = service.getDepartment(),
Accredited = service.getAccredited(),
Uncertainties = service.getUncertainties(),
ResultOptions = service.getResultOptions()
)
created.append(_id)
if len(created) > 1:
message = self.context.translation_service.translate(
_('Services ${services} were successfully created.',
mapping = {'services': ', '.join(created)}))
self.destination_url = self.request.get_header("referer",
self.context.absolute_url())
else:
message = self.context.translation_service.translate(
_('Analysis request ${service} was successfully created.',
mapping = {'service': ', '.join(created)}))
self.destination_url = dup.absolute_url() + "/base_edit"
self.context.plone_utils.addPortalMessage(message, 'info')
self.request.response.redirect(self.destination_url)
else:
# default bika_listing.py/WorkflowAction for other transitions
WorkflowAction.__call__(self)
示例5: __call__
# 需要导入模块: from bika.lims.browser.bika_listing import WorkflowAction [as 别名]
# 或者: from bika.lims.browser.bika_listing.WorkflowAction import __call__ [as 别名]
def __call__(self):
form = self.request.form
plone.protect.CheckAuthenticator(form)
action, _ = WorkflowAction._get_form_workflow_action(self)
if action == 'receive' and 'Type' in form:
BiospecimenWorkflowAction.__call__(self)
elif action == 'receive' and 'AliquotType' in form:
AliquotWorkflowAction.__call__(self)
else:
WorkflowAction.__call__(self)
示例6: __call__
# 需要导入模块: from bika.lims.browser.bika_listing import WorkflowAction [as 别名]
# 或者: from bika.lims.browser.bika_listing.WorkflowAction import __call__ [as 别名]
def __call__(self):
form = self.request.form
plone.protect.CheckAuthenticator(form)
action, came_from = WorkflowAction._get_form_workflow_action(self)
if type(action) in (list, tuple):
action = action[0]
if type(came_from) in (list, tuple):
came_from = came_from[0]
# Call out to the workflow action method
# Use default bika_listing.py/WorkflowAction for other transitions
method_name = 'workflow_action_' + action
method = getattr(self, method_name, False)
if method:
method()
else:
WorkflowAction.__call__(self)
示例7: __call__
# 需要导入模块: from bika.lims.browser.bika_listing import WorkflowAction [as 别名]
# 或者: from bika.lims.browser.bika_listing.WorkflowAction import __call__ [as 别名]
def __call__(self):
form = self.request.form
CheckAuthenticator(form)
workflow = getToolByName(self.context, 'portal_workflow')
rc = getToolByName(self.context, REFERENCE_CATALOG)
action, came_from = WorkflowAction._get_form_workflow_action(self)
if action == 'reassign':
mtool = getToolByName(self.context, 'portal_membership')
if not mtool.checkPermission(ManageWorksheets, self.context):
# Redirect to WS list
msg = _('You do not have sufficient privileges to '
'manage worksheets.')
self.context.plone_utils.addPortalMessage(msg, 'warning')
portal = getToolByName(self.context, 'portal_url').getPortalObject()
self.destination_url = portal.absolute_url() + "/worksheets"
self.request.response.redirect(self.destination_url)
return
selected_worksheets = WorkflowAction._get_selected_items(self)
selected_worksheet_uids = selected_worksheets.keys()
if selected_worksheets:
changes = False
for uid in selected_worksheet_uids:
worksheet = selected_worksheets[uid]
# Double-check the state first
if workflow.getInfoFor(worksheet, 'review_state') == 'open':
worksheet.setAnalyst(form['Analyst'][0][uid])
worksheet.reindexObject(idxs=['getAnalyst'])
changes = True
if changes:
message = PMF('Changes saved.')
self.context.plone_utils.addPortalMessage(message, 'info')
self.destination_url = self.request.get_header("referer",
self.context.absolute_url())
self.request.response.redirect(self.destination_url)
else:
# default bika_listing.py/WorkflowAction for other transitions
WorkflowAction.__call__(self)
示例8: workflow_action_verify
# 需要导入模块: from bika.lims.browser.bika_listing import WorkflowAction [as 别名]
# 或者: from bika.lims.browser.bika_listing.WorkflowAction import __call__ [as 别名]
def workflow_action_verify(self):
# default bika_listing.py/WorkflowAction, but then go to view screen.
self.destination_url = self.context.absolute_url()
WorkflowAction.__call__(self)
示例9: __call__
# 需要导入模块: from bika.lims.browser.bika_listing import WorkflowAction [as 别名]
# 或者: from bika.lims.browser.bika_listing.WorkflowAction import __call__ [as 别名]
def __call__(self):
form = self.request.form
plone.protect.CheckAuthenticator(form)
workflow = getToolByName(self.context, 'portal_workflow')
pc = getToolByName(self.context, 'portal_catalog')
rc = getToolByName(self.context, REFERENCE_CATALOG)
# use came_from to decide which UI action was clicked.
# "workflow_action" is the action name specified in the
# portal_workflow transition url.
came_from = "workflow_action"
action = form.get(came_from, '')
if not action:
# workflow_action_button is the action name specified in
# the bika_listing_view table buttons.
came_from = "workflow_action_button"
action = form.get(came_from, '')
# XXX some browsers agree better than others about our JS ideas.
if type(action) == type([]): action = action[0]
if not action:
if self.destination_url == "":
self.destination_url = self.request.get_header("referer",
self.context.absolute_url())
self.request.response.redirect(self.destination_url)
return
if action in ('prepublish', 'publish', 'prepublish'):
# We pass a list of AR objects to Publish.
# it returns a list of AR IDs which were actually published.
ARs_to_publish = []
transitioned = []
if 'paths' in form:
for path in form['paths']:
item_id = path.split("/")[-1]
item_path = path.replace("/" + item_id, '')
ar = pc(id = item_id,
path = {'query':item_path,
'depth':1})[0].getObject()
# can't publish inactive items
if not(
'bika_inactive_workflow' in workflow.getChainFor(ar) and \
workflow.getInfoFor(ar, 'inactive_state', '') == 'inactive'):
ar.setDatePublished(DateTime())
ARs_to_publish.append(ar)
transitioned = Publish(self.context,
self.request,
action,
ARs_to_publish)()
if len(transitioned) > 1:
message = _('message_items_published',
default = '${items} were published.',
mapping = {'items': ', '.join(transitioned)})
elif len(transitioned) == 1:
message = _('message_item_published',
default = '${items} published.',
mapping = {'items': ', '.join(transitioned)})
else:
message = _('No items were published')
message = self.context.translate(message)
self.context.plone_utils.addPortalMessage(message, 'info')
self.destination_url = self.request.get_header("referer",
self.context.absolute_url())
self.request.response.redirect(self.destination_url)
else:
# default bika_listing.py/WorkflowAction for other transitions
WorkflowAction.__call__(self)
示例10: __call__
# 需要导入模块: from bika.lims.browser.bika_listing import WorkflowAction [as 别名]
# 或者: from bika.lims.browser.bika_listing.WorkflowAction import __call__ [as 别名]
def __call__(self):
form = self.request.form
plone.protect.CheckAuthenticator(form)
workflow = getToolByName(self.context, 'portal_workflow')
rc = getToolByName(self.context, REFERENCE_CATALOG)
bsc = getToolByName(self.context, 'bika_setup_catalog')
bac = getToolByName(self.context, 'bika_analysis_catalog')
action, came_from = WorkflowAction._get_form_workflow_action(self)
if action == 'submit':
# Submit the form. Saves the results, methods, etc.
self.submit()
## assign
elif action == 'assign':
if not self.context.checkUserManage():
self.request.response.redirect(self.context.absolute_url())
return
selected_analyses = WorkflowAction._get_selected_items(self)
selected_analysis_uids = selected_analyses.keys()
if selected_analyses:
for uid in selected_analysis_uids:
analysis = rc.lookupObject(uid)
# Double-check the state first
if (workflow.getInfoFor(analysis, 'worksheetanalysis_review_state') == 'unassigned'
and workflow.getInfoFor(analysis, 'review_state') == 'sample_received'
and workflow.getInfoFor(analysis, 'cancellation_state') == 'active'):
self.context.addAnalysis(analysis)
self.destination_url = self.context.absolute_url()
self.request.response.redirect(self.destination_url)
## unassign
elif action == 'unassign':
if not self.context.checkUserManage():
self.request.response.redirect(self.context.absolute_url())
return
selected_analyses = WorkflowAction._get_selected_items(self)
selected_analysis_uids = selected_analyses.keys()
for analysis_uid in selected_analysis_uids:
try:
analysis = bac(UID=analysis_uid)[0].getObject()
except IndexError:
# Duplicate analyses are removed when their analyses
# get removed, so indexerror is expected.
continue
if skip(analysis, action, peek=True):
continue
self.context.removeAnalysis(analysis)
message = PMF("Changes saved.")
self.context.plone_utils.addPortalMessage(message, 'info')
self.destination_url = self.context.absolute_url()
self.request.response.redirect(self.destination_url)
## verify
elif action == 'verify':
# default bika_listing.py/WorkflowAction, but then go to view screen.
self.destination_url = self.context.absolute_url()
return self.workflow_action_default(action='verify',
came_from='edit')
else:
# default bika_listing.py/WorkflowAction for other transitions
WorkflowAction.__call__(self)
示例11: __call__
# 需要导入模块: from bika.lims.browser.bika_listing import WorkflowAction [as 别名]
# 或者: from bika.lims.browser.bika_listing.WorkflowAction import __call__ [as 别名]
def __call__(self):
form = self.request.form
plone.protect.CheckAuthenticator(form)
workflow = getToolByName(self.context, 'portal_workflow')
rc = getToolByName(self.context, REFERENCE_CATALOG)
bsc = getToolByName(self.context, 'bika_setup_catalog')
bac = getToolByName(self.context, 'bika_analysis_catalog')
action, came_from = WorkflowAction._get_form_workflow_action(self)
# XXX combine data from multiple bika listing tables.
item_data = {}
if 'item_data' in form:
if type(form['item_data']) == list:
for i_d in form['item_data']:
for i, d in json.loads(i_d).items():
item_data[i] = d
else:
item_data = json.loads(form['item_data'])
if action == 'submit' and self.request.form.has_key("Result"):
selected_analyses = WorkflowAction._get_selected_items(self)
results = {}
hasInterims = {}
# first save results for entire form
for uid, result in self.request.form['Result'][0].items():
if uid in selected_analyses:
analysis = selected_analyses[uid]
else:
analysis = rc.lookupObject(uid)
if not analysis:
# ignore result if analysis object no longer exists
continue
if not(getSecurityManager().checkPermission(EditResults, analysis)):
# or changes no longer allowed
continue
if not isActive(analysis):
# or it's cancelled
continue
results[uid] = result
service = analysis.getService()
interimFields = item_data[uid]
if len(interimFields) > 0:
hasInterims[uid] = True
else:
hasInterims[uid] = False
unit = service.getUnit()
analysis.edit(
Result = result,
InterimFields = interimFields,
Retested = form.has_key('retested') and \
form['retested'].has_key(uid),
Unit = unit and unit or '')
# discover which items may be submitted
submissable = []
for uid, analysis in selected_analyses.items():
if uid not in results:
continue
can_submit = True
if hasattr(analysis, 'getDependencies'):
dependencies = analysis.getDependencies()
for dependency in dependencies:
dep_state = workflow.getInfoFor(dependency, 'review_state')
if hasInterims[uid]:
if dep_state in ('to_be_sampled', 'to_be_preserved',
'sample_due', 'sample_received',
'attachment_due', 'to_be_verified',):
can_submit = False
break
else:
if dep_state in ('to_be_sampled', 'to_be_preserved',
'sample_due', 'sample_received',):
can_submit = False
break
for dependency in dependencies:
if workflow.getInfoFor(dependency, 'review_state') in \
('to_be_sampled', 'to_be_preserved',
'sample_due', 'sample_received'):
can_submit = False
if can_submit:
submissable.append(analysis)
# and then submit them.
for analysis in submissable:
doActionFor(analysis, 'submit')
message = PMF("Changes saved.")
self.context.plone_utils.addPortalMessage(message, 'info')
self.destination_url = self.request.get_header("referer",
self.context.absolute_url())
self.request.response.redirect(self.destination_url)
## assign
elif action == 'assign':
if not(getSecurityManager().checkPermission(EditWorksheet, self.context)):
self.request.response.redirect(self.context.absolute_url())
return
selected_analyses = WorkflowAction._get_selected_items(self)
selected_analysis_uids = selected_analyses.keys()
#.........这里部分代码省略.........
示例12: __call__
# 需要导入模块: from bika.lims.browser.bika_listing import WorkflowAction [as 别名]
# 或者: from bika.lims.browser.bika_listing.WorkflowAction import __call__ [as 别名]
def __call__(self):
form = self.request.form
plone.protect.CheckAuthenticator(form)
workflow = getToolByName(self.context, 'portal_workflow')
rc = getToolByName(self.context, REFERENCE_CATALOG)
skiplist = self.request.get('workflow_skiplist', [])
action, came_from = WorkflowAction._get_form_workflow_action(self)
# XXX combine data from multiple bika listing tables.
item_data = {}
if 'item_data' in form:
if type(form['item_data']) == list:
for i_d in form['item_data']:
for i,d in json.loads(i_d).items():
item_data[i] = d
else:
item_data = json.loads(form['item_data'])
## publish
if action in ('prepublish', 'publish', 'prepublish'):
if not isActive(self.context):
message = _('Item is inactive.')
self.context.plone_utils.addPortalMessage(message, 'info')
self.request.response.redirect(self.context.absolute_url())
return
# XXX publish entire AR.
transitioned = Publish(self.context,
self.request,
action,
[self.context, ])()
if len(transitioned) == 1:
message = _('message_item_published',
default = '${items} was published.',
mapping = {'items': ', '.join(transitioned)})
else:
message = _('No ARs were published.')
self.context.plone_utils.addPortalMessage(message, 'info')
self.destination_url = self.request.get_header("referer",
self.context.absolute_url())
self.request.response.redirect(self.destination_url)
## submit
elif action == 'submit' and self.request.form.has_key("Result"):
if not isActive(self.context):
message = _('Item is inactive.')
self.context.plone_utils.addPortalMessage(message, 'info')
self.request.response.redirect(self.context.absolute_url())
return
selected_analyses = WorkflowAction._get_selected_items(self)
results = {}
hasInterims = {}
# first save results for entire form
for uid, result in self.request.form['Result'][0].items():
if uid in selected_analyses:
analysis = selected_analyses[uid]
else:
analysis = rc.lookupObject(uid)
if not analysis:
# ignore result if analysis object no longer exists
continue
if not(getSecurityManager().checkPermission(EditResults, analysis)):
# or changes no longer allowed
continue
results[uid] = result
service = analysis.getService()
interimFields = item_data[uid]
if len(interimFields) > 0:
hasInterims[uid] = True
else:
hasInterims[uid] = False
unit = service.getUnit()
analysis.edit(
Result = result,
InterimFields = interimFields,
Retested = form.has_key('retested') and \
form['retested'].has_key(uid),
Unit = unit and unit or '')
# discover which items may be submitted
submissable = []
for uid, analysis in selected_analyses.items():
if uid not in results:
continue
if not results[uid]:
continue
can_submit = True
for dependency in analysis.getDependencies():
dep_state = workflow.getInfoFor(dependency, 'review_state')
if hasInterims[uid]:
if dep_state in ('sample_due', 'sample_received', 'attachment_due', 'to_be_verified',):
can_submit = False
break
else:
if dep_state in ('sample_due', 'sample_received',):
can_submit = False
break
if can_submit and analysis not in submissable:
#.........这里部分代码省略.........