def get_project_list(ownername=None, **kwargs): if not ownername: query = CoprsLogic.get_multiple() elif ownername.startswith("@"): group_name = ownername[1:] query = CoprsLogic.get_multiple() query = CoprsLogic.filter_by_group_name(query, group_name) else: query = CoprsLogic.get_multiple_owned_by_username(ownername) query = CoprsLogic.filter_without_group_projects(query) # @TODO ordering doesn't work correctly - try order by models.Copr.name DESC paginator = Paginator(query, models.Copr, **kwargs) projects = paginator.map(to_dict) return flask.jsonify(items=projects, meta=paginator.meta)
def projects(self): # @FIXME We get into circular import when this import is on module-level from coprs.logic.coprs_logic import CoprsLogic return [{ "full_name": p.full_name, "url": copr_url("coprs_ns.copr_detail", p, _external=True) } for p in CoprsLogic.filter_by_user_name( CoprsLogic.get_multiple(), self.user.name)]
def rss(limit=200): """ Simple route that returns all projects name, description, link to selected project as rss feed except projects hidden from homepage """ coprs = CoprsLogic.get_multiple(include_unlisted_on_hp=False).order_by( models.Copr.id.desc()).limit(limit) answer = render_template("rss/rss.xml", coprs=coprs) return Response(answer, mimetype="text/xml")
def api_coprs_by_owner(username=None): """ Return the list of coprs owned by the given user. username is taken either from GET params or from the URL itself (in this order). :arg username: the username of the person one would like to the coprs of. """ username = flask.request.args.get("username", None) or username if username is None: raise LegacyApiError("Invalid request: missing `username` ") release_tmpl = "{chroot.os_release}-{chroot.os_version}-{chroot.arch}" if username.startswith("@"): group_name = username[1:] query = CoprsLogic.get_multiple() query = CoprsLogic.filter_by_group_name(query, group_name) else: query = CoprsLogic.get_multiple_owned_by_username(username) query = CoprsLogic.join_builds(query) query = CoprsLogic.set_query_order(query) repos = query.all() output = {"output": "ok", "repos": []} for repo in repos: yum_repos = {} for build in repo.builds: # FIXME in new api! for chroot in repo.active_chroots: release = release_tmpl.format(chroot=chroot) yum_repos[release] = fix_protocol_for_backend( os.path.join(build.copr.repo_url, release + '/')) break output["repos"].append({ "name": repo.name, "additional_repos": repo.repos, "yum_repos": yum_repos, "description": repo.description, "instructions": repo.instructions, "persistent": repo.persistent, "unlisted_on_hp": repo.unlisted_on_hp, "auto_prune": repo.auto_prune, }) return flask.jsonify(output)
def coprs_show(page=1): query = CoprsLogic.get_multiple() query = CoprsLogic.set_query_order(query, desc=True) paginator = helpers.Paginator(query, query.count(), page) coprs = paginator.sliced_query # flask.g.user is none when no user is logged - showing builds from everyone # TODO: builds_logic.BuildsLogic.get_recent_tasks(flask.g.user, 5) takes too much time, optimize sql # users_builds = builds_logic.BuildsLogic.get_recent_tasks(flask.g.user, 5) users_builds = builds_logic.BuildsLogic.get_recent_tasks(None, 5) return flask.render_template("coprs/show/all.html", coprs=coprs, paginator=paginator, tasks_info=ComplexLogic.get_queues_size(), users_builds=users_builds)
def coprs_show(page=1): query = CoprsLogic.get_multiple(include_unlisted_on_hp=False) query = CoprsLogic.set_query_order(query, desc=True) paginator = helpers.Paginator(query, query.count(), page) coprs = paginator.sliced_query # flask.g.user is none when no user is logged - showing builds from everyone # TODO: builds_logic.BuildsLogic.get_recent_tasks(flask.g.user, 5) takes too much time, optimize sql # users_builds = builds_logic.BuildsLogic.get_recent_tasks(flask.g.user, 5) users_builds = builds_logic.BuildsLogic.get_recent_tasks(None, 5) return flask.render_template("coprs/show/all.html", coprs=coprs, paginator=paginator, tasks_info=ComplexLogic.get_queues_size(), users_builds=users_builds)
def api_coprs_by_owner(username=None): """ Return the list of coprs owned by the given user. username is taken either from GET params or from the URL itself (in this order). :arg username: the username of the person one would like to the coprs of. """ username = flask.request.args.get("username", None) or username if username is None: raise LegacyApiError("Invalid request: missing `username` ") release_tmpl = "{chroot.os_release}-{chroot.os_version}-{chroot.arch}" if username.startswith("@"): group_name = username[1:] query = CoprsLogic.get_multiple() query = CoprsLogic.filter_by_group_name(query, group_name) else: query = CoprsLogic.get_multiple_owned_by_username(username) query = CoprsLogic.join_builds(query) query = CoprsLogic.set_query_order(query) repos = query.all() output = {"output": "ok", "repos": []} for repo in repos: yum_repos = {} for build in repo.builds: if build.results: for chroot in repo.active_chroots: release = release_tmpl.format(chroot=chroot) yum_repos[release] = fix_protocol_for_backend( os.path.join(build.results, release + '/')) break output["repos"].append({"name": repo.name, "additional_repos": repo.repos, "yum_repos": yum_repos, "description": repo.description, "instructions": repo.instructions}) return flask.jsonify(output)