Skip to content

Commit

Permalink
Making update_attr_in_bulk_for_ids work in asynch mode if possible
Browse files Browse the repository at this point in the history
  • Loading branch information
superalex committed May 9, 2017
1 parent 4d59996 commit 479454c
Showing 1 changed file with 12 additions and 2 deletions.
14 changes: 12 additions & 2 deletions taiga/base/utils/db.py
Expand Up @@ -16,11 +16,13 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.

from django.conf import settings
from django.contrib.contenttypes.models import ContentType
from django.db import connection
from django.db import DatabaseError
from django.db import transaction
from django.shortcuts import _get_queryset
from taiga.celery import app

from . import functions

Expand Down Expand Up @@ -122,9 +124,9 @@ def update_in_bulk(instances, list_of_new_values, callback=None, precall=None):
instance.save()
callback(instance)


@app.task
@transaction.atomic
def update_attr_in_bulk_for_ids(values, attr, model):
def _update_attr_in_bulk_for_ids(values, attr, model):
"""Update a table using a list of ids.
:params values: Dict of new values where the key is the pk of the element to update.
Expand Down Expand Up @@ -162,6 +164,14 @@ def _run_sql(retries=0, max_retries=3):
transaction.on_commit(_run_sql)


@transaction.atomic
def update_attr_in_bulk_for_ids(values, attr, model):
if settings.CELERY_ENABLED:
_update_attr_in_bulk_for_ids.delay(values, attr, model)
else:
_update_attr_in_bulk_for_ids(values, attr, model)


def to_tsquery(term):
"""
Based on: https://gist.github.com/wolever/1a5ccf6396f00229b2dc
Expand Down

0 comments on commit 479454c

Please sign in to comment.