# Group
- group = sqlalchemy.orm.relationship("BuildGroup", back_populates="builds",
- foreign_keys=[build_group_id], lazy="selectin")
+ async def get_group(self):
+ """
+ Returns the build group this build is in
+ """
+ stmt = (
+ sqlalchemy
+ .select(
+ BuildGroup,
+ )
+ .where(
+ BuildGroup.deleted_at == None,
+ BuildGroup.id == self.build_group_id,
+ )
+ )
+
+ return await self.db.fetch_one(stmt)
# Severity
def is_test(self):
return self.test
- @functools.cached_property
- def test_build_for(self):
- if self.group:
- return self.group.tested_build
-
# Disable Test Builds?
disable_test_builds = Column(Boolean, nullable=False, default=False)
await self._send_email("builds/messages/test-builds-failed.txt",
build=self, test_builds=self.test_builds)
- # Test Group ID
+ # Tests
- test_group_id = Column(Integer, ForeignKey("build_groups.id"))
-
- # Test Group
+ async def get_tests(self):
+ """
+ Returns the test group
+ """
+ stmt = (
+ sqlalchemy
+ .select(
+ BuildGroup,
+ )
+ .where(
+ BuildGroup.deleted_at == None,
+ BuildGroup.tested_build == self,
+ )
+ )
- test_group = sqlalchemy.orm.relationship(
- "BuildGroup", foreign_keys=[test_group_id], lazy="joined",
- )
+ return await self.db.fetch_one(stmt)
-class BuildGroup(database.Base, database.BackendMixin, database.SoftDeleteMixin):
+class BuildGroup(database.Base, database.SoftDeleteMixin):
__tablename__ = "build_groups"
def __str__(self):
# Builds
- builds = sqlalchemy.orm.relationship("Build", back_populates="group",
- foreign_keys=[Build.build_group_id], lazy="selectin")
+ builds = sqlalchemy.orm.relationship(
+ "Build", foreign_keys=[Build.build_group_id], lazy="selectin",
+ )
@staticmethod
def _sort_builds(build):
# Tested Build
- tested_build = sqlalchemy.orm.relationship("Build",
- foreign_keys=[tested_build_id], lazy="joined")
+ tested_build = sqlalchemy.orm.relationship(
+ "Build", foreign_keys=[tested_build_id], lazy="joined",
+ )
# Test?
deprecating_build_id integer,
deprecated_at timestamp without time zone,
deprecated_by_id integer,
- test_group_id integer,
test boolean DEFAULT false NOT NULL,
disable_test_builds boolean DEFAULT false NOT NULL,
points integer DEFAULT 0 NOT NULL,
ADD CONSTRAINT builds_pkg_id FOREIGN KEY (pkg_id) REFERENCES public.packages(id);
---
--- Name: builds builds_test_group_id; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.builds
- ADD CONSTRAINT builds_test_group_id FOREIGN KEY (test_group_id) REFERENCES public.build_groups(id);
-
-
--
-- Name: job_packages job_packages_job_id; Type: FK CONSTRAINT; Schema: public; Owner: -
--
{% block title %}{{ _("Build") }} - {{ build }}{% endblock %}
{% block body %}
+ {# Fetch the group #}
+ {% set group = build.get_group() %}
+
<section class="hero
{% if build.is_successful() %}
is-success
<h6 class="subtitle is-6">
<span class="tag is-warning">{{ _("Test Build") }}</span>
- <a href="/builds/{{ build.test_build_for.uuid }}">
- {{ build.test_build_for }}
+ <a href="/builds/{{ group.tested_build.uuid }}">
+ {{ group.tested_build }}
</a>
</h6>
{% else %}
</div>
</div>
</section>
- {% elif build.test_group %}
- <section class="section">
- <div class="container">
- <h5 class="title is-5">{{ _("Test Builds")}}</h5>
+ {% else %}
+ {# Fetch all tests #}
+ {% set tests = build.get_tests() %}
- {{ BuildGroupList(build.test_group, limit=8) }}
- </div>
- </section>
+ {% if tests %}
+ <section class="section">
+ <div class="container">
+ <h5 class="title is-5">{{ _("Test Builds")}}</h5>
+
+ {{ BuildGroupList(tests, limit=8) }}
+ </div>
+ </section>
+ {% endif %}
{% endif %}
{# Log #}