def test_data(self): e = EntryBase(req_()) eq_(e.get_data(), "") s1 = "la la la la la" e.set_data(s1) eq_(e.get_data(), s1) eq_(type(e.get_data()), str) s2 = u"foo foo foo foo foo" e.set_data(s2) eq_(e.get_data(), s2) eq_(type(e.get_data()), str) s3 = "foo bar" e.set_data(s3) eq_(e.get_data(), s3)
def cb_filelist(args): req = args['request'] pyhttp = req.get_http() data = req.get_data() config = req.get_configuration() if not is_trigger(pyhttp, config): return data[INIT_KEY] = 1 draftdir = config['draftdir'] draftdir = draftdir.replace('/', os.sep) if not draftdir.endswith(os.sep): draftdir += os.sep if not os.path.exists(draftdir): return pathinfo = pyhttp.get("PATH_INFO", "") path, ext = os.path.splitext(pathinfo) draft_name = pyhttp["PATH_INFO"][len("/" + TRIGGER) + 1:] if not draft_name: trigger = config.get('draft_trigger', TRIGGER) entry = EntryBase(req) entry['title'] = 'Drafts' entry['filename'] = 'drafts' entry['file_path'] = 'drafts' entry._id = 'drafts' files = os.listdir(draftdir) baseurl = config.get('base_url', '') output = [] output.append('<ul>') for fn in files: fn, ext = os.path.splitext(fn) output.append('<li><a href="%s/%s/%s.html">%s</a></li>' % (baseurl, trigger, fn, fn)) output.append('</ul>') entry.set_data('\n'.join(output)) return [entry] # FIXME - need to do a better job of sanitizing draft_name = draft_name.replace(os.sep, '/') if draft_name.endswith(os.sep): draft_name = draft_name[:-1] if draft_name.find('/') > 0: draft_name = draft_name[draft_name.rfind('/'):] # If the draft has a theme, we use that. Otherwise we default to # the default theme. draft_name, theme = os.path.splitext(draft_name) if theme: data["theme"] = theme[1:] ext = tools.what_ext(data["extensions"].keys(), draftdir + draft_name) if not ext: return [] data['root_datadir'] = draft_name + '.' + ext data['bl_type'] = 'file' filename = draftdir + draft_name + '.' + ext if not os.path.isfile(filename): return [] fe = FileEntry(req, filename, draftdir) trigger = config.get("draft_trigger", TRIGGER) fe["absolute_path"] = trigger fe["fn"] = draft_name fe["file_path"] = trigger + "/" + draft_name # FIXME - this is icky config['blog_title'] = 'DRAFT : ' + config.get('blog_title', '') return [fe]