can you send me your app? .w2p or only your datamodels? May be we can work to improve the approach!
On Wed, Feb 1, 2012 at 4:12 PM, Bruce Wade <[email protected]> wrote: > Actually just tested the same problem happens with all datamodels I > created and try to save from using appadmin. > appadmin.py: > from myapp import MyApp > app = MyApp() > auth = app.auth > #from datamodel.post import Post as PostModel > from datamodel.user import UserAccount > from datamodel.dist import Distributor > from datamodel.lang import Language > db = app.db([UserAccount, Distributor, Language]) > > > Traceback (most recent call last): > > > File > "/home/bruce/Development/bossteam_dev/projects/yaw_dev/gluon/restricted.py", > line 204, in restricted > > > exec ccode in environment > > > File > "/home/bruce/Development/bossteam_dev/projects/yaw_dev/applications/welcome/controllers/appadmin.py" > <http://127.0.0.1:8000/admin/edit/welcome/controllers/appadmin.py>, line > 444, in <module> > > > File > "/home/bruce/Development/bossteam_dev/projects/yaw_dev/gluon/globals.py", > line 172, in <lambda> > > > self._caller = lambda f: f() > > > File > "/home/bruce/Development/bossteam_dev/projects/yaw_dev/applications/welcome/controllers/appadmin.py" > <http://127.0.0.1:8000/admin/edit/welcome/controllers/appadmin.py>, line > 139, in insert > > > if form.accepts(request.vars, session): > > > File > "/home/bruce/Development/bossteam_dev/projects/yaw_dev/gluon/sqlhtml.py", > line 1267, in accepts > > > self.vars.id = self.table.insert(**fields) > > > File "/home/bruce/Development/bossteam_dev/projects/yaw_dev/gluon/dal.py", > line 5597, in insert > > > return self._db._adapter.insert(self,self._listify(fields)) > > > File "/home/bruce/Development/bossteam_dev/projects/yaw_dev/gluon/dal.py", > line 914, in insert > > > raise e > > > OperationalError: no such table: user_account > > > On Wed, Feb 1, 2012 at 10:08 AM, Bruce Wade <[email protected]> wrote: > >> Ok thanks that makes things clear. >> >> I am having another issue: >> >> from gluon.dal import Field >> from basemodel import BaseModel >> from gluon.validators import IS_NOT_EMPTY, IS_NOT_IN_DB >> from gluon import current >> >> class Language(BaseModel): >> tablename = "languages" >> >> def set_properties(self): >> T = current.T >> >> self.fields = [ >> Field('code'), >> Field('language') >> ] >> >> self.validators = { >> 'code': [IS_NOT_EMPTY(), IS_NOT_IN_DB(self.db, >> 'Language.code')] >> } >> >> self.lables = { >> 'code': T('code'), >> 'language': T('Language') >> } >> >> When saving I get the error the table languages does not exist. For the >> validator I have tried: 'languages.code', 'Language.code', >> self.db.languages.code, self.db.Language.code, self.entity.code. Tried >> deleting the database but still same issue. >> >> -- >> Regards, >> Bruce >> >> On Wed, Feb 1, 2012 at 9:37 AM, Bruno Rocha <[email protected]>wrote: >> >>> You can set visibility and other options, but you cant use >>> self.auth.settings.table_user_ >>> name because at this point self.auth does not exist and it is a circular >>> reference given the fact that User class is the base for the creation of >>> Auth object in that example. >>> >>> But, in most cases you will name it "auth_user" so no problem to set it >>> in tablename attribute. >>> >>> >>> On Wed, Feb 1, 2012 at 3:12 PM, Bruce Wade <[email protected]> wrote: >>> >>>> This is how I originally thought to do it. (Would have posted this last >>>> night but code was at the office) >>>> >>>> class User(BaseAuth): >>>> >>>> def set_properties(self): >>>> tablename = self.auth.settings.table_user_name >>>> >>>> T = current.T >>>> # take a look in basemodel to see the options allowed here >>>> # self.widgets, self.fields, self.validators etc.... >>>> # only extra fields are defined here >>>> >>>> self.fields = [ >>>> Field('username', length=128, default='0000000', >>>> unique=True), >>>> Field('account_id', self.db.user_account), >>>> Field('email', length=128, default=''), >>>> Field('password', 'password', length=512), >>>> Field('security', 'password', length=512), >>>> Field('registration_key', length=512), >>>> Field('reset_password_key', length=512), >>>> Field('reset_security_key', length=512), >>>> Field('registration_id', length=512) >>>> ] >>>> >>>> self.visibility = { >>>> "password": (False, False), >>>> "security": (False, False), >>>> "registration_key": (False, False), >>>> "reset_password_key": (False, False), >>>> "reset_security_key": (False, False), >>>> "registration_id": (False, False) >>>> } >>>> >>>> self.validators = { >>>> 'password': [IS_STRONG(), CRYPT()], >>>> 'security': [IS_STRONG(), CRYPT()], >>>> 'email': >>>> [IS_EMAIL(error_message=self.auth.messages.invalid_email)] >>>> } >>>> >>>> self.labels = { >>>> "username": T("Username"), >>>> "email": T("Email"), >>>> "password": T("Your Password"), >>>> "security": T("Security Password") >>>> } >>>> >>>> self.auth.settings.table_user = self >>>> >>>> -- >>>> Regards, >>>> Bruce >>>> >>>> On Tue, Jan 31, 2012 at 9:33 PM, Bruce Wade <[email protected]>wrote: >>>> >>>>> Thanks that will do it, I was close to that exact same approach when I >>>>> was playing around today. >>>>> >>>>> -- >>>>> Regards, >>>>> Bruce >>>>> >>>>> >>>>> On Tue, Jan 31, 2012 at 7:54 PM, Bruno Rocha <[email protected]>wrote: >>>>> >>>>>> Hi Bruce, >>>>>> >>>>>> delete the database if the sample app created one, then replace >>>>>> modules/datamodel/user.py with this https://gist.github.com/1714979 >>>>>> >>>>>> >>>>>> -- >>>>>> >>>>>> Bruno Rocha >>>>>> [http://rochacbruno.com.br] >>>>>> >>>>>> >>>>> >>>>> >>>>> -- >>>>> -- >>>>> Regards, >>>>> Bruce Wade >>>>> http://ca.linkedin.com/in/brucelwade >>>>> http://www.wadecybertech.com >>>>> http://www.warplydesigned.com >>>>> http://www.fitnessfriendsfinder.com >>>>> >>>> >>>> >>>> >>>> -- >>>> -- >>>> Regards, >>>> Bruce Wade >>>> http://ca.linkedin.com/in/brucelwade >>>> http://www.wadecybertech.com >>>> http://www.warplydesigned.com >>>> http://www.fitnessfriendsfinder.com >>>> >>> >>> >>> >>> -- >>> >>> Bruno Rocha >>> [http://rochacbruno.com.br] >>> >>> >> >> >> -- >> -- >> Regards, >> Bruce Wade >> http://ca.linkedin.com/in/brucelwade >> http://www.wadecybertech.com >> http://www.warplydesigned.com >> http://www.fitnessfriendsfinder.com >> > > > > -- > -- > Regards, > Bruce Wade > http://ca.linkedin.com/in/brucelwade > http://www.wadecybertech.com > http://www.warplydesigned.com > http://www.fitnessfriendsfinder.com > -- Bruno Rocha [http://rochacbruno.com.br]

