Beispiel #1
0
    def cmd_upload(self, ri):
        if not self.wikifile.exist:
            raise exceptions.NotFound()

        if ri.is_spam or not config.EDITABLE:
            return self.text_wrapper(text_access_denied)
        if not ri.is_valid_host:
            return self.page_attach(ri)

        filename = "unkown"
        message = "unkown error"
        success = False

        if not ri.files:
            message = "no file."
        else:
            item = ri.files["file"]
            filename = os.path.basename(misc.normpath(item.filename.replace("\\", "/"))).lower()
            ext = os.path.splitext(filename)[1]
            path = misc.join(self.wikifile.path, "../" + filename)
            wa = self.head.get_file(path)

            if not config.MIME_MAP.has_key(ext):
                message = "%s: file type not supported" % filename
            else:
                temp = misc.read_fs_file(item.stream, config.MAX_ATTACH_SIZE)
                if not temp:
                    message = "%s: too big file. maximum attach size = %s" % (filename, config.MAX_ATTACH_SIZE)
                else:
                    temp.seek(0)
                    success = not not wa.write(temp.read(), ri.user, "attach file uploaded", ext == ".txt")
                    if not success:
                        message = "commit error."

        if not success:
            ri.log("cmd_upload: file=%s message=%s" % (filename, message))
        return self.renderer_wrapper(views.uploaded_body(success, message))
Beispiel #2
0
 def __init__(self, path_info, path):
     super(ControllerTheme, self).__init__(path_info, misc.join("theme", path))
Beispiel #3
0
def test_join():
    eq_(misc.join('hoge/hoge///','../foo'),'hoge/foo')
    eq_(misc.join('..','../../foo'),'../../../foo')