Where is db being defined in your controller?  Are you importing it from 
common?

In my controller I have

from ..common import db, session, T, cache, auth, logger

and later

@action.uses("applications/index.html", session, db, T, auth.user)
def index():
    page['sub_title'] = A('MENU', _href=URL('index'))
    return dict(page=page)

Does that help?  If not, can you post a minimal common.py, models.py and 
your controller?

-Jim

On Thursday, February 27, 2020 at 5:55:23 AM UTC-6, Maurice Waka wrote:
>
> Hello, from this code, I have already defined my table in models as 
> follows:
>
> import os
> import datetime as dt
> from datetime import datetime, timedelta, date
> from py4web import action, request, DAL, Field, Session, Cache, user_in
> from py4web.utils.auth import Auth
> from py4web import action, request, abort, redirect, URL, Field
> from py4web.utils.form import Form, FormStyleBulma
> from py4web.utils.publisher import Publisher, ALLOW_ALL_POLICY
> from pydal.validators import * #IS_NOT_EMPTY, IS_INT_IN_RANGE, IS_IN_SET, 
> IS_IN_DB, IS_EMAIL, IS_MATCH
> from pydal.validators import *
> from . common import db, session, T, cache, authenticated, unauthenticated
> , Field
> from pydal.validators import *
>
>
> ### Define your table below
>
>
> # exposes services necessary to access the db.thing via ajax
> publisher = Publisher(db, policy=ALLOW_ALL_POLICY)
> # define session and cache objects
> session = Session(secret="some secret")
> cache = Cache(size=1000)
>
>
> # define database and tables
> #connection = sqlite.connect('cache.db', timeout=10)
> db = DAL("sqlite://xstorage.db", folder=os.path.join(os.path.dirname(
> __file__), "databases"))#db = DAL("sqlite://storage.db", 
> folder=os.path.join(os.path.dirname(__file__), "databases"))
> #db = DAL( "postgres://mauricewaka:b3th32dau2a##@localhost:5432/py4db", 
> migrate=False)
> auth = Auth(session, db)
> # (configure here)
> auth.enable()
>
>
> db.define_table('answers',
>                 Field('author', 'reference auth_user', default=auth.
> user_id, writable=False, readable=False),
>                 Field("message", 'text', requires=IS_NOT_EMPTY(), notnull=
> False),
>                 auth.signature
>                 )
>
>
>
>
> In the controllers, this is my code:
>
> @authenticated()
> @action.uses(auth.user)
> def index():
>
>     ...some code...
>     yesterday = dt.datetime.utcnow() - dt.timedelta(days=1)
>
>     db(db.answers.modified_on < yesterday).delete()
>     ...some more code....
>
>
>
> But I get this errors:
> Traceback (most recent call last):
>  File "/home/maurice/py4web/py4web/core.py", line 551, in wrapper
>  ret = func(*func_args, **func_kwargs)
>  File "/home/maurice/py4web/py4web/core.py", line 512, in wrapper
>  ret = func(*args, **kwargs)
>  File "/home/maurice/py4web/py4web/core.py", line 512, in wrapper
>  ret = func(*args, **kwargs)
>  File "apps/scaffoldx/controllers.py", line 571, in index
>  db(db.answers.modified_on < yesterday).delete()
>  File "/home/maurice/.local/lib/python3.6/site-packages/pydal/base.py", 
> line 763, in __getattr__
>  return BasicStorage.__getattribute__(self, key)
> AttributeError: 'DAL' object has no attribute 'answers'
>
>
>
> What could be wrong here and how can I solve it?
>
> N/B
>
> I have tried to define the table inside the controller code with an error 
> coming as : 'table already defined'. When I remove the definition then the 
> above error comes.
>
> Regards
>
>

-- 
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/web2py/bad53df9-0777-44ac-b0a9-8434a82f140e%40googlegroups.com.

Reply via email to