I manually did the work around instead of using SQLFORM's deletable. Thanks 
Massimo!

On Friday, July 4, 2014 4:51:03 PM UTC+8, Massimo Di Pierro wrote:
>
> I am not sure. Can you explain more of what you are doing? I can see a 
> problem with record versioning. It is supposed o work so that records are 
> disabled (is_active=False) and never deleted to that the archived records 
> can point to the current record even if disabled. disabled records are 
> filtered out from searches. Somehow you are actually deleting records and 
> web2py tries to archive a reference to them. You cannot have both.
>
>
> On Friday, 4 July 2014 03:22:26 UTC-5, lyn2py wrote:
>>
>> I just saw this:
>>
>> Field(name, 'string', length=None, default=None,
>>       required=False, requires='<default>',
>>       ondelete='CASCADE', notnull=False, unique=False,
>>       uploadfield=True, widget=None, label=None, comment=None,
>>       writable=True, readable=True, update=None, authorize=None,
>>       autodelete=False, represent=None, compute=None,
>>       uploadfolder=None,
>>       uploadseparate=None,uploadfs=None)
>>
>>
>>
>> ondelete translates into the "ON DELETE" SQL statement. By 
>> default it is set to "CASCADE". This tells the database that when it 
>> deletes a record, it should also delete all records that refer to it. To
>>  disable this feature, set ondelete to "NO ACTION" or "SET NULL".
>>
>>
>> So I guess that means it cascades by default.
>>
>>
>> A separate question… if record versioning is turned on, and SQLFORM 
>> deletable=True, the following error is produced, may I know what I am doing 
>> incorrectly?
>>
>>
>>
>> Traceback (most recent call last):
>>   File "/.../web2py/source/gluon/restricted.py", line 221, in restricted
>>     exec ccode in environment
>>   File "/.../web2py/source/applications/.../controllers/default.py", line 
>> 247, in <module>
>>   File "/.../web2py/source/gluon/globals.py", line 389, in <lambda>
>>     self._caller = lambda f: f()
>>   File "/.../web2py/source/gluon/tools.py", line 3465, in f
>>     return action(*a, **b)
>>   File "/.../web2py/source/applications/.../controllers/default.py", line 
>> 217, in edit_this
>>     if 
>> form.process(onvalidation=sqlform_validate,onsuccess=auth.archive).accepted: 
>>
>>   File "/.../web2py/source/gluon/html.py", line 2289, in process
>>     self.validate(**kwargs)
>>   File "/.../web2py/source/gluon/html.py", line 2233, in validate
>>     onsuccess(self)
>>   File "/.../web2py/source/gluon/tools.py", line 3849, in archive
>>     id = archive_table.insert(**new_record)
>>   File "/.../web2py/source/gluon/dal.py", line 9252, in insert
>>     ret =  self._db._adapter.insert(self, self._listify(fields))
>>   File "/.../web2py/source/gluon/dal.py", line 1362, in insert
>>     raise e
>> IntegrityError: foreign key constraint failed
>>
>>
>> Is it trying to cascade delete but failed?
>>
>>
>>
>> On Friday, July 4, 2014 4:00:12 PM UTC+8, lyn2py wrote:
>>>
>>> Hi guys, 
>>>
>>> Just a simple question, does the SQLFORM deletable=True trigger a 
>>> cascade delete?
>>>
>>>
>>>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to