Example #1
0
 def __init__(self, context, request, **kwargs):
     AnalysesView.__init__(self, context, request)
     self.show_select_column = False
     self.allow_edit = False
     self.show_workflow_action_buttons = False
     for k, v in kwargs.items():
         self.contentFilter[k] = v
     self.columns['Request'] = {'title': _("Request"), 'sortable': False}
     self.columns['Priority'] = {'title': _("Priority"), 'sortable': False}
     # Add Request and Priority columns
     pos = self.review_states[0]['columns'].index('Service') + 1
     self.review_states[0]['columns'].insert(pos, 'Request')
     pos += 1
     self.review_states[0]['columns'].insert(pos, 'Priority')
Example #2
0
    def __init__(self, context, request):
        AnalysesView.__init__(self, context, request)
        self.catalog = "bika_analysis_catalog"
        self.contentFilter = {
            "portal_type": "ReferenceAnalysis",
            "path": {"query": "/".join(self.context.getPhysicalPath()), "level": 0},
        }
        self.show_select_row = False
        self.show_sort_column = False
        self.show_select_column = False
        self.allow_edit = False

        self.columns = {
            "id": {"title": _("ID"), "toggle": False},
            "getReferenceAnalysesGroupID": {"title": _("QC Sample ID"), "toggle": True},
            "Category": {"title": _("Category"), "toggle": True},
            "Service": {"title": _("Service"), "toggle": True},
            "Worksheet": {"title": _("Worksheet"), "toggle": True},
            "Method": {"title": _("Method"), "sortable": False, "toggle": True},
            "Instrument": {"title": _("Instrument"), "sortable": False, "toggle": True},
            "Result": {"title": _("Result"), "toggle": True},
            "Captured": {"title": _("Captured"), "toggle": True},
            "Uncertainty": {"title": _("+-"), "toggle": True},
            "DueDate": {"title": _("Due Date"), "index": "getDueDate", "toggle": True},
            "retested": {"title": _("Retested"), "type": "boolean", "toggle": True},
            "state_title": {"title": _("State"), "toggle": True},
        }
        self.review_states = [
            {
                "id": "default",
                "title": _("All"),
                "contentFilter": {},
                "transitions": [],
                "columns": [
                    "id",
                    "getReferenceAnalysesGroupID",
                    "Category",
                    "Service",
                    "Worksheet",
                    "Method",
                    "Instrument",
                    "Result",
                    "Captured",
                    "Uncertainty",
                    "DueDate",
                    "state_title",
                ],
            }
        ]
        self.anjson = {}
Example #3
0
 def __init__(self, context, request, **kwargs):
     AnalysesView.__init__(self, context, request)
     self.show_select_column = False
     self.allow_edit = False
     self.show_workflow_action_buttons = False
     for k,v in kwargs.items():
         self.contentFilter[k] = v
     self.columns['Request'] = {'title': _("Request"),
                                'sortable':False}
     self.columns['Priority'] = {'title': _("Priority"),
                                'sortable':False}
     # Add Request and Priority columns
     pos = self.review_states[0]['columns'].index('Service') + 1
     self.review_states[0]['columns'].insert(pos, 'Request')
     pos += 1
     self.review_states[0]['columns'].insert(pos, 'Priority')
Example #4
0
    def __init__(self, context, request, **kwargs):
        AnalysesView.__init__(self, context, request, **kwargs)
        self.columns['getReferenceAnalysesGroupID'] = {
            'title': _('QC Sample ID'),
            'sortable': False
        }
        self.columns['Partition'] = {
            'title': _('Reference Sample'),
            'sortable': False
        }
        self.columns['Retractions'] = {'title': '', 'sortable': False}
        self.review_states[0]['columns'] = [
            'Service', 'getReferenceAnalysesGroupID', 'Partition', 'Result',
            'Uncertainty', 'CaptureDate', 'Retractions'
        ]

        analyses = self.context.getReferenceAnalyses()
        asuids = [an.UID() for an in analyses]
        self.catalog = 'bika_analysis_catalog'
        self.contentFilter = {'UID': asuids}
        self.anjson = {}
Example #5
0
 def folderitems(self):
     self.contentsMethod = self.context.getAnalyses
     items = AnalysesView.folderitems(self)
     for x in range(len(items)):
         if not items[x].has_key('obj'):
             continue
         obj = items[x]['obj']
         ar = obj.aq_parent
         items[x]['replace']['Request'] = \
             "<a href='%s'>%s</a>"%(ar.absolute_url(), ar.Title())
         items[x]['replace']['Priority'] = ' ' #TODO this space is required for it to work
     return items
Example #6
0
 def folderitems(self):
     self.contentsMethod = self.context.getAnalyses
     items = AnalysesView.folderitems(self)
     for x in range(len(items)):
         if not items[x].has_key('obj'):
             continue
         obj = items[x]['obj']
         ar = obj.aq_parent
         items[x]['replace']['Request'] = \
             "<a href='%s'>%s</a>"%(ar.absolute_url(), ar.Title())
         items[x]['replace'][
             'Priority'] = ' '  #TODO this space is required for it to work
     return items
