djang-frozen-data 0.1a1

Creator: danarutscher

Last updated:

Add to Cart

Description:

djangfrozendata 0.1a1

Django Frozen Data
Django model custom field for storing a frozen snapshot of an object.
Principles

Behaves like a ForeignKey but the data is detached from the related object
Transparent to the client - it looks and behaves like the original object
The frozen object cannot be resaved
Supports nesting of objects

Usage
A frozen field can be declared like a ForeignKey:
class Foo:
frozen_bar = FrozenObjectField(Bar, help_text="This is a frozen snapshot of the object.")
fresh_bar = ForeignKey(Bar, help_text="This is a live FK relationship.")

The field behaves exactly like a FK, with the exception that the object cannot be saved:
>>> bar = Bar()
>>> foo = Foo.objects.create(frozen_bar=bar, fresh_bar=bar)
>>> # the fresh field can be updated as you would expect
>>> foo.fresh_bar.save()
>>> # the frozen field cannot - to prevent overwriting new data.
>>> foo.frozen_bar.save()
>>> StaleObjectError: 'Object was frozen; defrosted objects cannot be saved.'

Issues - TODO

Deserialization of DateField/DateTimeField values
Deserialization of DecimalField values
Deserialization of UUIDField values
Deep object freezing

Running tests
The tests themselves use pytest as the test runner. If you have installed the poetry evironment, you can run them thus:
$ poetry run pytest

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.