Sorry again its not working :( :(
File
"/home/gaffar/ProjectWork/tg2env/lib/python2.6/site-packages/distribute-0.6.10-py2.6.egg/pkg_resources.py",
line 1948, in load
entry = __import__(self.module_name, globals(),globals(),
['__name__'])
File
"/home/gaffar/ProjectWork/tg2env/INFOCRMS/infocrms/config/middleware.py", line
4, in <module>
from infocrms.config.app_cfg import base_config
File
"/home/gaffar/ProjectWork/tg2env/INFOCRMS/infocrms/config/app_cfg.py",
line 19, in <module>
from infocrms import model
File
"/home/gaffar/ProjectWork/tg2env/INFOCRMS/infocrms/model/__init__.py",
line 62, in <module>
from infocrms.model.auth import User, Group, Permission, NamePrefix,
Association
File
"/home/gaffar/ProjectWork/tg2env/INFOCRMS/infocrms/model/auth.py", line
63, in <module>
class Association(DeclarativeBase):
File
"/home/gaffar/ProjectWork/tg2env/INFOCRMS/infocrms/model/auth.py", line
77, in Association
user = relationship('User', primaryjoin=user_id==User.user_id,
backref='associations', cascade="all, delete")
NameError: name 'User' is not defined
-------------------------
On Fri, 2011-02-18 at 10:41 +0100, Luca Verardi wrote:
> mmm.. I'm not sure but..
> Have you to specify a relation like this? in Class Association
> group = relationship('Group', primaryjoin=group_id==Group.group_id
> ,backref='associations',cascade="all, delete")
>
>
>
>
> On 02/18/2011 08:53 AM, Abdul Gaffar wrote:
> > Hi,
> >
> > I tried the following example, rows are inserting fine but when I try
> > to login I am getting the following error.
> >
> >
> >
> >
> >
> > Error -<class 'sqlalchemy.exc.InvalidRequestError'>: Mapper 'Mapper|
> > User|t_user' has no property 'groups'
> > URL: http://192.168.2.129:8081/login_handler?__logins=0&came_from=%2F
> > File
> > '/home/gaffar/ProjectWork/tg2env/lib/python2.6/site-packages/WebError-0.10.1-py2.6.egg/weberror/errormiddleware.py',
> > line 162 in __call__
> > app_iter = self.application(environ, sr_checker)
> > File
> > '/home/gaffar/ProjectWork/tg2env/lib/python2.6/site-packages/TurboGears2-2.1-py2.6.egg/tg/configuration.py',
> > line 796 in remover
> > return app(environ, start_response)
> > File
> > '/home/gaffar/ProjectWork/tg2env/lib/python2.6/site-packages/repoze.tm2-1.0b1-py2.6.egg/repoze/tm/__init__.py',
> > line 23 in __call__
> > result = self.application(environ, save_status_and_headers)
> > File
> > '/home/gaffar/ProjectWork/tg2env/lib/python2.6/site-packages/repoze.who-1.0.18-py2.6.egg/repoze/who/middleware.py',
> > line 85 in __call__
> > self.add_metadata(environ, classification, identity)
> > File
> > '/home/gaffar/ProjectWork/tg2env/lib/python2.6/site-packages/repoze.who-1.0.18-py2.6.egg/repoze/who/middleware.py',
> > line 179 in add_metadata
> > plugin.add_metadata(environ, identity)
> > File
> > '/home/gaffar/ProjectWork/tg2env/lib/python2.6/site-packages/repoze.what-1.0.9-py2.6.egg/repoze/what/middleware.py',
> > line 98 in add_metadata
> > groups, permissions = self._find_groups(identity)
> > File
> > '/home/gaffar/ProjectWork/tg2env/lib/python2.6/site-packages/repoze.what-1.0.9-py2.6.egg/repoze/what/middleware.py',
> > line 78 in _find_groups
> > groups |= set(grp_fetcher.find_sections(credentials))
> > File
> > '/home/gaffar/ProjectWork/tg2env/lib/python2.6/site-packages/repoze.what-1.0.9-py2.6.egg/repoze/what/adapters/__init__.py',
> > line 170 in find_sections
> > return self._find_sections(hint)
> > File
> > '/home/gaffar/ProjectWork/tg2env/lib/python2.6/site-packages/repoze.what.plugins.sql-1.0-py2.6.egg/repoze/what/plugins/sql/adapters.py',
> > line 307 in _find_sections
> > user = self._get_item_as_row(id_)
> > File
> > '/home/gaffar/ProjectWork/tg2env/lib/python2.6/site-packages/repoze.what.plugins.sql-1.0-py2.6.egg/repoze/what/plugins/sql/adapters.py',
> > line 197 in _get_item_as_row
> > query =
> > self.dbsession.query(self.children_class).options(eagerload(self.translations['sections']))
> > File
> > '/home/gaffar/ProjectWork/tg2env/lib/python2.6/site-packages/SQLAlchemy-0.6.6-py2.6.egg/sqlalchemy/orm/query.py',
> > line 853 in options
> > return self._options(False, *args)
> > File '<string>', line 1 in<lambda>
> > File
> > '/home/gaffar/ProjectWork/tg2env/lib/python2.6/site-packages/SQLAlchemy-0.6.6-py2.6.egg/sqlalchemy/orm/query.py',
> > line 52 in generate
> > fn(self, *args[1:], **kw)
> > File
> > '/home/gaffar/ProjectWork/tg2env/lib/python2.6/site-packages/SQLAlchemy-0.6.6-py2.6.egg/sqlalchemy/orm/query.py',
> > line 870 in _options
> > opt.process_query(self)
> > File
> > '/home/gaffar/ProjectWork/tg2env/lib/python2.6/site-packages/SQLAlchemy-0.6.6-py2.6.egg/sqlalchemy/orm/interfaces.py',
> > line 760 in process_query
> > self._process(query, True)
> > File
> > '/home/gaffar/ProjectWork/tg2env/lib/python2.6/site-packages/SQLAlchemy-0.6.6-py2.6.egg/sqlalchemy/orm/interfaces.py',
> > line 766 in _process
> > paths, mappers = self._get_paths(query, raiseerr)
> > File
> > '/home/gaffar/ProjectWork/tg2env/lib/python2.6/site-packages/SQLAlchemy-0.6.6-py2.6.egg/sqlalchemy/orm/interfaces.py',
> > line 843 in _get_paths
> > resolve_synonyms=True, raiseerr=raiseerr)
> > File
> > '/home/gaffar/ProjectWork/tg2env/lib/python2.6/site-packages/SQLAlchemy-0.6.6-py2.6.egg/sqlalchemy/orm/mapper.py',
> > line 941 in get_property
> > "Mapper '%s' has no property '%s'" % (self, key))
> > InvalidRequestError: Mapper 'Mapper|User|t_user' has no property
> > 'groups'
> >
> >
> > ------------------------------------
> >
> >
> >
> >
> > On Thu, 2011-02-17 at 14:02 +0100, Christoph Zwerschke wrote:
> >
> >> Am 17.02.2011 13:00 schrieb Abdul Gaffar:
> >>
> >>> I tried this example, I am facing proble while inserting the records..
> >>>
> >> I think the problem is you can't easily associate items with SQLAlchemy
> >> by using the relationship property. It's really made only for binary
> >> relationships. I guess you need to do it explicitely, like this:
> >>
> >> user = User.query.filter_by(user_name='abdul').one()
> >> group = Group.query.filter_by(group_name='foo').one()
> >> project = Project.query.filter_by(project_name='tg').one()
> >>
> >> DBSession.add(Association(user, group, project))
> >>
> >> DBSession.flush()
> >>
> >> print user.groups_for_project(project)
> >>
> >> where the classes are defined like that:
> >>
> >>
> >> class Association(DeclarativeBase):
> >> __tablename__ = 't_assoc'
> >>
> >> user_id = Column(Integer, ForeignKey('t_user.user_id',
> >> onupdate="CASCADE", ondelete="CASCADE"), primary_key=True)
> >> group_id = Column(Integer, ForeignKey('t_group.group_id',
> >> onupdate="CASCADE", ondelete="CASCADE"), primary_key=True,)
> >> project_id = Column(Integer, ForeignKey('t_project.project_id',
> >> onupdate="CASCADE", ondelete="CASCADE"), primary_key=True)
> >>
> >> user = relationship('User', backref='associations',
> >> cascade="all, delete")
> >> group = relationship('Group', backref='associations',
> >> cascade="all, delete")
> >> project = relationship('Project', backref='associations',
> >> cascade="all, delete")
> >>
> >> def __init__(self, user, group, project):
> >> self.user_id = user.user_id
> >> self.group_id = group.group_id
> >> self.project_id = project.project_id
> >>
> >>
> >> class User(DeclarativeBase):
> >> __tablename__ = 't_user'
> >>
> >> user_id = Column(Integer, autoincrement=True, primary_key=True)
> >> user_name = Column(Unicode(32), unique=True, nullable=False)
> >> email_address = Column(Unicode(320), unique=True, nullable=False,
> >> info={'rum': {'field':'Email'}})
> >>
> >> def __repr__(self):
> >> return ('<User: user_name=%r, email=%r>' % (
> >> self.user_name, self.email_address))
> >>
> >> def __unicode__(self):
> >> return self.user_name
> >>
> >> def groups_for_project(self, project):
> >> return Project.query.join(Association).filter_by(
> >> project_id=project.project_id, user_id=self.user_id).all()
> >>
> >>
> >> class Group(DeclarativeBase):
> >> __tablename__ = 't_group'
> >>
> >> group_id = Column(Integer, autoincrement=True, primary_key=True)
> >> group_name = Column(Unicode(16), unique=True)
> >>
> >> def __repr__(self):
> >> return '<Group: name=%r>' % self.group_name
> >>
> >> def __unicode__(self):
> >> return self.group_name
> >>
> >>
> >> class Project(DeclarativeBase):
> >> __tablename__ = 't_project'
> >>
> >> project_id = Column(Integer, autoincrement=True, primary_key=True)
> >> project_name = Column(Unicode(80), unique=True, nullable=False)
> >>
> >> def __repr__(self):
> >> return '<Project(%r)>' % self.project_name
> >>
> >>
> >> Similarly, you can define User.projects_for_group and the corresponding
> >> methods on the other classes.
> >>
> >> But you'll probably get a more profound answer on the SA mailing list
> >> (if you follow http://www.gerv.net/hacking/how-to-ask-good-questions/).
> >>
> >> -- Christoph
> >>
> >>
> >
>
--
You received this message because you are subscribed to the Google Groups
"TurboGears" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/turbogears?hl=en.