Source code for document.base

from elasticsearch_dsl import Document, InnerDoc


[docs]class BaseDocument(Document): class StatusOperation: NOT_MODIFIED = "noop" CREATED = "created" UPDATED = "updated" DELETED = "deleted" @classmethod def get_ids(cls): search = cls.search() return [doc.meta.id for doc in search[: search.count()].execute()] @classmethod def get_or_new(cls, id): obj = cls.get(id=id, ignore=404) if obj is None: obj = cls(meta={"id": id}) return obj
class BaseInnerDoc(InnerDoc): @classmethod def get_or_new(cls, id, container): res = list(filter(lambda x: x.id == id, container)) if res: return res[0] out = cls(id=id) container.append(out) return out