2 # -*- coding: iso-8859-1 -*-
3 # vim: set ts=4 softtabstop=4 expandtab :
8 svncreate = './svncreate'
17 # Para que tire errores más verborrágicos.
20 class FormError(Exception):
21 def __init__(self, value):
24 return """<div style="color: red">%s</div>""" % self.value
27 print "Content-Type: text/html"
32 <title>Creador de Repositorios Subversion</title>
35 <h1>Creador de Repositorios Subversion</h1>
46 if form.getfirst('repos'):
47 repos = form.getfirst('repos')
51 Nombre del repositorio: <input type="text" name="repos" value="%s">
52 <input type="submit" name="enviado" value="Crear">
56 def print_repos(repos):
57 url = 'http://portal.mecon.ar/svn/%s/tronco/' % repos
58 print '<p>Puede hacer un checkout con:<br>'
59 print '<tt>svn co <a href="%s">%s</a> %s</tt></p>.\n' % (url, url, repos)
60 #print 'Alternativamente puede hacer un checkout con: svn co svn+ssh://portal.mecon.ar/var/lib/svn/%s si tiene acceso via ssh.\n' % repos
61 print '<div style="text-align: center"><a href="./">Volver</a></div>'
64 check_cond(form.has_key('repos'), 'No se especificó el nombre del repositorio.')
65 check_cond(re.match('^[\w\d]+$', form['repos'].value),
66 'El nombre del repositorio no es válido (sólo puede tener caracteres alfanuméricos).')
68 def check_cond(cond, msg):
73 return str.replace("'", "\\'")
76 ################################### PROGRAMA PRINCIPAL ######################################
80 form = cgi.FieldStorage()
82 # Si nos llegó el formulario.
83 if form.has_key('enviado'):
86 repos = escape(form.getfirst('repos'))
87 cmd = "%s '%s'" % (svncreate, repos)
89 status = os.system(cmd)
92 raise FormError('Hubo un error al crear el repositorio (código de estado: %d).' % status)
93 print_repos(form.getfirst('repos'))