def before_main(self): path = cherrypy.request.path if config('TESTMODE'): return if path.startswith("/static"): return if path.startswith("/tg_widgets"): return if path.startswith("/favicon"): return if path.startswith("/log"): return if is_authenticated(): return else: redirect("/login?destination=%s" % urllib.quote(cherrypy.request.browser_url))
def get_uni(): if config('TESTMODE'): return "testuser" return cherrypy.session.get('uni','')
def checkout_dir(self): return os.path.join(config("checkout_dir","/tmp/rollo/checkouts/"), str(self.deployment.id),"local")
def run(self,rollback=None): """ run the stage's code """ self.rollback = rollback recipe = self.stage.recipe if recipe.language == "python": self.status = "ok" try: exec recipe.code in locals(),globals() except Exception, e: l = Log(pushstage=self,command=recipe.code, stdout="",stderr=str(e)) self.status = "failed" else: # write to temp file, exec, then clean up script_filename = os.path.join(config("script_dir","/tmp/rollo/scripts"),"%d.sh" % self.id) code = recipe.code if not code.startswith("#!"): # make sure it has a shebang line code = "#!/bin/bash\n" + code open(script_filename,"w").write(code) os.chmod(script_filename,stat.S_IRWXU|stat.S_IRWXG|stat.S_IROTH) try: os.makedirs(self.push.checkout_dir()) except: pass #TODO: setup timeout env = self.push.env() if rollback is not None: env['ROLLBACK_URL'] = rollback.rollback_url