All Projects → saxix → Django Concurrency

saxix / Django Concurrency

Licence: mit
Optimistic lock implementation for Django. Prevents users from doing concurrent editing.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Django Concurrency

Umka Lang
Umka: a statically typed embeddable scripting language
Stars: ✭ 308 (-5.81%)
Mutual labels:  concurrency
Architect
A set of tools which enhances ORMs written in Python with more features
Stars: ✭ 320 (-2.14%)
Mutual labels:  django
Joplin Web
🐍 📚 Web application companion for Joplin
Stars: ✭ 324 (-0.92%)
Mutual labels:  django
Exifcleaner
Cross-platform desktop GUI app to clean image metadata
Stars: ✭ 305 (-6.73%)
Mutual labels:  concurrency
Colossus
Self-hosted email marketing solution
Stars: ✭ 319 (-2.45%)
Mutual labels:  django
Vas3k.club
No bullshit IT community with private membership
Stars: ✭ 321 (-1.83%)
Mutual labels:  django
Letsmapyournetwork
Lets Map Your Network enables you to visualise your physical network in form of graph with zero manual error
Stars: ✭ 305 (-6.73%)
Mutual labels:  django
Swoole Src
🚀 Coroutine-based concurrency library for PHP
Stars: ✭ 17,175 (+5152.29%)
Mutual labels:  concurrency
Django Wordpress
WordPress models and views for Django.
Stars: ✭ 318 (-2.75%)
Mutual labels:  django
Django Easy Pdf
PDF views, the easy way
Stars: ✭ 324 (-0.92%)
Mutual labels:  django
Mediacms
MediaCMS is a modern, fully featured open source video and media CMS, written in Python/Django and React, featuring a REST API.
Stars: ✭ 313 (-4.28%)
Mutual labels:  django
Djreact
A simple introduction to integrating Django and React.
Stars: ✭ 317 (-3.06%)
Mutual labels:  django
Django React Templatetags
A quick way to add React components to your Django templates.
Stars: ✭ 324 (-0.92%)
Mutual labels:  django
Spscqueue
A bounded single-producer single-consumer wait-free and lock-free queue written in C++11
Stars: ✭ 307 (-6.12%)
Mutual labels:  concurrency
Django X509
Reusable django app implementing x509 PKI certificates management
Stars: ✭ 326 (-0.31%)
Mutual labels:  django
E Book
Python电子书、Django电子书、鸟哥的Linux私房菜第四版PDF
Stars: ✭ 310 (-5.2%)
Mutual labels:  django
Django Oidc Provider
OpenID Connect and OAuth2 provider implementation for Djangonauts.
Stars: ✭ 320 (-2.14%)
Mutual labels:  django
Awesome Cheatsheets
👩‍💻👨‍💻 Awesome cheatsheets for popular programming languages, frameworks and development tools. They include everything you should know in one single file.
Stars: ✭ 26,007 (+7853.21%)
Mutual labels:  django
Django Disqus
Integrates DISQUS into Django
Stars: ✭ 326 (-0.31%)
Mutual labels:  django
Winerama Recommender Tutorial
A wine recommender system tutorial using Python technologies such as Django, Pandas, or Scikit-learn, and others such as Bootstrap.
Stars: ✭ 324 (-0.92%)
Mutual labels:  django

================== Django Concurrency

.. image:: https://badge.fury.io/py/django-concurrency.svg :target: http://badge.fury.io/py/django-concurrency :alt: PyPI package

django-concurrency is an optimistic lock [1]_ implementation for Django.

Supported Django versions:

- <=2.1.1  supports    1.11.x, 2.1.x, 2.2.x, 3.x
- >=2.2    supports    3.x

It prevents users from doing concurrent editing in Django both from UI and from a django command.

How it works

sample code::

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

Links


+--------------------+----------------+--------------+------------------------+
| Stable             | |master-build| | |master-cov| |                        |
+--------------------+----------------+--------------+------------------------+
| Development        | |dev-build|    | |dev-cov|    |                        |
+--------------------+----------------+--------------+------------------------+
| Project home page: |https://github.com/saxix/django-concurrency             |
+--------------------+---------------+----------------------------------------+
| Issue tracker:     |https://github.com/saxix/django-concurrency/issues?sort |
+--------------------+---------------+----------------------------------------+
| Download:          |http://pypi.python.org/pypi/django-concurrency/         |
+--------------------+---------------+----------------------------------------+
| Documentation:     |https://django-concurrency.readthedocs.org/en/latest/   |
+--------------------+---------------+--------------+-------------------------+

.. |master-build| image:: https://secure.travis-ci.org/saxix/django-concurrency.svg?branch=master
                    :target: http://travis-ci.org/saxix/django-concurrency/

.. |master-cov| image:: https://codecov.io/gh/saxix/django-concurrency/branch/master/graph/badge.svg
                    :target: https://codecov.io/gh/saxix/django-concurrency

.. |master-doc| image:: https://readthedocs.org/projects/django-concurrency/badge/?version=stable
                    :target: http://django-concurrency.readthedocs.io/en/stable/

.. |dev-build| image:: https://secure.travis-ci.org/saxix/django-concurrency.svg?branch=develop
                  :target: http://travis-ci.org/saxix/django-concurrency/

.. |dev-cov| image:: https://codecov.io/gh/saxix/django-concurrency/branch/develop/graph/badge.svg
                    :target: https://codecov.io/gh/saxix/django-concurrency

.. |dev-doc| image:: https://readthedocs.org/projects/django-concurrency/badge/?version=stable
                    :target: http://django-concurrency.readthedocs.io/en/stable/



.. |wheel| image:: https://img.shields.io/pypi/wheel/django-concurrency.svg

_list-editable: https://django-concurrency.readthedocs.org/en/latest/admin.html#list-editable

.. _list-editable: https://django-concurrency.readthedocs.org/en/latest/admin.html#list-editable

.. _django-locking: https://github.com/stdbrouw/django-locking

.. _django-optimistic-lock: https://github.com/gavinwahl/django-optimistic-lock

.. _TriggerVersionField: https://django-concurrency.readthedocs.org/en/latest/fields.html#triggerversionfield

.. _ConditionalVersionField: https://django-concurrency.readthedocs.org/en/latest/fields.html#conditionalversionfield

.. _disable_concurrency: https://django-concurrency.readthedocs.org/en/latest/api.html?#disable-concurrency



.. image:: https://badges.gitter.im/Join%20Chat.svg
   :alt: Join the chat at https://gitter.im/saxix/django-concurrency
   :target: https://gitter.im/saxix/django-concurrency?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge

.. [1] http://en.wikipedia.org/wiki/Optimistic_concurrency_control
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].