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
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
def pt_getEngine(self): return getEngine()
def pt_getEngine(self): return getEngine()