"""
- item['replace']['Priority'] = priority_div % (priority, priority_text)
- item['replace']['getProfilesTitle'] = obj.getProfilesTitleStr
+ item["replace"]["Priority"] = priority_div % (priority, priority_text)
+ item["replace"]["getProfilesTitle"] = obj.getProfilesTitleStr
analysesnum = obj.getAnalysesNum
if analysesnum:
num_verified = str(analysesnum[0])
num_total = str(analysesnum[1])
- item['getAnalysesNum'] = '{0}/{1}'.format(num_verified, num_total)
+ item["getAnalysesNum"] = "{0}/{1}".format(num_verified, num_total)
else:
- item['getAnalysesNum'] = ''
+ item["getAnalysesNum"] = ""
# Progress
num_verified = 0
@@ -905,9 +698,9 @@ def folderitem(self, obj, item, index):
progress = '
'
- item['replace']['Progress'] = progress.format(progress_perc)
+ item["replace"]["Progress"] = progress.format(progress_perc)
- item['BatchID'] = obj.getBatchID
+ item["BatchID"] = obj.getBatchID
if obj.getBatchID:
item['replace']['BatchID'] = "
%s" % \
(obj.getBatchURL, obj.getBatchID)
@@ -916,22 +709,22 @@ def folderitem(self, obj, item, index):
# item['SubGroup'] = val.Title() if val else ''
date = obj.getSamplingDate
- item['SamplingDate'] = \
- self.ulocalized_time(date, long_format=1) if date else ''
+ item["SamplingDate"] = \
+ self.ulocalized_time(date, long_format=1) if date else ""
date = obj.getDateReceived
- item['getDateReceived'] = \
- self.ulocalized_time(date, long_format=1) if date else ''
+ item["getDateReceived"] = \
+ self.ulocalized_time(date, long_format=1) if date else ""
date = obj.getDatePublished
- item['getDatePublished'] = \
- self.ulocalized_time(date, long_format=1) if date else ''
+ item["getDatePublished"] = \
+ self.ulocalized_time(date, long_format=1) if date else ""
date = obj.getDateVerified
- item['getDateVerified'] = \
- self.ulocalized_time(date, long_format=1) if date else ''
+ item["getDateVerified"] = \
+ self.ulocalized_time(date, long_format=1) if date else ""
if self.printwfenabled:
- item['Printed'] = ''
- printed = obj.getPrinted if hasattr(obj, 'getPrinted') else "0"
- print_icon = ''
+ item["Printed"] = ""
+ printed = obj.getPrinted if hasattr(obj, "getPrinted") else "0"
+ print_icon = ""
if printed == "0":
print_icon = \
"""

