Hello!
( Maybe I'm doing something wrong? )
my application
# models.py
from .common import db, Field
from pydal.validators import *
from pydal.tools.tags import Tags
if not db(db.auth_user).count():
u1 = {
"username": "anil",
"email": "
an...@nil.com",
"password": str(CRYPT()("xyz12345")[0]),
"first_name": "Anil_first",
"last_name": "Anil_Last",
}
for e in [u1, ]: db.auth_user.insert(**db.auth_user._filter_fields(e) )
db.commit()
grps = Tags(db.auth_user, 'grps')
grps.add(1, 'manager')
grps.add(1, 'dancer' )
grps.add(1, 'teacher')
grps.add(1, 'teacher')
grps.add(1, 'teacher')
grps.add(1, 'teacher')
db.commit()
# controllers.py
from py4web import action, request, abort, redirect, URL
from yatl.helpers import A
from .common import db, session, T, cache, auth, logger, authenticated, unauthenticated, flash
from pydal.tools.tags import Tags
print( db(db.auth_user_tag_grps).select() )
grps2 = Tags(db.auth_user, 'grps')
@action('find_by_tag/{group_name}')
@action.uses(db)
def find(group_name):
users = db(grps2.find([group_name])).select(orderby=db.auth_user.first_name | db.auth_user.last_name)
return {'users': users}
@action("index")
@action.uses("index.html", auth, T)
def index():
user = auth.get_user()
message = T("Hello {first_name}".format(**user) if user else "Hello")
actions = {"allowed_actions": auth.param.allowed_actions}
return dict(message=message, actions=actions)
-----------------------------------------------------------------
result
[2022-07-29T14:07:40.155898]: Traceback (most recent call last):
File "/home/w3p/set7-py39/py4web/py4web/core.py", line 1317, in import_app
module = importlib.machinery.SourceFileLoader(
File "<frozen importlib._bootstrap_external>", line 529, in _check_name_wrapper
File "<frozen importlib._bootstrap_external>", line 1029, in load_module
File "<frozen importlib._bootstrap_external>", line 854, in load_module
File "<frozen importlib._bootstrap>", line 274, in _load_module_shim
File "<frozen importlib._bootstrap>", line 711, in _load
File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 850, in exec_module
File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
File "/home/w3p/set7-py39/py4web/apps/etag/__init__.py", line 10, in <module>
from . import controllers
File "/home/w3p/set7-py39/py4web/apps/etag/controllers.py", line 11, in <module>
grps2 = Tags(db.auth_user, 'grps')
File "/home/w3p/anaconda3/envs/set7-py39/lib/python3.9/site-packages/pydal/tools/tags.py", line 12, in __init__
self.tag_table = db.define_table(
File "/home/w3p/anaconda3/envs/set7-py39/lib/python3.9/site-packages/pydal/base.py", line 644, in define_table
raise SyntaxError("table already defined: %s" % tablename)
SyntaxError: table already defined: auth_user_tag_grps
[FAILED] loading etag (table already defined: auth_user_tag_grps)
-----------------------------------------------------------------
can fix the file tags.py ?
vi "/home/w3p/anaconda3/envs/set7-py39/lib/python3.9/site-packages/pydal/tools/tags.py"
class Tags:
def __init__(self, table, name="default"):
self.table = table
self.tagged_table = table._tablename + "_tag_" + name
db = table._db
if not self.tagged_table in db.tables:
self.tag_table = db.define_table(
self.tagged_table,
Field("tagpath"),
Field("record_id", table),
)
db.commit()
def orig__init__(self, table, name="default"):
self.table = table
db = table._db
self.tag_table = db.define_table(
table._tablename + "_tag_" + name,
Field("tagpath"),
Field("record_id", table),
)
db.commit()
thanks in advance