def search(request): query = request.GET.get("q", "") docs = None if query: docs = VisnykDocument.search().query( "multi_match", query=query, operator="and", fields=["plain_content", "goods_name", "cust_name"]) if docs.count() == 0: # PLAN B, PLAN B docs = VisnykDocument.search().query( "multi_match", query=query, operator="or", minimum_should_match="2", fields=["plain_content", "goods_name", "cust_name"]) docs = paginated_search( request, docs.highlight('plain_content', order="score") ) return render(request, "search.html", { "docs": docs, "query": query })
def preview(request, doc_id): try: doc = VisnykDocument.get(id=doc_id) except (ValueError, NotFoundError): raise Http404("Таких не знаємо!") return render(request, "preview.html", {"doc": doc})
def handle(self, *args, **options): VisnykDocument.init() for arg in args: for root, _, files in os.walk(arg, topdown=True): for fl in files: fname, ext = os.path.splitext(fl) if ext.lower() in [".xml", ""]: continue basename = os.path.join(root, fname) if not os.path.exists(basename + ".xml"): self.stderr.write( 'Cannot find "{0}.xml", skipping'.format(basename)) continue try: doc = None if not os.path.exists(basename + ".json"): # continue doc = self.convert_to_json_doc(basename, ext) if doc: with open(basename + ".json", "w") as fp: json.dump(doc, fp) else: with open(basename + ".json", "r") as fp: doc = json.load(fp) if doc: doc["_id"] = fname doc["filename"] = basename.replace( arg, "", 1).lstrip("/") + ext el_doc = VisnykDocument(**doc) el_doc.save() except ConvertException: self.stderr.write("Cannot convert {0}".format(fl))