""" \
% (self.portal_url, t(_("Republished after last print")))
- item['after']['Printed'] = print_icon
- item['SamplingDeviation'] = obj.getSamplingDeviationTitle
+ item["after"]["Printed"] = print_icon
+ item["SamplingDeviation"] = obj.getSamplingDeviationTitle
- item['getStorageLocation'] = obj.getStorageLocationTitle
+ item["getStorageLocation"] = obj.getStorageLocationTitle
after_icons = ""
# Getting a dictionary with each workflow id and current state in it
@@ -974,9 +767,9 @@ def folderitem(self, obj, item, index):
""" % (self.portal_url, t(_("Late Analyses")))
if obj.getSamplingDate and obj.getSamplingDate > DateTime():
after_icons += \
- """

- """ % (self.portal_url, t(_("Future dated sample")))
+ """

+ """ % (self.portal_url, t(_("Future dated sample")))
if obj.getInvoiceExclude:
after_icons += \
"""
![]()
%s" % \
(obj.getContactURL, obj.getContactFullName)
else:
- item['ClientContact'] = ""
+ item["ClientContact"] = ""
# TODO-performance: If SamplingWorkflowEnabled, we have to get the
# full object to check the user permissions, so far this is
# a performance hit.
@@ -1010,17 +803,17 @@ def folderitem(self, obj, item, index):
if not obj.getDateSampled:
datesampled = self.ulocalized_time(
DateTime(), long_format=True)
- item['class']['getDateSampled'] = 'provisional'
+ item["class"]["getDateSampled"] = "provisional"
else:
datesampled = self.ulocalized_time(obj.getDateSampled,
long_format=True)
sampler = obj.getSampler
if sampler:
- item['replace']['getSampler'] = obj.getSamplerFullName
- if 'Sampler' in self.roles and not sampler:
+ item["replace"]["getSampler"] = obj.getSamplerFullName
+ if "Sampler" in self.roles and not sampler:
sampler = self.member.id
- item['class']['getSampler'] = 'provisional'
+ item["class"]["getSampler"] = "provisional"
# sampling workflow - inline edits for Sampler and Date Sampled
if states_dict.get('review_state', '') == 'to_be_sampled':
# We need to get the full object in order to check
@@ -1029,19 +822,18 @@ def folderitem(self, obj, item, index):
checkPermission =\
self.context.portal_membership.checkPermission
if checkPermission(SampleSample, full_object):
- item['required'] = ['getSampler', 'getDateSampled']
- item['allow_edit'] = ['getSampler', 'getDateSampled']
+ item["required"] = ["getSampler", "getDateSampled"]
+ item["allow_edit"] = ["getSampler", "getDateSampled"]
# TODO-performance: hit performance while getting the
# sample object...
# TODO Can LabManagers be a Sampler?!
samplers = getUsers(
full_object.getSample(),
- ['Sampler', ])
+ ["Sampler", ])
username = self.member.getUserName()
users = [({
- 'ResultValue': u,
- 'ResultText': samplers.getValue(u)})
- for u in samplers]
+ "ResultValue": u,
+ "ResultText": samplers.getValue(u)}) for u in samplers]
item['choices'] = {'getSampler': users}
Sampler = sampler and sampler or \
(username in samplers.keys() and username) or ''
@@ -1053,14 +845,14 @@ def folderitem(self, obj, item, index):
else:
datesampled = self.ulocalized_time(obj.getDateSampled,
long_format=True)
- sampler = ''
- item['getDateSampled'] = datesampled
- item['getSampler'] = sampler
+ sampler = ""
+ item["getDateSampled"] = datesampled
+ item["getSampler"] = sampler
# These don't exist on ARs
# XXX This should be a list of preservers...
- item['getPreserver'] = ''
- item['getDatePreserved'] = ''
+ item["getPreserver"] = ""
+ item["getDatePreserved"] = ""
# TODO-performance: If inline preservation wants to be used, we
# have to get the full object to check the user permissions, so
# far this is a performance hit.
@@ -1086,7 +878,7 @@ def folderitem(self, obj, item, index):
# Submitting user may not verify results
# Thee conditions to improve performance, some functions to check
# the condition need to get the full analysis request.
- if states_dict.get('review_state', '') == 'to_be_verified':
+ if states_dict.get("review_state", "") == "to_be_verified":
allowed = user.has_permission(
VerifyPermission,
username=self.member.getUserName())
@@ -1096,10 +888,10 @@ def folderitem(self, obj, item, index):
# Gettin the full object if not get before
full_object = full_object if full_object else obj.getObject()
if not full_object.isUserAllowedToVerify(self.member):
- item['after']['state_title'] = \
- """

- """ % t(_("Cannot verify: Submitted by current user"))
+ item["after"]["state_title"] = \
+ """

