`
willzh
  • 浏览: 300201 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

根据CSV文件自动形成表格的MoinMoin插件——InsertCSV

阅读更多
MoinMoin本身的制表语法很简单,但是如果其他软件制作好的表格又重新录入一边,就不合算了。而这些软件大都可以导出CSV格式文件,所以如果能直接上传CSV文件,自动形成表格,将会非常方便省事。
本来想自己写一个这样的插件,结果不小心发现MacroMarket上已经有了,是一个叫ShowCSV宏插件。但是这个有点“土”,我稍微改进了一下,加入了一点背景色功能,使用语法也变了,所以干脆就叫InsertCSV(所有测试都在MoinMoin1.5.8中通过)。

"""
    MoinMoin - InsertCSV

    This macro is used to insert csv data as wiki table
    @license: GNU GPL
"""

Dependencies = ['time'] # do not cache

import os, codecs, csv
from MoinMoin import config, wikiutil
from MoinMoin.action import AttachFile
# from MoinMoin.parser.text_moin_wiki import Parser
from MoinMoin.parser.wiki import Parser

def utf_8_encoder(unicode_csv_data):
    for line in unicode_csv_data:
        yield line.encode('utf-8')

def execute(macro, args):
    request = macro.request
    formatter = macro.formatter

    if args:
        args = args.split(',')
        args = [arg.strip() for arg in args]
    else:
        args = []

    argc = len(args)
    if argc == 0:
        csvfile = 'default.csv'
    else:
        csvfile = args[0]

    if argc > 1:
        tcolor = str(args[1])
        title_bgcolor = '<%s>' % str(args[1])
    else:
        tcolor = ""
        title_bgcolor = ""

    if argc > 2:
        ccolor = str(args[2])
        content_bgcolor = '<%s>' % str(args[2])
    else:
        ccolor = ""
        content_bgcolor = ""


    pagename = formatter.page.page_name
    attach_dir = AttachFile.getAttachDir(request, pagename)
    files = AttachFile._get_files(request, pagename)

    if csvfile in files:
        if csvfile.lower().endswith('.csv'):
            file_id = codecs.open(os.path.join(attach_dir, csvfile), 'rb', config.charset)
            reader = csv.reader(utf_8_encoder(file_id))
            index = 0
            result = ""
            for row in reader:
                if index == 0:
                    result += "||%s '''" % title_bgcolor
                    result += ("''' ||%s '''" % title_bgcolor).join(row)
                    result += "''' ||\n"
                else:
                    result += '||%s ' % content_bgcolor
                    result += ('||%s ' % content_bgcolor).join(row)
                    result += ' ||\n'
                index += 1

            result += ' . \n'
            result = wikiutil.url_unquote(result)
            # result += '[[attachment:%s]]' % file
            result += 'attachment:%s' % csvfile

            result = wikiutil.escape(result).replace('&lt;%s&gt;' % tcolor, title_bgcolor)
            result = result.replace('&lt;%s&gt;' % ccolor, content_bgcolor)
    else:
        result = 'attachment:%s' % csvfile

    p = Parser(result, request)
    p.format(request.formatter)

    return ""


把上面的代码保存在$WIKI/data/plugin/macro/InsertCSV.py后,重启服务器即可。具体使用宏语法如下:
[[InsertCSV(Projects.csv, #3a88aa, #f2f2f2)]]
第一个参数 Projects.csv 就是你上传的文件;
第二个参数 #3a88aa 表示标题栏的背景色,可以省略;
第三个参数 #f2f2f2 表示内容格的背景色,可以省略。

页面效果如下图(有些敏感内容被我涂抹掉了,呵呵):

  • 大小: 27.3 KB
3
0
分享到:
评论

相关推荐

    LoadSws:一个用于上传 sage 工作表的 moinmoin 操作插件

    负载开关一个用于上传 sage 工作表的 moinmoin 操作插件要使用它,您需要一个安装了 sagecell moinmoin 插件的 moinmoin wiki。 只需将其复制到您的插件/操作文件夹中即可。

    MoinMoinWiki

    2. **链接系统**:MoinMoin具备自动链接功能,可以识别并生成wiki链接,便于用户浏览和组织信息。 3. **模板和宏**:提供预定义的模板和宏,方便用户创建一致的页面布局和常用功能,如导航菜单、搜索框等。 4. **...

    MoinMoin配置手册

    MoinMoin是一款由Python编写的开源Wiki引擎,它的特点是不需要数据库存储内容,而是采用文件系统来保存Wiki页面。这使得MoinMoin在安装和维护上相对简单,且具有高度的灵活性。它全面支持Unicode编码,允许创建多...

    基于Python的MoinMoin.pdf

    MoinMoin是一个使用Python脚本语言开发的Wiki系统,具备模块化设计和高灵活性的特点。自1995年Wiki系统问世以来,它凭借其简洁的语法规则、方便的在线编辑和版本管理功能赢得了广泛的用户青睐。Wiki系统已经广泛应用...

    基于Python的MoinMoin.zip

    2. **页面链接**:MoinMoin支持自动链接,只需在文本中输入正确的页面名称即可。 3. **搜索功能**:内置的全文搜索功能帮助用户快速查找所需信息。 4. **管理工具**:管理员可以监控用户活动、管理权限、导入导出...

    moinmoin_latex for windows

    windows平台下好用的wiki,集成了latex的moinmoin,安装简易,懒人适用。 3分钟快速安装。

    moin moin 个人维基

    - **高度可定制**:通过模板、样式表和插件,你可以根据自己的需求调整界面和功能。 - **版本控制**:每次编辑都会保存历史版本,便于跟踪和恢复错误修改。 - **多语言支持**:moinmoin 支持多种语言,方便不同...

    moinmoin-wiki:基于Debian的Docker映像,带有Moinmoin Wiki引擎,uwsgi,nginx和自签名SSL

    您可以使用以下命令自动下载并运行此程序 sudo docker run -d -p 443:443 -p 80:80 --name my_wiki olavgg/moinmoin-wiki默认的超级用户是mmAdmin ,您可以通过创建一个名为mmAdmin的新用户并设置您的首选密码来...

    automated-build-moinmoin:MoinMoin wiki 的 Docker 镜像

    docker-moinmoin 在 ubuntu 14.04 baseimage 上使用 Python 2.7.6、uWSGI 1.9.17 和 nginx 1.4.6 测试 1.9.8 的图像。用法 $ sudo mkdir -p /opt/data/moinmoin$ sudo docker run -d -p 8080:80 -v /opt/data/...

    Python维基系统MoinMoir.zip

    MoinMoin的设计灵感来源于早期的Wiki系统——Wikipedia,但它不仅限于创建百科全书,还支持各种定制化的知识管理和协同工作场景。 **2. 主要特性** - **易用性**: MoinMoin的界面简洁,用户可以快速上手,编辑页面...

    moin-desktop-1.5.5a-1.exe

    最方便的moinmoin wiki,不用安装Python,apache

    moin-1.9.6

    - **链接机制**:Wiki的核心是链接,MoinMoin支持自动链接识别和内建链接功能,便于页面间的导航。 - **版本控制**:每个页面都有历史记录,可以查看不同版本的差异,甚至恢复旧版本。 - **权限管理**:通过用户...

    MoinMoin-开源

    MoinMoin Wiki项目已移动-请访问我们的新网站http://moinmo.in/并更新您的书签。

    MoinWiki配置说明[借鉴].pdf

    通过编辑这个配置文件,你可以根据公司的具体需求调整MoinWiki的功能。 MoinMoin的一个显著优点是其简洁的文本格式,它支持从HTML转换为更轻量级的Wiki格式,只保存实际内容,不包含多余的样式信息。此外,最新版本...

    MoinWiki配置说明

    - 使用文本编辑器打开`wikiconfig.py`文件,根据实际需求进行必要的配置修改。 #### 4. 结论 MoinMoin Wiki系统以其简洁易用、功能强大等特点成为企业内部文档管理和协作的理想选择。通过本文档提供的指南,用户...

    ep_moinmoin_export

    ep_moinmoin_export 将当前打击垫内容导出为 MoinMoin Wiki ( ) 格式。 支持的默认格式和附加标签。 基于 乳胶出口 维基媒体导出 HtmlExport(etherpad 精简版代码) 安装 npm install ep_moinmoin_export ...

    利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程

    ### 利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程 #### 背景介绍 MoinMoin是一款基于Python的开源wiki系统,它以其灵活性和扩展性受到许多用户的欢迎。然而,在实际部署过程中可能会遇到各种问题,比如编辑...

    Python维基系统MoinMoir.pdf

    Python维基系统MoinMoin是一套使用Python语言编写的开源维基引擎,因其模块化设计和高灵活性而备受青睐。维基系统是一种允许多人共同在线编辑、管理内容的平台,而MoinMoin作为维基引擎之一,在企业和个人知识管理...

Global site tag (gtag.js) - Google Analytics