forked from 0x2620/pandora
merge
This commit is contained in:
commit
64bf2a3a71
3 changed files with 33 additions and 15 deletions
|
@ -2,10 +2,11 @@
|
||||||
# vi:si:et:sw=4:sts=4:ts=4
|
# vi:si:et:sw=4:sts=4:ts=4
|
||||||
from __future__ import division, with_statement
|
from __future__ import division, with_statement
|
||||||
|
|
||||||
from django.db import models
|
import re
|
||||||
|
|
||||||
|
from django.db import models, transaction
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from django.db.models import Q
|
from django.db.models import Q
|
||||||
|
|
||||||
import ox
|
import ox
|
||||||
from ox.django import fields
|
from ox.django import fields
|
||||||
|
|
||||||
|
@ -72,18 +73,23 @@ class Event(models.Model):
|
||||||
q = q|Q(value__icontains=" " + name)|Q(value__startswith=name)
|
q = q|Q(value__icontains=" " + name)|Q(value__startswith=name)
|
||||||
matches = []
|
matches = []
|
||||||
for a in Annotation.objects.filter(q):
|
for a in Annotation.objects.filter(q):
|
||||||
words = ox.words(a.value)
|
value = a.value.lower()
|
||||||
for name in [self.name] + list(self.alternativeNames):
|
for name in [self.name] + list(self.alternativeNames):
|
||||||
if name in words:
|
name = name.lower()
|
||||||
|
if name in value and (value.startswith(name) or \
|
||||||
|
value.endswith(name) or \
|
||||||
|
re.compile('\s%s[\.,;:!?\-\/\s]'%name).findall(value)):
|
||||||
matches.append(a.id)
|
matches.append(a.id)
|
||||||
break
|
break
|
||||||
if not matches:
|
if not matches:
|
||||||
matches = [-1]
|
matches = [-1]
|
||||||
return Annotation.objects.filter(id__in=matches)
|
return Annotation.objects.filter(id__in=matches)
|
||||||
|
|
||||||
|
|
||||||
|
@transaction.commit_on_success
|
||||||
def update_matches(self):
|
def update_matches(self):
|
||||||
matches = self.get_matches()
|
matches = self.get_matches()
|
||||||
self.matches = matches.count()
|
numberofmatches = matches.count()
|
||||||
for i in self.annotations.exclude(id__in=matches):
|
for i in self.annotations.exclude(id__in=matches):
|
||||||
self.annotations.remove(i)
|
self.annotations.remove(i)
|
||||||
for i in matches.exclude(id__in=self.annotations.all()):
|
for i in matches.exclude(id__in=self.annotations.all()):
|
||||||
|
@ -94,7 +100,8 @@ class Event(models.Model):
|
||||||
for i in Item.objects.filter(id__in=ids).exclude(id__in=self.items.all()):
|
for i in Item.objects.filter(id__in=ids).exclude(id__in=self.items.all()):
|
||||||
self.items.add(i)
|
self.items.add(i)
|
||||||
#only update matches, other values might have been changed
|
#only update matches, other values might have been changed
|
||||||
Event.objects.filter(id=self.id).update(matches=self.matches)
|
if self.matches != numberofmatches:
|
||||||
|
Event.objects.filter(id=self.id).update(matches=numberofmatches)
|
||||||
|
|
||||||
def set_name_sort(self, value=None):
|
def set_name_sort(self, value=None):
|
||||||
if not value:
|
if not value:
|
||||||
|
|
|
@ -45,6 +45,10 @@ def parseCondition(condition, user):
|
||||||
else:
|
else:
|
||||||
return q
|
return q
|
||||||
|
|
||||||
|
if k == 'filename' and user.is_anonymous() or \
|
||||||
|
not user.get_profile().capability('canSeeFiles'):
|
||||||
|
return Q(id=0)
|
||||||
|
|
||||||
key_type = settings.CONFIG['keys'].get(k, {'type':'string'}).get('type')
|
key_type = settings.CONFIG['keys'].get(k, {'type':'string'}).get('type')
|
||||||
if isinstance(key_type, list):
|
if isinstance(key_type, list):
|
||||||
key_type = key_type[0]
|
key_type = key_type[0]
|
||||||
|
|
|
@ -1,12 +1,14 @@
|
||||||
# -*- 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 __future__ import division, with_statement
|
from __future__ import division, with_statement
|
||||||
from django.db import models
|
|
||||||
|
|
||||||
import ox
|
import re
|
||||||
from ox.django import fields
|
|
||||||
|
from django.db import models, transaction
|
||||||
from django.contrib.auth.models import User, Group
|
from django.contrib.auth.models import User, Group
|
||||||
from django.db.models import Q
|
from django.db.models import Q
|
||||||
|
import ox
|
||||||
|
from ox.django import fields
|
||||||
|
|
||||||
import managers
|
import managers
|
||||||
from annotation.models import Annotation
|
from annotation.models import Annotation
|
||||||
|
@ -76,23 +78,27 @@ class Place(models.Model):
|
||||||
return j
|
return j
|
||||||
|
|
||||||
def get_matches(self):
|
def get_matches(self):
|
||||||
q = Q(value__contains=" " + self.name)|Q(value__startswith=self.name)
|
q = Q(value__icontains=" " + self.name)|Q(value__istartswith=self.name)
|
||||||
for name in self.alternativeNames:
|
for name in self.alternativeNames:
|
||||||
q = q|Q(value__contains=" " + name)|Q(value__startswith=name)
|
q = q|Q(value__icontains=" " + name)|Q(value__istartswith=name)
|
||||||
matches = []
|
matches = []
|
||||||
for a in Annotation.objects.filter(q):
|
for a in Annotation.objects.filter(q):
|
||||||
words = ox.words(a.value)
|
value = a.value.lower()
|
||||||
for name in [self.name] + list(self.alternativeNames):
|
for name in [self.name] + list(self.alternativeNames):
|
||||||
if name in words:
|
name = name.lower()
|
||||||
|
if name in value and (value.startswith(name) or \
|
||||||
|
value.endswith(name) or \
|
||||||
|
re.compile('\s%s[\.,;:!?\-\/\s]'%name).findall(value)):
|
||||||
matches.append(a.id)
|
matches.append(a.id)
|
||||||
break
|
break
|
||||||
if not matches:
|
if not matches:
|
||||||
matches = [-1]
|
matches = [-1]
|
||||||
return Annotation.objects.filter(id__in=matches)
|
return Annotation.objects.filter(id__in=matches)
|
||||||
|
|
||||||
|
@transaction.commit_on_success
|
||||||
def update_matches(self):
|
def update_matches(self):
|
||||||
matches = self.get_matches()
|
matches = self.get_matches()
|
||||||
self.matches = matches.count()
|
numberofmatches = matches.count()
|
||||||
for i in self.annotations.exclude(id__in=matches):
|
for i in self.annotations.exclude(id__in=matches):
|
||||||
self.annotations.remove(i)
|
self.annotations.remove(i)
|
||||||
for i in matches.exclude(id__in=self.annotations.all()):
|
for i in matches.exclude(id__in=self.annotations.all()):
|
||||||
|
@ -102,7 +108,8 @@ class Place(models.Model):
|
||||||
self.items.remove(i)
|
self.items.remove(i)
|
||||||
for i in Item.objects.filter(id__in=ids).exclude(id__in=self.items.all()):
|
for i in Item.objects.filter(id__in=ids).exclude(id__in=self.items.all()):
|
||||||
self.items.add(i)
|
self.items.add(i)
|
||||||
Place.objects.filter(id=self.id).update(matches=self.matches)
|
if self.matches != numberofmatches:
|
||||||
|
Place.objects.filter(id=self.id).update(matches=numberofmatches)
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
def save(self, *args, **kwargs):
|
||||||
if not self.name_sort:
|
if not self.name_sort:
|
||||||
|
|
Loading…
Reference in a new issue