I got the same issue, delete operations by id work locally, but not on
gae (dev_appserver or live).
Modifying from .count() to len(..) appears to fix this for me. I
locally modified the delete method in gql.py, line 692 as follows:
def delete(self):
self._db['_lastsql'] = 'DELETE WHERE %s' % self.where
(items, tablename, fields) = self._select()
tableobj = self._db[tablename]._tableobj
counter = len(items)
gae.delete(items)
return counter - len(items)
Hope that helps, cheers
- Alex
On Feb 9, 3:19 pm, Throngly <[email protected]> wrote:
> My traceback is as follows:
>
> In FILE: /base/data/home/apps/throngly-com/1.339746990702093170/
> applications/throngly/controllers/people.py
>
> Traceback (most recent call last):
> File "/base/data/home/apps/throngly-com/1.339746990702093170/gluon/
> restricted.py", line 173, in restricted
> exec ccode in environment
> File "/base/data/home/apps/throngly-com/1.339746990702093170/
> applications/throngly/controllers/people.py:delete", line 30, in
> <module>
> File "/base/data/home/apps/throngly-com/1.339746990702093170/gluon/
> globals.py", line 96, in <lambda>
> self._caller = lambda f: f()
> File "/base/data/home/apps/throngly-com/1.339746990702093170/gluon/
> tools.py", line 1848, in f
> return action(*a, **b)
> File "/base/data/home/apps/throngly-com/1.339746990702093170/
> applications/throngly/controllers/people.py:delete", line 25, in
> delete
> File "/base/data/home/apps/throngly-com/1.339746990702093170/gluon/
> contrib/gql.py", line 696, in delete
> counter =items.count()
> TypeError: count() takes exactly one argument (0 given)
>
> On Feb 9, 2:58 pm, mdipierro <[email protected]> wrote:
>
>
>
> > What is the exact traceback?
>
> > On Feb 3, 6:11 pm, Carl <[email protected]> wrote:
>
> > > This may be related toGAEupdate_record() has subtle difference
> > > compared to native
> > > Web2Pyhttp://groups.google.com/group/web2py/browse_thread/thread/a69afded01...
> > > but until shown otherwise, I've posed separately.
>
> > > I have this in db.py:
>
> > > db.define_table('team_user',
> > > Field('teamId', 'integer', notnull=True,
> > > required=True),
> > > Field('user_email', 'string', length=254,
> > > notnull=True, required=True,
> > > requires = [IS_LOWER(),IS_EMAIL()]),
> > > Field('live', 'boolean', notnull=True, required=True,
> > > default='True'),
> > > Field('cDate', 'datetime'),
> > > Field('mDate', 'datetime'))
>
> > > I make this call:
> > > self.db(self.db.team_user.id==memberId).delete()
>
> > > such a statement callsdelete(self) in gql.py
> > > defdelete(self):
> > > self._db['_lastsql'] = 'DELETEWHERE %s' % self.where
> > > (items, tablename, fields) = self._select()
> > > tableobj = self._db[tablename]._tableobj
> > > counter =items.count()
> > > gae.delete(items)
> > > return counter -items.count()
>
> > > When the interpreter exectutes "counter =items.count()" an exception
> > > is thrown stating "TypeError: count() takes exactly one argument (0
> > > given)"
>
> > > Have I something in my db.py definition that native web2py is happy
> > > with but dev_appserver chokes on?
--
You received this message because you are subscribed to the Google Groups
"web2py-users" 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/web2py?hl=en.