update place/event matches on change

This commit is contained in:
j 2012-01-02 23:05:10 +05:30
parent 9cc90ec245
commit 4d06bacfc4
2 changed files with 17 additions and 7 deletions

View File

@ -87,9 +87,12 @@ class Annotation(models.Model):
self.layer: False
}).update(**{self.layer: True})
#how expensive is this?
#update_matching_events.delay(self.value)
#update_matching_places.delay(self.value)
if filter(lambda l: l['type'] == 'place' or l.get('hasPlaces'),
settings.CONFIG['layers']):
update_matching_places.delay(self.id)
if filter(lambda l: l['type'] == 'event' or l.get('hasEvents'),
settings.CONFIG['layers']):
update_matching_events.delay(self.id)
def json(self, layer=False, keys=None):
j = {

View File

@ -2,26 +2,33 @@
# vi:si:et:sw=4:sts=4:ts=4
from celery.task import task
import models
@task(ignore_resulsts=True, queue='default')
def update_matching_events(value):
def update_matching_events(id):
from event.models import Event
annotation = models.Annotation.objects.get(pk=id)
for e in annotation.events.all():
e.update_matches()
ids = [e['id'] for e in Event.objects.all().values('id')]
for i in ids:
e = Event.objects.get(pk=i)
for name in [e.name] + list(e.alternativeNames):
if name in value:
if name in annotation.value:
e.update_matches()
break
@task(ignore_resulsts=True, queue='default')
def update_matching_places(value):
def update_matching_places(id):
from place.models import Place
annotation = models.Annotation.objects.get(pk=id)
for p in annotation.places.all():
p.update_matches()
ids = [e['id'] for e in Place.objects.all().values('id')]
for i in ids:
e = Place.objects.get(pk=i)
for name in [e.name] + list(e.alternativeNames):
if name in value:
if name in annotation.value:
e.update_matches()
break