class AnalysisRequestSchemaExtender(object): adapts(IAnalysisRequest) implements(IOrderableSchemaExtender) fields = [ ExtReferenceField( 'Doctor', allowed_types=('Doctor', ), referenceClass=HoldingReference, relationship='AnalysisRequestDoctor', widget=ReferenceWidget( label=_('Doctor'), size=20, render_own_label=True, visible={ 'edit': 'visible', 'view': 'visible', 'add': 'edit', 'header_table': 'visible', 'secondary': 'disabled' }, catalog_name='portal_catalog', base_query={'inactive_state': 'active'}, showOn=True, ), ), ExtComputedField( 'DoctorUID', expression= 'context.getDoctor() and context.getDoctor().UID() or None', widget=ComputedWidget(visible=False, ), ), ExtReferenceField( 'Patient', required=1, allowed_types=('Patient', ), referenceClass=HoldingReference, relationship='AnalysisRequestPatient', read_permission=hpermissions.ViewPatients, write_permission=permissions.ModifyPortalContent, widget=ReferenceWidget( label=_('Patient'), size=20, render_own_label=True, visible={ 'edit': 'visible', 'view': 'visible', 'add': 'edit', 'secondary': 'disabled' }, catalog_name='bika_patient_catalog', base_query={'inactive_state': 'active'}, showOn=True, ), ), ExtComputedField( 'PatientID', expression= "context.Schema()['Patient'].get(context).getPatientID() if context.Schema()['Patient'].get(context) else None", mode="r", read_permission=hpermissions.ViewPatients, write_permission=permissions.ModifyPortalContent, widget=ComputedWidget(visible=True, ), ), ExtComputedField( 'PatientUID', expression= "context.Schema()['Patient'].get(context).UID() if context.Schema()['Patient'].get(context) else None", widget=ComputedWidget(visible=False, ), ), BooleanField( 'PanicEmailAlertToClientSent', default=False, widget=BooleanWidget(visible={ 'edit': 'invisible', 'view': 'invisible', 'add': 'invisible' }, ), ), ExtStringField( 'ClientPatientID', searchable=True, required=0, read_permission=hpermissions.ViewPatients, write_permission=permissions.ModifyPortalContent, widget=ReferenceWidget( label=_("Client Patient ID"), size=20, colModel=[ { 'columnName': 'id', 'width': '20', 'label': _('Patient ID'), 'align': 'left' }, { 'columnName': 'ClientPatientID', 'width': '20', 'label': _('Client PID'), 'align': 'left' }, { 'columnName': 'Title', 'width': '60', 'label': _('Fullname'), 'align': 'left' }, { 'columnName': 'UID', 'hidden': True }, ], ui_item='ClientPatientID', search_query='', discard_empty=('ClientPatientID', ), search_fields=('ClientPatientID', ), portal_types=('Patient', ), render_own_label=True, visible={ 'edit': 'visible', 'view': 'visible', 'add': 'edit', }, catalog_name='bika_patient_catalog', base_query={'inactive_state': 'active'}, showOn=True, ), ), ] def getOrder(self, schematas): default = schematas['default'] default.remove('Patient') default.remove('Doctor') default.remove('ClientPatientID') default.insert(default.index('Template'), 'ClientPatientID') default.insert(default.index('Template'), 'Patient') default.insert(default.index('Template'), 'Doctor') schematas['default'] = default return schematas def __init__(self, context): self.context = context def getFields(self): return self.fields
visible={ "edit": "visible", "view": "visible", "add": "visible", "secondary": "invisible", }, catalog_name="bika_setup_catalog", base_query={"is_active": True}, showOn=True, ), ), ComputedField( "SamplePointUID", expression= "context.Schema()['SamplePoint'].get(context) and context.Schema()['SamplePoint'].get(context).UID() or ''", widget=ComputedWidget(visible=False, ), ), ReferenceField( "SampleType", vocabulary_display_path_bound=sys.maxint, allowed_types=("SampleType", ), relationship="ARTemplateSampleType", referenceClass=HoldingReference, accessor="getSampleType", edit_accessor="getSampleType", mutator="setSampleType", widget=ReferenceWidget( label=_("Sample Type"), description=_("Create a new sample of this type"), visible={ "edit": "visible",
from Products.ATContentTypes.interface import IATLink, IATContentType from Products.PloneArticle.proxy import BaseInnerContentProxy, \ BaseInnerContentProxySchema from Products.PloneArticle.interfaces import ILinkInnerContentProxy from Products.PloneArticle.config import PROJECTNAME # Defines schema LinkInnerContentProxySchema = BaseInnerContentProxySchema.copy() + Schema(( ComputedField( 'remoteUrl', primary=True, expression="""context.getPrimaryValue('')""", widget=ComputedWidget( label='Remote url', label_msgid='label_remote_url', i18n_domain='plonearticle', ), ), ReferenceField( 'referencedContent', relationship='article_link', widget=ReferenceBrowserWidget( label='Referenced link', label_msgid='label_referenced_link', i18n_domain='plonearticle', ), ), StringField( 'attachedLink', widget=StringWidget(
vocabulary_display_path_bound=sys.maxint, vocabulary='_getAvailableInstrumentsDisplayList', allowed_types=('Instrument',), relationship='AnalysisServiceInstrument', referenceClass=HoldingReference, widget=SelectionWidget( format='select', label=_('Default Instrument') ), ), # Returns the Default's instrument title. If no default instrument # set, returns string.empty ComputedField('InstrumentTitle', expression="context.getInstrument() and context.getInstrument().Title() or ''", widget=ComputedWidget( visible=False, ), ), # Manual methods associated to the AS # List of methods capable to perform the Analysis Service. The # Methods selected here are displayed in the Analysis Request # Add view, closer to this Analysis Service if selected. # Use getAvailableMethods() to retrieve the list with methods both # from selected instruments and manually entered. # Behavior controlled by js depending on ManualEntry/Instrument: # - If InstrumentEntry checked, hide and unselect # - If InsrtumentEntry not checked, show # See browser/js/bika.lims.analysisservice.edit.js ReferenceField('Methods', schemata = "Method", required = 0,
), StringField( "Surname", required=1, widget=StringWidget( label=_("Surname"), ), ), ComputedField( "Fullname", expression="context.getFullname()", searchable=1, widget=ComputedWidget( label=_("Full Name"), visible={"edit": "invisible", "view": "invisible"}, ), ), StringField( "Username", widget=StringWidget( visible=False ), ), StringField( "EmailAddress", schemata="Email Telephone Fax", searchable=1, widget=StringWidget(
StringField( 'description', isMetadata=1, accessor='Description', widget=TextAreaWidget( label='Description', label_msgid="label_blogfolder_description", description_msgid="help_blogfolder_description", i18n_domain="SimpleBlog", description='Breve descripciĆ³n para este folder.'), ), ComputedField('existingCats', expression='here.getInheritedCategories()', widget=ComputedWidget( label='Existing categories.', label_msgid="label_blogfolder_existing_cats", i18n_domain="SimpleBlog", )), LinesField( 'categories', widget=LinesWidget( label='Additional categories', label_msgid="label_additional_categories", description_msgid="help_additional_categories", i18n_domain="SimpleBlog", description= 'Supply a list of possible additional categories that will be available to BlogEntries inside this folder or in sub folders.' ), )))
class AnalysisRequestSchemaExtender(object): adapts(IAnalysisRequest) implements(IOrderableSchemaExtender) def __init__(self, context): self.context = context fields = [ ExtReferenceField( 'Doctor', allowed_types=('Doctor', ), referenceClass=HoldingReference, relationship='AnalysisRequestDoctor', widget=ReferenceWidget( label=_('Doctor'), size=20, render_own_label=True, visible={ 'edit': 'visible', 'view': 'visible', 'add': 'edit', 'header_table': 'visible', 'secondary': 'disabled' }, catalog_name='portal_catalog', base_query={'inactive_state': 'active'}, showOn=True, add_button={ 'visible': True, 'url': 'doctors/portal_factory/Doctor/new/edit', 'return_fields': ['Firstname', 'Surname'], }), ), ExtComputedField( 'DoctorUID', # It looks like recursive, but we must pass through the Schema to obtain data. In this way we allow to LIMS obtain it. expression="context._getDoctorUID()", widget=ComputedWidget(visible=False, ), ), ExtReferenceField( 'Patient', required=1, allowed_types=('Patient', ), referenceClass=HoldingReference, relationship='AnalysisRequestPatient', read_permission=ViewPatients, write_permission=permissions.ModifyPortalContent, widget=ReferenceWidget( label=_('Patient'), size=20, render_own_label=True, visible={ 'edit': 'visible', 'view': 'visible', 'add': 'edit', 'secondary': 'disabled' }, catalog_name='bikahealth_catalog_patient_listing', base_query={'inactive_state': 'active'}, colModel=[ { 'columnName': 'Title', 'width': '30', 'label': _('Title'), 'align': 'left' }, # UID is required in colModel { 'columnName': 'UID', 'hidden': True }, ], showOn=True, add_button={ 'visible': True, 'url': 'patients/portal_factory/Patient/new/edit', 'return_fields': ['Firstname', 'Surname'], 'js_controllers': [ '#patient-base-edit', ], 'overlay_handler': 'HealthPatientOverlayHandler', }), ), ExtComputedField( 'PatientID', expression= "context.Schema()['Patient'].get(context).getPatientID() if context.Schema()['Patient'].get(context) else None", mode="r", read_permission=ViewPatients, write_permission=permissions.ModifyPortalContent, widget=ComputedWidget(visible=True, ), ), ExtComputedField( 'PatientUID', expression="here._getPatientUID()", widget=ComputedWidget(visible=False, ), ), BooleanField( 'PanicEmailAlertToClientSent', default=False, widget=BooleanWidget(visible={ 'edit': 'invisible', 'view': 'invisible', 'add': 'invisible' }, ), ), ExtStringField( 'ClientPatientID', searchable=True, required=1, read_permission=ViewPatients, write_permission=permissions.ModifyPortalContent, widget=ReferenceWidget( label=_("Client Patient ID"), size=20, colModel=[ { 'columnName': 'id', 'width': '20', 'label': _('Patient ID'), 'align': 'left' }, { 'columnName': 'getClientPatientID', 'width': '20', 'label': _('Client PID'), 'align': 'left' }, { 'columnName': 'Title', 'width': '60', 'label': _('Fullname'), 'align': 'left' }, { 'columnName': 'UID', 'hidden': True }, ], ui_item='getClientPatientID', search_query='', discard_empty=('ClientPatientID', ), search_fields=('ClientPatientID', ), portal_types=('Patient', ), render_own_label=True, visible={ 'edit': 'visible', 'view': 'visible', 'add': 'edit', }, catalog_name='bikahealth_catalog_patient_listing', base_query={'inactive_state': 'active'}, showOn=True, ), ), ] def getOrder(self, schematas): default = schematas['default'] default.remove('Patient') default.remove('Doctor') default.remove('ClientPatientID') default.insert(default.index('Template'), 'ClientPatientID') default.insert(default.index('Template'), 'Patient') default.insert(default.index('Template'), 'Doctor') schematas['default'] = default return schematas def getFields(self): return self.fields
from Products.PloneArticle import LOG from Products.PloneArticle.proxy import BaseFileContentProxy, \ BaseInnerContentProxySchema from Products.PloneArticle.interfaces import IImageInnerContentProxy, IBaseInnerContentProxy from Products.PloneArticle.config import PLONEARTICLE_TOOL, PROJECTNAME # Defines schema ImageInnerContentProxySchema = BaseInnerContentProxySchema.copy() + Schema(( ComputedField( 'image', primary=True, expression="""context.getPrimaryValue('image', 'attachedImage', '')""", widget=ComputedWidget( label='Image', label_msgid='label_image', i18n_domain='plonearticle', ), ), ReferenceField( 'referencedContent', relationship='article_image', keepReferencesOnCopy=True, widget=ReferenceBrowserWidget( label='Referenced image', label_msgid='label_referenced_image', i18n_domain='plonearticle', ), ), ImageField( 'attachedImage',
TextField( "Remarks", allowable_content_types=("text/plain",), widget=TextAreaWidget( label=_("Remarks"), ) ), # Custom settings for the assigned analysis services # https://jira.bikalabs.com/browse/LIMS-1324 # Fields: # - uid: Analysis Service UID # - hidden: True/False. Hide/Display in results reports RecordsField('AnalysisServicesSettings', required=0, subfields=('uid', 'hidden',), widget=ComputedWidget(visible=False), ), StringField('CommercialID', searchable=1, required=0, schemata='Accounting', widget=StringWidget( visible={'view': 'visible', 'edit': 'visible'}, label=_('Commercial ID'), description=_("The profile's commercial ID for accounting purposes."), ), ), # When it's set, the system uses the analysis profile's price to quote and the system's VAT is overridden by the # the analysis profile's specific VAT BooleanField('UseAnalysisProfilePrice', default=False,
'Please input the transaction PST. (NOT available after July, 2010)', size=8, thousands_commas=True, dollars_and_cents=True, ), ), # transaction total ComputedField( 'bk_transaction_total', searchable=False, required=False, expression='context.transactionTotal()', widget=ComputedWidget( label='Transaction Total', description= 'Please input the transaction PST. (NOT available after July, 2010)', ), ), # TODO: image field for the receipt / invoice )) finalizeATCTSchema(BKTransactionSchema) # move around the fields. # define the content type class. class BKTransaction(ATCTContent): """
approvedBydesc = "" approvedBy = StringField('approvedBy', default=False, write_permission=ApproveSelectedContent, index="lens_catalog/FieldIndex:brains", widget=StringWidget(label="Approved by", description=approvedBydesc, i18n_domain="rhaptos")) ratingdesc = "" rating = ComputedField('rating', accessor='getRating', index="lens_catalog/FieldIndex:brains", widget=ComputedWidget(label="Rating", description=ratingdesc, i18n_domain="rhaptos")) schema = BaseFolderSchema.copy() + Schema( (contentId, title, versionStart, versionStop, versionLastSeen, implicit, namespaceTags, tags, comment, plaincomment, allowedRolesAndUsers, contentAuthors, approved, approvedBy, rating)) class SelectedContent(BaseFolder): # should it be BTree? """Entry present in a set of selected content. Selected collection content may contain an auto-generated list of 'SelectedContent's to provide implicit endorsement. """ archetype_name = "Selected Content" use_folder_tabs = 1