diff options
Diffstat (limited to 'RepSys/cgi/submit.py')
-rw-r--r-- | RepSys/cgi/submit.py | 119 |
1 files changed, 0 insertions, 119 deletions
diff --git a/RepSys/cgi/submit.py b/RepSys/cgi/submit.py deleted file mode 100644 index 10f7cb2..0000000 --- a/RepSys/cgi/submit.py +++ /dev/null @@ -1,119 +0,0 @@ -#!/usr/bin/python -from RepSys import Error, config -from RepSys.rpmutil import get_srpm -from RepSys.cgiutil import CgiError, get_targets -import cgi -import sys -import os - -TEMPLATE = """\ -<html> -<head> -<title>Repository package submission system</title> -</head> -<body bgcolor="white"> -<table cellspacing=0 cellpadding=0 border=0 width="100%%"> - <tr bgcolor="#020264"><td align="left" valign="middle"><img src="http://qa.mandriva.com/mandriva.png" hspace=0 border=0 alt=""></td></tr> -</table> -<br> -<hr> -<center> -<b>%(message)s</b> -<br><br> -<form method="POST" action=""> -<table><tr><td valign="top"> - Package URL:<br> - <input name="packageurl" size="60" value="svn+ssh://cvs.mandriva.com/svn/mdv/cooker/"><br> - <small>Ex. svn+ssh://cvs.mandriva.com/svn/mdv/cooker/pkgname</small><br> - </td><td valign="top"> - Revision:<br> - <input name="packagerev" size="10" value=""><br> - </td></tr></table> - <br> - Package target:<br> - <select name="target" size=5> - %(targetoptions)s - </select><br> - <br> - <input type="submit" value="Submit package"> -</form> -</center> -<hr/> -</body> -</html> -""" - -def get_targetoptions(): - s = "" - selected = " selected" - for target in get_targets(): - s += '<option value="%s"%s>%s</option>' \ - % (target.name, selected, target.name) - selected = "" - return s - -def show(msg="", error=0): - if error: - msg = '<font color="red">%s</font>' % msg - print TEMPLATE % {"message":msg, "targetoptions":get_targetoptions()} - -def submit_packages(packager): - form = cgi.FieldStorage() - packageurl = form.getfirst("packageurl", "").strip() - packagerev = form.getfirst("packagerev", "").strip() - if not packageurl: - show() - elif not packagerev: - raise CgiError, "No revision provided!" - else: - targetname = form.getfirst("target") - if not targetname: - raise CgiError, "No target selected!" - for target in get_targets(): - if target.name == targetname: - break - else: - raise CgiError, "Target not found!" - try: - tmp = int(packagerev) - except ValueError: - raise CgiError, "Invalid revision provided!" - for allowed in target.allowed: - if packageurl.startswith(allowed): - break - else: - raise CgiError, "%s is not allowed for this target!" % packageurl - get_srpm(packageurl, - revision=packagerev, - targetdirs=target.target, - packager=packager, - revname=1, - svnlog=1, - scripts=target.scripts) - show("Package submitted!") - -def main(): - if not os.environ.has_key('REQUEST_METHOD'): - sys.stderr.write("error: this program is meant to be used as a cgi\n") - sys.exit(1) - print "Content-type: text/html\n\n" - try: - username = os.environ.get("REMOTE_USER") - method = os.environ.get("REQUEST_METHOD") - if not username or method != "POST": - show() - else: - useremail = config.get("users", username) - if not useremail: - raise CgiError, \ - "Your email was not found. Contact the administrator!" - submit_packages(useremail) - except CgiError, e: - show(str(e), error=1) - except Error, e: - error = str(e) - show(error[0].upper()+error[1:], error=1) - except: - cgi.print_exception() - -# vim:et:ts=4:sw=4 |