__init__.py 9.19 KB
Newer Older
Jean-Paul Smets's avatar
Jean-Paul Smets committed
1 2 3
##############################################################################
#
# Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
Jean-Paul Smets's avatar
Jean-Paul Smets committed
4
#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
Jean-Paul Smets's avatar
Jean-Paul Smets committed
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
#
# WARNING: This program as such is intended to be used by professional
# programmers who take the whole responsability of assessing all potential
# consequences resulting from its eventual inadequacies and bugs
# End users who are looking for a ready-to-use solution with commercial
# garantees and support are strongly adviced to contract a Free Software
# Service Company
#
# 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 the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
#
##############################################################################
"""
    ERP5 is a set of components to implement an ERP
    with Zope
"""
32
from __future__ import absolute_import
Jean-Paul Smets's avatar
Jean-Paul Smets committed
33 34 35

# Update ERP5 Globals
from Products.ERP5Type.Utils import initializeProduct, updateGlobals
Jean-Paul Smets's avatar
Jean-Paul Smets committed
36
from AccessControl import ModuleSecurityInfo
37 38
import sys
from . import Permissions
39
from Products.PythonScripts.Utility import allow_class
40
from AccessControl.SecurityInfo import allow_module
41 42 43
this_module = sys.modules[ __name__ ]
document_classes = updateGlobals( this_module, globals(),
                                  permissions_module = Permissions)
Jean-Paul Smets's avatar
Jean-Paul Smets committed
44 45

# Define object classes and tools
46 47 48 49 50 51 52
from . import Form, FSForm, ListBox, ReportBox, MatrixBox
from .Tool import SelectionTool
from . import OOoChart, PDFTemplate, Report, ParallelListField
from . import PlanningBox, POSBox, FormBox, EditorField, ProxyField, DurationField
from . import RelationField, ImageField, MultiRelationField, MultiLinkField, InputButtonField
from . import CaptchaField
from . import PreferenceTool
53

Jean-Paul Smets's avatar
Jean-Paul Smets committed
54 55 56
from Products.Formulator.FieldRegistry import FieldRegistry
from Products.Formulator import StandardFields, HelperFields
from Products.CMFCore.utils import registerIcon
57 58 59


object_classes = ( Form.ERP5Form, FSForm.ERP5FSForm, PDFTemplate.PDFTemplate,
60
                   Report.ERP5Report)
61 62
portal_tools = ( SelectionTool.SelectionTool, PreferenceTool.PreferenceTool )
content_classes = ( )
Jean-Paul Smets's avatar
Jean-Paul Smets committed
63 64 65
content_constructors = ()

# Optimization
66
from Products.ERP5Type.PsycoWrapper import psyco
Jean-Paul Smets's avatar
Jean-Paul Smets committed
67 68 69 70 71
psyco.bind(ListBox.ListBoxWidget.render)
psyco.bind(ListBox.ListBoxValidator.validate)

# Finish installation
def initialize( context ):
72
    from . import Document
Jean-Paul Smets's avatar
Jean-Paul Smets committed
73 74 75 76 77 78 79 80 81
    initializeProduct(context, this_module, globals(),
                         document_module = Document,
                         document_classes = document_classes,
                         object_classes = object_classes,
                         portal_tools = portal_tools,
                         content_constructors = content_constructors,
                         content_classes = content_classes)

    # Initialise ERP5Form Formulator
82 83
    FieldRegistry.registerField(ProxyField.ProxyField,
                                'www/StringField.gif')
Romain Courteaud's avatar
Romain Courteaud committed
84 85
    FieldRegistry.registerField(DurationField.DurationField,
                                'www/StringField.gif')
86 87
    FieldRegistry.registerField(EditorField.EditorField,
                                'www/TextAreaField.gif')
88
    FieldRegistry.registerField(FormBox.FormBox,
89 90 91
                                'www/StringField.gif')
    FieldRegistry.registerField(POSBox.POSBox,
                                'www/StringField.gif')
Jean-Paul Smets's avatar
Jean-Paul Smets committed
92 93
    FieldRegistry.registerField(ListBox.ListBox,
                                'www/StringField.gif')
94 95
    FieldRegistry.registerField(ReportBox.ReportBox,
                                'www/StringField.gif')
Sebastien Robin's avatar
Sebastien Robin committed
96 97
    FieldRegistry.registerField(PlanningBox.PlanningBox,
                                'www/StringField.gif')
