I mean when I delete a record, the system actually deletes it, rather than
marking is_active false.
I see the archive tables, no problem there.
Records are created in the archive tables, no problem there.
On Tuesday, October 9, 2012 10:06:50 AM UTC-4, Massimo Di Pierro wrote:
>
> What do you mean exactly but "does not work"? Do you see the tables in
> appadmin?
>
> Make sure
>
> auth.enable_record_versioning(db)
>
> follows all the table definitions.
>
> On Tuesday, 9 October 2012 08:40:07 UTC-5, Cliff Kachinske wrote:
>>
>> Actually, the code in my model was and is correct.
>>
>> Still not working.
>>
>> Version 2.0.9
>>
>> On Monday, October 8, 2012 10:03:43 PM UTC-4, Cliff Kachinske wrote:
>>>
>>> OOPS. No, that does not stand for object oriented programming superstar!
>>>
>>> On Monday, October 8, 2012 6:53:42 PM UTC-4, Massimo Di Pierro wrote:
>>>>
>>>> It is
>>>>
>>>> auth.enable_record_versioning(db)
>>>>
>>>> not
>>>>
>>>> auth.enable_record_versioning=True # Doh!
>>>>
>>>> On Monday, 8 October 2012 15:21:48 UTC-5, Massimo Di Pierro wrote:
>>>>>
>>>>> There are two ways to do record versioning in web2py:
>>>>>
>>>>> - the old way using auth.archive (the one you are using). When a
>>>>> record is modified the old record is copied into the archive table. When
>>>>> a
>>>>> record is deleted, it is actually deleted and a copy of the old one is
>>>>> saved.
>>>>>
>>>>> - the new way auth.enable_record_versioning(db) or
>>>>> db.table._enable_record_versioning(). This uses the before_* and after_*
>>>>> callbacks. When the record is modified it acts as in the case above. When
>>>>> the record is deleted it is not actually deleted but is_active is set to
>>>>> false and all queries are filtered by is_active = True.
>>>>>
>>>>>
>>>>> On Monday, 8 October 2012 14:04:09 UTC-5, Cliff Kachinske wrote:
>>>>>>
>>>>>> I have the following, but checking the delete box actually deletes
>>>>>> the record rather than setting is_active to False.
>>>>>>
>>>>>> It creates records in the archive table, but I also want them to stay
>>>>>> in the main table with is_active set to False.
>>>>>>
>>>>>> What am I doing wrong?
>>>>>>
>>>>>> Thank you,
>>>>>> Cliff Kachinske
>>>>>>
>>>>>> Model
>>>>>> db.define_table('documentation',
>>>>>> Field('name', length=36, label='Name'),
>>>>>> # I put this in just before Massimo announced request_tenant
>>>>>> # Timing is everything!
>>>>>> Field('tenant_link', db.tenants,
>>>>>> default=session.auth.user.tenant_link),
>>>>>> auth.signature,
>>>>>> format='%(name)s')
>>>>>> db.documentation.tenant_link.requires = IS_IN_DB(
>>>>>> db, db.tenants.id, '%(name)s', zero='Choose')
>>>>>> db.documentation.tenant_link.readable = False
>>>>>> db.documentation.tenant_link.writable = False
>>>>>>
>>>>>> #More tables ...
>>>>>>
>>>>>> auth.enable_record_versioning(db)
>>>>>> db.auth_permission.table_name.requires = IS_IN_SET(db.tables)
>>>>>>
>>>>>> Controller:
>>>>>> def edit():
>>>>>> form = crud.update(
>>>>>> db.documentation, request.args(0), next=next,
>>>>>> # Commented out to avoid multiple records in the archive
>>>>>> table while testing
>>>>>> # Does not affect the problem either way
>>>>>> # onaccept=auth.archive,
>>>>>> )
>>>>>> return dict(form=form, h2='Edit')
>>>>>>
>>>>>>
>>>>>>
--