#!/usr/bin/env python import cgitb cgitb.enable() import cgi import sys import time import os.path basedir = os.path.dirname(__file__) dbdir = os.path.join(basedir, 'db') libdir = os.path.join(basedir, 'lib') sys.path.append(libdir) import dblib import distlib import versionlib address = 'tinuviel@sparcs.kaist.ac.kr' def dict_form(): result = {} form = cgi.FieldStorage() for key in form: result[key] = form[key].value return result def get_meta(): metafile = os.path.join(basedir, 'meta.txt') meta = dblib.DB(metafile).uindex('name') return meta def get_conf(name, form): meta = get_meta() info = meta[name] conf = {} for key in info: conf[key] = info[key] for key in form: conf[key] = form[key] return conf def print_header(title, css=None, charset='us-ascii'): http_header = 'Content-Type: text/html; charset=%s\r\n\r\n' % (charset,) sys.stdout.write(http_header) print ('') print '' print '
' print ''
print '%d projects and %s packages in total.
' % (proj, stat)
print 'Last modified %s.' % (mtime,)
print '
Contact %s for suggestions.
''' % (mail,) name = conf.get('name') if version_view: url = '?name=%s' % (name,) print '' % (url,) else: url = '?name=%s&version=1' % (name,) print '' % (url,) print '' print 'packaged' print 'not packaged' print 'in progress' if version_view: print 'current' print 'outdated' print '
' stat_list = [] for dist in dists: pkg, xpkg = dist_pkg[dist], dist_xpkg[dist] if not xpkg: stat = '%s %d' % (dist, pkg) else: stat = '%s %d(%d)' % (dist, pkg, xpkg) stat_list.append(stat) stat_string = ', '.join(stat_list) print '%s
' % (stat_string,) print '| ' for dist in dists: print ' | %s | ' % (dist,) print '|
|---|---|---|
| %s | ' % (project,) rows = projects[project] for dist in dists: style = [] if dist not in rows: url = '' style.append('missing') else: assert len(rows[dist]) == 1 row = rows[dist][0] distobj = getattr(distlib, dist)() url = distobj.url(row.section, row.name) name = row.name version = row.version if hasattr(distobj, 'is_testing'): if distobj.is_testing(row.section): style.append('testing') if version_view: info = name text = version if version: maxversion = versions[project] if versionlib.key(dist, version) == maxversion: style.append('current') else: style.append('outdated') else: if distobj.has_version(row.section): text = '(unavailable)' else: text = '(link)' else: info = version text = name s = '' style = ' '.join(style) if url and info: s = '%s' % (url, info, text) elif url: s = '%s' % (url, text) if style: s = '%s | ' % (style, s) else: s = '%s | ' % (s,) print s print '