streamlined Field.__init__
This commit is contained in:
@@ -1 +1 @@
|
|||||||
Version 2.00.0 (2012-08-18 00:10:33) dev
|
Version 2.00.0 (2012-08-18 10:03:45) dev
|
||||||
|
|||||||
+20
-36
@@ -7228,11 +7228,8 @@ class Table(dict):
|
|||||||
fieldnames.add('id')
|
fieldnames.add('id')
|
||||||
self._id = field
|
self._id = field
|
||||||
for field in fields:
|
for field in fields:
|
||||||
if not isinstance(field, (Field, Table)):
|
if isinstance(field, Field) and not field.name in fieldnames:
|
||||||
raise SyntaxError, \
|
if field.db is not None:
|
||||||
'define_table argument is not a Field or Table: %s' % field
|
|
||||||
elif isinstance(field, Field) and not field.name in fieldnames:
|
|
||||||
if hasattr(field, '_db'):
|
|
||||||
field = copy.copy(field)
|
field = copy.copy(field)
|
||||||
newfields.append(field)
|
newfields.append(field)
|
||||||
fieldnames.add(field.name)
|
fieldnames.add(field.name)
|
||||||
@@ -7246,9 +7243,9 @@ class Table(dict):
|
|||||||
field = field.clone(point_self_references_to=t2)
|
field = field.clone(point_self_references_to=t2)
|
||||||
newfields.append(field)
|
newfields.append(field)
|
||||||
fieldnames.add(field.name)
|
fieldnames.add(field.name)
|
||||||
else:
|
elif not isinstance(field, (Field, Table)):
|
||||||
# let's ignore new fields with duplicated names!!!
|
raise SyntaxError, \
|
||||||
pass
|
'define_table argument is not a Field or Table: %s' % field
|
||||||
fields = newfields
|
fields = newfields
|
||||||
self._db = db
|
self._db = db
|
||||||
tablename = tablename
|
tablename = tablename
|
||||||
@@ -8026,6 +8023,9 @@ class FieldLazy(object):
|
|||||||
self.handler = handler
|
self.handler = handler
|
||||||
|
|
||||||
|
|
||||||
|
def list_represent(x,r=None):
|
||||||
|
return ', '.join(str(y) for y in x or [])
|
||||||
|
|
||||||
class Field(Expression):
|
class Field(Expression):
|
||||||
|
|
||||||
Virtual = FieldVirtual
|
Virtual = FieldVirtual
|
||||||
@@ -8072,13 +8072,13 @@ class Field(Expression):
|
|||||||
length=None,
|
length=None,
|
||||||
default=DEFAULT,
|
default=DEFAULT,
|
||||||
required=False,
|
required=False,
|
||||||
requires=DEFAULT,
|
requires=None,
|
||||||
ondelete='CASCADE',
|
ondelete='CASCADE',
|
||||||
notnull=False,
|
notnull=False,
|
||||||
unique=False,
|
unique=False,
|
||||||
uploadfield=True,
|
uploadfield=True,
|
||||||
widget=None,
|
widget=None,
|
||||||
label=DEFAULT,
|
label=None,
|
||||||
comment=None,
|
comment=None,
|
||||||
writable=True,
|
writable=True,
|
||||||
readable=True,
|
readable=True,
|
||||||
@@ -8098,24 +8098,17 @@ class Field(Expression):
|
|||||||
filter_out = None,
|
filter_out = None,
|
||||||
custom_qualifier = None,
|
custom_qualifier = None,
|
||||||
):
|
):
|
||||||
self.db = None
|
self._db = self.db = None # both for backward compatibility
|
||||||
self.op = None
|
self.op = None
|
||||||
self.first = None
|
self.first = None
|
||||||
self.second = None
|
self.second = None
|
||||||
if not isinstance(fieldname,str):
|
|
||||||
raise SyntaxError, "missing field name"
|
|
||||||
self.name = fieldname = cleanup(fieldname)
|
self.name = fieldname = cleanup(fieldname)
|
||||||
if hasattr(Table,fieldname) or fieldname[0] == '_' or \
|
if not isinstance(fieldname,str) or hasattr(Table,fieldname) or \
|
||||||
regex_python_keywords.match(fieldname):
|
fieldname[0] == '_' or regex_python_keywords.match(fieldname):
|
||||||
raise SyntaxError, 'Field: invalid field name: %s' % fieldname
|
raise SyntaxError, 'Field: invalid field name: %s' % fieldname
|
||||||
if isinstance(type, Table):
|
self.type = type if not isinstance(type, Table) else 'reference %s' % type
|
||||||
type = 'reference ' + type._tablename
|
self.length = length if not length is None else DEFAULTLENGTH.get(self.type,512)
|
||||||
self.type = type # 'string', 'integer'
|
self.default = default if default!=DEFAULT else (update or None)
|
||||||
self.length = (length is None) and DEFAULTLENGTH.get(type,512) or length
|
|
||||||
if default is DEFAULT:
|
|
||||||
self.default = update or None
|
|
||||||
else:
|
|
||||||
self.default = default
|
|
||||||
self.required = required # is this field required
|
self.required = required # is this field required
|
||||||
self.ondelete = ondelete.upper() # this is for reference fields only
|
self.ondelete = ondelete.upper() # this is for reference fields only
|
||||||
self.notnull = notnull
|
self.notnull = notnull
|
||||||
@@ -8125,19 +8118,14 @@ class Field(Expression):
|
|||||||
self.uploadseparate = uploadseparate
|
self.uploadseparate = uploadseparate
|
||||||
self.uploadfs = uploadfs
|
self.uploadfs = uploadfs
|
||||||
self.widget = widget
|
self.widget = widget
|
||||||
if label is DEFAULT:
|
|
||||||
self.label = fieldname.replace('_', ' ').title()
|
|
||||||
else:
|
|
||||||
self.label = label or ''
|
|
||||||
self.comment = comment
|
self.comment = comment
|
||||||
self.writable = writable
|
self.writable = writable
|
||||||
self.readable = readable
|
self.readable = readable
|
||||||
self.update = update
|
self.update = update
|
||||||
self.authorize = authorize
|
self.authorize = authorize
|
||||||
self.autodelete = autodelete
|
self.autodelete = autodelete
|
||||||
if not represent and type in ('list:integer','list:string'):
|
self.represent = list_represent if \
|
||||||
represent=lambda x,r=None: ', '.join(str(y) for y in x or [])
|
represent==None and type in ('list:integer','list:string') else represent
|
||||||
self.represent = represent
|
|
||||||
self.compute = compute
|
self.compute = compute
|
||||||
self.isattachment = True
|
self.isattachment = True
|
||||||
self.custom_store = custom_store
|
self.custom_store = custom_store
|
||||||
@@ -8147,12 +8135,8 @@ class Field(Expression):
|
|||||||
self.filter_in = filter_in
|
self.filter_in = filter_in
|
||||||
self.filter_out = filter_out
|
self.filter_out = filter_out
|
||||||
self.custom_qualifier = custom_qualifier
|
self.custom_qualifier = custom_qualifier
|
||||||
if self.label is None:
|
self.label = label if label!=None else fieldname.replace('_',' ').title()
|
||||||
self.label = fieldname.replace('_',' ').title()
|
self.requires = requires if requires!=None else []
|
||||||
if requires is None:
|
|
||||||
self.requires = []
|
|
||||||
else:
|
|
||||||
self.requires = requires
|
|
||||||
|
|
||||||
def clone(self,point_self_references_to=False,**args):
|
def clone(self,point_self_references_to=False,**args):
|
||||||
field = copy.copy(self)
|
field = copy.copy(self)
|
||||||
|
|||||||
Reference in New Issue
Block a user