Skip to content

Commit 1a973a2

Browse files
author
Pau Soliva
authored
Merge pull request #232 from naralabs/priority-add-analyses-ws
Display Priority in Analyses Add View from Worksheet and allow to sort
2 parents 66db6e3 + 20a6038 commit 1a973a2

File tree

4 files changed

+52
-1
lines changed

4 files changed

+52
-1
lines changed

bika/lims/browser/worksheet/views/add_analyses.py

+17-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
1515
from zope.interface import implements
1616
from bika.lims.catalog import CATALOG_ANALYSIS_LISTING
17+
from bika.lims.config import PRIORITIES
1718
from bika.lims import bikaMessageFactory as _
1819
from bika.lims import EditResults, EditWorksheet, ManageWorksheets
1920
from bika.lims import PMF, logger
@@ -49,6 +50,10 @@ def __init__(self, context, request):
4950
self.pagesize = 50
5051

5152
self.columns = {
53+
'Priority': {
54+
'title': '',
55+
'sortable': True,
56+
'index': 'getPrioritySortkey' },
5257
'Client': {
5358
'title': _('Client'),
5459
'attr': 'getClientTitle',
@@ -82,7 +87,8 @@ def __init__(self, context, request):
8287
'title': _('All'),
8388
'contentFilter': {},
8489
'transitions': [{'id':'assign'}, ],
85-
'columns':['Client',
90+
'columns':['Priority',
91+
'Client',
8692
'getClientOrderNumber',
8793
'getRequestID',
8894
'CategoryTitle',
@@ -211,6 +217,16 @@ def folderitem(self, obj, item, index):
211217
t(_("Late Analysis")))
212218
if self.hideclientlink:
213219
del item['replace']['Client']
220+
# Add Priority column
221+
priority_sort_key = obj.getPrioritySortkey
222+
if not priority_sort_key:
223+
# Default priority is Medium = 3.
224+
# The format of PrioritySortKey is <priority>.<created>
225+
priority_sort_key = '3.%s' % obj.created.ISO8601()
226+
priority = priority_sort_key.split('.')[0]
227+
priority_text = PRIORITIES.getValue(priority)
228+
priority_div = '<div class="priority-ico priority-%s"><span class="notext">%s</span><div>'
229+
item['replace']['Priority'] = priority_div % (priority, priority_text)
214230
return item
215231

216232
def getServices(self):

bika/lims/content/abstractroutineanalysis.py

+11
Original file line numberDiff line numberDiff line change
@@ -413,6 +413,17 @@ def getDependencies(self):
413413
dependencies.append(sibling)
414414
return dependencies
415415

416+
@security.public
417+
def getPrioritySortkey(self):
418+
"""
419+
Returns the key that will be used to sort the current Analysis
420+
Delegates to getPrioritySortKey function from the AnalysisRequest
421+
:return: string used for sorting
422+
"""
423+
analysis_request = self.getRequest()
424+
if analysis_request:
425+
return analysis_request.getPrioritySortkey()
426+
416427
@security.public
417428
def setReflexAnalysisOf(self, analysis):
418429
"""Sets the analysis that has been reflexed in order to create this

bika/lims/content/analysisrequest.py

+21
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
from bika.lims.browser.widgets import PrioritySelectionWidget
3535
from bika.lims.browser.widgets import SelectionWidget
3636
from bika.lims.browser.widgets import SelectionWidget as BikaSelectionWidget
37+
from bika.lims.catalog import CATALOG_ANALYSIS_LISTING
3738
from bika.lims.config import PROJECTNAME
3839
from bika.lims.config import PRIORITIES
3940
from bika.lims.content.bikaschema import BikaSchema
@@ -2963,6 +2964,7 @@ def getDateVerified(self):
29632964
"""
29642965
return getTransitionDate(self, 'verify', return_as_datetime=True)
29652966

2967+
@security.public
29662968
def getPrioritySortkey(self):
29672969
"""
29682970
Returns the key that will be used to sort the current Analysis Request
@@ -2974,6 +2976,25 @@ def getPrioritySortkey(self):
29742976
created_date = self.created().ISO8601()
29752977
return '%s.%s' % (priority, created_date)
29762978

2979+
@security.public
2980+
def setPriority(self, value):
2981+
if not value:
2982+
value = self.Schema().getField('Priority').getDefault(self)
2983+
self.Schema().getField('Priority').set(self, value)
2984+
self._reindexAnalyses(['getPrioritySortkey'], True)
2985+
2986+
@security.private
2987+
def _reindexAnalyses(self, idxs=None, update_metadata=False):
2988+
if not idxs and not update_metadata:
2989+
return
2990+
if not idxs:
2991+
idxs = []
2992+
analyses = self.getAnalyses()
2993+
catalog = getToolByName(self, CATALOG_ANALYSIS_LISTING)
2994+
for analysis in analyses:
2995+
analysis_obj = analysis.getObject()
2996+
catalog.reindexObject(analysis_obj, idxs=idxs, update_metadata=1)
2997+
29772998
def _getCreatorFullName(self):
29782999
"""
29793000
Returns the full name of this analysis request's creator.

bika/lims/upgrade/v3_2_0_1708.py

+3
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@ def upgrade(tool):
4444
# Add missing Priority Index and Column to AR Catalog
4545
ut.addIndexAndColumn(CATALOG_ANALYSIS_REQUEST_LISTING,
4646
'getPrioritySortkey', 'FieldIndex')
47+
ut.addIndexAndColumn(CATALOG_ANALYSIS_LISTING,
48+
'getPrioritySortkey', 'FieldIndex')
49+
4750
ut.refreshCatalogs()
4851

4952
logger.info("{0} upgraded to version {1}".format(product, version))

0 commit comments

Comments
 (0)