Пример #1
0
def index():
    repo_name = AurBSConfig().public_repo['name']
    try:
        repo_url = AurBSConfig().public_repo['http_url']
    except KeyError:
        repo_url = url_for('public_repo', _external=True)
    return render_template("base.html", repo_name=repo_name, repo_url=repo_url)
Пример #2
0
def filter_dependencies(args, local=True, nofilter=False):
    deps = set()
    for arg in args:
        deps = deps.union(arg)
    if nofilter:
        return deps
    if local:
        return [d for d in deps if d in AurBSConfig().aurpkgs]
    else:
        return [d for d in deps if d not in AurBSConfig().aurpkgs]
Пример #3
0
	def cleanup_orphaned(self):
		# cleanup pkgs and results, that are not in AurBSConfig().aurpkgs
		for pkg in self._db.packages.find({}):
			if pkg['name'] not in AurBSConfig().aurpkgs:
				self._db.packages.remove({'name': pkg['name']})
				log.info("Cleanup orphaned db pkg-entry: %s" % pkg['name'])
		for rtype in ['build', 'problem']:
			for result in self.get_results(rtype):
				if result['name'] not in AurBSConfig().aurpkgs:
					self._db["%ss" % rtype].remove({'name': result['name']})
					log.info("Cleanup orphaned db result-entry: %s" % result['name'])
Пример #4
0
	def get_pkg_required_by(self, pkgname):
		pkgs = []
		for pkg in AurBSConfig().aurpkgs:
			try:
				pkg = self.get_pkg(pkg)
				if pkgname in pkg['depends']:
					pkgs.append(pkg['name'])
			except KeyError:
				pass
		return pkgs
Пример #5
0
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)
Пример #6
0
	def __init__(self):
		self._client = MongoClient(AurBSConfig().database['host'], AurBSConfig().database['port'])
		self._db = self._client[AurBSConfig().database['database']]
		if AurBSConfig().database.get('user'):
			try:
				self._db.authenticate(AurBSConfig().database['user'], AurBSConfig().database['pass'])
				log.info("Authentificated with database user '%s'" % AurBSConfig().database['user'])
			except Exception as e:
				print(e)
				raise FatalError("Authentification failed with database user '%s'" % AurBSConfig().database['user'])
		else:
			try:
				self._db.collection_names()
			except Exception:
				raise FatalError("Database requires authentification")
		self._db.packages.ensure_index("name", unique=True, dropDups=True)
		for rtype in ['build', 'problem']:
			self._db["%ss" % rtype].ensure_index("name")
Пример #7
0
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)
Пример #8
0
def public_repo_get(arch, pkg):
    if arch not in AurBSConfig().architectures and arch != 'any':
        return "invalid arch"
    else:
        return send_from_directory(repodir_public(arch), pkg)
Пример #9
0
def aurstaging_get(arch, pkg):
    if arch not in AurBSConfig().architectures and arch != 'any':
        return "404"
    else:
        return send_from_directory(repodir(arch), pkg)
Пример #10
0
#!/usr/bin/env python

import os
import sys
from flask import Flask, render_template, request, redirect, url_for, jsonify, Response, send_file, send_from_directory

sys.path.append(os.path.abspath(os.path.dirname(__file__) + '/' + '../..'))
from aurbs import dummy
from aurbs.db import Database
from aurbs.config import AurBSConfig
from aurbs.static import *
from aurbs.helper import *

app = Flask(__name__)
AurBSConfig("/etc/aurbs.yml")
db = Database()


@app.template_filter('datetimeformat')
def datetimeformat(value, format='%Y-%m-%d %H:%M:%S'):
    return value.strftime(format)


@app.route('/')
def index():
    repo_name = AurBSConfig().public_repo['name']
    try:
        repo_url = AurBSConfig().public_repo['http_url']
    except KeyError:
        repo_url = url_for('public_repo', _external=True)
    return render_template("base.html", repo_name=repo_name, repo_url=repo_url)