def get_importing(cls): """ Return builds that are waiting for dist git to import the sources. """ query = (models.Build.query.join(models.Build.copr).join( models.User).options(db.contains_eager(models.Build.copr)).options( db.contains_eager("copr.owner")).filter( (models.Build.started_on == None) | (models.Build.started_on < int(time.time() - 7200))). filter(models.Build.ended_on == None).filter( models.Build.canceled == False).order_by( models.Build.submitted_on.asc())) return query
def get_importing(cls): """ Return builds that are waiting for dist git to import the sources. """ query = (models.Build.query.join(models.Build.copr) .join(models.User) .options(db.contains_eager(models.Build.copr)) .options(db.contains_eager("copr.owner")) .filter((models.Build.started_on == None) | (models.Build.started_on < int(time.time() - 7200))) .filter(models.Build.ended_on == None) .filter(models.Build.canceled == False) .order_by(models.Build.submitted_on.asc())) return query
def attach_mock_chroots(cls, query): query = (query.outerjoin(*models.Copr.mock_chroots.attr).options( db.contains_eager(*models.Copr.mock_chroots.attr)).order_by( models.MockChroot.os_release.asc()).order_by( models.MockChroot.os_version.asc()).order_by( models.MockChroot.arch.asc())) return query
def attach_mock_chroots(cls, query): query = (query.outerjoin(*models.Copr.mock_chroots.attr) .options(db.contains_eager(*models.Copr.mock_chroots.attr)) .order_by(models.MockChroot.os_release.asc()) .order_by(models.MockChroot.os_version.asc()) .order_by(models.MockChroot.arch.asc())) return query
def get_multiple_by_name(cls, username, coprname): query = cls.get_multiple() return (query.join(models.Build.copr) .options(db.contains_eager(models.Build.copr)) .join(models.Copr.user) .filter(models.Copr.name == coprname) .filter(models.User.username == username))
def get_all(cls): """ Return all coprs without those which are deleted. """ query = (db.session.query(models.Copr) .join(models.Copr.user) .options(db.contains_eager(models.Copr.user)) .filter(models.Copr.deleted == False)) return query
def get_multiple_by_name(cls, username, coprname): query = cls.get_multiple() return (query.join(models.Build.copr) .options(db.contains_eager(models.Build.copr)) .join(models.Copr.owner) .filter(models.Copr.name == coprname) .filter(models.User.username == username))
def get_waiting(cls): """ Return builds that aren't both started and finished (if build start submission fails, we still want to mark the build as non-waiting, if it ended) this has very different goal then get_multiple, so implement it alone """ query = (models.Build.query.join(models.Build.copr).join( models.User).options(db.contains_eager(models.Build.copr)).options( db.contains_eager("copr.owner")).filter( (models.Build.started_on == None) | (models.Build.started_on < int(time.time() - 7200))). filter(models.Build.ended_on == None).filter( models.Build.canceled == False).order_by( models.Build.submitted_on.asc())) return query
def get_multiple(cls, user, **kwargs): user_relation = kwargs.get("user_relation", None) username = kwargs.get("username", None) with_mock_chroots = kwargs.get("with_mock_chroots", None) with_builds = kwargs.get("with_builds", None) incl_deleted = kwargs.get("incl_deleted", None) ids = kwargs.get("ids", None) query = (db.session.query(models.Copr) .join(models.Copr.owner) .options(db.contains_eager(models.Copr.owner)) .order_by(models.Copr.id.desc())) if not incl_deleted: query = query.filter(models.Copr.deleted == False) if isinstance(ids, list): # can be an empty list query = query.filter(models.Copr.id.in_(ids)) if user_relation == "owned": query = query.filter( models.User.username == username) elif user_relation == "allowed": aliased_user = db.aliased(models.User) query = (query.join(models.CoprPermission, models.Copr.copr_permissions) .filter(models.CoprPermission.copr_builder == helpers.PermissionEnum('approved')) .join(aliased_user, models.CoprPermission.user) .filter(aliased_user.username == username)) if with_mock_chroots: query = (query.outerjoin(*models.Copr.mock_chroots.attr) .options(db.contains_eager(*models.Copr.mock_chroots.attr)) .order_by(models.MockChroot.os_release.asc()) .order_by(models.MockChroot.os_version.asc()) .order_by(models.MockChroot.arch.asc())) if with_builds: query = (query.outerjoin(models.Copr.builds) .options(db.contains_eager(models.Copr.builds)) .order_by(models.Build.submitted_on.desc())) return query
def get_waiting(cls): """ Return builds that aren't both started and finished (if build start submission fails, we still want to mark the build as non-waiting, if it ended) this has very different goal then get_multiple, so implement it alone """ query = (models.Build.query.join(models.Build.copr) .join(models.User).join(models.BuildChroot) .options(db.contains_eager(models.Build.copr)) .options(db.contains_eager("copr.owner")) .filter((models.BuildChroot.started_on.is_(None)) | (models.BuildChroot.started_on < int(time.time() - 7200))) .filter(models.BuildChroot.ended_on.is_(None)) .filter(models.Build.canceled == false()) .order_by(models.Build.submitted_on.asc())) return query
def get_multiple(cls, include_deleted=False): query = (db.session.query(models.Copr).join( models.Copr.owner).outerjoin(models.Group).options( db.contains_eager(models.Copr.owner))) if not include_deleted: query = query.filter(models.Copr.deleted.is_(False)) return query
def legal_flag(): legal_flags = (models.LegalFlag.query.outerjoin( models.LegalFlag.copr).options(db.contains_eager( models.LegalFlag.copr)).filter( models.LegalFlag.resolved_on == None).order_by( models.LegalFlag.raised_on.desc()).all()) return flask.render_template("admin/legal-flag.html", legal_flags=legal_flags)
def legal_flag(): legal_flags = ( models.LegalFlag.query .outerjoin(models.LegalFlag.copr) .options(db.contains_eager(models.LegalFlag.copr)) .filter(models.LegalFlag.resolved_on == None) .order_by(models.LegalFlag.raised_on.desc()) .all()) return flask.render_template("admin/legal-flag.html", legal_flags=legal_flags)
def get_multiple(cls, include_deleted=False): query = ( db.session.query(models.Copr) .join(models.Copr.user) .outerjoin(models.Group) .options(db.contains_eager(models.Copr.user)) ) if not include_deleted: query = query.filter(models.Copr.deleted.is_(False)) return query
def get(cls, user, username, coprname, **kwargs): with_builds = kwargs.get("with_builds", False) with_mock_chroots = kwargs.get("with_mock_chroots", False) query = ( cls.get_all() .filter(models.Copr.name == coprname) .filter(models.User.username == username) ) if with_builds: query = (query.outerjoin(models.Copr.builds) .options(db.contains_eager(models.Copr.builds)) .order_by(models.Build.submitted_on.desc())) if with_mock_chroots: query = (query.outerjoin(*models.Copr.mock_chroots.attr) .options(db.contains_eager(*models.Copr.mock_chroots.attr)) .order_by(models.MockChroot.os_release.asc()) .order_by(models.MockChroot.os_version.asc()) .order_by(models.MockChroot.arch.asc())) return query
def get_multiple(cls, user, **kwargs): copr = kwargs.get("copr", None) username = kwargs.get("username", None) coprname = kwargs.get("coprname", None) query = models.Build.query.order_by(models.Build.id.desc()) # if we get copr, query by its id if copr: query = query.filter(models.Build.copr == copr) elif username and coprname: query = (query.join(models.Build.copr).options( db.contains_eager(models.Build.copr)).join( models.Copr.owner).filter( models.Copr.name == coprname).filter( models.User.username == username).order_by( models.Build.submitted_on.desc())) else: raise exceptions.ArgumentMissingException( "Must pass either copr or both coprname and username") return query
def join_builds(cls, query): return (query.outerjoin(models.Copr.builds).options( db.contains_eager(models.Copr.builds)).order_by( models.Build.submitted_on.desc()))
def join_builds(cls, query): return (query.outerjoin(models.Copr.builds) .options(db.contains_eager(models.Copr.builds)) .order_by(models.Build.submitted_on.desc()))
def attach_build(cls, query): query = (query.outerjoin(models.Copr.builds).options( db.contains_eager(models.Copr.builds)).order_by( models.Build.submitted_on.desc())) return query
def attach_build(cls, query): query = (query.outerjoin(models.Copr.builds) .options(db.contains_eager(models.Copr.builds)) .order_by(models.Build.submitted_on.desc())) return query