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')
>>>
>>>
>>>
--