Пример #1
0
    def update(self):
        engine = pagetemplatefile.getEngine()
        context = aq_inner(self.context)

        sort_info = context.restrictedTraverse(
            '@@sort_info').getSortInfo()
        crit_fields, criteria = context.restrictedTraverse(
            '@@criteria_form').criteriaFields()

        columns = getattr(context, 'columns', ())
        ordered = []
        sorts = {}
        has_filters = False
        has_sums = False
        for column_obj in columns and columns.contentValues():
            field = column_obj.Field()
            column = dict(
                field=field,
                name=column_obj.Title(),
                link=column_obj.getLink(),
                id_=column_obj.getId(),
                )

            sort = column_obj.getSort()
            if sort:
                sort_crit = context[sort]
                sort_field = sort_crit.Field()
                column['sort'] = sort_field
                sorts[sort_field] = sort_crit.getId()
                # Remove column sorts from the batch_macro sorts.
                # Only want to do this for views that use columns so
                # we modify the values from the sort_info view.
                # TODO This depends on memoize, maybe inappropriate
                sort_info['ids'].remove(sort_field)

            filter_ = column_obj.getFilter()
            if filter_:
                has_filters = True
                filter_field = context[filter_].Field()
                column['filter_'] = criteria[filter_field]
                # Remove column filters from the form criteria fields.
                # Only want to do this for views that use columns so
                # we modify the values from the criteria_form view.
                # TODO This depends on memoize, maybe inappropriate
                crit_fields.remove(filter_field)

            expr = column_obj.getExpression()
            if expr:
                key, expr = taldefs.parseSubstitution(expr)
                column['expr'] = engine.compile(expr)
                column['structure'] = (key == 'structure')

            column['has_sum'] = has_sum = column_obj.getSum()
            if has_sum:
                has_sums = True

            ordered.append(column)
        return ordered, sorts, has_filters, has_sums
Пример #2
0
def initialize(context):

    from ftw.simplelayout.browser.provider import SimplelayoutExpression
    from Products.Five.browser.pagetemplatefile import getEngine
    from zope.tales.tales import RegistrationError

    zope_engine = getEngine()

    try:
        zope_engine.registerType('simplelayout', SimplelayoutExpression)
    except RegistrationError:
        # zope.reload support
        pass

    try:
        from five.pt import engine
        from ftw.simplelayout.browser.provider import (
            ChameleonSimplelayoutExpression
        )
    except ImportError:
        pass
    else:
        engine.Program.expression_types[
            'simplelayout'] = ChameleonSimplelayoutExpression
Пример #3
0
 def pt_getEngine(self):
     return getEngine()
Пример #4
0
 def pt_getEngine(self):
     return getEngine()