Skip to content

Commit 1c90ba7

Browse files
committed
regex search
1 parent 58ad9cc commit 1c90ba7

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

xdoc/documents.py

+11
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ class Node(mongoengine.Document):
1010
parent = mongoengine.ReferenceField('Node')
1111

1212
_id_path = mongoengine.StringField()
13+
_keywords = mongoengine.ListField(mongoengine.StringField())
1314

1415
meta = {
1516
'allow_inheritance': True,
@@ -20,12 +21,16 @@ class Node(mongoengine.Document):
2021
def pre_save(cls, sender, document, **kwargs):
2122
if isinstance(document, Node):
2223
document._id_path = '/' + '/'.join(document._get_path())
24+
document._keywords = document._get_keywords()
2325

2426
def _get_path(self):
2527
if self.parent == None:
2628
return [unicode(self.id)]
2729
return self.parent._get_path() + [unicode(self.id)]
2830

31+
def _get_keywords(self):
32+
return [self.name]
33+
2934
def __unicode__(self):
3035
return unicode(self.name)
3136

@@ -42,10 +47,16 @@ class Text(Document):
4247

4348
content = mongoengine.StringField()
4449

50+
def _get_keywords(self):
51+
return [self.name, self.content]
52+
4553

4654
class Link(Document):
4755

4856
url = mongoengine.URLField()
4957

58+
def _get_keywords(self):
59+
return [self.name, self.url]
60+
5061

5162
signals.pre_save.connect(Node.pre_save)

xdoc/views.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from pygments import highlight
1010
from pygments.formatters.html import HtmlFormatter
1111
from pygments.lexers.web import JsonLexer
12+
import re
1213
from xdoc.documents import Node, Folder
1314

1415

@@ -47,7 +48,8 @@ def table(request):
4748
result = Node.objects.all()
4849

4950
if request.GET['sSearch'] != '':
50-
result = result.filter(name__icontains=request.GET['sSearch'])
51+
result = result.filter(_keywords=re.compile(request.GET['sSearch'],
52+
re.IGNORECASE))
5153
if request.GET['sSortDir_0'] == 'asc':
5254
result = result.order_by('+%s' % order_column)
5355
if request.GET['sSortDir_0'] == 'desc':

0 commit comments

Comments
 (0)