Example #7
0
    def folderitems(self):
        items = AnalysesView.folderitems(self)
        items.sort(key=itemgetter('CaptureDate'), reverse=True)
        for i in range(len(items)):
            obj = items[i]['obj']
            imgtype = ""
            if obj.portal_type == 'ReferenceAnalysis':
                antype = QCANALYSIS_TYPES.getValue(obj.getReferenceType())
                if obj.getReferenceType() == 'c':
                    imgtype = "<img title='%s' src='%s/++resource++bika.lims.images/control.png'/>&nbsp;" % (
                        antype, self.context.absolute_url())
                if obj.getReferenceType() == 'b':
                    imgtype = "<img title='%s' src='%s/++resource++bika.lims.images/blank.png'/>&nbsp;" % (
                        antype, self.context.absolute_url())
                items[i]['replace']['Partition'] = "<a href='%s'>%s</a>" % (
                    obj.aq_parent.absolute_url(), obj.aq_parent.id)
            elif obj.portal_type == 'DuplicateAnalysis':
                antype = QCANALYSIS_TYPES.getValue('d')
                imgtype = "<img title='%s' src='%s/++resource++bika.lims.images/duplicate.png'/>&nbsp;" % (
                    antype, self.context.absolute_url())
                items[i]['sortcode'] = '%s_%s' % (
                    obj.getSample().id, obj.getService().getKeyword())
            else:
                items[i]['sortcode'] = '%s_%s' % (
                    obj.getSample().id, obj.getService().getKeyword())

            items[i]['before']['Service'] = imgtype

            # Get retractions field
            pdf = obj.getRetractedAnalysesPdfReport()
            title = ''
            anchor = ''
            try:
                if pdf:
                    filesize = 0
                    title = _('Retractions')
                    anchor = "<a class='pdf' target='_blank' href='%s/at_download/RetractedAnalysesPdfReport'>%s</a>" % \
                             (obj.absolute_url(), _("Retractions"))
                    filesize = pdf.get_size()
                    filesize = filesize / 1024 if filesize > 0 else 0
            except:
                # POSKeyError: 'No blob file'
                # Show the record, but not the link
                title = _('Retraction report unavailable')
                anchor = title
            items[i]['Retractions'] = title
            items[i]['replace']['Retractions'] = anchor

            # Create json
            qcid = obj.aq_parent.id
            serviceref = "%s (%s)" % (items[i]['Service'], items[i]['Keyword'])
            trows = self.anjson.get(serviceref, {})
            anrows = trows.get(qcid, [])
            anid = '%s.%s' % (items[i]['getReferenceAnalysesGroupID'],
                              items[i]['id'])

            rr = obj.aq_parent.getResultsRangeDict()
            uid = obj.getServiceUID()
            if uid in rr:
                specs = rr[uid]
                try:
                    smin = float(specs.get('min', 0))
                    smax = float(specs.get('max', 0))
                    error = float(specs.get('error', 0))
                    target = float(specs.get('result', 0))
                    result = float(items[i]['Result'])
                    error_amount = ((target / 100) *
                                    error) if target > 0 else 0
                    upper = smax + error_amount
                    lower = smin - error_amount

                    anrow = {
                        'date': items[i]['CaptureDate'],
                        'min': smin,
                        'max': smax,
                        'target': target,
                        'error': error,
                        'erroramount': error_amount,
                        'upper': upper,
                        'lower': lower,
                        'result': result,
                        'unit': items[i]['Unit'],
                        'id': items[i]['uid']
                    }
                    anrows.append(anrow)
                    trows[qcid] = anrows
                    self.anjson[serviceref] = trows
                except:
                    pass

        return items
Example #8
0
 def createAnalysesView(self, context, request, **kwargs):
     return AnalysesView(context, request, **kwargs)
Example #9
0
    def __init__(self, context, request):
        AnalysesView.__init__(self, context, request)
        self.catalog = 'bika_analysis_catalog'
        self.contentFilter = {
            'portal_type': 'ReferenceAnalysis',
            'path': {
                'query': "/".join(self.context.getPhysicalPath()),
                'level': 0
            }
        }
        self.show_select_row = False
        self.show_sort_column = False
        self.show_select_column = False
        self.allow_edit = False

        self.columns = {
            'id': {
                'title': _('ID'),
                'toggle': False
            },
            'getReferenceAnalysesGroupID': {
                'title': _('QC Sample ID'),
                'toggle': True
            },
            'Category': {
                'title': _('Category'),
                'toggle': True
            },
            'Service': {
                'title': _('Service'),
                'toggle': True
            },
            'Worksheet': {
                'title': _('Worksheet'),
                'toggle': True
            },
            'Method': {
                'title': _('Method'),
                'sortable': False,
                'toggle': True
            },
            'Instrument': {
                'title': _('Instrument'),
                'sortable': False,
                'toggle': True
            },
            'Result': {
                'title': _('Result'),
                'toggle': True
            },
            'Captured': {
                'title': _('Captured'),
                'toggle': True
            },
            'Uncertainty': {
                'title': _('+-'),
                'toggle': True
            },
            'DueDate': {
                'title': _('Due Date'),
                'index': 'getDueDate',
                'toggle': True
            },
            'retested': {
                'title': _('Retested'),
                'type': 'boolean',
                'toggle': True
            },
            'state_title': {
                'title': _('State'),
                'toggle': True
            },
        }
        self.review_states = [
            {
                'id':
                'default',
                'title':
                _('All'),
                'contentFilter': {},
                'transitions': [],
                'columns': [
                    'id', 'getReferenceAnalysesGroupID', 'Category', 'Service',
                    'Worksheet', 'Method', 'Instrument', 'Result', 'Captured',
                    'Uncertainty', 'DueDate', 'state_title'
                ],
            },
        ]
        self.anjson = {}