1 | #!/usr/bin/python |
---|
2 | |
---|
3 | doc = """ |
---|
4 | This script works with mod_python to browse a collection of annotated wav files |
---|
5 | and results. |
---|
6 | |
---|
7 | you will need to have at least the following packages need to be installed (the |
---|
8 | name of the command line tool is precised in parenthesis): |
---|
9 | |
---|
10 | libapache-mod-python (apache2 prefered) |
---|
11 | sndfile-programs (sndfile-info) |
---|
12 | vorbis-tools (oggenc) |
---|
13 | python-gnuplot |
---|
14 | python-numpy |
---|
15 | |
---|
16 | Try the command line tools in aubio/python to test your installation. |
---|
17 | |
---|
18 | NOTE: this script is probably horribly insecure. |
---|
19 | |
---|
20 | example configuration for apache to put in your preferred virtual host. |
---|
21 | |
---|
22 | <Directory /home/piem/public_html/aubioweb> |
---|
23 | # Minimal config |
---|
24 | AddHandler mod_python .py |
---|
25 | # Disable these in production |
---|
26 | PythonDebug On |
---|
27 | PythonAutoReload on |
---|
28 | # Default handler in url |
---|
29 | PythonHandler aubioweb |
---|
30 | ## Authentication stuff (optional) |
---|
31 | #PythonAuthenHandler aubioweb |
---|
32 | #AuthType Basic |
---|
33 | #AuthName "Restricted Area" |
---|
34 | #require valid-user |
---|
35 | # make default listing |
---|
36 | DirectoryIndex aubioweb/ |
---|
37 | </Directory> |
---|
38 | |
---|
39 | """ |
---|
40 | |
---|
41 | from aubio.web.html import * |
---|
42 | |
---|
43 | def handler(req): |
---|
44 | from aubio.web.browser import * |
---|
45 | from mod_python import Session |
---|
46 | req.sess = Session.Session(req) |
---|
47 | req.sess['login']='new aubio user' |
---|
48 | req.sess.save() |
---|
49 | return configure_handler(req,index) |
---|
50 | |
---|
51 | def index(req,threshold='0.3'): |
---|
52 | navigation(req) |
---|
53 | print_command(req,"sfinfo %%i") |
---|
54 | return footer(req) |
---|
55 | |
---|
56 | def show_info(req,verbose=''): |
---|
57 | navigation(req) |
---|
58 | print_command(req,"sndfile-info %%i") |
---|
59 | return footer(req) |
---|
60 | |
---|
61 | def feedback(req): |
---|
62 | navigation(req) |
---|
63 | req.write(""" |
---|
64 | Please provide feedback below: |
---|
65 | <p> |
---|
66 | <form action="/~piem/aubioweb/email" method="POST"> |
---|
67 | Name: <input type="text" name="name"><br> |
---|
68 | Email: <input type="text" name="email"><br> |
---|
69 | Comment: <textarea name="comment" rows=4 cols=20></textarea><br> |
---|
70 | <input type="submit"> |
---|
71 | </form> |
---|
72 | """) |
---|
73 | |
---|
74 | WEBMASTER='piem@calabaza' |
---|
75 | SMTP_SERVER='localhost' |
---|
76 | |
---|
77 | def email(req,name,email,comment): |
---|
78 | import smtplib |
---|
79 | # make sure the user provided all the parameters |
---|
80 | if not (name and email and comment): |
---|
81 | return "A required parameter is missing, \ |
---|
82 | please go back and correct the error" |
---|
83 | # create the message text |
---|
84 | msg = """\ |
---|
85 | From: %s |
---|
86 | Subject: feedback |
---|
87 | To: %s |
---|
88 | |
---|
89 | I have the following comment: |
---|
90 | |
---|
91 | %s |
---|
92 | |
---|
93 | Thank You, |
---|
94 | |
---|
95 | %s |
---|
96 | |
---|
97 | """ % (email, WEBMASTER, comment, name) |
---|
98 | # send it out |
---|
99 | conn = smtplib.SMTP(SMTP_SERVER) |
---|
100 | try: |
---|
101 | conn.sendmail(email, [WEBMASTER], msg) |
---|
102 | except smtplib.SMTPSenderRefused: |
---|
103 | return """<html>please provide a valid email</html>""" |
---|
104 | |
---|
105 | conn.quit() |
---|
106 | # provide feedback to the user |
---|
107 | s = """\ |
---|
108 | <html> |
---|
109 | Dear %s,<br> |
---|
110 | Thank You for your kind comments, we |
---|
111 | will get back to you shortly. |
---|
112 | </html>""" % name |
---|
113 | return s |
---|