sync find/sort table saving annotations, fixes #401

This commit is contained in:
j 2012-02-15 17:57:42 +05:30
parent 8ac6779bb1
commit 8520c06680
2 changed files with 16 additions and 4 deletions

View file

@ -18,7 +18,7 @@ from changelog.models import Changelog
from item.utils import sort_string from item.utils import sort_string
import managers import managers
import utils import utils
from tasks import update_matching_events, update_matching_places from tasks import update_matching_events, update_matching_places, update_item
def get_matches(obj, model, layer_type): def get_matches(obj, model, layer_type):
@ -160,9 +160,8 @@ class Annotation(models.Model):
if layer.get('type') == 'event' or layer.get('hasEvents'): if layer.get('type') == 'event' or layer.get('hasEvents'):
update_matching_events(self.id) update_matching_events(self.id)
#update facets if needed #update sort/find tables async
if filter(lambda f: f['id'] == self.layer, settings.CONFIG['filters']): update_item.delay(self.id)
self.item.update_layer_facet(self.layer)
def cleanup_undefined_relations(self): def cleanup_undefined_relations(self):
layer = self.get_layer() layer = self.get_layer()

View file

@ -1,5 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# vi:si:et:sw=4:sts=4:ts=4 # vi:si:et:sw=4:sts=4:ts=4
from django.conf import settings
from celery.task import task from celery.task import task
import models import models
@ -44,3 +45,15 @@ def update_matching_places(id):
if name.lower() in a.value.lower(): if name.lower() in a.value.lower():
e.update_matches() e.update_matches()
break break
@task(ignore_resulsts=True, queue='default')
def update_item(id):
from item.models import Item
a = models.Annotation.objects.get(pk=id)
#update facets if needed
if filter(lambda f: f['id'] == a.layer, settings.CONFIG['filters']):
a.item.update_layer_facet(a.layer)
Item.objects.filter(id=a.item.id).update(modified=a.modified)
a.item.update_find()
a.item.update_sort()
a.item.update_facets()