]> git.0d.be Git - pige-extractor.git/blob - index.cgi
respect TMPDIR
[pige-extractor.git] / index.cgi
1 #! /usr/bin/env python
2 # -*- coding: utf-8 -*-
3
4 import cgi
5 import os
6 import sys
7 import time
8 import stat
9 import md5
10 import random
11
12 JOBS_DIR = '/tmp/jobs'
13
14 d = cgi.parse_qs(os.environ.get('QUERY_STRING', ''))
15
16 if not d:
17     print 'Content-type: text/html\n'
18     print open('static.html').read()
19     sys.exit(0)
20
21
22 print 'Content-type: text/plain\n'
23
24 if d.get('cmd') == ['new']:
25     try:
26         date_val = d.get('date_val')[0]
27         start_val = d.get('start_val')[0]
28         end_val = d.get('end_val')[0]
29         assert date_val
30         assert start_val
31         assert end_val
32
33         start_time = '%s %s' % (date_val, start_val)
34         end_time = '%s %s' % (date_val, end_val)
35         try:
36             time.strptime(start_time, '%d/%m/%Y %H:%M')
37         except ValueError:
38             time.strptime(start_time, '%Y-%m-%d %H:%M')
39         try:
40             time.strptime(end_time, '%d/%m/%Y %H:%M')
41         except ValueError:
42             time.strptime(end_time, '%Y-%m-%d %H:%M')
43
44         job_number = md5.md5(str(random.random())).hexdigest()
45         job_filename = os.path.join(JOBS_DIR, job_number)
46         file(job_filename, 'w').write(
47                 'start: %s %s %s' % (date_val, start_val, end_val))
48         os.chmod(job_filename, 0666)
49         print 'ok:' + job_number
50
51     except IOError:
52         print 'valeur manquante'
53     sys.exit(0)
54
55 if d.get('cmd') == ['status']:
56     job_number = d.get('job')[0]
57     job_filename = os.path.join(JOBS_DIR, job_number)
58     if not os.path.exists(job_filename):
59         print 'error (missing job definition)'
60     else:
61         fd = open(job_filename)
62         cmd = fd.readline()
63         secondline = fd.readline()
64         first_word = cmd.split(':', 1)[0]
65         if secondline:
66             print secondline
67         elif first_word == 'start':
68             print 'commande enregistrée, traitement dans une petite minute ...'
69         else:
70             print cmd
71
72 if d.get('cmd') == ['list']:
73     filenames = [os.path.join(os.getcwd(), x) for x in os.listdir(os.getcwd()) if \
74                 x.endswith('.ogg') or x.endswith('.wav')]
75     def cmp_stat(x, y):
76         return cmp(os.stat(x)[stat.ST_CTIME], os.stat(y)[stat.ST_CTIME])
77     filenames.sort(cmp_stat)
78     filenames.reverse()
79
80     for x in filenames:
81         print os.path.basename(x)
82