def __call__(self): uid = self.request.get('Sample_uid') uc = getToolByName(self.context, "uid_catalog") sample = uc(UID=uid)[0].getObject() sample_schema = sample.Schema() adapter = getAdapter(self.context, name='getWidgetVisibility') wv = adapter() fieldnames = wv.get('secondary', {}).get('invisible', []) ret = [] hiddenattributes = getHiddenAttributesForClass('AnalysisRequest') for fieldname in fieldnames: if fieldname in sample_schema: if fieldname in hiddenattributes: continue fieldvalue = sample_schema[fieldname].getAccessor(sample)() if fieldvalue is None: fieldvalue = '' if hasattr(fieldvalue, 'Title'): fieldvalue = fieldvalue.Title() if hasattr(fieldvalue, 'year'): fieldvalue = fieldvalue.strftime(self.date_format_short) else: fieldvalue = '' ret.append([fieldname, fieldvalue]) return json.dumps(ret)
def __init__(self, context): field_names = getHiddenAttributesForClass(context.portal_type) super(RegistryHiddenFieldsVisibility, self).__init__(context=context, sort=float("inf"), field_names=[ field_names, ])
def getWidgetVisibility(self): adapter = getAdapter(self.context, name='getWidgetVisibility') ret = adapter() ordered_ret = {} # respect schemaextender's re-ordering of fields, and # remove hidden attributes. hiddenattributes = getHiddenAttributesForClass('AnalysisRequest') schema_fields = [f.getName() for f in self.context.Schema().fields()] for mode, state_field_lists in ret.items(): ordered_ret[mode] = {} for statename, state_fields in state_field_lists.items(): ordered_ret[mode][statename] = \ [field for field in schema_fields if field in state_fields and field not in hiddenattributes] return ordered_ret
def hide_hidden_attributes(self): """Use the bika_listing's contentFilter's portal_type values, if any, to remove fields from review_states if they are marked as hidden in the registry. """ if 'portal_type' not in self.bika_listing.contentFilter: return ptlist = self.bika_listing.contentFilter['portal_type'] if isinstance(ptlist, basestring): ptlist = [ptlist, ] new_states = [] for portal_type in ptlist: hiddenattributes = getHiddenAttributesForClass(portal_type) for i, state in enumerate(self.bika_listing.review_states): for field in state['columns']: if field in hiddenattributes: state['columns'].remove(field) new_states.append(state) self.bika_listing.review_states = new_states
def sublists(self): ret = [] prominent = [] adapter = getAdapter(self.context, name='getWidgetVisibility') wv = adapter() new_wv = {} # respect schemaextender's re-ordering of fields, and # remove hidden attributes. hiddenattributes = getHiddenAttributesForClass( self.context.portal_type) schema_fields = [f.getName() for f in self.context.Schema().fields()] for mode, state_field_lists in wv.items(): new_wv[mode] = {} for statename, state_fields in state_field_lists.items(): new_wv[mode][statename] = \ [field for field in schema_fields if field in state_fields and field not in hiddenattributes] edit_fields = new_wv.get("edit", {}).get('visible', []) view_fields = new_wv.get("view", {}).get('visible', []) # Prominent fields get appended prominent_fieldnames = new_wv.get('header_table', {}).get('prominent', []) for fieldname in prominent_fieldnames: if fieldname in edit_fields: prominent.append({'fieldName': fieldname, 'mode': "edit"}) elif fieldname in view_fields: prominent.append(self.render_field_view(fieldname)) # Other visible fields get appended visible_fieldnames = new_wv.get('header_table', {}).get('visible', []) for fieldname in visible_fieldnames: if fieldname in prominent_fieldnames: continue if fieldname in edit_fields: ret.append({'fieldName': fieldname, 'mode': "edit"}) elif fieldname in view_fields: ret.append(self.render_field_view(fieldname)) return prominent, self.three_column_list(ret)
def __call__(self, context, mode, field, default): state = default if default else 'visible' hiddenattributes = getHiddenAttributesForClass(context.portal_type) if field.getName() in hiddenattributes: state = "hidden" return state
def __call__(self): ret = super(WidgetVisibility, self).__call__() workflow = getToolByName(self.context, 'portal_workflow') sw = self.context.bika_setup.getSamplingWorkflowEnabled() state = workflow.getInfoFor(self.context, 'review_state') if 'add' not in ret: ret['add'] = {} if 'visible' not in ret['add']: ret['add']['visible'] = [] if 'hidden' not in ret['add']: ret['add']['hidden'] = [] if self.context.aq_parent.portal_type == 'Client': ret['add']['visible'].remove('Client') ret['add']['hidden'].append('Client') if self.context.aq_parent.portal_type == 'Batch': ret['add']['visible'].remove('Batch') ret['add']['hidden'].append('Batch') # header_table default visible fields ret['header_table'] = { 'prominent': ['Contact', 'CCContact', 'CCEmails'], 'visible': [ 'Contact', 'CCContact', 'CCEmails', 'Sample', 'Batch', 'SubGroup', 'Template', 'Profile', 'SamplingDate', 'SampleType', 'Specification', 'PublicationSpecification', 'SamplePoint', 'StorageLocation', 'ClientOrderNumber', 'ClientReference', 'ClientSampleID', 'SamplingDeviation', 'Priority', 'SampleCondition', 'DateReceived', 'DatePublished', 'ReportDryMatter', 'AdHoc', 'Composite', 'MemberDiscount', 'InvoiceExclude', ]} if sw: ret['header_table']['visible'].extend(['Sampler', 'DateSampled']) ret['header_table']['prominent'].extend(['Sampler', 'DateSampled']) # Edit and View widgets are displayed/hidden in different workflow # states. The widget.visible is used as a default. This is placed # here to manage the header_table display. if state in ('to_be_sampled', ): ret['edit']['visible'] = [ 'Contact', 'CCContact', 'CCEmails', 'AdHoc', 'Batch', 'SubGroup', 'ClientOrderNumber', 'ClientReference', 'ClientSampleID', 'Composite', 'SampleCondition', 'SamplePoint', 'SampleType', 'SamplingDate', 'StorageLocation', 'SamplingDeviation', 'Priority', 'InvoiceExclude', ] ret['view']['visible'] = [ 'Contact', 'CCContact', 'CCEmails', 'Sampler', 'DateSampled', 'MemberDiscount', 'Profile', 'ReportDryMatter', 'Specification', 'Sample', 'Template', ] ret['header_table']['visible'].remove('DateReceived') ret['header_table']['visible'].remove('DatePublished') ret['header_table']['prominent'] = ['Contact', 'CCContact', 'CCEmails'] if sw: ret['edit']['visible'].extend(['Sampler', 'DateSampled']) ret['header_table']['prominent'].extend(['Sampler', 'DateSampled']) if state in ('to_be_preserved', 'sample_due', ): ret['edit']['visible'] = [ 'Contact', 'CCContact', 'CCEmails', 'AdHoc', 'Batch', 'SubGroup', 'ClientOrderNumber', 'ClientReference', 'ClientSampleID', 'Composite', 'InvoiceExclude' 'SampleCondition', 'SamplePoint', 'SampleType', 'SamplingDate', 'StorageLocation', 'SamplingDeviation', 'Priority', ] ret['view']['visible'] = [ 'Contact', 'CCContact', 'CCEmails', 'Sampler', 'DateSampled', 'MemberDiscount', 'Profile', 'ReportDryMatter', 'Specification', 'Sample', 'Template', ] ret['header_table']['visible'].remove('DateReceived') ret['header_table']['visible'].remove('DatePublished') elif state in ('sample_received', ): ret['edit']['visible'] = [ 'Contact', 'CCContact', 'CCEmails', 'Batch', 'SubGroup', 'ClientOrderNumber', 'ClientReference', 'ClientSampleID', 'SampleType', 'SamplePoint', 'StorageLocation', 'InvoiceExclude', 'Priority', ] ret['view']['visible'] = [ 'Contact', 'CCContact', 'CCEmails', 'AdHoc', 'Composite', 'DateReceived', 'MemberDiscount', 'Profile', 'ReportDryMatter', 'Sample', 'SampleCondition', 'Specification', 'SamplingDate', 'SamplingDeviation', 'Template', 'InvoiceExclude', ] ret['header_table']['visible'].remove('DatePublished') # include this in to_be_verified - there may be verified analyses to # pre-publish elif state in ('to_be_verified', 'verified', ): ret['edit']['visible'] = [ 'PublicationSpecification', 'StorageLocation', 'Priority', ] ret['view']['visible'] = [ 'Contact', 'CCContact', 'CCEmails', 'AdHoc', 'Batch', 'SubGroup', 'ClientOrderNumber', 'ClientReference', 'ClientSampleID', 'Composite', 'DateReceived', 'InvoiceExclude', 'MemberDiscount', 'Profile', 'ReportDryMatter', 'Sample', 'SampleCondition', 'SamplePoint', 'Specification', 'SampleType', 'SamplingDate', 'SamplingDeviation', 'Template', ] ret['header_table']['visible'].remove('DatePublished') elif state in ('published', ): ret['edit']['visible'] = [ 'StorageLocation', 'PublicationSpecification', ] ret['view']['visible'] = [ 'Contact', 'CCContact', 'CCEmails', 'AdHoc', 'Batch', 'SubGroup', 'ClientOrderNumber', 'ClientReference', 'ClientSampleID', 'Composite', 'DatePublished', 'DateReceived', 'InvoiceExclude' 'MemberDiscount', 'Profile', 'ReportDryMatter', 'Sample', 'SampleCondition', 'SamplePoint', 'Specification', 'SampleType', 'SamplingDate', 'SamplingDeviation', 'Priority', 'Template', ] hiddenattributes = getHiddenAttributesForClass(self.context.portal_type) if hiddenattributes: for section in ret.keys(): for key in ret[section]: if key == 'visible': for field in ret[section][key]: if field in hiddenattributes: ret[section][key].remove(field) return ret