Esempio n. 1
0
    def GET(self, *args):
        l = len(args)
        if l == 0:
            use_query = db.query('SELECT COUNT(DISTINCT UKEY) AS USE_COUNT FROM USEFLAGS')
            use_tuple = use_query[0]
            use_data = {'USE_COUNT':use_tuple['USE_COUNT']}
            if helpers.is_json_request():
                return helpers.serialize(use_data)
            else:
                return render.use(use_data)

        elif l == 1:
            global_use_query = db.query('SELECT COUNT(DISTINCT UUID) AS GLOBAL_COUNT\
                    FROM GLOBAL_USEFLAGS RIGHT OUTER JOIN USEFLAGS\
                    ON GLOBAL_USEFLAGS.UKEY = USEFLAGS.UKEY\
                    WHERE USEFLAG=$useflag', vars={'useflag':args[0]})
            plus_use_query = db.query('SELECT COUNT(DISTINCT IPKEY) AS PLUS_COUNT\
                    FROM PLUS_USEFLAGS RIGHT OUTER JOIN USEFLAGS\
                    ON PLUS_USEFLAGS.UKEY = USEFLAGS.UKEY\
                    WHERE USEFLAG=$useflag', vars={'useflag':args[0]})
            minus_use_query = db.query('SELECT COUNT(DISTINCT IPKEY) AS MINUS_COUNT\
                    FROM MINUS_USEFLAGS RIGHT OUTER JOIN USEFLAGS\
                    ON MINUS_USEFLAGS.UKEY = USEFLAGS.UKEY\
                    WHERE USEFLAG=$useflag', vars={'useflag':args[0]})
            unset_use_query = db.query('SELECT COUNT(DISTINCT IPKEY) AS UNSET_COUNT\
                    FROM UNSET_USEFLAGS RIGHT OUTER JOIN USEFLAGS\
                    ON UNSET_USEFLAGS.UKEY = USEFLAGS.UKEY\
                    WHERE USEFLAG=$useflag', vars={'useflag':args[0]})

            global_use_tuple = global_use_query[0]
            plus_use_tuple = plus_use_query[0]
            minus_use_tuple = minus_use_query[0]
            unset_use_tuple = unset_use_query[0]

            use_data = {
                    'GLOBAL_COUNT':global_use_tuple['GLOBAL_COUNT'],
                    'PLUS_COUNT':plus_use_tuple['PLUS_COUNT'],
                    'MINUS_COUNT':minus_use_tuple['MINUS_COUNT'],
                    'UNSET_COUNT':unset_use_tuple['UNSET_COUNT']
                    }
            if helpers.is_json_request():
                return helpers.serialize(use_data)
            else:
                return render.use_useflag(args[0], use_data)

        else:
            return config.internalerror()
Esempio n. 2
0
 def GET(self):
     profile_count = db.select('ENV', what='PROFILE, COUNT(UUID) AS HOSTS', group='PROFILE')
     profile_data = dict()
     for t in profile_count:
         profile_data[t['PROFILE']] = {'HOSTS':t['HOSTS']}
     if helpers.is_json_request():
         return helpers.serialize(profile_data)
     else:
         return render.profile(profile_data)
Esempio n. 3
0
 def GET(self):
     mirror_count = db.query('SELECT MIRROR,COUNT(UUID) AS HOSTS\
             FROM HOST_MIRRORS NATURAL JOIN GENTOO_MIRRORS GROUP BY MIRROR')
     mirror_data = dict()
     for t in mirror_count:
         mirror_data[t['MIRROR']] = {'HOSTS':t['HOSTS']}
     if helpers.is_json_request():
         return helpers.serialize(mirror_data)
     else:
         return render.mirror(mirror_data)
Esempio n. 4
0
 def GET(self):
     feature_count = db.query('SELECT FEATURE,COUNT(UUID) AS HOSTS\
             FROM HOST_FEATURES NATURAL JOIN FEATURES GROUP BY FEATURE')
     feature_data = dict()
     for t in feature_count:
         feature_data[t['FEATURE']] = {'HOSTS':t['HOSTS']}
     if helpers.is_json_request():
         return helpers.serialize(feature_data)
     else:
         return render.feature(feature_data)
Esempio n. 5
0
 def GET(self):
     repo_count = db.query('SELECT REPO,COUNT(DISTINCT IPKEY) AS PACKAGES,\
             COUNT(DISTINCT UUID) AS HOSTS\
             FROM INSTALLED_PACKAGES NATURAL JOIN REPOSITORIES GROUP BY REPO')
     repo_data = dict()
     for t in repo_count:
         repo_data[t['REPO']] = {'HOSTS':t['HOSTS'], 'PACKAGES':t['PACKAGES']}
     if helpers.is_json_request():
         return helpers.serialize(repo_data)
     else:
         return render.repo(repo_data)
