Exemplo n.º 1
0
 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
Exemplo n.º 2
0
 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
Exemplo n.º 3
0
 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
Exemplo n.º 4
0
 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
Exemplo n.º 5
0
 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))
Exemplo n.º 6
0
 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
Exemplo n.º 7
0
 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
Exemplo n.º 8
0
 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))
Exemplo n.º 9
0
    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
Exemplo n.º 10
0
    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
Exemplo n.º 11
0
    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
Exemplo n.º 12
0
    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
Exemplo n.º 13
0
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)
Exemplo n.º 14
0
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)
Exemplo n.º 15
0
    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
Exemplo n.º 16
0
    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
Exemplo n.º 17
0
    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
Exemplo n.º 18
0
 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()))
Exemplo n.º 19
0
 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()))
Exemplo n.º 20
0
 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
Exemplo n.º 21
0
 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