Expose(base, basename='base'), thanks villas

This commit is contained in:
Massimo DiPierro
2012-03-12 15:48:57 -05:00
parent 4304579bb4
commit b901f3784c
2 changed files with 11 additions and 5 deletions
+1 -1
View File
@@ -1 +1 @@
Version 1.99.7 (2012-03-12 15:42:03) dev Version 1.99.7 (2012-03-12 15:48:55) dev
+10 -4
View File
@@ -4166,9 +4166,10 @@ class PluginManager(object):
return key in self.__dict__ return key in self.__dict__
class Expose(object): class Expose(object):
def __init__(self,base=None): def __init__(self,base=None,basename='base'):
current.session.forget() current.session.forget()
base = base or os.path.join(current.request.folder,'static') base = base or os.path.join(current.request.folder,'static')
self.basename = basename
args = self.args = current.request.raw_args and \ args = self.args = current.request.raw_args and \
current.request.raw_args.split('/') or [] current.request.raw_args.split('/') or []
filename = os.path.join(base,*args) filename = os.path.join(base,*args)
@@ -4182,10 +4183,11 @@ class Expose(object):
if os.path.isdir(f) and not self.isprivate(f)] if os.path.isdir(f) and not self.isprivate(f)]
self.filenames = [f[len(path)-1:] for f in sorted(glob.glob(path)) \ self.filenames = [f[len(path)-1:] for f in sorted(glob.glob(path)) \
if not os.path.isdir(f) and not self.isprivate(f)] if not os.path.isdir(f) and not self.isprivate(f)]
def breadcrumbs(self):
def breadcrumbs(self, basename):
path = [] path = []
span = SPAN() span = SPAN()
span.append(A('base',_href=URL())) span.append(A(basename,_href=URL()))
span.append('/') span.append('/')
args = current.request.raw_args and \ args = current.request.raw_args and \
current.request.raw_args.split('/') or [] current.request.raw_args.split('/') or []
@@ -4194,15 +4196,18 @@ class Expose(object):
span.append(A(arg,_href=URL(args='/'.join(path)))) span.append(A(arg,_href=URL(args='/'.join(path))))
span.append('/') span.append('/')
return span return span
def table_folders(self): def table_folders(self):
return TABLE(*[TR(TD(A(folder,_href=URL(args=self.args+[folder])))) \ return TABLE(*[TR(TD(A(folder,_href=URL(args=self.args+[folder])))) \
for folder in self.folders]) for folder in self.folders])
@staticmethod @staticmethod
def isprivate(f): def isprivate(f):
return 'private' in f or f.startswith('.') or f.endswith('~') return 'private' in f or f.startswith('.') or f.endswith('~')
@staticmethod @staticmethod
def isimage(f): def isimage(f):
return f.rsplit('.')[-1].lower() in ('png','jpg','jpeg','gif','tiff') return f.rsplit('.')[-1].lower() in ('png','jpg','jpeg','gif','tiff')
def table_files(self,width=160): def table_files(self,width=160):
return TABLE(*[TR(TD(A(f,_href=URL(args=self.args+[f]))), return TABLE(*[TR(TD(A(f,_href=URL(args=self.args+[f]))),
TD(IMG(_src=URL(args=self.args+[f]), TD(IMG(_src=URL(args=self.args+[f]),
@@ -4211,12 +4216,13 @@ class Expose(object):
for f in self.filenames]) for f in self.filenames])
def xml(self): def xml(self):
return DIV( return DIV(
H2(self.breadcrumbs()), H2(self.breadcrumbs(self.basename)),
H3('Folders'), H3('Folders'),
self.table_folders(), self.table_folders(),
H3('Files'), H3('Files'),
self.table_files()).xml() self.table_files()).xml()
if __name__ == '__main__': if __name__ == '__main__':
import doctest import doctest
doctest.testmod() doctest.testmod()