Ok, not yet encountered that but I can imagine it. Needs a bit of work than and I keep it for my own projects than for now.
On Sun, May 31, 2009 at 5:50 PM, mdipierro <mdipie...@cs.depaul.edu> wrote: > > this would break the dal because table headers can be aggregates and > are not necessarily table fields. That is why it is not done by > default. > > On May 31, 3:49 am, HansD <hans.don...@pobox.com> wrote: >> currently when having >> {{=records}} >> in your view, it prints out a table with the records, the table >> headers being the 'ugly' field names (prefixed with the table). >> >> The following patch will make use of the labels supplied on the >> db.define(...) >> >> I've not yet tested this for GAE. >> >> === modified file 'web2py/gluon/sql.py' >> --- web2py/gluon/sql.py 2009-05-29 15:28:54 +0000 >> +++ web2py/gluon/sql.py 2009-05-31 07:31:05 +0000 >> @@ -1036,6 +1036,11 @@ >> self.table.fields] >> return ', '.join(s) >> >> + def labels(self): >> + l = {} >> + for field in self.table.fields: >> + l.update({'%s.%s' % (self.table._tablename, field): >> self.table[field].label}) >> + return l >> >> class SQLJoin(object): >> >> @@ -1191,7 +1196,8 @@ >> ftype = field.type.native or field.type.type >> elif not field.type in self._db._translator: >> raise SyntaxError, \ >> - 'SQLField: unkown field type: %s' % field.type >> + "SQLField: unkown field type: '%s' for '%s'" \ >> + % (field.type, field) >> else: >> ftype = self._db._translator[field.type]\ >> % dict(length=field.length) >> @@ -1921,6 +1927,13 @@ >> if len(tablenames) < 1: >> raise SyntaxError, 'SQLSet: no tables selected' >> self.colnames = [c.strip() for c in sql_f.split(', ')] >> + >> + if len(tablenames) > 1: >> + self.labels = \ >> + ['%s [%s]' % (self._db[table].ALL.labels(), table) >> for table in tablenames] >> + else: >> + self.labels = [self._db[table].ALL.labels() for table in >> tablenames] >> + >> if self.sql_w: >> sql_w = ' WHERE ' + self.sql_w >> else: >> @@ -2015,7 +2028,10 @@ >> r = cache_model(key, lambda : response(query), >> time_expire) >> if self._db._dbname in ['mssql', 'mssql2', 'db2']: >> r = r[(attributes.get('limitby', None) or (0,))[0]:] >> - return SQLRows(self._db, r, *self.colnames) >> + >> + labels = {'labels': self.labels} >> + >> + return SQLRows(self._db, r, *self.colnames, **labels ) >> >> def _count(self): >> return self._select('count(*)') >> @@ -2120,13 +2136,21 @@ >> self, >> db, >> response, >> - *colnames >> + *colnames, >> + **args >> ): >> self._db = db >> self.colnames = colnames >> self.response = response >> self.hooks = True >> self.compact = True >> + >> + if 'labels' in args.keys(): >> + self.labels = args['labels'][0] >> + else: >> + self.labels = {} >> + for col in colnames: >> + self.labels.append({col: col}) >> >> def __nonzero__(self): >> if len(self.response): >> >> === modified file 'web2py/gluon/sqlhtml.py' >> --- web2py/gluon/sqlhtml.py 2009-05-23 13:22:56 +0000 >> +++ web2py/gluon/sqlhtml.py 2009-05-31 07:36:56 +0000 >> @@ -611,12 +611,13 @@ >> self.attributes = attributes >> self.sqlrows = sqlrows >> (components, row) = (self.components, []) >> + >> if not orderby: >> for c in sqlrows.colnames: >> - row.append(TH(headers.get(c, c))) >> + row.append(TH(headers.get(c, sqlrows.labels[c]))) >> else: >> for c in sqlrows.colnames: >> - row.append(TH(A(headers.get(c, c), _href='?orderby=' >> + row.append(TH(A(headers.get(c, sqlrows.labels[c]), >> _href='?orderby=' >> + c))) >> components.append(THEAD(TR(*row))) >> tbody = [] > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "web2py Web Framework" group. To post to this group, send email to web2py@googlegroups.com To unsubscribe from this group, send email to web2py+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/web2py?hl=en -~----------~----~----~----~------~----~------~--~---