class InvoiceBatchSchemaExtender(object): adapts(IInvoiceBatch) implements(IOrderableSchemaExtender) fields = [ ExtReferenceField( 'Project', allowed_types=('Project', ), required=True, relationship='InvoiceProject', referenceClass=HoldingReference, widget=bika_ReferenceWidget( label=_("Project"), catalog_name='bika_catalog', size=30, showOn=True, description=_("Click and select project for the kit."), )), ExtStringField('Service', searchable=True, vocabulary=INVOICE_SERVICES, widget=SelectionWidget( format="select", label=_("Service"), description=_("Select the service to invoice."), )), ExtLinesField( 'Services', vocabulary=INVOICE_SERVICES, widget=MultiSelectionWidget( label=_("Invoice Services"), description=_("Select the services to invoice."), ), ), ] def __init__(self, context): self.context = context def getFields(self): return self.fields def getOrder(self, schematas): sch = schematas['default'] sch.remove('Project') sch.remove('Services') sch.insert(sch.index('BatchStartDate'), 'Project') sch.insert(sch.index('BatchStartDate'), 'Services') schematas['default'] = sch return schematas
schema = BikaFolderSchema.copy() + BikaSchema.copy() + Schema(( ReferenceField( 'SamplesList', multiValued=1, allowed_types=('Sample'), referenceClass=HoldingReference, relationship='SampleShipmentSample', mode="rw", widget=bika_ReferenceWidget( label=_("samples"), description=_("Select samples to ship"), size=40, base_query={'review_state': 'sample_received', 'cancellation_state': 'active'}, visible={'edit': 'visible', 'view': 'visible'}, catalog_name='bika_catalog', showOn=True ) ), StringField( 'FromEmailAddress', #schemata='Shipping Information', widget=StringWidget( label=_("Sender Email Address"), size=30, ) ),
from baobab.lims.config import PROJECTNAME from bika.lims.content.bikaschema import BikaSchema from Products.Archetypes.public import * import sys schema = BikaSchema.copy() + Schema(( ReferenceField( 'Product', required=1, vocabulary_display_path_bound=sys.maxint, allowed_types=('Product'), relationship='StockItemProduct', widget=bika_ReferenceWidget( label=_("Product"), catalog_name='bika_setup_catalog', showOn=False, description=_("Start typing to filter the list of available products."), ), ), ReferenceField( 'StorageLocation', allowed_types=('UnmanagedStorage'), relationship='ItemStorageLocation', widget=bika_ReferenceWidget( label=_("Storage Location"), description=_("Location where item is kept."), size=40, visible={'edit': 'visible', 'view': 'visible'}, catalog_name='portal_catalog', showOn=True,
widget=StringWidget( label=_("Sample Donor ID"), description=_("The unique ID code assigned to the sample donor."), visible={'edit': 'visible', 'view': 'visible'}, ) ) SelectedProject = ReferenceField( 'SelectedProject', allowed_types=('Project',), relationship='SampleDonorProjects', referenceClass=HoldingReference, widget=bika_ReferenceWidget( label=_("Select Project"), visible={'edit': 'visible', 'view': 'visible'}, size=30, showOn=True, description=_("Select the project of the sample donor."), ) ) InfoLink = StringField( 'InfoLink', required=0, searchable=True, read_permission=permissions.View, write_permission=permissions.ModifyPortalContent, widget=StringWidget( label=_("Information Link"), description=_("The link to information for this sample donor."), visible={'edit': 'visible', 'view': 'visible'},
searchable=True, validators=('uniquefieldvalidator',), widget=StringWidget( visible=True, label=_("Stock item ID"), ) ), ReferenceField('Product', required=1, vocabulary_display_path_bound = sys.maxint, allowed_types=('Product',), relationship='StockItemProduct', referenceClass=HoldingReference, widget=bika_ReferenceWidget( label = _("Product"), catalog_name='bika_setup_catalog', showOn=False, description=_("Start typing to filter the list of available products."), ), ), ComputedField('SupplierTitle', expression = 'context.getProduct().getSupplierTitle()', widget = ComputedWidget( label=_("Supplier"), visible = {'edit':'hidden', } ), ), ComputedField('SupplierCatalogID', expression = 'context.getProduct().getSupplierCatalogueID()', widget = ComputedWidget( label=_("Supplier Catalog ID"), visible = {'edit':'hidden', }
def get_aliquot_project_uid(instance): return instance.getBiospecimen().getKit().getProject().UID() schema = BikaSchema.copy() + Schema(( ReferenceField( 'Biospecimen', required=1, allowed_types=('Biospecimen',), relationship='BiospecimenAliquot', vocabulary_display_path_bound=sys.maxsize, referenceClass=HoldingReference, widget=bika_ReferenceWidget( checkbox_bound=0, label=_("Biospecimen"), description=_("The biospecimen the aliquot is extracted from."), size=40, catalog_name='bika_setup_catalog', showOn=True, visible={'edit': 'visible', 'view': 'visible'}, ) ), FixedPointField( 'Volume', required=1, default="0.00", widget=DecimalWidget( label=_("Volume"), size=15, description=_("The volume of the sample taken from the biospecimen."), )
) ) Project = ReferenceField( 'Project', required=True, allowed_types=('Project',), relationship='InvoiceProject', referenceClass=HoldingReference, widget=bika_ReferenceWidget( label=_("Project"), # catalog_name='bika_catalog', visible={'edit': 'visible', 'view': 'visible'}, size=50, showOn=True, render_own_label=True, description=_("Select the project of the sample batch."), colModel=[{"columnName": "UID", "hidden": True}, {"columnName": "Title", "align": "left", "width": "60", "label": "Title"}, {"columnName": "Description", "align": "left", "label": "Description", "width": "40"} ], ) ) Subject_ID = StringField( 'SubjectID', required=True, searchable=True, widget=StringWidget( label=_("Subject ID"), description=_("Human-subject ID the specimen is taken from."),
referenceClass=HoldingReference, relationship='ShipmentLabContact', mode="rw", read_permission=permissions.View, widget=bika_ReferenceWidget( label=_("From Contact"), description=_("Laboratory contact sending this shipment."), size=30, base_query={'inactive_state': 'active'}, showOn=True, popup_width='400px', colModel=[ { 'columnName': 'UID', 'hidden': True }, { 'columnName': 'Fullname', 'width': '50', 'label': _('Name') }, { 'columnName': 'EmailAddress', 'width': '50', 'label': _('Email Address') }, ], ), ), ReferenceField( 'ToContact', required=1,
ReferenceField( 'FromContact', required=1, vocabulary='get_project_client_contacts', vocabulary_display_path_bound=sys.maxsize, allowed_types=('LabContact',), referenceClass=HoldingReference, relationship='ShipmentLabContact', mode="rw", read_permission=permissions.View, widget=bika_ReferenceWidget( label=_("From Contact"), description=_("Laboratory contact sending this shipment."), size=30, base_query={'inactive_state': 'active'}, showOn=True, popup_width='400px', colModel=[{'columnName': 'UID', 'hidden': True}, {'columnName': 'Fullname', 'width': '50', 'label': _('Name')}, {'columnName': 'EmailAddress', 'width': '50', 'label': _('Email Address')}, ], ), ), ReferenceField( 'ToContact', required=1, vocabulary='get_project_client_contacts', vocabulary_display_path_bound=sys.maxsize, allowed_types=('Contact',), referenceClass=HoldingReference, relationship='ShipmentContact', mode="rw",
@indexer(IBiospecimen) def get_biospecimen_project_uid(instance): return instance.getKit().getProject().UID() schema = BikaFolderSchema.copy() + BikaSchema.copy() + Schema(( ReferenceField( 'Type', vocabulary_display_path_bound=sys.maxint, allowed_types=('BiospecType',), relationship='BiospecimenType', referenceClass=HoldingReference, widget=bika_ReferenceWidget( label=_("Biospecimen type"), catalog_name='bika_setup_catalog', size=30, showOn=True, description=_("Click and select a biospecimen type."), visible={'view': 'invisible', 'edit': 'visible'} ) ), ReferenceField('Kit', vocabulary_display_path_bound=sys.maxint, allowed_types=('Kit',), relationship='BiospecimenKit', referenceClass=HoldingReference, widget=bika_ReferenceWidget( label=_("Kit"), catalog_name='bika_catalog', visible={'view': 'invisible', 'edit': 'visible'} )),
from baobab.lims import bikaMessageFactory as _ from baobab.lims import config from baobab.lims.interfaces import IFreezer from bika.lims.browser.widgets import ReferenceWidget as bika_ReferenceWidget from bika.lims.content.bikaschema import BikaFolderSchema StorageUnit = ReferenceField( 'StorageUnit', allowed_types=('StorageUnit', ), relationship='FreezerStorageUnit', referenceClass=HoldingReference, widget=bika_ReferenceWidget( label=_("Select Storage Unit"), visible={ 'edit': 'visible', 'view': 'visible' }, size=30, showOn=True, description=_("Select storage unit associated this freezer."), )) MonitoringDevice = ReferenceField( 'MonitoringDevice', allowed_types=('MonitoringDevice', ), relationship='FreezerMonitoringDevice', referenceClass=HoldingReference, widget=bika_ReferenceWidget( label=_("Current Monitoring Device"), visible={ 'edit': 'visible', 'view': 'visible'
@indexer(IKit) def get_kit_project_uid(instance): return instance.getProject().UID() Project = ReferenceField( 'Project', required=1, allowed_types=('Project',), relationship='KitProject', referenceClass=HoldingReference, widget=bika_ReferenceWidget( label=_("Project"), catalog_name='bika_catalog', size=30, showOn=True, description=_("Click and select project for the kit."), ) ) KitTemplate = ReferenceField( 'KitTemplate', required=1, allowed_types=('KitTemplate',), relationship='KitAssemblyTemplate', referenceClass=HoldingReference, widget=bika_ReferenceWidget( label=_("Kit template"), size=30, catalog_name='bika_setup_catalog',
schema = BikaSchema.copy() + Schema(( ReferenceField( 'Biospecimen', required=1, allowed_types=('Biospecimen', ), relationship='BiospecimenAliquot', vocabulary_display_path_bound=sys.maxsize, referenceClass=HoldingReference, widget=bika_ReferenceWidget( checkbox_bound=0, label=_("Biospecimen"), description=_("The biospecimen the aliquot is extracted from."), size=40, catalog_name='bika_setup_catalog', showOn=True, visible={ 'edit': 'visible', 'view': 'visible' }, )), FixedPointField( 'Volume', required=1, default="0.00", widget=DecimalWidget( label=_("Volume"), size=15, description=_( "The volume of the sample taken from the biospecimen."), )),
from Products.CMFCore.utils import getToolByName # from Products.CMFPlone.utils import safe_unicode import sys AnatomicalMaterial = ReferenceField( 'AnatomicalMaterial', # schemata='Baobab Data', allowed_types=('AnatomicalMaterial', ), relationship='VirusSampleAnatomicalMaterial', referenceClass=HoldingReference, widget=bika_ReferenceWidget( label=_("Anatomical Material"), visible={ 'edit': 'visible', 'view': 'visible' }, size=30, showOn=True, description=_("Select the Anatomical Material."), )) # BioSampleAccession = StringField( 'BioSampleAccession', schemata='Repository Accession Numbers', widget=StringWidget( label=_("Biosample Accession"), description="The identifier assigned to a BioSample in INSDC archives", visible={ 'edit': 'visible', 'view': 'visible'
from DateTime.DateTime import DateTime from Products.Archetypes.public import * from Products.Archetypes.references import HoldingReference from Products.CMFCore.utils import getToolByName import sys schema = BikaSchema.copy() + Schema(( ReferenceField('Product', required=1, vocabulary_display_path_bound = sys.maxint, allowed_types=('Product', 'Kit'), relationship='StockItemProduct', referenceClass=HoldingReference, widget=bika_ReferenceWidget( label=_("Product"), catalog_name='bika_setup_catalog', showOn=False, description=_("Start typing to filter the list of available products."), ), ), # ComputedField('SupplierTitle', # expression='context.getProduct().getSupplierTitle()', # widget=ComputedWidget( # label=_("Supplier"), # visible={'edit':'hidden', } # ), # ), ComputedField('ProductTitle', expression='context.getProduct().Title()', widget=ComputedWidget(
@indexer(IKit) def get_kit_project_uid(instance): return instance.getProject().UID() Project = ReferenceField( 'Project', required=1, allowed_types=('Project', ), relationship='KitProject', referenceClass=HoldingReference, widget=bika_ReferenceWidget( label=_("Project"), catalog_name='bika_catalog', size=30, showOn=True, description=_("Click and select project for the kit."), )) KitTemplate = ReferenceField( 'KitTemplate', required=1, allowed_types=('KitTemplate', ), relationship='KitAssemblyTemplate', referenceClass=HoldingReference, widget=bika_ReferenceWidget( label=_("Kit template"), size=30, catalog_name='bika_setup_catalog', showOn=True,
class SampleSchemaExtender(object): adapts(ISample) implements(IOrderableSchemaExtender) fields = [ ExtReferenceField('Kit', vocabulary_display_path_bound=sys.maxint, allowed_types=('Kit', ), relationship='SampleKit', referenceClass=HoldingReference, widget=bika_ReferenceWidget( label=_("Kit"), catalog_name='bika_catalog', visible={ 'view': 'invisible', 'edit': 'visible', 'header_table': 'visible', 'sample_registered': { 'view': 'visible', 'edit': 'invisible' }, 'sample_due': { 'view': 'visible', 'edit': 'invisible' }, 'sampled': { 'view': 'visible', 'edit': 'invisible' }, 'sample_received': { 'view': 'visible', 'edit': 'invisible' }, 'expired': { 'view': 'visible', 'edit': 'invisible' }, 'disposed': { 'view': 'visible', 'edit': 'invisible' }, }, render_own_label=True, )), ExtReferenceField('StorageLocation', allowed_types=('UnmanagedStorage', 'StoragePosition'), relationship='ItemStorageLocation', widget=bika_ReferenceWidget( label=_("Storage Location"), description=_("Location where item is kept"), size=40, visible={ 'edit': 'visible', 'view': 'visible', 'header_table': 'visible', 'sample_registered': { 'view': 'visible', 'edit': 'invisible' }, 'sample_due': { 'view': 'visible', 'edit': 'invisible' }, 'sampled': { 'view': 'visible', 'edit': 'invisible' }, 'sample_received': { 'view': 'visible', 'edit': 'invisible' }, 'expired': { 'view': 'visible', 'edit': 'invisible' }, 'disposed': { 'view': 'visible', 'edit': 'invisible' }, }, catalog_name='bika_setup_catalog', showOn=True, render_own_label=True, base_query={ 'inactive_state': 'active', 'review_state': 'available', 'object_provides': IBioSpecimenStorage.__identifier__ }, colModel=[{ 'columnName': 'UID', 'hidden': True }, { 'columnName': 'Title', 'width': '50', 'label': _('Title') }, { "columnName": "Hierarchy", "align": "left", "label": "Hierarchy", "width": "50" }], )), ExtStringField( 'SubjectID', searchable=True, widget=StringWidget( label=_("Subject ID"), description=_("Human-subject ID the specimen is taken from."), visible={ 'edit': 'visible', 'view': 'visible', 'header_table': 'visible', 'sample_registered': { 'view': 'visible', 'edit': 'invisible' }, 'sample_due': { 'view': 'visible', 'edit': 'invisible' }, 'sampled': { 'view': 'visible', 'edit': 'invisible' }, 'sample_received': { 'view': 'visible', 'edit': 'invisible' }, 'expired': { 'view': 'visible', 'edit': 'invisible' }, 'disposed': { 'view': 'visible', 'edit': 'invisible' }, }, render_own_label=True, )), ExtStringField('Barcode', searchable=True, widget=StringWidget( label=_("Barcode"), description=_("Biospecimen barcode."), visible={ 'edit': 'visible', 'view': 'visible', 'header_table': 'visible', 'sample_registered': { 'view': 'visible', 'edit': 'invisible' }, 'sample_due': { 'view': 'visible', 'edit': 'invisible' }, 'sampled': { 'view': 'visible', 'edit': 'invisible' }, 'sample_received': { 'view': 'visible', 'edit': 'invisible' }, 'expired': { 'view': 'visible', 'edit': 'invisible' }, 'disposed': { 'view': 'visible', 'edit': 'invisible' }, }, render_own_label=True, )), ExtFixedPointField( 'Volume', required=1, default="0.00", widget=DecimalWidget( label=_("Volume"), size=15, description=_( "The The volume of the biospecimen taken from the subject." ), visible={ 'edit': 'visible', 'view': 'visible', 'header_table': 'visible', 'sample_registered': { 'view': 'visible', 'edit': 'visible' }, 'sample_due': { 'view': 'visible', 'edit': 'invisible' }, 'sampled': { 'view': 'visible', 'edit': 'invisible' }, 'sample_received': { 'view': 'visible', 'edit': 'invisible' }, 'expired': { 'view': 'visible', 'edit': 'invisible' }, 'disposed': { 'view': 'visible', 'edit': 'invisible' }, }, render_own_label=True, )), ExtStringField('Unit', widget=StringWidget( label=_("Unit"), visible={ 'edit': 'visible', 'view': 'visible', 'header_table': 'visible', 'sample_registered': { 'view': 'visible', 'edit': 'visible' }, 'sample_due': { 'view': 'visible', 'edit': 'invisible' }, 'sampled': { 'view': 'visible', 'edit': 'invisible' }, 'sample_received': { 'view': 'visible', 'edit': 'invisible' }, 'expired': { 'view': 'visible', 'edit': 'invisible' }, 'disposed': { 'view': 'visible', 'edit': 'invisible' }, }, render_own_label=True, )), ExtReferenceField( 'LinkedSample', vocabulary_display_path_bound=sys.maxsize, multiValue=1, allowed_types=('Sample', ), relationship='SampleSample', referenceClass=HoldingReference, mode="rw", read_permission=permissions.View, write_permission=permissions.ModifyPortalContent, widget=ReferenceWidget( label=_("Biospecimen"), visible={ 'edit': 'visible', 'view': 'visible', 'header_table': 'visible', 'sample_registered': { 'view': 'visible', 'edit': 'invisible' }, 'sample_due': { 'view': 'visible', 'edit': 'invisible' }, 'sampled': { 'view': 'visible', 'edit': 'invisible' }, 'sample_received': { 'view': 'visible', 'edit': 'invisible' }, 'expired': { 'view': 'visible', 'edit': 'invisible' }, 'disposed': { 'view': 'visible', 'edit': 'invisible' }, }, render_own_label=True, ), ), ExtDateTimeField( 'DateCreated', mode="rw", read_permission=permissions.View, write_permission=permissions.ModifyPortalContent, widget=DateTimeWidget( label=_("Date Created"), description=_("Define when the sample has been created."), show_time=True, visible={ 'edit': 'visible', 'view': 'visible', 'header_table': 'invisible', 'sample_registered': { 'view': 'visible', 'edit': 'invisible' }, 'sample_due': { 'view': 'visible', 'edit': 'invisible' }, 'sampled': { 'view': 'visible', 'edit': 'invisible' }, 'sample_received': { 'view': 'visible', 'edit': 'invisible' }, 'expired': { 'view': 'visible', 'edit': 'invisible' }, 'disposed': { 'view': 'visible', 'edit': 'invisible' }, }, render_own_label=True, ), ), ] def __init__(self, context): self.context = context def getOrder(self, schematas): return schematas def getFields(self): return self.fields
from bika.lims.browser.widgets import ReferenceWidget as bika_ReferenceWidget from bika.lims.content.bikaschema import BikaSchema from baobab.lims.interfaces import IDeviceHistory from baobab.lims import bikaMessageFactory as _ from baobab.lims.config import PROJECTNAME schema = BikaSchema.copy() + Schema(( ReferenceField('MonitoringDevice', allowed_types=('MonitoringDevice', ), relationship='DeviceHistoryMonitoringDevice', referenceClass=HoldingReference, widget=bika_ReferenceWidget( label=_("Monitoring Device"), visible={ 'edit': 'visible', 'view': 'visible' }, size=30, showOn=True, description=_("Select monitoring device."), )), ReferenceField('Freezer', allowed_types=('Freezer', ), relationship='DeviceHistoryFreezer', referenceClass=HoldingReference, widget=bika_ReferenceWidget( label=_("Freezer"), visible={ 'edit': 'visible', 'view': 'visible' }, size=30,
class SampleSchemaExtender(object): adapts(ISample) implements(IOrderableSchemaExtender) fields = [ ExtReferenceField( 'Project', required=True, allowed_types=('Project', ), relationship='InvoiceProject', referenceClass=HoldingReference, widget=bika_ReferenceWidget( label=_("Project"), # catalog_name='bika_catalog', visible={ 'edit': 'visible', 'view': 'visible', 'header_table': 'visible', 'sample_registered': { 'view': 'visible', 'edit': 'visible' }, 'sample_due': { 'view': 'visible', 'edit': 'visible' }, 'sampled': { 'view': 'visible', 'edit': 'invisible' }, 'sample_received': { 'view': 'visible', 'edit': 'visible' }, 'expired': { 'view': 'visible', 'edit': 'invisible' }, 'disposed': { 'view': 'visible', 'edit': 'invisible' }, }, size=30, showOn=True, render_own_label=True, description=_("Select the project of the sample."), )), ExtReferenceField( 'DiseaseOntology', allowed_types=('DiseaseOntology', ), relationship='SampleOntology', referenceClass=HoldingReference, widget=bika_ReferenceWidget( label=_("Disease Ontology"), catalog_name='bika_catalog', visible={ 'edit': 'visible', 'view': 'visible', 'header_table': 'visible', 'sample_registered': { 'view': 'visible', 'edit': 'visible' }, 'sample_due': { 'view': 'visible', 'edit': 'visible' }, 'sampled': { 'view': 'visible', 'edit': 'invisible' }, 'sample_received': { 'view': 'visible', 'edit': 'visible' }, 'expired': { 'view': 'visible', 'edit': 'invisible' }, 'disposed': { 'view': 'visible', 'edit': 'invisible' }, }, size=30, showOn=True, render_own_label=True, description=_("Select disease ontology of the sample."), )), ExtBooleanField( 'AllowSharing', default=False, # write_permission = ManageClients, widget=BooleanWidget( label=_("Allow Sharing"), description=_( "Check to allow researchers to share sample freely."), visible={ 'edit': 'visible', 'view': 'visible', 'header_table': 'visible', 'sample_registered': { 'view': 'visible', 'edit': 'visible' }, 'sample_due': { 'view': 'visible', 'edit': 'visible' }, 'sample_received': { 'view': 'visible', 'edit': 'visible' }, }, render_own_label=True, ), ), ExtBooleanField( 'WillReturnFromShipment', default=False, # write_permission = ManageClients, widget=BooleanWidget( label=_("Will Return From Shipment"), description=_("Indicates if sample will return if shipped."), visible={ 'edit': 'visible', 'view': 'visible', 'header_table': 'visible', 'sample_registered': { 'view': 'visible', 'edit': 'visible' }, }, render_own_label=True, ), ), ExtReferenceField('Donor', required=0, allowed_types=('SampleDonor', ), relationship='SampleDonor', referenceClass=HoldingReference, widget=bika_ReferenceWidget( label=_("Sample Donor"), catalog_name='bika_catalog', visible={ 'edit': 'visible', 'view': 'visible', 'header_table': 'visible', 'sample_registered': { 'view': 'visible', 'edit': 'visible' }, 'sample_due': { 'view': 'visible', 'edit': 'visible' }, 'sampled': { 'view': 'visible', 'edit': 'invisible' }, 'sample_received': { 'view': 'visible', 'edit': 'visible' }, 'expired': { 'view': 'visible', 'edit': 'invisible' }, 'disposed': { 'view': 'visible', 'edit': 'invisible' }, }, size=30, showOn=True, description=_("Select the sample donor."), )), ExtReferenceField( 'Kit', vocabulary_display_path_bound=sys.maxint, allowed_types=('Kit', ), relationship='SampleKit', referenceClass=HoldingReference, widget=bika_ReferenceWidget( label=_("Kit"), catalog_name='bika_catalog', visible={ 'view': 'visible', 'edit': 'visible', 'header_table': 'visible', 'sample_registered': { 'view': 'visible', 'edit': 'visible' }, 'sample_due': { 'view': 'visible', 'edit': 'visible' }, 'sampled': { 'view': 'visible', 'edit': 'invisible' }, 'sample_received': { 'view': 'visible', 'edit': 'visible' }, 'expired': { 'view': 'visible', 'edit': 'visible' }, 'disposed': { 'view': 'visible', 'edit': 'invisible' }, }, showOn=True, render_own_label=True, description=_("Select the kit of the sample if exists."), ), ), ExtReferenceField( 'Batch', vocabulary_display_path_bound=sys.maxint, allowed_types=('SampleBatch', ), relationship='SampleBatch', referenceClass=HoldingReference, widget=bika_ReferenceWidget( label=_("Batch"), catalog_name='bika_catalog', visible={ 'view': 'invisible', 'edit': 'invisible', 'header_table': 'invisible', 'sample_registered': { 'view': 'invisible', 'edit': 'invisible' }, 'sample_due': { 'view': 'invisible', 'edit': 'invisible' }, 'sample_received': { 'view': 'invisible', 'edit': 'invisible' }, }, showOn=True, render_own_label=True, description=_("Batch."), ), ), ExtReferenceField( 'StorageLocation', #required=True, allowed_types=('StoragePosition', ), relationship='ItemStorageLocation', widget=bika_ReferenceWidget( label=_("Storage Location"), description=_("Location where item is kept"), size=40, visible={ 'edit': 'visible', 'view': 'visible', 'header_table': 'visible', 'sample_registered': { 'view': 'visible', 'edit': 'visible' }, 'sample_due': { 'view': 'visible', 'edit': 'visible' }, 'sampled': { 'view': 'visible', 'edit': 'invisible' }, 'sample_received': { 'view': 'visible', 'edit': 'visible' }, 'expired': { 'view': 'visible', 'edit': 'invisible' }, 'disposed': { 'view': 'visible', 'edit': 'invisible' }, }, catalog_name='portal_catalog', showOn=True, render_own_label=True, base_query={ 'inactive_state': 'active', 'review_state': 'available', 'object_provides': ISampleStorageLocation.__identifier__ }, colModel=[{ 'columnName': 'UID', 'hidden': True }, { 'columnName': 'Title', 'width': '50', 'label': _('Title') }], )), ExtReferenceField( 'ReservedLocation', # required=True, allowed_types=('StoragePosition', ), relationship='ReservedItemStorageLocation', widget=bika_ReferenceWidget( label=_("Reserved Storage Location"), description=_("Location reserved for this sample"), size=40, visible={ 'edit': 'invisible', 'view': 'invisible' }, catalog_name='portal_catalog', )), ExtStringField( 'SubjectID', searchable=True, widget=StringWidget( label=_("Subject ID"), description=_("Human-subject ID the specimen is taken from."), visible={ 'edit': 'visible', 'view': 'visible', 'header_table': 'visible', 'sample_registered': { 'view': 'visible', 'edit': 'visible' }, 'sample_due': { 'view': 'visible', 'edit': 'visible' }, 'sampled': { 'view': 'visible', 'edit': 'invisible' }, 'sample_received': { 'view': 'visible', 'edit': 'visible' }, 'expired': { 'view': 'visible', 'edit': 'invisible' }, 'disposed': { 'view': 'visible', 'edit': 'invisible' }, }, render_own_label=True, )), ExtStringField('Barcode', required=0, searchable=True, widget=StringWidget( label=_("Barcode"), description=_("Biospecimen barcode."), visible={ 'edit': 'visible', 'view': 'visible', 'header_table': 'visible', 'sample_registered': { 'view': 'visible', 'edit': 'visible' }, 'sample_due': { 'view': 'visible', 'edit': 'visible' }, 'sampled': { 'view': 'visible', 'edit': 'invisible' }, 'sample_received': { 'view': 'visible', 'edit': 'visible' }, 'expired': { 'view': 'visible', 'edit': 'invisible' }, 'disposed': { 'view': 'visible', 'edit': 'invisible' }, }, render_own_label=True, )), ExtFixedPointField( 'Volume', required=1, default="0.00", widget=DecimalWidget( label=_("Volume"), size=15, description=_( "The volume of the biospecimen taken from the subject."), visible={ 'edit': 'visible', 'view': 'visible', 'header_table': 'visible', 'sample_registered': { 'view': 'visible', 'edit': 'visible' }, 'sample_due': { 'view': 'visible', 'edit': 'visible' }, 'sampled': { 'view': 'visible', 'edit': 'invisible' }, 'sample_received': { 'view': 'visible', 'edit': 'visible' }, 'expired': { 'view': 'visible', 'edit': 'invisible' }, 'disposed': { 'view': 'visible', 'edit': 'invisible' }, }, render_own_label=True, )), ExtStringField('Unit', default="ml", widget=StringWidget( label=_("Unit"), visible={ 'edit': 'visible', 'view': 'visible', 'header_table': 'visible', 'sample_registered': { 'view': 'visible', 'edit': 'visible' }, 'sample_due': { 'view': 'visible', 'edit': 'visible' }, 'sampled': { 'view': 'visible', 'edit': 'invisible' }, 'sample_received': { 'view': 'visible', 'edit': 'visible' }, 'expired': { 'view': 'visible', 'edit': 'invisible' }, 'disposed': { 'view': 'visible', 'edit': 'invisible' }, }, render_own_label=True, )), ExtReferenceField( 'LinkedSample', vocabulary_display_path_bound=sys.maxsize, multiValue=1, allowed_types=('Sample', ), relationship='SampleSample', referenceClass=HoldingReference, mode="rw", read_permission=permissions.View, write_permission=permissions.ModifyPortalContent, widget=bika_ReferenceWidget( label=_("Parent Biospecimen"), description=_( "Create an Aliquot of the biospecimen selected."), visible={ 'edit': 'visible', 'view': 'visible', 'header_table': 'visible', 'sample_registered': { 'view': 'visible', 'edit': 'visible' }, 'sample_due': { 'view': 'visible', 'edit': 'visible' }, 'sampled': { 'view': 'visible', 'edit': 'invisible' }, 'sample_received': { 'view': 'visible', 'edit': 'visible' }, 'expired': { 'view': 'visible', 'edit': 'invisible' }, 'disposed': { 'view': 'visible', 'edit': 'invisible' }, }, showOn=True, render_own_label=True, base_query={ 'cancellation_state': 'active', 'review_state': 'sample_received' }, colModel=[{ 'columnName': 'UID', 'hidden': True }, { 'columnName': 'Title', 'width': '50', 'label': _('Title') }, { "columnName": "LocationTitle", "align": "left", "label": "Location", "width": "50" }], ), ), ExtDateTimeField( 'DateCreated', mode="rw", read_permission=permissions.View, write_permission=permissions.ModifyPortalContent, widget=DateTimeWidget( label=_("Date Created"), description=_("Define when the sample has been created."), show_time=True, visible={ 'edit': 'visible', 'view': 'visible', 'header_table': 'invisible', 'sample_registered': { 'view': 'visible', 'edit': 'visible' }, 'sample_due': { 'view': 'visible', 'edit': 'visible' }, 'sampled': { 'view': 'visible', 'edit': 'invisible' }, 'sample_received': { 'view': 'visible', 'edit': 'visible' }, 'expired': { 'view': 'visible', 'edit': 'invisible' }, 'disposed': { 'view': 'visible', 'edit': 'invisible' }, }, render_own_label=True, ), ), ExtComputedField( 'LocationTitle', searchable=True, expression= "here.getStorageLocation() and here.getStorageLocation().Title() or ''", widget=ComputedWidget(visible=False, ), ), ExtStringField( 'AnatomicalSiteTerm', searchable=True, widget=StringWidget( label=_("Anatomical site term"), description=_( 'The ICD-O-3 topography code for describing the anatomical source of ' 'the sampled material'), visible={ 'edit': 'visible', 'view': 'visible', 'header_table': 'visible', 'sample_registered': { 'view': 'visible', 'edit': 'visible' }, 'sample_due': { 'view': 'visible', 'edit': 'visible' }, 'sampled': { 'view': 'visible', 'edit': 'invisible' }, 'sample_received': { 'view': 'visible', 'edit': 'visible' }, 'expired': { 'view': 'visible', 'edit': 'invisible' }, 'disposed': { 'view': 'visible', 'edit': 'invisible' }, }, render_own_label=True, )), ExtStringField( 'AnatomicalSiteDescription', widget=TextAreaWidget( label=_("Anatomical site description"), description= _('The anatomical position of the body where the solid sample was taken from' ), visible={ 'edit': 'visible', 'view': 'visible', 'header_table': 'visible', 'sample_registered': { 'view': 'visible', 'edit': 'visible' }, 'sample_due': { 'view': 'visible', 'edit': 'visible' }, 'sampled': { 'view': 'visible', 'edit': 'invisible' }, 'sample_received': { 'view': 'visible', 'edit': 'visible' }, 'expired': { 'view': 'visible', 'edit': 'invisible' }, 'disposed': { 'view': 'visible', 'edit': 'invisible' }, }, render_own_label=True, )), ] def __init__(self, context): self.context = context def getOrder(self, schematas): sch = schematas['default'] sch.remove('Project') sch.remove('Kit') sch.insert(sch.index('SampleType'), 'Project') sch.insert(sch.index('SampleType'), 'Kit') return schematas def getFields(self): return self.fields
class SampleSchemaExtender(object): adapts(ISample) implements(IOrderableSchemaExtender) fields = [ ExtReferenceField( 'Project', required=True, allowed_types=('Project', ), relationship='SampleProject', mode="rw", read_permission=permissions.View, write_permission=permissions.ModifyPortalContent, widget=bika_ReferenceWidget( label=_("Project"), description=_("Select the project of the sample."), render_own_label=True, size=50, # catalog_name='bika_catalog', # visible=False, visible={ 'edit': 'visible', 'view': 'visible', 'header_table': 'visible', 'sample_registered': { 'view': 'visible', 'edit': 'visible' }, 'sample_due': { 'view': 'visible', 'edit': 'visible' }, 'sampled': { 'view': 'visible', 'edit': 'invisible' }, 'sample_received': { 'view': 'visible', 'edit': 'visible' }, 'expired': { 'view': 'visible', 'edit': 'invisible' }, 'disposed': { 'view': 'visible', 'edit': 'invisible' }, }, base_query={'inactive_state': 'active'}, colModel=[{ "columnName": "UID", "hidden": True }, { "columnName": "Title", "align": "left", "width": "60", "label": "Title" }, { "columnName": "Description", "align": "left", "label": "Description", "width": "40" }], showOn=True, )), ExtBooleanField( 'WillReturnFromShipment', default=False, # write_permission = ManageClients, widget=BooleanWidget( label=_("Will Return From Shipment"), description=_("Indicates if sample will return if shipped."), visible={ 'edit': 'invisible', 'view': 'invisible', 'header_table': 'invisible', 'sample_registered': { 'view': 'invisible', 'edit': 'invisible' }, }, render_own_label=True, ), ), ExtReferenceField( 'Kit', vocabulary_display_path_bound=sys.maxint, allowed_types=('Kit', ), relationship='SampleKit', referenceClass=HoldingReference, widget=bika_ReferenceWidget( label=_("Kit"), catalog_name='bika_catalog', # visible=False, visible={ 'view': 'visible', 'edit': 'visible', 'header_table': 'visible', 'sample_registered': { 'view': 'visible', 'edit': 'visible' }, 'sample_due': { 'view': 'visible', 'edit': 'visible' }, 'sampled': { 'view': 'visible', 'edit': 'invisible' }, 'sample_received': { 'view': 'visible', 'edit': 'visible' }, 'expired': { 'view': 'visible', 'edit': 'visible' }, 'disposed': { 'view': 'visible', 'edit': 'invisible' }, }, showOn=True, render_own_label=True, description=_("Select the kit of the sample if exists."), ), ), ExtReferenceField( 'SampleType', required=1, vocabulary_display_path_bound=sys.maxsize, allowed_types=('SampleType', ), relationship='SampleSampleType', referenceClass=HoldingReference, mode="rw", read_permission=permissions.View, write_permission=permissions.ModifyPortalContent, widget=bika_ReferenceWidget( label=_("Sample Type"), render_own_label=True, size=60, visible={ 'edit': 'visible', 'view': 'visible', 'header_table': 'visible', 'sample_registered': { 'view': 'visible', 'edit': 'visible' }, 'to_be_sampled': { 'view': 'visible', 'edit': 'invisible' }, 'scheduled_sampling': { 'view': 'visible', 'edit': 'visible' }, 'sampled': { 'view': 'visible', 'edit': 'invisible' }, 'to_be_preserved': { 'view': 'visible', 'edit': 'invisible' }, 'sample_due': { 'view': 'visible', 'edit': 'visible' }, 'sample_received': { 'view': 'visible', 'edit': 'visible' }, 'expired': { 'view': 'visible', 'edit': 'invisible' }, 'disposed': { 'view': 'visible', 'edit': 'invisible' }, 'rejected': { 'view': 'visible', 'edit': 'invisible' }, }, catalog_name='bika_setup_catalog', base_query={'inactive_state': 'active'}, colModel=[{ 'columnName': 'UID', 'hidden': True }, { 'columnName': 'Title', "align": "left", 'width': '60', 'label': _('Title') }, { "columnName": "Description", "align": "left", "label": "Description", "width": "40" }], showOn=True, ), ), ExtReferenceField( 'Batch', vocabulary_display_path_bound=sys.maxint, allowed_types=('SampleBatch', ), relationship='SampleBatch', referenceClass=HoldingReference, widget=bika_ReferenceWidget( label=_("Batch"), catalog_name='bika_catalog', visible={ 'view': 'invisible', 'edit': 'invisible', 'header_table': 'invisible', 'sample_registered': { 'view': 'invisible', 'edit': 'invisible' }, 'sample_due': { 'view': 'invisible', 'edit': 'invisible' }, 'sample_received': { 'view': 'invisible', 'edit': 'invisible' }, }, showOn=True, render_own_label=True, description=_("Batch."), ), ), ExtReferenceField( 'StorageLocation', #required=True, allowed_types=('StoragePosition', ), relationship='ItemStorageLocation', widget=bika_ReferenceWidget( label=_("Storage Location"), description=_("Location where item is kept"), size=50, visible={ 'edit': 'visible', 'view': 'visible', 'header_table': 'visible', 'sample_registered': { 'view': 'visible', 'edit': 'visible' }, 'sample_due': { 'view': 'visible', 'edit': 'visible' }, 'sampled': { 'view': 'visible', 'edit': 'invisible' }, 'sample_received': { 'view': 'visible', 'edit': 'visible' }, 'expired': { 'view': 'visible', 'edit': 'invisible' }, 'disposed': { 'view': 'visible', 'edit': 'invisible' }, }, catalog_name='portal_catalog', showOn=True, render_own_label=True, base_query={ 'inactive_state': 'active', 'review_state': 'available', 'object_provides': ISampleStorageLocation.__identifier__ }, colModel=[{ 'columnName': 'UID', 'hidden': True }, { 'columnName': 'Title', "align": "left", 'width': '100', 'label': _('Title') }], )), ExtReferenceField( 'ReservedLocation', # required=True, allowed_types=('StoragePosition', ), relationship='ReservedItemStorageLocation', widget=bika_ReferenceWidget( label=_("Reserved Storage Location"), description=_("Location reserved for this sample"), size=40, visible={ 'edit': 'invisible', 'view': 'invisible' }, catalog_name='portal_catalog', )), ExtReferenceField( 'SampleCondition', allowed_types=('SampleCondition', ), relationship='SampleSampleCondition', widget=bika_ReferenceWidget(visible=False, ), ), ExtStringField( 'SubjectID', required=1, searchable=True, widget=StringWidget( label=_("Subject ID"), description=_("Human-subject ID the specimen is taken from."), visible={ 'edit': 'visible', 'view': 'visible', 'header_table': 'visible', 'sample_registered': { 'view': 'visible', 'edit': 'visible' }, 'sample_due': { 'view': 'visible', 'edit': 'visible' }, 'sampled': { 'view': 'visible', 'edit': 'invisible' }, 'sample_received': { 'view': 'visible', 'edit': 'visible' }, 'expired': { 'view': 'visible', 'edit': 'invisible' }, 'disposed': { 'view': 'visible', 'edit': 'invisible' }, }, render_own_label=True, )), ExtStringField('Barcode', required=0, searchable=True, widget=StringWidget( label=_("Barcode"), description=_("Biospecimen barcode."), visible={ 'edit': 'visible', 'view': 'visible', 'header_table': 'visible', 'sample_registered': { 'view': 'visible', 'edit': 'visible' }, 'sample_due': { 'view': 'visible', 'edit': 'visible' }, 'sampled': { 'view': 'visible', 'edit': 'invisible' }, 'sample_received': { 'view': 'visible', 'edit': 'visible' }, 'expired': { 'view': 'visible', 'edit': 'invisible' }, 'disposed': { 'view': 'visible', 'edit': 'invisible' }, }, render_own_label=True, )), ExtFixedPointField( 'Volume', required=1, default="0.00", widget=DecimalWidget( label=_("Volume"), size=15, description= _("The volume of the biospecimen taken from the subject. For placenta parent biospecimen, enter Placenta Weight here." ), visible={ 'edit': 'visible', 'view': 'visible', 'header_table': 'visible', 'sample_registered': { 'view': 'visible', 'edit': 'visible' }, 'sample_due': { 'view': 'visible', 'edit': 'visible' }, 'sampled': { 'view': 'visible', 'edit': 'invisible' }, 'sample_received': { 'view': 'visible', 'edit': 'visible' }, 'expired': { 'view': 'visible', 'edit': 'invisible' }, 'disposed': { 'view': 'visible', 'edit': 'invisible' }, }, render_own_label=True, )), ExtStringField( 'ChangeUserName', widget=StringWidget( label=_('ChangeUserName'), description=_( 'The user who created or last made a change to this sample.' ), visible={ 'view': 'invisible', 'edit': 'invisible' })), ExtDateTimeField( 'ChangeDateTime', widget=StringWidget( label=_('ChangeDateTime'), description= _('The date and time when the sample was created or last updated.' ), visible={ 'view': 'invisible', 'edit': 'invisible' })), ExtStringField( 'Unit', required=1, default="", # vocabulary=UnitsVocabulary(), vocabulary='getUnits', # widget=SelectionWidget( widget=BikaSelectionWidget( format='select', label=_("Unit"), description=_('The unit for Volume'), visible={ 'edit': 'visible', 'view': 'visible', 'header_table': 'visible', 'sample_registered': { 'view': 'visible', 'edit': 'visible' }, 'sample_due': { 'view': 'visible', 'edit': 'visible' }, 'sampled': { 'view': 'visible', 'edit': 'invisible' }, 'sample_received': { 'view': 'visible', 'edit': 'visible' }, 'expired': { 'view': 'visible', 'edit': 'invisible' }, 'disposed': { 'view': 'visible', 'edit': 'invisible' }, }, render_own_label=True, showOn=True, )), ExtStringField( 'BabyNumber', default="0", vocabulary='getBabyNumber', # widget=SelectionWidget( widget=BikaSelectionWidget( format='select', label=_("Baby No. (if applicable)"), description= _('Indicate baby number if the sample is collected from a baby.' ), visible={ 'edit': 'visible', 'view': 'visible', }, render_own_label=True, showOn=True, )), ExtReferenceField( 'LinkedSample', vocabulary_display_path_bound=sys.maxsize, multiValue=1, allowed_types=('Sample', ), relationship='SampleSample', referenceClass=HoldingReference, mode="rw", read_permission=permissions.View, write_permission=permissions.ModifyPortalContent, widget=bika_ReferenceWidget( label=_("Parent Biospecimen"), description=_( "Create an Aliquot of the biospecimen selected."), visible={ 'edit': 'visible', 'view': 'visible', 'header_table': 'visible', 'sample_registered': { 'view': 'visible', 'edit': 'visible' }, 'sample_due': { 'view': 'visible', 'edit': 'visible' }, 'sampled': { 'view': 'visible', 'edit': 'invisible' }, 'sample_received': { 'view': 'visible', 'edit': 'visible' }, 'expired': { 'view': 'visible', 'edit': 'invisible' }, 'disposed': { 'view': 'visible', 'edit': 'invisible' }, }, showOn=True, render_own_label=True, base_query={ 'cancellation_state': 'active', 'review_state': 'sample_received' }, colModel=[{ 'columnName': 'UID', 'hidden': True }, { 'columnName': 'Title', 'width': '50', 'label': _('Title') }, { "columnName": "LocationTitle", "align": "left", "label": "Location", "width": "50" }], ), ), ExtDateTimeField( 'DateCreated', mode="rw", read_permission=permissions.View, write_permission=permissions.ModifyPortalContent, widget=DateTimeWidget( label=_("Date Created"), description=_("Define when the sample has been created."), show_time=True, visible={ 'edit': 'visible', 'view': 'visible', 'header_table': 'invisible', 'sample_registered': { 'view': 'visible', 'edit': 'visible' }, 'sample_due': { 'view': 'visible', 'edit': 'visible' }, 'sampled': { 'view': 'visible', 'edit': 'invisible' }, 'sample_received': { 'view': 'visible', 'edit': 'visible' }, 'expired': { 'view': 'visible', 'edit': 'invisible' }, 'disposed': { 'view': 'visible', 'edit': 'invisible' }, }, render_own_label=True, ), ), ExtComputedField( 'LocationTitle', searchable=True, expression= "here.getStorageLocation() and here.getStorageLocation().Title() or ''", widget=ComputedWidget(visible=False, ), ), ExtDateTimeField( 'FrozenTime', mode="rw", read_permission=permissions.View, write_permission=permissions.ModifyPortalContent, widget=DateTimeWidget( label=_("Frozen Time"), description=_("Define when this aliquot was frozen."), show_time=True, visible={ 'edit': 'visible', 'view': 'visible', 'header_table': 'invisible', 'sample_registered': { 'view': 'visible', 'edit': 'visible' }, 'sample_due': { 'view': 'visible', 'edit': 'visible' }, 'sampled': { 'view': 'visible', 'edit': 'invisible' }, 'sample_received': { 'view': 'visible', 'edit': 'visible' }, 'expired': { 'view': 'visible', 'edit': 'invisible' }, 'disposed': { 'view': 'visible', 'edit': 'invisible' }, }, render_own_label=True, ), ), ] def __init__(self, context): self.context = context def getOrder(self, schematas): sch = schematas['default'] sch.remove('Project') sch.remove('Kit') sch.insert(sch.index('SampleType'), 'Project') sch.insert(sch.index('SampleType'), 'Kit') return schematas def getFields(self): return self.fields
@indexer(IBiospecimen) def get_biospecimen_project_uid(instance): return instance.getKit().getProject().UID() schema = BikaFolderSchema.copy() + BikaSchema.copy() + Schema(( ReferenceField( 'Type', vocabulary_display_path_bound=sys.maxint, allowed_types=('BiospecType',), relationship='BiospecimenType', referenceClass=HoldingReference, widget=bika_ReferenceWidget( label=_("Biospecimen type"), catalog_name='bika_setup_catalog', size=30, showOn=True, description=_("Click and select a biospecimen type."), visible={'view': 'invisible', 'edit': 'visible'} ) ), ReferenceField('Kit', vocabulary_display_path_bound=sys.maxint, allowed_types=('Kit',), relationship='BiospecimenKit', referenceClass=HoldingReference, widget=bika_ReferenceWidget( label=_("Kit"), catalog_name='bika_catalog', visible={'view': 'invisible', 'edit': 'visible'} )),
# ui_item='ProductTitle', # search_fields=('ProductTitle', 'id',), # colModel=[{'columnName': 'UID', 'hidden': True}, # {'columnName': 'id', 'width': '35', 'label': _("Stock Item ID"), 'align': 'left'}, # {'columnName': 'ProductTitle', 'width': '65', 'label': _('Product'), 'align': 'left'}, # ], # )), ReferenceField('Sample', vocabulary_display_path_bound=sys.maxint, allowed_types=('Aliquot', 'Biospecimen',), relationship='AliquotLocation', referenceClass=HoldingReference, widget=bika_ReferenceWidget( label=_("Sample"), showOn=True, description=_("Start typing to filter the list of available samples."), )), ReferenceField( 'ParentBox', required=1, allowed_types=('StorageManagement',), referenceClass=HoldingReference, relationship='StorageManagementLocation', widget=bika_ReferenceWidget( label=_('Box/Cane'), size=30, catalog_name='bika_setup_catalog', base_query={'inactive_state': 'active'}, showOn=True,