def package_view(pkgname): try: pkg = db.get_pkg(pkgname) except KeyError: pkg = dummy.aurpkg(pkgname) building_arch = None try: status = db.get_status() if status['building'] == pkgname: building_arch = status['arch'] except KeyError: pass results = {} builds = {} for arch in pkg['arch']: if building_arch == arch or building_arch is not None and arch == 'any': results[arch] = {'rtype': 'building', 'rvalue': {'name': pkgname, 'build_arch': building_arch}} else: results[arch] = db.get_result(pkgname, build_arch=arch) if not results[arch]: if arch in AurBSConfig().architectures or arch == 'any': results[arch] = {'rtype': 'scheduled'} else: results[arch] = {'rtype': 'disabled'} try: builds[arch] = find_pkg_files(pkgname, directory=repodir(arch))[0] except (IndexError, FileNotFoundError): pass local_depends = filter_dependencies([pkg['depends']], local=True) required_by = db.get_pkg_required_by(pkgname) return render_template("package_view.html", pkg=pkg, results=results, local_depends=local_depends, required_by=required_by, builds=builds)
def package_list(): pkgs = [] query = request.args.get('query', None) for pkgname in AurBSConfig().aurpkgs: try: pkg = db.get_pkg(pkgname) except KeyError: pkg = dummy.aurpkg(pkgname) if query: if query not in pkg['name']: continue pkgs.append(pkg) if query and len(pkgs) == 1: return redirect(url_for('package_view', pkgname=pkgs[0]['name'])) pkgs = sorted(pkgs, key=lambda i: i['name']) return render_template("package_list.html", pkgs=pkgs)
def package_view(pkgname): try: pkg = db.get_pkg(pkgname) except KeyError: pkg = dummy.aurpkg(pkgname) building_arch = None try: status = db.get_status() if status['building'] == pkgname: building_arch = status['arch'] except KeyError: pass results = {} builds = {} for arch in pkg['arch']: if building_arch == arch or building_arch is not None and arch == 'any': results[arch] = { 'rtype': 'building', 'rvalue': { 'name': pkgname, 'build_arch': building_arch } } else: results[arch] = db.get_result(pkgname, build_arch=arch) if not results[arch]: if arch in AurBSConfig().architectures or arch == 'any': results[arch] = {'rtype': 'scheduled'} else: results[arch] = {'rtype': 'disabled'} try: builds[arch] = find_pkg_files(pkgname, directory=repodir(arch))[0] except (IndexError, FileNotFoundError): pass local_depends = filter_dependencies([pkg['depends']], local=True) required_by = db.get_pkg_required_by(pkgname) return render_template("package_view.html", pkg=pkg, results=results, local_depends=local_depends, required_by=required_by, builds=builds)
def set_result(self, pkgname, build_arch, rtype, **kwargs): # arch via pkg from db # rtype = problem | build self._cleanup_results(pkgname) try: pkg = self.get_pkg(pkgname) arch = "any" if pkg['arch'][0] == "any" else build_arch except KeyError: pkg = dummy.aurpkg(pkgname) arch = build_arch setv = { "name": pkg['name'], "arch": arch, "build_arch": build_arch, "date": datetime.datetime.utcnow(), "pkg": pkg['_id'] } if rtype == 'build': setv.update({ "linkdepends": kwargs['linkdepends'], "release": kwargs['release'], "version": pkg['version'] }) elif rtype == 'problem': setv.update({ "type": kwargs['ptype'] }) if kwargs['ptype'] in ['blocked_depends', 'missing_depends']: setv.update({ "depends": kwargs['depends'] }) elif kwargs['ptype'] == 'fail': setv.update({ "linkdepends": kwargs['linkdepends'], "version": pkg['version'] }) try: setr = self.get_result(pkgname, build_arch=build_arch, rtype=rtype) self._db["%ss" % rtype].update({'_id': setr['_id']}, setv) except KeyError: setr = self._db["%ss" % rtype].insert(setv)