~numerigraphe/openobject-server/trunk-bug525808-mutable-defaults

« back to all changes in this revision

Viewing changes to openerp/osv/fields.py

  • Committer: Olivier Dony
  • Date: 2011-10-21 14:28:36 UTC
  • Revision ID: odo@openerp.com-20111021142836-0k4qruhe1vgodysu
[IMP] fields.boolean,integer,float: warning when required=True, as it has no effect

A PendingDeprecationWarning is used in order to reduce the
verbosity of the logging, and to indicate that we might
forbid passing required=True in a future OpenERP version
for fields types where it makes no sense.

Show diffs side-by-side

added added

removed removed

Lines of Context:
131
131
    _symbol_f = lambda x: x and 'True' or 'False'
132
132
    _symbol_set = (_symbol_c, _symbol_f)
133
133
 
 
134
    def __init__(self, string='unknown', required=False, **args):
 
135
        super(boolean, self).__init__(string=string, required=required, **args)
 
136
        if required:
 
137
            warnings.warn("Making a boolean field `required` has no effect, as NULL values are "
 
138
                          "automatically turned into False", PendingDeprecationWarning, stacklevel=2)
 
139
 
134
140
class integer(_column):
135
141
    _type = 'integer'
136
142
    _symbol_c = '%s'
138
144
    _symbol_set = (_symbol_c, _symbol_f)
139
145
    _symbol_get = lambda self,x: x or 0
140
146
 
 
147
    def __init__(self, string='unknown', required=False, **args):
 
148
        super(integer, self).__init__(string=string, required=required, **args)
 
149
        if required:
 
150
            warnings.warn("Making an integer field `required` has no effect, as NULL values are "
 
151
                          "automatically turned into 0", PendingDeprecationWarning, stacklevel=2)
 
152
 
141
153
class integer_big(_column):
142
154
    """Experimental 64 bit integer column type, currently unused.
143
155
 
155
167
    _symbol_set = (_symbol_c, _symbol_f)
156
168
    _symbol_get = lambda self,x: x or 0
157
169
 
 
170
    def __init__(self, string='unknown', required=False, **args):
 
171
        super(integer_big, self).__init__(string=string, required=required, **args)
 
172
        if required:
 
173
            warnings.warn("Making an integer_big field `required` has no effect, as NULL values are "
 
174
                          "automatically turned into 0", PendingDeprecationWarning, stacklevel=2)
 
175
 
158
176
class reference(_column):
159
177
    _type = 'reference'
160
178
    _classic_read = False # post-process to handle missing target
208
226
    _symbol_set = (_symbol_c, _symbol_f)
209
227
    _symbol_get = lambda self,x: x or 0.0
210
228
 
211
 
    def __init__(self, string='unknown', digits=None, digits_compute=None, **args):
212
 
        _column.__init__(self, string=string, **args)
 
229
    def __init__(self, string='unknown', digits=None, digits_compute=None, required=False, **args):
 
230
        _column.__init__(self, string=string, required=required, **args)
213
231
        self.digits = digits
214
232
        self.digits_compute = digits_compute
 
233
        if required:
 
234
            warnings.warn("Making a float field `required` has no effect, as NULL values are "
 
235
                          "automatically turned into 0.0", PendingDeprecationWarning, stacklevel=2)
215
236
 
216
237
 
217
238
    def digits_change(self, cr):