cgilsxml: ajouter les variables dlname, size, Y, m, d, H, M, S. maj doc
This commit is contained in:
parent
eac94a7f32
commit
d7b468d9fd
|
@ -1,7 +1,8 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 mode: python -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||
|
||||
"""Ce script est prévu pour être utilisé dans un script CGI.
|
||||
u"""Ce script est prévu pour être utilisé dans un script CGI.
|
||||
|
||||
Il permet de lister le contenu d'un répertoire au format XML, et de télécharger les fichiers trouvés.
|
||||
"""
|
||||
|
||||
|
@ -83,15 +84,19 @@ class File:
|
|||
|
||||
self.dir = dir
|
||||
self.name = name
|
||||
self.dlname = name
|
||||
self.size = stat.st_size
|
||||
self.mtime = mtime
|
||||
self.date = datef(DATE_DATEF, mtime)
|
||||
self.time = datef(TIME_DATEF, mtime)
|
||||
self.Y, self.m, self.d, self.H, self.M, self.S = datef('%Y %m %d %H %M %S', mtime).split(' ')
|
||||
|
||||
def isfile(self):
|
||||
return path.isfile(self.pf)
|
||||
|
||||
def __getitem__(self, name): return self.vars[name]
|
||||
def __setitem__(self, name, value): self.vars[name] = value
|
||||
def has_key(self, name): return self.vars.has_key(name)
|
||||
def __getattr__(self, name): return self.vars[name]
|
||||
def __setattr__(self, name, value):
|
||||
if self.__dict__.has_key(name):
|
||||
|
@ -211,7 +216,7 @@ def run_cgilsxml():
|
|||
OP.add_option('-t', '--xslt', dest='xslt',
|
||||
help=u"Ajouter le chemin vers la feuille de style XSLT dans le flux XML généré")
|
||||
OP.add_option('-e', '--spec', dest='spec', action='callback', callback=add_spec, type="string",
|
||||
help=u"Spécifier l'expression régulière permettant de sélectionner les fichiers à lister. L'expression régulière peut définir des groupes qui sont utilisées pour l'extraction des variables.\nIl est possible de spécifier cette option plusieurs fois.")
|
||||
help=u"Spécifier l'expression régulière permettant de sélectionner les fichiers à lister. L'expression régulière peut définir des groupes qui sont utilisées pour l'extraction des variables.\nIl est possible de spécifier cette option plusieurs fois.\nNote: TOUTES les expressions régulières sont testées par rapport au nom du fichier, et pour celles qui correspondent, les variables correspondantes sont définies. Il faut donc ordonner les expressions régulières de la plus générale à la plus spécifique, contrairement à ce qui se fait d'habitude.")
|
||||
OP.add_option('-v', '--var', dest='var', action='callback', callback=add_var, type="string",
|
||||
help=u"Définir la variable NAME à la valeur de l'expression VAR_EXPR. Dans cette expression, il est possible d'utiliser des expressions de la forme %%(var)s pour inclure des variables déjà définies, ou \\N et \\g<NAME> pour inclure respective le groupe numéro N et le groupe nommé NAME de l'expression régulière --spec.\nCette option peut être spécifiée plusieurs fois. Elle s'applique à l'expression régulière définie par la dernière option --spec")
|
||||
OP.add_option('-g', '--group', dest='group', action='callback', callback=set_group, type="string",
|
||||
|
@ -279,10 +284,12 @@ def run_cgilsxml():
|
|||
print "Impossible de trouver le fichier %s" % cgi_path_info
|
||||
else:
|
||||
if cgi_mode:
|
||||
ctype, encoding = mimetypes.guess_type(file.name, False)
|
||||
dlname = file.dlname or file.name
|
||||
ctype = file.has_key('type') and file.type or None
|
||||
if ctype is None: ctype, encoding = mimetypes.guess_type(dlname, False)
|
||||
if ctype is None: ctype = "application/octet-stream"
|
||||
print "Content-Type: %s; charset=utf-8" % ctype
|
||||
print "Content-Disposition: attachment; filename=\"%s\"" % file.name
|
||||
print "Content-Disposition: attachment; filename=\"%s\"" % dlname
|
||||
print
|
||||
inf = open(file.pf, 'rb')
|
||||
try: shutil.copyfileobj(inf, sys.stdout)
|
||||
|
|
Loading…
Reference in New Issue