streamlined Field.__init__

This commit is contained in:
mdipierro
2012-08-18 10:03:50 -05:00
parent e6bed63344
commit 19d674b4e5
2 changed files with 21 additions and 37 deletions
+1 -1
View File
@@ -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
View File
@@ -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)