1 """
2 This module contains logic for Copr API.
3
4 xWrapper classes add helper methods
5 to [de]serialize model instances for API views.
6 """
7
8
11 """
12 :arg build: copr.models.Build
13 """
14 self.build = build
15
17 out = {}
18 for field in ["id", "pkg_version", "status", "state",
19 "canceled", "repos", "submitted_on", "started_on",
20 "ended_on", "results", "memory_reqs", "timeout"]:
21 out[field] = getattr(self.build, field, None)
22
23 out["src_pkg"] = self.build.pkgs
24 build_packages = self.build.built_packages
25 if build_packages:
26 out["built_packages"] = build_packages.split("\n")
27 else:
28 out["built_packages"] = []
29
30 return out
31
32
35 """
36 :arg monitor_data: dict with fields:
37 "builds": list of models.Build,
38 "chroots": list of chroot names
39 "packages": tuple (pkg_name, pkg_version, build_results),
40 "latest_build": models.Build,
41 """
42 self.monitor_data = monitor_data
43
45 out = {}
46 chroots = self.monitor_data["chroots"]
47 out["chroots"] = chroots
48 out["builds"] = [
49 BuildWrapper(build).to_dict()
50 for build in self.monitor_data["builds"]
51 ]
52 out["packages"] = [
53 {
54 "pkg_name": pkg[0],
55 "pkg_version": pkg[1],
56 "results": dict(zip(chroots, pkg[2]))
57 }
58 for pkg in self.monitor_data["packages"]
59 ]
60 return out
61