示例#1
0
 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,
                                                          ])
示例#3
0
 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)
示例#4
0
 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
示例#5
0
 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
示例#6
0
 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
示例#7
0
 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
示例#9
0
 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
示例#10
0
    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