Esempio n. 6
0
 def __GET_CPV(self, cat, pkg, ver):
     p_query = db.query('SELECT COUNT(DISTINCT UUID) AS HOST_COUNT\
             FROM INSTALLED_PACKAGES RIGHT OUTER JOIN PACKAGES\
             ON INSTALLED_PACKAGES.PKEY = PACKAGES.PKEY\
             WHERE CAT=$cat AND PKG=$pkg AND VER=$ver', vars={'cat':cat, 'pkg':pkg, 'ver':ver})
     p_tuple = p_query[0]
     p_data = {
             'HOST_COUNT':p_tuple['HOST_COUNT'],
             }
     if helpers.is_json_request():
         return helpers.serialize(p_data)
     else:
         return render.package_cpv(cat, pkg, ver, p_data)
Esempio n. 7
0
 def GET(self):
     arch_count = db.select("ENV", what="ARCH, COUNT(UUID) AS HOSTS", group="ARCH")
     arch_data = dict()
     for t in arch_count:
         arch_data[t["ARCH"]] = {"HOSTS": t["HOSTS"]}
     if helpers.is_json_request():
         return helpers.serialize(arch_data)
     else:
         # generate plot
         x_ticklabels = arch_data.keys()
         y_values = [arch_data[a]["HOSTS"] for a in x_ticklabels]
         arch_plot = helpers.barchart(
             title="Hosts per arch",
             x_label="Arch",
             y_label="Number of Hosts",
             x_ticklabels=x_ticklabels,
             y_values=y_values,
         )
         return render.arch(arch_data, arch_plot)
Esempio n. 8
0
 def __GET_CP(self, top, cat, pkg):
     """
     Get category/package-version
     """
     p_query = db.query('SELECT COUNT(DISTINCT UUID) AS HOST_COUNT, \
             COUNT(DISTINCT CAT, PKG, VER) AS CPV_COUNT\
             FROM INSTALLED_PACKAGES RIGHT OUTER JOIN PACKAGES\
             ON INSTALLED_PACKAGES.PKEY = PACKAGES.PKEY\
             WHERE CAT=$cat AND PKG=$pkg', vars={'cat':cat, 'pkg':pkg})
     p_tuple = p_query[0]
     p_data = {
             'HOST_COUNT':p_tuple['HOST_COUNT'],
             'CPV_COUNT':p_tuple['CPV_COUNT'],
             'TOP_CPV':self.__top(top, cat, pkg)
             }
     if helpers.is_json_request():
         return helpers.serialize(p_data)
     else:
         return render.package_cp(cat, pkg, p_data)
Esempio n. 9
0
 def GET(self):
     keyword_count = db.query('SELECT KEYWORD,\
             COUNT(DISTINCT IPKEY) AS PACKAGES,\
             COUNT(DISTINCT UUID) AS HOSTS\
             FROM GLOBAL_KEYWORDS NATURAL JOIN KEYWORDS\
             NATURAL JOIN INSTALLED_PACKAGES GROUP BY KEYWORD')
     keyword_data = dict()
     for t in keyword_count:
         keyword_data[t['KEYWORD']] = {'HOSTS':t['HOSTS'], 'PACKAGES':t['PACKAGES']}
     if helpers.is_json_request():
         return helpers.serialize(keyword_data)
     else:
         # generate plot
         x_ticklabels = keyword_data.keys()
         y_values = [ keyword_data[k]['PACKAGES'] for k in x_ticklabels ]
         keyword_plot = helpers.barchart(title = 'Installed packages per keyword',
                 x_label = 'Keyword', y_label = 'Number of Packages',
                 x_ticklabels = x_ticklabels, y_values = y_values)
         return render.keyword(keyword_data, keyword_plot)
Esempio n. 10
0
 def __GET(self, top):
     """
     Get category
     """
     p_query = db.query('SELECT COUNT(DISTINCT UUID) AS HOST_COUNT, \
             COUNT(DISTINCT CAT) AS C_COUNT, \
             COUNT(DISTINCT CAT, PKG) AS CP_COUNT, \
             COUNT(DISTINCT CAT, PKG, VER) AS CPV_COUNT\
             FROM INSTALLED_PACKAGES RIGHT OUTER JOIN PACKAGES\
             ON INSTALLED_PACKAGES.PKEY = PACKAGES.PKEY')
     p_tuple = p_query[0]
     p_data = {
             'HOST_COUNT':p_tuple['HOST_COUNT'],
             'C_COUNT':p_tuple['C_COUNT'],
             'CP_COUNT':p_tuple['CP_COUNT'],
             'CPV_COUNT':p_tuple['CPV_COUNT'],
             'TOP_C':self.__top(top)
             }
     if helpers.is_json_request():
         return helpers.serialize(p_data)
     else:
         return render.package(p_data)
