def api_coprs_search_by_project(project=None): """ Return the list of coprs found in search by the given text. project is taken either from GET params or from the URL itself (in this order). :arg project: the text one would like find for coprs. """ project = flask.request.args.get("project", None) or project if not project: raise LegacyApiError("No project found.") try: query = CoprsLogic.get_multiple_fulltext(project) repos = query.all() output = {"output": "ok", "repos": []} for repo in repos: output["repos"].append({ "username": repo.user.name, "coprname": repo.name, "description": repo.description }) except ValueError as e: raise LegacyApiError("Server error: {}".format(e)) return flask.jsonify(output)
def api_coprs_search_by_project(project=None): """ Return the list of coprs found in search by the given text. project is taken either from GET params or from the URL itself (in this order). :arg project: the text one would like find for coprs. """ project = flask.request.args.get("project", None) or project if not project: raise LegacyApiError("Invalid request") try: query = CoprsLogic.get_multiple_fulltext(project) repos = query.all() output = {"output": "ok", "repos": []} for repo in repos: output["repos"].append({"username": repo.user.name, "coprname": repo.name, "description": repo.description}) except ValueError as e: raise LegacyApiError("Server error: {}".format(e)) return flask.jsonify(output)
def search_projects(query, **kwargs): try: search_query = CoprsLogic.get_multiple_fulltext(query) paginator = Paginator(search_query, models.Copr, **kwargs) projects = paginator.map(to_dict) except ValueError as ex: raise BadRequest(str(ex)) return flask.jsonify(items=projects, meta=paginator.meta)
def test_fulltext_whooshee_return_all_hits(self, f_users, f_db): # https://bugzilla.redhat.com/show_bug.cgi?id=1153039 self.prefix = u"prefix" self.s_coprs = [] index = Whooshee.get_or_create_index(app, CoprWhoosheer) writer = index.writer() u1_count = 150 for x in range(u1_count): self.s_coprs.append( models.Copr(name=self.prefix + str(x), user=self.u1)) u2_count = 7 for x in range(u2_count): self.s_coprs.append( models.Copr(name=self.prefix + str(x), user=self.u2)) u3_count = 9 for x in range(u3_count): self.s_coprs.append( models.Copr(name=u"_wrong_" + str(x), user=self.u3)) self.db.session.add_all(self.s_coprs) self.db.session.commit() for copr in self.s_coprs: CoprWhoosheer.insert_copr(writer, copr) writer.commit(optimize=True) query = CoprsLogic.get_multiple_fulltext("prefix") pre_query = models.Copr.query.order_by(desc(models.Copr.created_on))\ .join(models.User).filter(models.Copr.deleted == False) query = pre_query.whooshee_search( self.prefix, whoosheer=CoprWhoosheer) # needs flask-whooshee-0.2.0 results = query.all() for obj in results: assert self.prefix in obj.name obtained = len(results) expected = u1_count + u2_count assert obtained == expected