allow definition of field groups that may be used for controlling layout of records fields
This commit is contained in:
parent
249d507a72
commit
6e1333076b
3 changed files with 33 additions and 5 deletions
|
@ -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)
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue