|
@@ -23,6 +23,28 @@
|
|
|
from django.core.exceptions import ValidationError
|
|
|
from django.core.urlresolvers import reverse
|
|
|
from django.db import models
|
|
|
from django.db.models.query_utils import Q
|
|
|
|
|
|
|
|
|
class SearchManager(models.Manager):
|
|
|
"""
|
|
|
Custom model manager that implements search for model instances that contain
|
|
|
a specific string (search term) in fields "name" or "description".
|
|
|
"""
|
|
|
|
|
|
def search(self, search_term):
|
|
|
"""
|
|
|
Performs a search for model instances that contain the provided search
|
|
|
term in fields "name" or "description". The search is case-insensitive.
|
|
|
|
|
|
Arguments:
|
|
|
search_term - String to search the name and description for.
|
|
|
|
|
|
Returns:
|
|
|
Query set with model instances that matched the search.
|
|
|
"""
|
|
|
|
|
|
return self.filter(Q(name__icontains=search_term) | Q(description__icontains=search_term))
|
|
|
|
|
|
|
|
|
class Project(models.Model):
|
|
@@ -39,6 +61,7 @@ class Project(models.Model):
|
|
|
|
|
|
name = models.CharField(max_length=100, unique=True)
|
|
|
description = models.TextField(blank=True)
|
|
|
objects = SearchManager()
|
|
|
|
|
|
class Meta:
|
|
|
permissions = (("view", "Can view information"),)
|
|
@@ -119,6 +142,7 @@ class Entity(models.Model):
|
|
|
description = models.TextField(blank=True)
|
|
|
project = models.ForeignKey(Project)
|
|
|
location = models.ForeignKey(Location)
|
|
|
objects = SearchManager()
|
|
|
|
|
|
class Meta:
|
|
|
# Fix the plural form used by Django.
|