Jean-Paul Smets's avatar
Jean-Paul Smets committed
98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
    FieldRegistry.registerField(MatrixBox.MatrixBox,
                                'www/StringField.gif')
    FieldRegistry.registerField(RelationField.RelationStringField,
                                'www/StringField.gif')
    FieldRegistry.registerField(MultiRelationField.MultiRelationStringField,
                                'www/StringField.gif')
    FieldRegistry.registerField(ImageField.ImageField,
                                'www/StringField.gif')
    FieldRegistry.registerField(StandardFields.StringField,
                                'www/StringField.gif')
    FieldRegistry.registerField(StandardFields.CheckBoxField,
                                'www/CheckBoxField.gif')
    FieldRegistry.registerField(StandardFields.IntegerField,
                                'www/IntegerField.gif')
    FieldRegistry.registerField(StandardFields.TextAreaField,
                                'www/TextAreaField.gif')
    FieldRegistry.registerField(StandardFields.RawTextAreaField,
                                'www/TextAreaField.gif')
    FieldRegistry.registerField(StandardFields.LinesField,
                                'www/LinesField.gif')
    FieldRegistry.registerField(StandardFields.ListField,
                                'www/ListField.gif')
    FieldRegistry.registerField(StandardFields.MultiListField,
                                'www/MultiListField.gif')
122 123
    FieldRegistry.registerField(ParallelListField.ParallelListField,
                                'www/MultiListField.gif')
Jean-Paul Smets's avatar
Jean-Paul Smets committed
124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
    FieldRegistry.registerField(StandardFields.RadioField,
                                'www/RadioField.gif')
    FieldRegistry.registerField(StandardFields.MultiCheckBoxField,
                                'www/MultiCheckBoxField.gif')
    FieldRegistry.registerField(StandardFields.PasswordField,
                                'www/PasswordField.gif')
    FieldRegistry.registerField(StandardFields.EmailField,
                                'www/EmailField.gif')
    FieldRegistry.registerField(StandardFields.PatternField,
                                'www/PatternField.gif')
    FieldRegistry.registerField(StandardFields.FloatField,
                                'www/FloatField.gif')
    FieldRegistry.registerField(StandardFields.DateTimeField,
                                'www/DateTimeField.gif')
    FieldRegistry.registerField(StandardFields.FileField,
                                'www/FileField.gif')
    FieldRegistry.registerField(StandardFields.LinkField,
                                'www/LinkField.gif')
142 143
    FieldRegistry.registerField(StandardFields.LabelField,
                                'www/LabelField.gif')
144 145
    FieldRegistry.registerField(MultiLinkField.MultiLinkField,
                                'www/LinkField.gif')
146
    FieldRegistry.registerField(InputButtonField.InputButtonField,
147
                                'www/StringField.gif')
148 149
    FieldRegistry.registerField(OOoChart.OOoChart,
                                'www/StringField.gif')
150 151 152
    FieldRegistry.registerField(CaptchaField.CaptchaField,
                                'www/StringField.gif')

Jean-Paul Smets's avatar
Jean-Paul Smets committed
153 154 155 156 157
    # some helper fields
    FieldRegistry.registerField(HelperFields.ListTextAreaField)
    FieldRegistry.registerField(HelperFields.MethodField)
    FieldRegistry.registerField(HelperFields.TALESField)

158
    from . import HyperLinkField
159 160
    FieldRegistry.registerField(HyperLinkField.HyperLinkField,
                                'www/LinkField.gif')
161

162
    from . import VideoField
163 164
    FieldRegistry.registerField(VideoField.VideoField,
                                'www/StringField.gif')
165
    from . import AudioField
166 167
    FieldRegistry.registerField(AudioField.AudioField,
                                'www/StringField.gif')
168
    from . import GadgetField
169 170
    FieldRegistry.registerField(GadgetField.GadgetField,
                                'www/StringField.gif')
171
    from . import HoneypotField
172 173
    FieldRegistry.registerField(HoneypotField.HoneypotField,
                                'www/StringField.gif')
174

Jean-Paul Smets's avatar
Jean-Paul Smets committed
175 176 177 178 179 180 181 182 183 184
    # register help for the product
    context.registerHelp()
    # register field help for all fields
    FieldRegistry.registerFieldHelp(context)

    # make Dummy Fields into real fields
    FieldRegistry.initializeFields()

    # do initialization of Form class to make fields addable
    Form.initializeForm(FieldRegistry)
185
    Form.initializeForm(FieldRegistry, form_class=Report.ERP5Report)
Jean-Paul Smets's avatar
Jean-Paul Smets committed
186 187 188 189

    # Register FSPDFTemplate icon
    registerIcon(PDFTemplate.FSPDFTemplate,
                        'www/PDF.png', globals())
190 191 192
    # Register ProxyField icon
    registerIcon(ProxyField.ProxyField,
                        'www/ProxyField.png', globals())
Jean-Paul Smets's avatar
Jean-Paul Smets committed
193

Jean-Paul Smets's avatar
Jean-Paul Smets committed
194

195
## Initialize security ##
Sebastien Robin's avatar
Sebastien Robin committed
196
ModuleSecurityInfo('Products.ERP5Form.Report').declarePublic('ReportSection',)
197
ModuleSecurityInfo('Products.ERP5Form.MultiRelationField').declarePublic('SUB_FIELD_ID',)
198
allow_module('Products.ERP5Form.Selection')
199
from . import Selection
200 201
allow_class(Selection)

202 203
__module_aliases__ = ('Products.ERP5Form.SelectionTool', SelectionTool),