parent
275e53a2c5
commit
d63d68fb49
@ -0,0 +1,5 @@ |
||||
ScriptForm native example |
||||
========================= |
||||
|
||||
This example shows how to create two simple forms with python functions as |
||||
backends. |
@ -0,0 +1,48 @@ |
||||
{ |
||||
"title": "Test server", |
||||
"forms": { |
||||
"import": { |
||||
"title": "Import data", |
||||
"description": "Import CSV data into a database", |
||||
"submit_title": "Import", |
||||
"fields": [ |
||||
{ |
||||
"name": "target_db", |
||||
"title": "Database to import to", |
||||
"type": "select", |
||||
"options": [ |
||||
["devtest", "Dev Test db"], |
||||
["prodtest", "Prod Test db"] |
||||
] |
||||
}, |
||||
{ |
||||
"name": "csv_file", |
||||
"title": "CSV file", |
||||
"type": "file" |
||||
} |
||||
] |
||||
}, |
||||
"add_user": { |
||||
"title": "Add user", |
||||
"description": "Add a user to the htaccess file or change their password", |
||||
"submit_title": "Add user", |
||||
"fields": [ |
||||
{ |
||||
"name": "username", |
||||
"title": "Username", |
||||
"type": "string" |
||||
}, |
||||
{ |
||||
"name": "password1", |
||||
"title": "Password", |
||||
"type": "password" |
||||
}, |
||||
{ |
||||
"name": "password2", |
||||
"title": "Password (Repear)", |
||||
"type": "password" |
||||
} |
||||
] |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,29 @@ |
||||
#!/usr/bin/python |
||||
|
||||
import scriptform |
||||
|
||||
def job_import(values): |
||||
return "Importing into database '{}'".format(values['target_db']) |
||||
|
||||
def job_add_user(values): |
||||
username = values['username'] |
||||
password1 = values['password1'] |
||||
password2 = values['password2'] |
||||
|
||||
if not password1: |
||||
return "Empty password specified." |
||||
|
||||
if password1 != password2: |
||||
return "Passwords do not match." |
||||
|
||||
# We do some stuff here. |
||||
|
||||
return "User created" |
||||
|
||||
if __name__ == "__main__": |
||||
callbacks = { |
||||
'import': job_import, |
||||
'add_user': job_add_user |
||||
} |
||||
sf = scriptform.ScriptForm('native.json', callbacks) |
||||
sf.run(listen_port=8080) |
Loading…
Reference in new issue