Optimistic lock implementation for Django. Prevents users from doing concurrent editing.
Project description
Django Concurrency
django-concurrency is an optimistic lock implementation for Django.
It prevents users from doing concurrent editing in Django both from UI and from a django command.
How it works
from django.db import models
from concurrency.fields import IntegerVersionField
class ConcurrentModel( models.Model ):
version = IntegerVersionField( )
name = models.CharField(max_length=100)
Now if you try::
a = ConcurrentModel.objects.get(pk=1)
a.name = '1'
b = ConcurrentModel.objects.get(pk=1)
b.name = '2'
a.save()
b.save()
you will get a RecordModifiedError
on b.save()
Similar projects
Other projects that handle concurrent editing are django-optimistic-lock and django-locking anyway concurrency is "a batteries included" optimistic lock management system, here some features not available elsewhere:
- can be applied to any model; not only your code (ie. django.contrib.auth.Group)
- handle list-editable ChangeList. (handle
#11313 <https://code.djangoproject.com/ticket/11313>
_) - manage concurrency conflicts in admin's actions
- can intercept changes performend out of the django app (ie using pgAdmin, phpMyAdmin, Toads) (using TriggerVersionField)
- can be disabled if needed (see disable_concurrency)
- ConditionalVersionField to handle complex business rules
Project Links
- Code: https://github.com/saxix/django-concurrency
- Documentation: https://django-concurrency.readthedocs.org/en/latest/
- Issue Tracker: https://github.com/saxix/django-concurrency/issues
- Download Package: http://pypi.python.org/pypi/django-concurrency/
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
django-concurrency-2.5.tar.gz
(59.1 kB
view details)
File details
Details for the file django-concurrency-2.5.tar.gz
.
File metadata
- Download URL: django-concurrency-2.5.tar.gz
- Upload date:
- Size: 59.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3eb0f17807ee1b967460d298c515018b30fb573413305dec5bbee775915dc979 |
|
MD5 | d2a546ae88e6aed5a7b1f812b812dc41 |
|
BLAKE2b-256 | 310c58b6d5a733515b5958585b5857e0a148bd3bcc9de0a6a0d979451b809014 |