def wizard(): """ Wizard page should be avaible only on startup, and provide with a cool graphical interface a configuration wizard. {{{ import cfg file }}} step #1: Node description, i.e. title and subtitle step #2: Supported output: mail, aws? (mail is the only options supported now.) step #3 {>>>skip} Tulip settings: expiration date, maximum access and so on. step #4: {>>>skip} Advanced configs: author email, layout theme, keywords step #5: {{>>skip}} Logging Options step #6: {{>>skip}} Create first grups NOTE: {{>>skip}} should put some default values adequate for a normal globaleaks node. """ import_form = FORM( TR(INPUT(_name="imp_url", _type="url"), "\tor\t", INPUT(_name="imp_file", _type="file")), TR(INPUT(_type="submit")), ) step1_form = FORM( TABLE( TR( "Type of activity", SELECT( OPTION("Local Municipality Activism", _value="lma"), OPTION("Public Agencies", _value="pa"), OPTION("Public Safety", _value="ps"), OPTION("Corporate Transparency", _value="ct"), _name="activity", ), ), TR("Leak author", INPUT(_name="author", _type="text", _value=settings.globals.author)), TR("Leak title", INPUT(_name="title", _type="text", _value=settings.globals.title)), TR("Leak description", INPUT(_name="subtitle", _type="text", _value=settings.globals.subtitle)), TR(INPUT(_type="submit")), ) ) step2_form = FORM( TABLE( TR("E-Mail Messages", INPUT(_name="mail", _type="checkbox", _value=True)), TR("SMS Messages", INPUT(_name="SMS", _type="checkbox", _value=True)), ) ) step3_form = FORM( TABLE( TR("Expiration Date", INPUT(_name="expire", _type="text", _value=settings.tulip.expire)), TR("Maximum Access", INPUT(_name="max_access", _type="int", _value=settings.tulip.max_access)), ) ) step4_form = FORM( TABLE( TR("Author Email", INPUT(_name="author_email", _type="email", _value=settings.globals.author_email)), TR("Layout Theme", INPUT(_name="layout_theme", _type="text", _value=settings.globals.layout_theme)), TR("HTML Keyword", INPUT(_name="html_keyword", _type="text", _value=settings.globals.html_keyword)), ) ) # XXX: server logging depends on client logging! step5_form = FORM( TABLE( TR("Logging client-side", INPUT(_name="client", _type="text", _value=settings.logging.client)), TR("Logging server-side", INPUT(_name="server", _type="text", _value=settings.logging.server)), TR("Logging file", INPUT(_name="logfile", _type="file", _value=settings.logging.logfile)), ) ) # set up here various groups: one group form + button "add group" step6_form = None if step1_form.accepts(request.vars): # copy config template to GlobaLeaks/globaleaks.conf if step1_form.vars.activity: copyfile(os.path.join(projroot, "config_templates", "%s.conf" % step1_form.vars.activity), cfgfile) # fill the new config file with the described global attributes settings.globals.author = step1_form.vars.author settings.globals.title = step1_form.vars.title settings.globals.subtitle = step1_form.vars.subtitle if step2_form.accepts(request.vars): # XXX: Add sms/e-mail notification support in config pass if step3_form.accepts(request.vars): copyform(step3_form.vars, settings.tulip) if step4_form.accepts(request.vars): copyform(step4_form.vars, settings.globals) if step5_form.accepts(request.vars): copyform(step5_form.vars, settings.logging) return dict( import_form=import_form, step1=step1_form, step2=step2_form, step3=step3_form, step4=step4_form, step5=step5_form, step6=step6_form, )
def config(): response.flash = "Welcome to the Globaleaks new wizard application" mail_form = FORM( TABLE( TR("server", INPUT(_name="server", _type="text")), TR("sender", INPUT(_name="sender", _type="text")), TR("login", INPUT(_name="login", _type="text")), TR(INPUT(_type="submit")), ) ) auth_form = FORM( TABLE( TR( "verification", INPUT( _name="registration_requires_verification", _type="text", _value=settings.auth.registration_requires_verification, ), ), TR( "approval", INPUT( _name="registration_requires_approval", _type="text", _value=settings.auth.registration_requires_approval, ), ), TR(INPUT(_type="submit")), ) ) global_form = FORM( TABLE( TR("title", INPUT(_name="title", _type="text", _value=settings.globals.title)), TR("subtitle", INPUT(_name="subtitle", _type="text", _value=settings.globals.subtitle)), TR("author", INPUT(_name="author", _type="text", _value=settings.globals.author)), TR("author email", INPUT(_name="author_email", _type="text", _value=settings.globals.author_email)), TR(INPUT(_type="submit")), ) ) # XXX: client logging depends on server logging! logging_form = FORM( TABLE( TR("client", INPUT(_name="client", _type="text", _value=settings.logging.client)), TR("server", INPUT(_name="server", _type="text", _value=settings.logging.server)), TR("log file", INPUT(_name="logfile", _type="file", _value=settings.logging.logfile)), TR(INPUT(_type="submit")), ) ) if global_form.accepts(request.vars, keepvalues=True): copyform(global_form.vars, settings.globals) if auth_form.accepts(request.vars, keepvalues=True): copyform(auth_form.vars, settings.auth) if mail_form.accepts(request.vars, keepvalue=True): copyform(mail_form.vars, settings.mail) if logging_form.accepts(request.vars, keepvalue=True): if logging_form.vars.logfile: copyform(logging_form.vars, settings.logging) return dict( settings=settings, global_form=global_form, mail_form=mail_form, auth_form=auth_form, logging_form=logging_form )