diff --git a/CHANGES.rst b/CHANGES.rst index 21e57c4010..37c5bdaef1 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -28,6 +28,7 @@ Changelog **Fixed** +- #1501 Fix Attribute Error in Reference Sample Popup - #1493 jsonapi.read omits `include_methods` when a single parameter is used - #1494 Fix KeyError in Sample Type Listing - #1477 Sample edit form - some selection widgets empty diff --git a/bika/lims/api/__init__.py b/bika/lims/api/__init__.py index 1f06c045d7..f53788e07d 100644 --- a/bika/lims/api/__init__.py +++ b/bika/lims/api/__init__.py @@ -53,8 +53,8 @@ from Products.PlonePAS.tools.memberdata import MemberData from Products.ZCatalog.interfaces import ICatalogBrain from zope import globalrequest -from zope.component import getMultiAdapter from zope.component import getUtility +from zope.component import queryMultiAdapter from zope.component.interfaces import IFactory from zope.event import notify from zope.lifecycleevent import ObjectCreatedEvent @@ -951,7 +951,7 @@ def get_version(brain_or_object): return getattr(aq_base(obj), "version_id", 0) -def get_view(name, context=None, request=None): +def get_view(name, context=None, request=None, default=None): """Get the view by name :param name: The name of the view @@ -965,7 +965,10 @@ def get_view(name, context=None, request=None): """ context = context or get_portal() request = request or get_request() or None - return getMultiAdapter((get_object(context), request), name=name) + view = queryMultiAdapter((get_object(context), request), name=name) + if view is None: + return default + return view def get_request(): diff --git a/bika/lims/content/referenceanalysis.py b/bika/lims/content/referenceanalysis.py index 7f919a5156..2e41eed68e 100644 --- a/bika/lims/content/referenceanalysis.py +++ b/bika/lims/content/referenceanalysis.py @@ -19,40 +19,49 @@ # Some rights reserved, see README and LICENSE. from AccessControl import ClassSecurityInfo - -from DateTime import DateTime -from Products.Archetypes.public import * -from Products.CMFCore.utils import getToolByName -from bika.lims.config import PROJECTNAME, STD_TYPES +from bika.lims.config import PROJECTNAME +from bika.lims.config import STD_TYPES from bika.lims.content.abstractanalysis import AbstractAnalysis from bika.lims.content.abstractanalysis import schema from bika.lims.content.analysisspec import ResultsRangeDict from bika.lims.interfaces import IReferenceAnalysis -from bika.lims.subscribers import skip -from bika.lims.workflow import doActionFor +from DateTime import DateTime from plone.app.blob.field import BlobField +from Products.Archetypes.Field import StringField +from Products.Archetypes.public import Schema +from Products.Archetypes.public import registerType from zope.interface import implements schema = schema.copy() + Schema(( StringField( - 'ReferenceType', + "ReferenceType", vocabulary=STD_TYPES, ), BlobField( - 'RetractedAnalysesPdfReport', + "RetractedAnalysesPdfReport", ), StringField( - 'ReferenceAnalysesGroupID', + "ReferenceAnalysesGroupID", ) )) class ReferenceAnalysis(AbstractAnalysis): + """Reference Analysis Content + """ implements(IReferenceAnalysis) security = ClassSecurityInfo() - displayContentsTab = False schema = schema + @security.public + def getPrice(self): + """Return the price + + :return: the price (without VAT or Member Discount) in decimal format + """ + field = self.getField("Price") + return field.get(self) + @security.public def getSupplier(self): """ Returns the Supplier of the ReferenceSample this ReferenceAnalysis