Actually, that's not exactly what's happening.
The error is produced when trying to make two calls back to back to
auth.add_permission().
Single calls still create duplicate enteries but back to back calls
error on the 2nd call never creating an entry.
To reproduce:
def test():
auth.add_permission(id,'name','table1')
auth.add_permission(id,'name','table1')
return
Either one of the above can be run by itself, but both in the same
controller will fail with the above error on the 2nd permission.
On Jun 29, 1:35 pm, Chris S <[email protected]> wrote:
> I think the most recent update to trunk I've found a spot in sql.py
> where functionality is different though it might be intended.
>
> In the last stable release you could make a call:
> auth.add_permission(group.id,'name','table_name')
>
> You could do this with out first checking for it's existence already.
> A new entry was created and no errors thrown.
> Now if you try to do the above call and that same permission is
> already defined you get:
> ----------New Error------------
> raise SyntaxError, 'Object exists and cannot be redefined: %s' % key
> SyntaxError: Object exists and cannot be redefined: _last_reference
> ----------/New Error------------
>
> While it's good that this points out that I wasn't checking for these
> permissions before, it's bad that you find out by an error which
> didn't previously exist.
>
> I can wrap my add_permission calls in a try: block, or i could check
> for the permission before adding. But is that something that should
> just be included in web2py by default? It's how I assumed it worked
> originally :)