+ """ % t(_("Cannot verify: Submitted by current user"))
return item
def pending_tasks(self):
@@ -1110,92 +902,12 @@ def pending_tasks(self):
@property
def copy_to_new_allowed(self):
- mtool = getToolByName(self.context, 'portal_membership')
+ mtool = api.get_tool("portal_membership")
if mtool.checkPermission(ManageAnalysisRequests, self.context) \
or mtool.checkPermission(ModifyPortalContent, self.context):
return True
return False
- def __call__(self):
- self.workflow = getToolByName(self.context, "portal_workflow")
- self.mtool = getToolByName(self.context, 'portal_membership')
- self.member = self.mtool.getAuthenticatedMember()
- self.roles = self.member.getRoles()
- self.hideclientlink = 'RegulatoryInspector' in self.roles \
- and 'Manager' not in self.roles \
- and 'LabManager' not in self.roles \
- and 'LabClerk' not in self.roles
-
- if self.context.portal_type == "AnalysisRequestsFolder" and \
- (self.mtool.checkPermission(AddAnalysisRequest, self.context)):
- self.context_actions[_('Add')] = \
- {'url': "ar_add?ar_count=1",
- 'icon': '++resource++bika.lims.images/add.png'}
-
- self.editresults = -1
- self.clients = {}
- # self.user_is_preserver = 'Preserver' in self.roles
- # Printing workflow enabled?
- # If not, remove the Column
- self.printwfenabled = \
- self.context.bika_setup.getPrintingWorkflowEnabled()
- printed_colname = 'Printed'
- if not self.printwfenabled and printed_colname in self.columns:
- # Remove "Printed" columns
- del self.columns[printed_colname]
- tmprvs = []
- for rs in self.review_states:
- tmprs = rs
- tmprs['columns'] = [c for c in rs.get('columns', []) if
- c != printed_colname]
- tmprvs.append(tmprs)
- self.review_states = tmprvs
- elif self.printwfenabled:
- # Print button to choose multiple ARs and print them.
- review_states = []
- for review_state in self.review_states:
- review_state.get('custom_transitions', []).extend(
- [{'id': 'print',
- 'title': _('Print'),
- 'url': 'workflow_action?action=print'}, ])
- review_states.append(review_state)
- self.review_states = review_states
-
- # Only "BIKA: ManageAnalysisRequests" may see the copy to new button.
- # elsewhere it is hacked in where required.
- if self.copy_to_new_allowed:
- review_states = []
- for review_state in self.review_states:
- review_state.get('custom_transitions', []).extend(
- [{'id': 'copy_to_new',
- 'title': _('Copy to new'),
- 'url': 'workflow_action?action=copy_to_new'}, ])
- review_states.append(review_state)
- self.review_states = review_states
-
- # Hide Preservation/Sampling workflow actions if the edit columns
- # are not displayed.
- toggle_cols = self.get_toggle_cols()
- new_states = []
- for i, state in enumerate(self.review_states):
- if state['id'] == self.review_state:
- if 'getSampler' not in toggle_cols \
- or 'getDateSampled' not in toggle_cols:
- if 'hide_transitions' in state:
- state['hide_transitions'].append('sample')
- else:
- state['hide_transitions'] = ['sample', ]
- if 'getPreserver' not in toggle_cols \
- or 'getDatePreserved' not in toggle_cols:
- if 'hide_transitions' in state:
- state['hide_transitions'].append('preserve')
- else:
- state['hide_transitions'] = ['preserve', ]
- new_states.append(state)
- self.review_states = new_states
-
- return super(AnalysisRequestsView, self).__call__()
-
def getFilterBar(self):
"""
This function creates an instance of BikaListingFilterBar if the
@@ -1220,12 +932,12 @@ def __call__(self):
PostOnly(self.context.REQUEST)
except:
logger.error(traceback.format_exc())
- return json.dumps({'count': 0})
+ return json.dumps({"count": 0})
try:
CheckAuthenticator(self.request.form)
except:
logger.error(traceback.format_exc())
- return json.dumps({'count': 0})
- task_queue = queryUtility(ITaskQueue, name='ar-create')
+ return json.dumps({"count": 0})
+ task_queue = queryUtility(ITaskQueue, name="ar-create")
count = len(task_queue) if task_queue is not None else 0
- return json.dumps({'count': count})
+ return json.dumps({"count": count})
diff --git a/bika/lims/browser/bika_listing.py b/bika/lims/browser/bika_listing.py
index a09f949a01..51076ce899 100644
--- a/bika/lims/browser/bika_listing.py
+++ b/bika/lims/browser/bika_listing.py
@@ -644,9 +644,11 @@ def review_state(self):
# get state_id from (request or default_review_states)
key = "%s_review_state" % self.form_id
state_id = self.request.form.get(key, self.default_review_state)
+ if not state_id:
+ state_id = self.default_review_state
states = [r for r in self.review_states if r['id'] == state_id]
if not states:
- logger.error("%s.review_states does not contains id='%s'." %
+ logger.error("%s.review_states does not contain id='%s'." %
(self, state_id))
return None
review_state = states[0] if states else self.review_states[0]
diff --git a/bika/lims/browser/js/bika.lims.bikalisting.js b/bika/lims/browser/js/bika.lims.bikalisting.js
index 75365b6991..2884c12c9a 100644
--- a/bika/lims/browser/js/bika.lims.bikalisting.js
+++ b/bika/lims/browser/js/bika.lims.bikalisting.js
@@ -361,7 +361,7 @@
input_name = form_id + "_review_state";
input = $("input[name=" + input_name + "]", form);
if (input.length === 0) {
- input = form.append("
");
+ input = form.append("
");
}
input.val(state_id);
form_data = new FormData(form[0]);
diff --git a/bika/lims/browser/js/coffee/bika.lims.bikalisting.coffee b/bika/lims/browser/js/coffee/bika.lims.bikalisting.coffee
index f902bcd12c..1c02499f0b 100644
--- a/bika/lims/browser/js/coffee/bika.lims.bikalisting.coffee
+++ b/bika/lims/browser/js/coffee/bika.lims.bikalisting.coffee
@@ -367,7 +367,7 @@ class window.BikaListingTableView
input_name = "#{form_id}_review_state"
input = $("input[name=#{input_name}]", form)
if input.length == 0
- input = form.append "
"
+ input = form.append "
"
input.val state_id
# prepare the form data