示例#1
0
    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)
示例#2
0
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]