diff --git a/composer/schema/field.py b/composer/schema/field.py index 0eb88f2..3e8d63b 100644 --- a/composer/schema/field.py +++ b/composer/schema/field.py @@ -1,5 +1,5 @@ # -# Copyright (c) 2013 Helmut Merz helmutm@cy55.de +# Copyright (c) 2014 Helmut Merz helmutm@cy55.de # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -41,6 +41,13 @@ from cybertools.composer.schema.schema import formErrors from cybertools.util.format import toStr, toUnicode +class FieldGroup(object): + + def __init__(self, name, label): + self.name = name + self.label = label + + class Field(Component): implements(IField) diff --git a/composer/schema/grid/field.py b/composer/schema/grid/field.py index 7b71014..a02f651 100644 --- a/composer/schema/grid/field.py +++ b/composer/schema/grid/field.py @@ -42,7 +42,30 @@ class GridFieldInstance(ListFieldInstance): @Lazy def columnTypes(self): - return [createField(t) for t in self.context.column_types] + fields = [createField(t) for t in self.context.column_types] + for f in fields: + f.linkedFields = [createField(sf) + for sf in getattr(f.baseField, 'linkedFields', [])] + return fields + + #@Lazy + def columnTypesForLayout(self): + result = [] + groups = {} + for f in self.columnTypes: + group = getattr(f.baseField, 'group', None) + if group is None: + result.append(dict(name=f.name, + label=(f.description or f.title), fields=[f])) + else: + g = groups.get(group.name) + if g is None: + g = dict(name=group.name, label=group.label, fields=[f]) + groups[group.name] = g + result.append(g) + else: + g['fields'].append(f) + return result @Lazy def columnFieldInstances(self): diff --git a/composer/schema/schema.py b/composer/schema/schema.py index 0834481..fb5ae88 100644 --- a/composer/schema/schema.py +++ b/composer/schema/schema.py @@ -1,5 +1,5 @@ # -# Copyright (c) 2010 Helmut Merz helmutm@cy55.de +# Copyright (c) 2014 Helmut Merz helmutm@cy55.de # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -19,8 +19,6 @@ """ Basic classes for schemas, i.e. sets of fields that may be used for creating editing forms or display views for objects. - -$Id$ """ from zope.interface import implements