#! /usr/bin/env python # -*- coding: utf-8 -*- import cgi import os import sys import time import stat import md5 import random JOBS_DIR = '/tmp/jobs' d = cgi.parse_qs(os.environ.get('QUERY_STRING', '')) if not d: print 'Content-type: text/html\n' print open('static.html').read() sys.exit(0) print 'Content-type: text/plain\n' if d.get('cmd') == ['new']: try: date_val = d.get('date_val')[0] start_val = d.get('start_val')[0] end_val = d.get('end_val')[0] assert date_val assert start_val assert end_val start_time = '%s %s' % (date_val, start_val) end_time = '%s %s' % (date_val, end_val) try: time.strptime(start_time, '%d/%m/%Y %H:%M') except ValueError: time.strptime(start_time, '%Y-%m-%d %H:%M') try: time.strptime(end_time, '%d/%m/%Y %H:%M') except ValueError: time.strptime(end_time, '%Y-%m-%d %H:%M') job_number = md5.md5(str(random.random())).hexdigest() job_filename = os.path.join(JOBS_DIR, job_number) file(job_filename, 'w').write( 'start: %s %s %s' % (date_val, start_val, end_val)) os.chmod(job_filename, 0666) print 'ok:' + job_number except IOError: print 'valeur manquante' sys.exit(0) if d.get('cmd') == ['status']: job_number = d.get('job')[0] job_filename = os.path.join(JOBS_DIR, job_number) if not os.path.exists(job_filename): print 'error (missing job definition)' else: fd = open(job_filename) cmd = fd.readline() secondline = fd.readline() first_word = cmd.split(':', 1)[0] if secondline: print secondline elif first_word == 'start': print 'commande enregistrée, traitement dans une petite minute ...' else: print cmd if d.get('cmd') == ['list']: filenames = [os.path.join(os.getcwd(), x) for x in os.listdir(os.getcwd()) if \ x.endswith('.ogg') or x.endswith('.wav')] def cmp_stat(x, y): return cmp(os.stat(x)[stat.ST_CTIME], os.stat(y)[stat.ST_CTIME]) filenames.sort(cmp_stat) filenames.reverse() for x in filenames: print os.path.basename(x)