I tested again in 3.0.8. The fix for the Exporter class in gluon/sqlhtml.py introduced a new error: <class 'AttributeError'> 'DAL' object has no attribute 'compute' Version web2py™ Version 3.0.8-stable+timestamp.2024.12.01.23.08.05 Python Python 3.11.2: /home/web2py/myappenv/bin/uwsgi (prefix: /home/web2py/myappenv) Traceback (most recent call last): File "/home/web2py/myapp/gluon/restricted.py", line 214, in restricted exec(ccode, environment) File "/home/web2py/myapp/applications/mgmtbonusform/controllers/target.py", line 2112, in <module> File "/home/web2py/myapp/gluon/globals.py", line 474, in <lambda> self._caller = lambda f: f() ^^^ File "/home/web2py/myapp/gluon/tools.py", line 4514, in f return action(*a, **b) ^^^^^^^^^^^^^^^ File "/home/web2py/myapp/applications/mgmtbonusform/controllers/target.py", line 2109, in export_data raise HTTP(200, oExp.export(), **response.headers) ^^^^^^^^^^^^^ File "/home/web2py/myapp/applications/mgmtbonusform/models/utilities.py", line 139, in export records = self.represented() ^^^^^^^^^^^^^^^^^^ File "/home/web2py/myapp/gluon/sqlhtml.py", line 4323, in represented field = self.rows.db[t][f] ~~~~~~~~~~~~^^^ File "/home/web2py/myapp/gluon/packages/pydal/pydal/base.py", line 776, in __getitem__ return self.__getattr__(str(key)) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/web2py/myapp/gluon/packages/pydal/pydal/base.py", line 788, in __getattr__ return BasicStorage.__getattribute__(self, key) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AttributeError: 'DAL' object has no attribute 'compute'
I suppose the VirtualField inserted into the Row is the problem. Adding the original if-branch resolves it for my situation, but I am not sure if it has other implications: if "." not in col: row.append(record._extra[col]) elif not self.rows.db._adapter.REGEX_TABLE_DOT_FIELD.match(col): (t, f) = [name.strip('"') for name in col.split(".")] row.append(record[t][f]) else: # The grid code modifies rows.colnames, adding double quotes # around the table and field names -- so they must be removed here. (t, f) = [name.strip('"') for name in col.split(".")] field = self.rows.db[t][f] Massimo Di Pierro schrieb am Montag, 2. Dezember 2024 um 00:44:59 UTC+1: > Can you please help test version 3.0.7. This port has been painful. > > On Thursday, 28 November 2024 at 03:43:13 UTC-8 simon...@gmail.com wrote: > >> I have a few legacy apps on web2py and I am testing them with Web2Py >> 3.0.0 on py 3.11 (Debian 12). So far, I found two bugs: >> >> 1) Error in ExportClass of sqlhtml.py when using rows.setvirtualfields(). >> It appears, "_extra" is no longer used by DAL: >> Traceback (most recent call last): >> File "/home/web2py/myapp/gluon/packages/dal/pydal/objects.py", line >> 166, in __getattr__ >> return self.__getitem__(k) >> ^^^^^^^^^^^^^^^^^^^ >> File "/home/web2py/myapp/gluon/packages/dal/pydal/objects.py", line >> 146, in __getitem__ >> raise KeyError(key) >> KeyError: '_extra' >> >> During handling of the above exception, another exception occurred: >> >> Traceback (most recent call last): >> [...] >> File "/home/web2py/myapp/gluon/sqlhtml.py", line 4318, in represented >> row.append(record._extra[col]) >> ^^^^^^^^^^^^^ >> File "/home/web2py/myapp/gluon/packages/dal/pydal/objects.py", line >> 168, in __getattr__ >> raise AttributeError >> AttributeError >> >> Changing sqlhtml.py in line 4317ff from >> >> * if not self.rows.db._adapter.REGEX_TABLE_DOT_FIELD.match(col): >> row.append(record._extra[col])* >> >> to >> >> >> >> *if not self.rows.db._adapter.REGEX_TABLE_DOT_FIELD.match(col): (t, f) >> = [name.strip('"') for name in col.split(".")] row.append(record[t][f])* >> >> resolved it for me. >> >> >> 2) A second bug is triggered by redirect when a flash message is set: >> Traceback (most recent call last): >> File "/home/web2py/myapp/gluon/main.py", line 515, in wsgibase >> xmlescape(response.flash).replace(b"\n", b"") >> TypeError: replace() argument 1 must be str, not bytes >> >> removing the byte literal prefix fixed it. >> Massimo Di Pierro schrieb am Montag, 18. November 2024 um 06:44:40 UTC+1: >> >>> While will make the transition easier, the increased overlap between the >>> two products, means web2py (for python3) will be maintained better that it >>> has ever been. :-) >>> >>> On Monday, 28 October 2024 at 19:41:50 UTC-7 ra...@tarkus.mx wrote: >>> >>>> Great, and sad news, at the same time. Web2py has been great for us. >>>> Time to develop new projects in py4web. >>>> >>>> On Sunday, October 27, 2024 at 9:32:05 PM UTC-6 Massimo Di Pierro wrote: >>>> >>>>> web2py 2.99-beta is out on github. The next release will be 3.0.0. >>>>> >>>>> What changed: >>>>> - support for python 3 only, tested on 3.11 and 3.12 >>>>> - upgraded rocket to the latest rocket3 >>>>> - upgraded yatl to the latest >>>>> - upgraded pydal to the latest specifically the latter dropped support >>>>> for the Google Datastore but added, limited and experimental, support for >>>>> Google Firestore >>>>> >>>>> Please help me test it before release 3.0.0 stable. >>>>> >>>>> I am not planning further development in web2py (except for bug fixes) >>>>> since I believe py4web is better but I will continue improve pydal, >>>>> rocket3, and yatl which are shared between the two projects. >>>>> >>>>> Massimo >>>>> >>>>> >>>>> -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/web2py/00d19b6a-c1d7-4377-934a-934f787be979n%40googlegroups.com.