Exemple #1
0
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
Exemple #2
0

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,
        )
    ),
Exemple #3
0
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,
Exemple #4
0
        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', }
Exemple #6
0
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."),
        )
Exemple #7
0
    )
)

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."),
Exemple #8
0
     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,
Exemple #9
0
 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",
Exemple #10
0
@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'}
        )),
Exemple #11
0
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'
Exemple #12
0
@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',
Exemple #13
0

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."),
        )),
Exemple #14
0
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'
Exemple #15
0
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(
Exemple #16
0
@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,
Exemple #17
0
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
Exemple #18
0
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,
Exemple #19
0
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
Exemple #20
0
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
Exemple #21
0
@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,