Esempio n. 11
0
    def GET(self):
        self.args = web.input(cat='any', pkg='any', ver='any', repo='any')

        try:
            self.min_hosts = int(web.input(min_hosts=-1).min_hosts)
        except ValueError:
            self.min_hosts = -1

        try:
            self.max_hosts = int(web.input(max_hosts=-1).max_hosts)
        except ValueError:
            self.max_hosts = -1

        where = self._build_where()
        having = self._build_having()
        query = self._build_query(where, having)
        search_tuples = db.query(query, vars={
            'cat':self.args.cat,
            'pkg':self.args.pkg,
            'ver':self.args.ver,
            'repo':self.args.repo,
            'min_hosts':self.min_hosts,
            'max_hosts':self.max_hosts})
        if helpers.is_json_request():
            search_list = list()
            for tuple in search_tuples:
                search_list.append({
                    'CAT': tuple['CAT'],
                    'PKG': tuple['PKG'],
                    'VER': tuple['VER'],
                    'REPO': tuple['REPO'],
                    'HOSTS': tuple['HOSTS']
                    })
            return helpers.serialize(search_list)
        else:
            return render.search(search_tuples)
Esempio n. 12
0
    def GET(self, *args):
        if len(args) == 0:
            form = host_form()
            return render.host_input(form)

        str_uuid = args[0]
        if not helpers.is_uuid(str_uuid):
            return config.notfound()

        uuid = helpers.uuidbin(str_uuid)
        hosts = db.select('HOSTS', vars={'uuid':uuid}, where='UUID=$uuid', what='UUID')
        if len(hosts) == 0:
            return config.notfound()

        host_data = dict()
        host_data['UUID'] = str_uuid

        env = db.select('ENV', vars={'uuid':uuid}, where="UUID=$uuid")
        e = env[0]
        for var in ['PLATFORM', 'LASTSYNC', 'PROFILE', 'ARCH', 'CHOST', 'CFLAGS', 'CXXFLAGS', 'FFLAGS', 'LDFLAGS', 'MAKEOPTS', 'SYNC']:
            host_data[var] = e[var]

        host_data['FEATURES'] = list()
        features = db.query('SELECT FEATURE\
                FROM HOST_FEATURES NATURAL JOIN FEATURES\
                WHERE UUID=$uuid', vars={'uuid':uuid})
        for f in features:
            host_data['FEATURES'].append(f['FEATURE'])

        host_data['ACCEPT_KEYWORDS'] = list()
        keywords = db.query('SELECT KEYWORD\
                FROM GLOBAL_KEYWORDS NATURAL JOIN KEYWORDS\
                WHERE UUID=$uuid', vars={'uuid':uuid})
        for k in keywords:
            host_data['ACCEPT_KEYWORDS'].append(k['KEYWORD'])

        host_data['USE'] = list()
        useflags = db.query('SELECT USEFLAG\
                FROM GLOBAL_USEFLAGS NATURAL JOIN USEFLAGS\
                WHERE UUID=$uuid', vars={'uuid':uuid})
        for u in useflags:
            host_data['USE'].append(u['USEFLAG'])

        host_data['LANG'] = list()
        lang = db.query('SELECT LANG\
                FROM HOST_LANG NATURAL JOIN LANG\
                WHERE UUID=$uuid', vars={'uuid':uuid})
        for l in lang:
            host_data['LANG'].append(l['LANG'])

        host_data['GENTOO_MIRRORS'] = list()
        mirrors = db.query('SELECT MIRROR\
                FROM HOST_MIRRORS NATURAL JOIN GENTOO_MIRRORS\
                WHERE UUID=$uuid', vars={'uuid':uuid})
        for m in mirrors:
            host_data['GENTOO_MIRRORS'].append(m['MIRROR'])

        host_data['PACKAGES'] = dict()
        packages = db.query('SELECT CAT, PKG, VER\
                FROM INSTALLED_PACKAGES NATURAL JOIN PACKAGES\
                WHERE UUID=$uuid ORDER BY CAT, PKG, VER', vars={'uuid':uuid})
        for p in packages:
            cpv = p['CAT'] + '/' + p['PKG'] + '-' + p['VER']
            host_data['PACKAGES'][cpv] = dict()

        if helpers.is_json_request():
            return helpers.serialize(host_data)
        else:
            return render.host(host_data)