зеркало из https://github.com/mozilla/FlightDeck.git
adding SearchMixin, and changing Package _type in ES to use 'jetpack_package' instead of 'addon' and 'library'
This commit is contained in:
Родитель
f46bb9953b
Коммит
a2485980df
|
@ -36,6 +36,7 @@ from jetpack.errors import (SelfDependencyException, FilenameExistException,
|
|||
UpdateDeniedException, SingletonCopyException,
|
||||
DependencyException, AttachmentWriteException)
|
||||
from jetpack.managers import PackageManager
|
||||
from search.models import SearchMixin
|
||||
from utils import validator
|
||||
from utils.exceptions import SimpleException
|
||||
from utils.helpers import pathify, alphanum, alphanum_plus
|
||||
|
@ -1268,7 +1269,7 @@ class PackageRevision(BaseModel):
|
|||
return self.pk == self.package.latest.pk
|
||||
|
||||
|
||||
class Package(BaseModel):
|
||||
class Package(BaseModel, SearchMixin):
|
||||
"""
|
||||
Holds the meta data shared across all PackageRevisions
|
||||
"""
|
||||
|
@ -1623,7 +1624,7 @@ class Package(BaseModel):
|
|||
pass
|
||||
|
||||
try:
|
||||
es.index(data, settings.ES_INDEX, self.get_type_name(), self.id,
|
||||
es.index(data, settings.ES_INDEX, self._meta.db_table, id=self.id,
|
||||
bulk=bulk)
|
||||
except Exception, e:
|
||||
log.error("ElasticSearch errored for addon (%s): %s" % (self, e))
|
||||
|
@ -1641,7 +1642,7 @@ class Package(BaseModel):
|
|||
@es_required
|
||||
def remove_from_index(self, es, bulk=False):
|
||||
try:
|
||||
es.delete(settings.ES_INDEX, self.get_type_name(), self.id,
|
||||
es.delete(settings.ES_INDEX, self._meta.db_table, id=self.id,
|
||||
bulk=bulk)
|
||||
except PyesNotFoundException:
|
||||
log.debug('Package %d tried to remove from index but was not found.'
|
||||
|
|
|
@ -1,7 +1,11 @@
|
|||
import commonware.log
|
||||
import cronjobs
|
||||
from pyes.exceptions import ElasticSearchException
|
||||
from celery.messaging import establish_connection
|
||||
from celeryutils import chunked
|
||||
from elasticutils import get_es
|
||||
|
||||
from django.conf import settings
|
||||
|
||||
from jetpack.models import Package
|
||||
from search import tasks
|
||||
|
@ -17,3 +21,24 @@ def index_all():
|
|||
with establish_connection() as conn:
|
||||
for chunk in chunked(ids, 100):
|
||||
tasks.index_all.apply_async(args=[chunk], connection=conn)
|
||||
|
||||
@cronjobs.register
|
||||
def setup_mapping():
|
||||
"""Create index, and setup mapping, for ES."""
|
||||
|
||||
package_mapping = {
|
||||
'properties': {
|
||||
# type is only ever 'a' or 'l', and we do exact matchs.
|
||||
# 'a' gets analyzed otherwise
|
||||
'type': {'type': 'string', 'index': 'not_analyzed'},
|
||||
},
|
||||
}
|
||||
|
||||
es = get_es()
|
||||
try:
|
||||
es.create_index_if_missing(settings.ES_INDEX)
|
||||
es.put_mapping(Package._meta.db_table, package_mapping,
|
||||
settings.ES_INDEX)
|
||||
except ElasticSearchException, e:
|
||||
log.debug(e)
|
||||
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
from elasticutils import S
|
||||
|
||||
class SearchMixin(object):
|
||||
|
||||
@classmethod
|
||||
def search(cls):
|
||||
return S(cls)
|
Загрузка…
Ссылка в новой задаче