Greetings,

I have been playing a little with crud.archive, as advertised by Massimo
in a post on 13-Feb-2010.  It's fantastic :-)

... except when deleting data.

When I try to delete, I get this:

Traceback (most recent call last):
  File "/home/rowdy/web2py/gluon/restricted.py", line 173, in restricted
    exec ccode in environment
File "/home/rowdy/web2py/applications/webacc2/controllers/table_codes.py", line 652, in <module>
  File "/home/rowdy/web2py/gluon/globals.py", line 96, in <lambda>
    self._caller = lambda f: f()
  File "/home/rowdy/web2py/gluon/tools.py", line 1892, in f
    return action(*a, **b)
File "/home/rowdy/web2py/applications/webacc2/controllers/table_codes.py", line 364, in project_update
    form = crud.update(db.project, row, onaccept = crud.archive)
  File "/home/rowdy/web2py/gluon/tools.py", line 2391, in update
    onaccept(form)
  File "/home/rowdy/web2py/gluon/tools.py", line 2295, in archive
    id = archive_table.insert(**new_record)
  File "/home/rowdy/web2py/gluon/sql.py", line 1879, in insert
    self._db._execute(query)
  File "/home/rowdy/web2py/gluon/sql.py", line 958, in <lambda>
    self._execute = lambda *a, **b: self._cursor.execute(*a, **b)
IntegrityError: insert or update on table "project_archive" violates foreign key constraint "project_archive_current_record_fkey"
DETAIL:  Key (current_record)=(31372) is not present in table "project".

Actually I would expect this.  When Crud.archive() inserts data into the
archive table, it populates the 'current_record' column with the id of
the row that has just been deleted from the main table.  Thus the
foreign key constraint fails, with the above error.

I am not sure if the following is the most web2pythoninc way of fixing
it, but I implemented the following work-around in Crud.archive() just
after the test for "if not old_record":

        if form.request_vars.delete_this_record == 'on':
            return None

Rowdy

--
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.

Reply via email to