'columns': ['Title', 'Description']}, {'id':'inactive', 'title': _('Dormant'), 'contentFilter': {'inactive_state': 'inactive'}, 'transitions': [{'id':'activate'}, ], 'columns': ['Title', 'Description']}, {'id':'all', 'title': _('All'), 'contentFilter':{}, 'columns': ['Title', 'Description']}, ] def folderitems(self): items = BikaListingView.folderitems(self) for x in range(len(items)): if not items[x].has_key('obj'): continue obj = items[x]['obj'] items[x]['Description'] = obj.Description() items[x]['replace']['Title'] = "<a href='%s'>%s</a>" % \ (items[x]['url'], items[x]['Title']) return items schema = ATFolderSchema.copy() class InstrumentTypes(ATFolder): implements(IInstrumentTypes) displayContentsTab = False schema = schema schemata.finalizeATCTSchema(schema, folderish = True, moveDiscussion = False) atapi.registerType(InstrumentTypes, PROJECTNAME)
'Description']}, {'id':'all', 'title': _('All'), 'contentFilter':{}, 'columns': ['Title', 'Description']}, ] def folderitems(self): items = BikaListingView.folderitems(self) for x in range(len(items)): if not items[x].has_key('obj'): continue obj = items[x]['obj'] items[x]['Description'] = obj.Description() items[x]['replace']['Title'] = "<a href='%s'>%s</a>" % \ (items[x]['url'], items[x]['Title']) return items schema = ATFolderSchema.copy() class ContainerTypes(ATFolder): implements(IContainerTypes) displayContentsTab = False schema = schema schemata.finalizeATCTSchema(schema, folderish = True, moveDiscussion = False) atapi.registerType(ContainerTypes, PROJECTNAME)
'columns': ['Title']}, {'id':'inactive', 'title': _('Dormant'), 'contentFilter': {'inactive_state': 'inactive'}, 'transitions': [{'id':'activate'}, ], 'columns': ['Title']}, {'id':'all', 'title': _('All'), 'contentFilter':{}, 'columns': ['Title']}, ] def folderitems(self): items = BikaListingView.folderitems(self) for x in range(len(items)): if not items[x].has_key('obj'): continue obj = items[x]['obj'] items[x]['replace']['Title'] = "<a href='%s'>%s</a>" % \ (items[x]['url'], items[x]['Title']) return items schema = ATFolderSchema.copy() class BatchLabels(ATFolder): implements(IBatchLabels) displayContentsTab = False schema = schema schemata.finalizeATCTSchema(schema, folderish = True, moveDiscussion = False) atapi.registerType(BatchLabels, PROJECTNAME)
'index': 'description', 'toggle': True}, } self.review_states = [ {'id':'default', 'title': _('All'), 'contentFilter':{}, 'columns': ['Title', 'Description']}, ] def folderitems(self): items = BikaListingView.folderitems(self) for x in range(len(items)): if not items[x].has_key('obj'): continue obj = items[x]['obj'] items[x]['replace']['Title'] = "<a href='%s'>%s</a>" % \ (items[x]['url'], items[x]['Title']) items[x]['Description'] = obj.Description() return items schema = ATFolderSchema.copy() class AttachmentTypes(ATFolder): implements(IAttachmentTypes) displayContentsTab = False schema = schema schemata.finalizeATCTSchema(schema, folderish = True, moveDiscussion = False) atapi.registerType(AttachmentTypes, PROJECTNAME)
{ 'id': 'all', 'title': _('All'), 'contentFilter': {}, 'columns': ['Title'] }, ] def folderitems(self): items = BikaListingView.folderitems(self) for x in range(len(items)): if not items[x].has_key('obj'): continue obj = items[x]['obj'] items[x]['replace']['Title'] = "<a href='%s'>%s</a>" % \ (items[x]['url'], items[x]['Title']) return items schema = ATFolderSchema.copy() class BatchLabels(ATFolder): implements(IBatchLabels) displayContentsTab = False schema = schema schemata.finalizeATCTSchema(schema, folderish=True, moveDiscussion=False) atapi.registerType(BatchLabels, PROJECTNAME)
items[x]['replace']['ManagerEmail'] = "<a href='%s'>%s</a>"%\ ('mailto:%s' % items[x]['ManagerEmail'], items[x]['ManagerEmail']) return items schema = ATFolderSchema.copy() class Departments(ATFolder): implements(IDepartments) displayContentsTab = False schema = schema def getContacts(self): pc = getToolByName(self, 'portal_catalog') bc = getToolByName(self, 'bika_catalog') bsc = getToolByName(self, 'bika_setup_catalog') # fallback - all Lab Contacts pairs = [] for contact in bsc(portal_type='LabContact', inactive_state='active', sort_on='sortable_title'): pairs.append((contact.UID, contact.Title)) return DisplayList(pairs) schemata.finalizeATCTSchema(schema, folderish=True, moveDiscussion=False) atapi.registerType(Departments, PROJECTNAME)
atapi.StringField( 'DocumentLocation', widget=atapi.StringWidget( label=_("Document Location"), description=_("Location where the document set is shelved"), )), atapi.StringField( 'DocumentType', required=1, widget=atapi.StringWidget( label=_("Document Type"), description= _("Type of document (e.g. user manual, instrument specifications, image, ...)" ), )), )) TitleField = schema['title'] TitleField.required = 0 TitleField.widget.visible = False class Multifile(BaseContent): # It implements the IEthnicity interface implements(IMultifile) schema = schema # Activating the content type in Archetypes' internal types registry atapi.registerType(Multifile, config.PROJECTNAME)
{ 'id': 'all', 'title': _('All'), 'contentFilter': {}, 'columns': ['Title', 'Description'] }, ] def folderitems(self): items = BikaListingView.folderitems(self) for x in range(len(items)): if not items[x].has_key('obj'): continue obj = items[x]['obj'] items[x]['Description'] = obj.Description() items[x]['replace']['Title'] = "<a href='%s'>%s</a>" % \ (items[x]['url'], items[x]['Title']) return items schema = ATFolderSchema.copy() class Manufacturers(ATFolder): implements(IManufacturers) displayContentsTab = False schema = schema schemata.finalizeATCTSchema(schema, folderish=True, moveDiscussion=False) atapi.registerType(Manufacturers, PROJECTNAME)
items[x]['Description'] = obj.Description() if obj.aq_parent.portal_type == 'Client': items[x]['Owner'] = obj.aq_parent.Title() else: items[x]['Owner'] = self.context.bika_setup.laboratory.Title() return items schema = ATFolderSchema.copy() class StorageLocations(ATFolder): implements(IStorageLocations) displayContentsTab = False schema = schema schemata.finalizeATCTSchema(schema, folderish = True, moveDiscussion = False) atapi.registerType(StorageLocations, PROJECTNAME) class ajax_StorageLocations(BrowserView): """ The autocomplete data source for storage location selection widgets. Returns a JSON list of storage location titles. Request parameters: - term: the string which will be searched against all Storage Location titles. - _authenticator: The plone.protect authenticator. """ def filter_list(self, items, searchterm):
"""ReferenceSamplesFolder is a fake folder to live in the nav bar. It has view from browser/referencesample.py wired to it. """ from dependencies.dependency import schemata from dependencies import atapi from dependencies.dependency import permissions from dependencies.dependency import getToolByName from lims.config import PROJECTNAME from dependencies.dependency import ClassSecurityInfo from lims.interfaces import IReferenceSamplesFolder, IHaveNoBreadCrumbs from dependencies import folder from dependencies.dependency import implements from lims import bikaMessageFactory as _ from lims.utils import t schema = folder.ATFolderSchema.copy() class ReferenceSamplesFolder(folder.ATFolder): implements(IReferenceSamplesFolder, IHaveNoBreadCrumbs) displayContentsTab = False schema = schema security = ClassSecurityInfo() schemata.finalizeATCTSchema(schema, folderish=True, moveDiscussion=False) atapi.registerType(ReferenceSamplesFolder, PROJECTNAME)
from lims.utils import isActive """BatchFolder contains AR Batches. """ from dependencies.dependency import schemata from dependencies import atapi from dependencies.dependency import DisplayList from dependencies.dependency import permissions from dependencies.dependency import getToolByName from lims.config import PROJECTNAME from dependencies.dependency import ClassSecurityInfo from lims.interfaces import IBatchFolder, IHaveNoBreadCrumbs from dependencies import folder from dependencies.dependency import implements from lims import bikaMessageFactory as _ from lims.utils import t import json schema = folder.ATFolderSchema.copy() class BatchFolder(folder.ATFolder): implements(IBatchFolder, IHaveNoBreadCrumbs) schema = schema displayContentsTab = False security = ClassSecurityInfo() schemata.finalizeATCTSchema(schema, folderish=True, moveDiscussion=False) atapi.registerType(BatchFolder, PROJECTNAME)
widget=TextAreaWidget(label=_("Remarks"), ), ), )) schema['title'].widget.label = 'Asset Number' class InstrumentCalibration(BaseFolder): security = ClassSecurityInfo() schema = schema displayContentsTab = False _at_rename_after_creation = True def _renameAfterCreation(self, check_auto_id=False): from lims.idserver import renameAfterCreation renameAfterCreation(self) def getLabContacts(self): bsc = getToolByName(self, 'bika_setup_catalog') # fallback - all Lab Contacts pairs = [] for contact in bsc(portal_type='LabContact', inactive_state='active', sort_on='sortable_title'): pairs.append((contact.UID, contact.Title)) return DisplayList(pairs) atapi.registerType(InstrumentCalibration, PROJECTNAME)
'inactive_state': 'inactive' }, 'transitions': [ { 'id': 'activate' }, ], 'columns': ['Title', 'Description'] }) items = BikaListingView.folderitems(self) for x in range(len(items)): if not items[x].has_key('obj'): continue items[x]['replace']['Title'] = "<a href='%s'>%s</a>" % \ (items[x]['url'], items[x]['Title']) return items schema = ATFolderSchema.copy() class SampleMatrices(ATFolder): implements(ISampleMatrices) displayContentsTab = False schema = schema schemata.finalizeATCTSchema(schema, folderish=True, moveDiscussion=False) atapi.registerType(SampleMatrices, PROJECTNAME)
self.show_select_column = True self.review_states.append( {'id':'active', 'title': _('Active'), 'contentFilter': {'inactive_state': 'active'}, 'transitions': [{'id':'deactivate'}, ], 'columns': ['Title', 'Description']}) self.review_states.append( {'id':'inactive', 'title': _('Dormant'), 'contentFilter': {'inactive_state': 'inactive'}, 'transitions': [{'id':'activate'}, ], 'columns': ['Title', 'Description']}) items = BikaListingView.folderitems(self) for x in range(len(items)): if not items[x].has_key('obj'): continue items[x]['replace']['Title'] = "<a href='%s'>%s</a>" % \ (items[x]['url'], items[x]['Title']) return items schema = ATFolderSchema.copy() class SamplingDeviations(ATFolder): implements(ISamplingDeviations) displayContentsTab = False schema = schema schemata.finalizeATCTSchema(schema, folderish = True, moveDiscussion = False) atapi.registerType(SamplingDeviations, PROJECTNAME)
def getSampleTypes(self): """ return all sampletypes """ sampletypes = [] bsc = getToolByName(self, 'bika_setup_catalog') for st in bsc(portal_type='SampleType', sort_on='sortable_title'): sampletypes.append((st.UID, st.Title)) return DisplayList(sampletypes) def getAnalysisSpecsStr(self, keyword): specstr = '' specs = self.getResultsRangeDict() if keyword in specs.keys(): specs = specs[keyword] smin = specs.get('min', '') smax = specs.get('max', '') if smin and smax: specstr = '%s - %s' % (smin, smax) elif smin: specstr = '> %s' % specs['min'] elif smax: specstr = '< %s' % specs['max'] return specstr def getClientUID(self): return self.aq_parent.UID() atapi.registerType(AnalysisSpec, PROJECTNAME)
'Volume', 'Unit', 'Price', 'VATAmount', 'TotalPrice']}, ] def folderitems(self): items = BikaListingView.folderitems(self) for x in range(len(items)): if not items[x].has_key('obj'): continue obj = items[x]['obj'] items[x]['Volume'] = obj.getVolume() items[x]['Unit'] = obj.getUnit() items[x]['Price'] = obj.getPrice() items[x]['VATAmount'] = obj.getVATAmount() items[x]['TotalPrice'] = obj.getTotalPrice() items[x]['replace']['Title'] = "<a href='%s'>%s</a>" % \ (items[x]['url'], items[x]['Title']) return items schema = ATFolderSchema.copy() class LabProducts(ATFolder): implements(ILabProducts) displayContentsTab = False schema = schema schemata.finalizeATCTSchema(schema, folderish = True, moveDiscussion = False) atapi.registerType(LabProducts, PROJECTNAME)
('getDateSampled', _('Date Sampled')), ('getProfilesTitle', _('Analysis Profiles')), ('getRequestID', _('Request ID')), ('getSampleID', _('Sample ID')), ('getSamplePointTitle', _('Sample Point')), ('getSampleTypeTitle', _('Sample Type')), ('review_state', _p('Review state')), )) security.declareProtected(View, 'results') def results(self, batch=True, b_start=0, b_size=None, sort_on=None, brains=False, catalog_name='bika_catalog'): """Get results""" if sort_on is None: sort_on = self.getSort_on() if b_size is None: b_size = self.getLimit() return self.getQuery(batch=batch, b_start=b_start, b_size=b_size, sort_on=sort_on, brains=brains, catalog_name='bika_catalog') schemata.finalizeATCTSchema(QuerySchema, folderish=False) atapi.registerType(Query, PROJECTNAME)
'id': 'default', 'title': _('All'), 'contentFilter': {}, 'columns': ['Title', 'Description'] }, ] def folderitems(self): items = BikaListingView.folderitems(self) for x in range(len(items)): if not items[x].has_key('obj'): continue obj = items[x]['obj'] items[x]['replace']['Title'] = "<a href='%s'>%s</a>" % \ (items[x]['url'], items[x]['Title']) items[x]['Description'] = obj.Description() return items schema = ATFolderSchema.copy() class AttachmentTypes(ATFolder): implements(IAttachmentTypes) displayContentsTab = False schema = schema schemata.finalizeATCTSchema(schema, folderish=True, moveDiscussion=False) atapi.registerType(AttachmentTypes, PROJECTNAME)
'Description', 'Formula']}, {'id':'all', 'title': _('All'), 'contentFilter':{}, 'columns': ['Title', 'Description', 'Formula']}, ] def folderitems(self): items = BikaListingView.folderitems(self) for x in range(len(items)): if not items[x].has_key('obj'): continue obj = items[x]['obj'] items[x]['replace']['Title'] = "<a href='%s'>%s</a>" % \ (items[x]['url'], items[x]['Title']) items[x]['Description'] = obj.Description() items[x]['Formula'] = obj.getMinifiedFormula() return items schema = ATFolderSchema.copy() class Calculations(ATFolder): implements(ICalculations) displayContentsTab = False schema = schema schemata.finalizeATCTSchema(schema, folderish = True, moveDiscussion = False) atapi.registerType(Calculations, PROJECTNAME)
"""ClientFolder is a container for Client instances. """ from dependencies.dependency import schemata from dependencies import atapi from dependencies.dependency import permissions from dependencies.dependency import DisplayList from dependencies.dependency import getToolByName from lims.config import PROJECTNAME from dependencies.dependency import ClassSecurityInfo from lims.interfaces import IClientFolder, IHaveNoBreadCrumbs from dependencies import folder from dependencies.dependency import implements from lims import bikaMessageFactory as _ from lims.utils import t schema = folder.ATFolderSchema.copy() schema['id'].widget.visible = {'edit': 'hidden', 'view': 'invisible'} schema['title'].widget.visible = {'edit': 'hidden', 'view': 'invisible'} class ClientFolder(folder.ATFolder): implements(IClientFolder, IHaveNoBreadCrumbs) displayContentsTab = False schema = schema security = ClassSecurityInfo() schemata.finalizeATCTSchema(schema, folderish=True, moveDiscussion=False) atapi.registerType(ClientFolder, PROJECTNAME)
else: items[x]['Owner'] = self.context.bika_setup.laboratory.Title() return items schema = ATFolderSchema.copy() class SamplePoints(ATFolder): implements(ISamplePoints) displayContentsTab = False schema = schema schemata.finalizeATCTSchema(schema, folderish=True, moveDiscussion=False) atapi.registerType(SamplePoints, PROJECTNAME) class ajax_SamplePoints(BrowserView): """ The autocomplete data source for sample point selection widgets. Returns a JSON list of sample point titles. Request parameters: - sampletype: if specified, it's expected to be the title of a SamplePoint object. Optionally, the string 'Lab: ' might be prepended, to distinguish between Lab and Client objects. - term: the string which will be searched against all SamplePoint titles.
'columns': ['Title', 'Description', 'ProfileKey']}, {'id':'all', 'title': _('All'), 'contentFilter':{}, 'columns': ['Title', 'Description', 'ProfileKey']}, ] def folderitems(self): items = BikaListingView.folderitems(self) for x in range(len(items)): if not items[x].has_key('obj'): continue obj = items[x]['obj'] items[x]['Title'] = obj.Title() items[x]['replace']['Title'] = "<a href='%s'>%s</a>" % \ (items[x]['url'], items[x]['title']) items[x]['ProfileKey'] = obj.getProfileKey() return items schema = ATFolderSchema.copy() class AnalysisProfiles(ATFolder): implements(IAnalysisProfiles) displayContentsTab = False schema = schema schemata.finalizeATCTSchema(schema, folderish = True, moveDiscussion = False) atapi.registerType(AnalysisProfiles, PROJECTNAME)
'columns': ['Title', 'Description', 'Instrument']}, {'id':'all', 'title': _('All'), 'contentFilter':{}, 'columns': ['Title', 'Description', 'Instrument']}, ] def folderitems(self): items = BikaListingView.folderitems(self) for x in range(len(items)): if not items[x].has_key('obj'): continue obj = items[x]['obj'] items[x]['Description'] = obj.Description() items[x]['Instrument'] = obj.getInstrument() and obj.getInstrument().Title() or ' ' items[x]['replace']['Title'] = "<a href='%s'>%s</a>" % \ (items[x]['url'], items[x]['Title']) return items schema = ATFolderSchema.copy() class WorksheetTemplates(ATFolder): implements(IWorksheetTemplates) displayContentsTab = False schema = schema schemata.finalizeATCTSchema(schema, folderish = True, moveDiscussion = False) atapi.registerType(WorksheetTemplates, PROJECTNAME)
items[x]['ExpiryDate'] = "No date avaliable" else: items[x]['ExpiryDate'] = data.asdatetime().strftime(self.date_format_short) if obj.isOutOfDate(): items[x]['WeeksToExpire'] = "Out of date" else: date = int(str(obj.getWeeksToExpire()).split(',')[0].split(' ')[0]) weeks,days = divmod(date,7) items[x]['WeeksToExpire'] = str(weeks)+" weeks"+" "+str(days)+" days" if obj.getMethod(): items[x]['Method'] = obj.getMethod().Title() items[x]['replace']['Method'] = "<a href='%s'>%s</a>" % \ (obj.getMethod().absolute_url(), items[x]['Method']) else: items[x]['Method'] = '' items[x]['replace']['Title'] = "<a href='%s'>%s</a>" % \ (items[x]['url'], items[x]['Title']) return items schema = ATFolderSchema.copy() class Instruments(ATFolder): implements(IInstruments) displayContentsTab = False schema = schema schemata.finalizeATCTSchema(schema, folderish = True, moveDiscussion = False) atapi.registerType(Instruments, PROJECTNAME)
schema['title'].widget.label=_("Certificate Code") class InstrumentCertification(BaseFolder): security = ClassSecurityInfo() schema = schema displayContentsTab = False _at_rename_after_creation = True def _renameAfterCreation(self, check_auto_id=False): from lims.idserver import renameAfterCreation renameAfterCreation(self) def getLabContacts(self): bsc = getToolByName(self, 'bika_setup_catalog') # fallback - all Lab Contacts pairs = [] for contact in bsc(portal_type='LabContact', inactive_state='active', sort_on='sortable_title'): pairs.append((contact.UID, contact.Title)) return DisplayList(pairs) def getInstrumentAssetNumber(self): """ Obtains the instrument's asset number :return: The asset number string """ return self.aq_parent.getAssetNumber() if self.aq_parent.getAssetNumber() else '' atapi.registerType(InstrumentCertification, PROJECTNAME)
""" Return the current list of task types """ types = [ ('Calibration', safe_unicode(_('Calibration')).encode('utf-8')), ('Enhancement', safe_unicode(_('Enhancement')).encode('utf-8')), ('Preventive', safe_unicode(_('Preventive')).encode('utf-8')), ('Repair', safe_unicode(_('Repair')).encode('utf-8')), ('Validation', safe_unicode(_('Validation')).encode('utf-8')) ] return DisplayList(types) def getCriteria(self): criteria = "" criterias = self.getScheduleCriteria() if criterias and len(criterias) > 0: crit = criterias[0] if crit['fromenabled'] == True and crit['fromdate']: criteria += _('From') + " " + crit['fromdate'] + " " if crit['repeatenabled'] == True and crit['repeatunit'] and crit[ 'repeatperiod']: criteria += _( "repeating every") + " " + crit['repeatunit'] + " " + _( crit['repeatperiod']) + " " if crit['repeatuntilenabled'] == True and crit['repeatuntil']: criteria += _("until") + " " + crit['repeatuntil'] return criteria atapi.registerType(InstrumentScheduledTask, PROJECTNAME)
"""SamplesFolder is a fake folder to live in the nav bar. It has view from browser/samplesfolder.py wired to it. """ from dependencies.dependency import schemata from dependencies import atapi from dependencies.dependency import permissions from dependencies.dependency import getToolByName from lims.config import PROJECTNAME from dependencies.dependency import ClassSecurityInfo from lims.interfaces import ISamplesFolder, IHaveNoBreadCrumbs from dependencies import folder from dependencies.dependency import implements from lims import bikaMessageFactory as _ from lims.utils import t schema = folder.ATFolderSchema.copy() class SamplesFolder(folder.ATFolder): implements(ISamplesFolder, IHaveNoBreadCrumbs) displayContentsTab = False schema = schema security = ClassSecurityInfo() schemata.finalizeATCTSchema(schema, folderish=True, moveDiscussion=False) atapi.registerType(SamplesFolder, PROJECTNAME)
security.declarePublic('getRemainingSampleTypes') def getSampleTypes(self): """ return all sampletypes """ sampletypes = [] bsc = getToolByName(self, 'bika_setup_catalog') for st in bsc(portal_type = 'SampleType', sort_on = 'sortable_title'): sampletypes.append((st.UID, st.Title)) return DisplayList(sampletypes) def getAnalysisSpecsStr(self, keyword): specstr = '' specs = self.getResultsRangeDict() if keyword in specs.keys(): specs = specs[keyword] smin = specs.get('min', '') smax = specs.get('max', '') if smin and smax: specstr = '%s - %s' % (smin, smax) elif smin: specstr = '> %s' % specs['min'] elif smax: specstr = '< %s' % specs['max'] return specstr def getClientUID(self): return self.aq_parent.UID(); atapi.registerType(AnalysisSpec, PROJECTNAME)
else: items[x]['Instrument'] = '' if obj.getCalculation(): items[x]['Calculation'] = obj.getCalculation().Title() items[x]['replace']['Calculation'] = "<a href='%s'>%s</a>" % \ (obj.getCalculation().absolute_url(), items[x]['Calculation']) else: items[x]['Calculation'] = '' img_url = '<img src="' + self.portal_url + '/++resource++bika.lims.images/ok.png"/>' items[x]['ManualEntry'] = obj.isManualEntryOfResults() items[x]['replace'][ 'ManualEntry'] = img_url if obj.isManualEntryOfResults( ) else ' ' return items schema = ATFolderSchema.copy() class Methods(ATFolder): implements(IMethods) displayContentsTab = False schema = schema schemata.finalizeATCTSchema(schema, folderish=True, moveDiscussion=False) atapi.registerType(Methods, PROJECTNAME)
) ), atapi.StringField('DocumentLocation', widget = atapi.StringWidget( label=_("Document Location"), description=_("Location where the document set is shelved"), ) ), atapi.StringField('DocumentType', required=1, widget = atapi.StringWidget( label=_("Document Type"), description=_("Type of document (e.g. user manual, instrument specifications, image, ...)"), ) ), )) TitleField = schema['title'] TitleField.required = 0 TitleField.widget.visible = False class Multifile(BaseContent): # It implements the IEthnicity interface implements(IMultifile) schema = schema # Activating the content type in Archetypes' internal types registry atapi.registerType(Multifile, config.PROJECTNAME)
(obj.getSamplePoints()[0].absolute_url(), items[x]['getSamplePoints']) else: items[x]['getSamplePoints'] = '' return items schema = ATFolderSchema.copy() class SampleTypes(ATFolder): implements(ISampleTypes) displayContentsTab = False schema = schema schemata.finalizeATCTSchema(schema, folderish = True, moveDiscussion = False) atapi.registerType(SampleTypes, PROJECTNAME) class ajax_SampleTypes(BrowserView): """ autocomplete data source for sample types field return JSON data [string,string] if "samplepoint" is in the request, it's expected to be a title string The objects returned will be filtered by samplepoint's SampleTypes. if no items are found, all items are returned. If term is a one or two letters, return items that begin with them If there aren't any, return items that contain them """ def __call__(self): CheckAuthenticator(self.request) bsc = getToolByName(self.context, 'bika_setup_catalog') term = safe_unicode(self.request.get('term', '')).lower()
(items[x]['url'], items[x]['Title']) if items[x]['ManagerEmail']: items[x]['replace']['ManagerEmail'] = "<a href='%s'>%s</a>"%\ ('mailto:%s' % items[x]['ManagerEmail'], items[x]['ManagerEmail']) return items schema = ATFolderSchema.copy() class Departments(ATFolder): implements(IDepartments) displayContentsTab = False schema = schema def getContacts(self): pc = getToolByName(self, 'portal_catalog') bc = getToolByName(self, 'bika_catalog') bsc = getToolByName(self, 'bika_setup_catalog') # fallback - all Lab Contacts pairs = [] for contact in bsc(portal_type = 'LabContact', inactive_state = 'active', sort_on = 'sortable_title'): pairs.append((contact.UID, contact.Title)) return DisplayList(pairs) schemata.finalizeATCTSchema(schema, folderish = True, moveDiscussion = False) atapi.registerType(Departments, PROJECTNAME)
'contentFilter': {'inactive_state': 'inactive'}, 'columns': ['title', 'sortKey', 'pricePremium', 'isDefault', ]}, ] def folderitems(self): items = BikaListingView.folderitems(self) for x in range(len(items)): if 'obj' not in items[x]: continue items[x]['replace']['title'] = \ "<a href='%s'>%s</a>" % (items[x]['url'], items[x]['title']) return items schema = ATFolderSchema.copy() class ARPriorities(ATFolder): implements(IARPriorities) displayContentsTab = False schema = schema schemata.finalizeATCTSchema(schema, folderish=True, moveDiscussion=False) atapi.registerType(ARPriorities, PROJECTNAME)
""" """ from dependencies.dependency import ClassSecurityInfo from lims.config import PROJECTNAME from lims.interfaces import IQueryFolder, IHaveNoBreadCrumbs from dependencies import folder from dependencies import atapi from dependencies.dependency import schemata from dependencies.dependency import implements schema = folder.ATFolderSchema.copy() class QueryFolder(folder.ATFolder): implements(IQueryFolder, IHaveNoBreadCrumbs) schema = schema displayContentsTab = False security = ClassSecurityInfo() schemata.finalizeATCTSchema(schema, folderish=True, moveDiscussion=False) atapi.registerType(QueryFolder, PROJECTNAME)
"""Supply Order Folder contains Supply Orders """ from dependencies.dependency import schemata from dependencies import atapi from lims.config import PROJECTNAME from dependencies.dependency import ClassSecurityInfo from lims.interfaces import ISupplyOrderFolder, IHaveNoBreadCrumbs from dependencies import folder from dependencies.dependency import implements schema = folder.ATFolderSchema.copy() class SupplyOrderFolder(folder.ATFolder): implements(ISupplyOrderFolder, IHaveNoBreadCrumbs) schema = schema displayContentsTab = False security = ClassSecurityInfo() schemata.finalizeATCTSchema(schema, folderish=True, moveDiscussion=False) atapi.registerType(SupplyOrderFolder, PROJECTNAME)
from lims.idserver import renameAfterCreation renameAfterCreation(self) def Title(self): """ Return the contact's Fullname as title """ return safe_unicode(self.getFullname()).encode('utf-8') security.declareProtected(ManageClients, 'hasUser') def hasUser(self): """ check if contact has user """ return self.portal_membership.getMemberById( self.getUsername()) is not None def getContacts(self, dl=True): pairs = [] objects = [] for contact in self.aq_parent.objectValues('Contact'): if isActive(contact) and contact.UID() != self.UID(): pairs.append((contact.UID(), contact.Title())) if not dl: objects.append(contact) pairs.sort(lambda x, y: cmp(x[1].lower(), y[1].lower())) return dl and DisplayList(pairs) or objects def getParentUID(self): return self.aq_parent.UID() atapi.registerType(Contact, PROJECTNAME)
self.show_select_column = True self.review_states.append( {'id':'active', 'title': _('Active'), 'contentFilter': {'inactive_state': 'active'}, 'transitions': [{'id':'deactivate'}, ], 'columns': ['Title', 'Description']}) self.review_states.append( {'id':'inactive', 'title': _('Dormant'), 'contentFilter': {'inactive_state': 'inactive'}, 'transitions': [{'id':'activate'}, ], 'columns': ['Title', 'Description']}) items = BikaListingView.folderitems(self) for x in range(len(items)): if not items[x].has_key('obj'): continue items[x]['replace']['Title'] = "<a href='%s'>%s</a>" % \ (items[x]['url'], items[x]['Title']) return items schema = ATFolderSchema.copy() class SampleMatrices(ATFolder): implements(ISampleMatrices) displayContentsTab = False schema = schema schemata.finalizeATCTSchema(schema, folderish = True, moveDiscussion = False) atapi.registerType(SampleMatrices, PROJECTNAME)
return DisplayList(cats) def getContacts(self, only_active=True): """ Return an array containing the contacts from this Client """ contacts = [] if only_active: contacts = [ c for c in self.objectValues("Contact") if getCurrentState(c, StateFlow.inactive) == InactiveState.active ] else: contacts = self.objectValues("Contact") return contacts def getDecimalMark(self): """ Return the decimal mark to be used on reports for this client. If the client has DefaultDecimalMark selected, the Default value from Bika Setup will be returned. Otherwise, will return the value of DecimalMark. """ if self.getDefaultDecimalMark() == False: return self.Schema()["DecimalMark"].get(self) return self.bika_setup.getDecimalMark() schemata.finalizeATCTSchema(schema, folderish=True, moveDiscussion=False) atapi.registerType(Client, PROJECTNAME)
ComputedField( 'ClientUID', expression='here.getClient() and here.getClient().UID()', widget=ComputedWidget(visible=False, ), ), ), ) schema['id'].required = False schema['title'].required = False class Report(BaseFolder): security = ClassSecurityInfo() displayContentsTab = False schema = schema _at_rename_after_creation = True def _renameAfterCreation(self, check_auto_id=False): from lims.idserver import renameAfterCreation renameAfterCreation(self) security.declarePublic('current_date') def current_date(self): """ return current date """ return DateTime() atapi.registerType(Report, PROJECTNAME)
] def folderitems(self): items = BikaListingView.folderitems(self) for x in range(len(items)): if not items[x].has_key('obj'): continue obj = items[x]['obj'] items[x]['Fullname'] = obj.getFullname() items[x]['Department'] = obj.getDepartmentTitle() items[x]['BusinessPhone'] = obj.getBusinessPhone() items[x]['Fax'] = obj.getBusinessFax() items[x]['MobilePhone'] = obj.getMobilePhone() items[x]['EmailAddress'] = obj.getEmailAddress() items[x]['replace']['Fullname'] = "<a href='%s'>%s</a>" % \ (items[x]['url'], items[x]['Fullname']) return items schema = ATFolderSchema.copy() class LabContacts(ATFolder): implements(ILabContacts) displayContentsTab = False schema = schema schemata.finalizeATCTSchema(schema, folderish=True, moveDiscussion=False) atapi.registerType(LabContacts, PROJECTNAME)
'columns': ['Title', 'Description', 'Department'] }, ] def folderitems(self): items = BikaListingView.folderitems(self) for x in range(len(items)): if not items[x].has_key('obj'): continue obj = items[x]['obj'] items[x]['Description'] = obj.Description() items[x]['Department'] = obj.getDepartment() and obj.getDepartment( ).Title() or '' items[x]['replace']['Title'] = "<a href='%s'>%s</a>" % \ (items[x]['url'], items[x]['Title']) return items schema = ATFolderSchema.copy() class AnalysisCategories(ATFolder): implements(IAnalysisCategories) displayContentsTab = False schema = schema schemata.finalizeATCTSchema(schema, folderish=True, moveDiscussion=False) atapi.registerType(AnalysisCategories, PROJECTNAME)
) self.review_states.append( { "id": "inactive", "title": _("Dormant"), "contentFilter": {"inactive_state": "inactive"}, "transitions": [{"id": "activate"}], "columns": ["Title", "Description"], } ) items = BikaListingView.folderitems(self) for x in range(len(items)): if "obj" in items[x]: items[x]["replace"]["Title"] = "<a href='%s'>%s</a>" % (items[x]["url"], items[x]["Title"]) return items schema = ATFolderSchema.copy() class SampleConditions(ATFolder): implements(ISampleConditions) displayContentsTab = False schema = schema schemata.finalizeATCTSchema(schema, folderish=True, moveDiscussion=False) atapi.registerType(SampleConditions, PROJECTNAME)
'columns': ['Title', 'Description', 'SortKey']}, {'id': 'all', 'title': _('All'), 'contentFilter': {}, 'columns': ['Title', 'Description', 'SortKey']}, ] def folderitems(self): items = BikaListingView.folderitems(self) for x in range(len(items)): if 'obj' not in items[x]: continue obj = items[x]['obj'] items[x]['Description'] = obj.Description() items[x]['replace']['Title'] = "<a href='%s'>%s</a>" % \ (items[x]['url'], items[x]['Title']) return items schema = ATFolderSchema.copy() class SubGroups(ATFolder): implements(ISubGroups) security = ClassSecurityInfo() displayContentsTab = False schema = schema schemata.finalizeATCTSchema(schema, folderish=True, moveDiscussion=False) atapi.registerType(SubGroups, PROJECTNAME)
} self.review_states = [{ 'id':'default', 'title': _('Default'), 'contentFilter': {}, 'columns': ['Title', 'Description'] }] def folderitems(self): items = BikaListingView.folderitems(self) for item in items: if not item.has_key('obj'): continue obj = item['obj'] title_link = "<a href='%s'>%s</a>" % (item['url'], item['title']) item['replace']['Title'] = title_link return items schema = ATFolderSchema.copy() class SRTemplates(ATFolder): implements(ISRTemplates) displayContentsTab = False schema = schema schemata.finalizeATCTSchema(schema, folderish = True, moveDiscussion = False) atapi.registerType(SRTemplates, PROJECTNAME)
'transitions': [{'id':'activate'}, ], 'columns': ['Name', 'Email', 'Phone', 'Fax']}, {'id':'all', 'title': _('All'), 'contentFilter':{}, 'columns': ['Name', 'Email', 'Phone', 'Fax']}, ] def folderitems(self): items = BikaListingView.folderitems(self) for x in range(len(items)): if not items[x].has_key('obj'): continue obj = items[x]['obj'] items[x]['Name'] = obj.getName() items[x]['Email'] = obj.getEmailAddress() items[x]['Phone'] = obj.getPhone() items[x]['Fax'] = obj.getFax() items[x]['replace']['Name'] = "<a href='%s'>%s</a>" % \ (items[x]['url'], items[x]['Name']) return items schema = ATFolderSchema.copy() class Suppliers(ATFolder): implements(ISuppliers) displayContentsTab = False schema = schema schemata.finalizeATCTSchema(schema, folderish = True, moveDiscussion = False) atapi.registerType(Suppliers, PROJECTNAME)
_at_rename_after_creation = True def _renameAfterCreation(self, check_auto_id=False): from lims.idserver import renameAfterCreation renameAfterCreation(self) def getTaskTypes(self): """ Return the current list of task types """ types = [('Calibration', safe_unicode(_('Calibration')).encode('utf-8')), ('Enhancement', safe_unicode(_('Enhancement')).encode('utf-8')), ('Preventive',safe_unicode(_('Preventive')).encode('utf-8')), ('Repair', safe_unicode(_('Repair')).encode('utf-8')), ('Validation', safe_unicode(_('Validation')).encode('utf-8'))] return DisplayList(types) def getCriteria(self): criteria = ""; criterias = self.getScheduleCriteria() if criterias and len(criterias) > 0: crit = criterias[0] if crit['fromenabled'] == True and crit['fromdate']: criteria += _('From') + " " + crit['fromdate'] + " " if crit['repeatenabled'] == True and crit['repeatunit'] and crit['repeatperiod']: criteria += _("repeating every") + " " + crit['repeatunit'] + " " + _(crit['repeatperiod']) + " " if crit['repeatuntilenabled'] == True and crit['repeatuntil']: criteria += _("until") + " " + crit['repeatuntil'] return criteria; atapi.registerType(InstrumentScheduledTask, PROJECTNAME)
if not self._findProfileKey(analyses[0]): valid_item = False item_remarks.append('\n%s: unknown Profile %s' \ % (aritem.getSampleName(), analyses[0])) batch_remarks.append('\n%s: unknown Profile %s' \ % (aritem.getSampleName(), analyses[0])) aritem.setRemarks(item_remarks) #print item_remarks if not valid_item: valid_batch = False if self.getNumberSamples() != len(aritems): valid_batch = False batch_remarks.append('\nNumber of samples specified (%s) does no match number listed (%s)' % (self.getNumberSamples(), len(aritems))) self.edit( Remarks=batch_remarks, Status=valid_batch) #print batch_remarks return valid_batch def _findProfileKey(self, key): profiles = self.bika_setup_catalog( portal_type = 'AnalysisProfile') found = False for brain in profiles: if brain.getObject().getProfileKey() == key: return brain.getObject() atapi.registerType(ARImport, PROJECTNAME)
obj = items[x]['obj'] items[x]['Description'] = obj.Description() items[x]['ContainerType'] = obj.getContainerType( ) and obj.getContainerType().Title() or '' items[x]['Capacity'] = obj.getCapacity() and "%s" % \ (obj.getCapacity()) or '' pre = obj.getPrePreserved() pres = obj.getPreservation() items[x]['Pre-preserved'] = '' items[x]['after']['Pre-preserved'] = pre \ and "<a href='%s'>%s</a>" % (pres.absolute_url(), pres.Title()) \ or '' items[x]['replace']['Title'] = "<a href='%s'>%s</a>" % \ (items[x]['url'], items[x]['Title']) return items schema = ATFolderSchema.copy() class Containers(ATFolder): implements(IContainers) displayContentsTab = False schema = schema schemata.finalizeATCTSchema(schema, folderish=True, moveDiscussion=False) atapi.registerType(Containers, PROJECTNAME)
"""AnalysisRequestsFolder is a fake folder to live in the nav bar. It has view from browser/analysisrequest.py wired to it. """ from dependencies.dependency import schemata from dependencies import atapi # from OLiMS.dependencies.dependency import permissions from dependencies.dependency import getToolByName from lims.config import PROJECTNAME from dependencies.dependency import ClassSecurityInfo from lims.interfaces import IAnalysisRequestsFolder, IHaveNoBreadCrumbs from dependencies import folder from dependencies.dependency import implements from lims import bikaMessageFactory as _ from lims.utils import t schema = folder.ATFolderSchema.copy() class AnalysisRequestsFolder(folder.ATFolder): implements(IAnalysisRequestsFolder, IHaveNoBreadCrumbs) schema = schema displayContentsTab = False security = ClassSecurityInfo() schemata.finalizeATCTSchema(schema, folderish = True, moveDiscussion = False) atapi.registerType(AnalysisRequestsFolder, PROJECTNAME)
from dependencies.dependency import ClassSecurityInfo from lims import bikaMessageFactory as _ from lims.utils import t from lims.config import ManageInvoices, PROJECTNAME from lims.interfaces import IInvoiceFolder, IHaveNoBreadCrumbs from dependencies import atapi from dependencies.dependency import * from dependencies import folder from dependencies.dependency import schemata from dependencies.dependency import permissions from dependencies.dependency import UniqueObject from dependencies.dependency import ConflictError from dependencies.dependency import implements schema = folder.ATFolderSchema.copy() schema['id'].widget.visible = {'edit':'hidden', 'view':'invisible'} schema['title'].widget.visible = {'edit':'hidden', 'view':'invisible'} class InvoiceFolder(folder.ATFolder): implements(IInvoiceFolder, IHaveNoBreadCrumbs) displayContentsTab = False schema = schema security = ClassSecurityInfo() atapi.registerType(InvoiceFolder, PROJECTNAME)
_at_rename_after_creation = True def _renameAfterCreation(self, check_auto_id=False): from lims.idserver import renameAfterCreation renameAfterCreation(self) def Title(self): """ Return the contact's Fullname as title """ return safe_unicode(self.getFullname()).encode('utf-8') security.declareProtected(ManageClients, 'hasUser') def hasUser(self): """ check if contact has user """ return self.portal_membership.getMemberById( self.getUsername()) is not None def getContacts(self, dl=True): pairs = [] objects = [] for contact in self.aq_parent.objectValues('Contact'): if isActive(contact) and contact.UID() != self.UID(): pairs.append((contact.UID(), contact.Title())) if not dl: objects.append(contact) pairs.sort(lambda x, y: cmp(x[1].lower(), y[1].lower())) return dl and DisplayList(pairs) or objects def getParentUID(self): return self.aq_parent.UID(); atapi.registerType(Contact, PROJECTNAME)
if obj.getAccredited(): after_icons += "<img src='++resource++bika.lims.images/accredited.png' title='%s'>" % ( _("Accredited")) if obj.getReportDryMatter(): after_icons += "<img src='++resource++bika.lims.images/dry.png' title='%s'>" % ( _("Can be reported as dry matter")) if obj.getAttachmentOption() == 'r': after_icons += "<img src='++resource++bika.lims.images/attach_reqd.png' title='%s'>" % ( _("Attachment required")) if obj.getAttachmentOption() == 'n': after_icons += "<img src='++resource++bika.lims.images/attach_no.png' title='%s'>" % ( _('Attachment not permitted')) if after_icons: items[x]['after']['Title'] = after_icons self.categories.sort() return items schema = ATFolderSchema.copy() class AnalysisServices(ATFolder): implements(IAnalysisServices) displayContentsTab = False schema = schema schemata.finalizeATCTSchema(schema, folderish=True, moveDiscussion=False) atapi.registerType(AnalysisServices, PROJECTNAME)