oublis de fichiers divers et symlinks for testlibs

This commit is contained in:
Daniel STAN 2013-02-14 03:53:25 +01:00
parent e2611a770a
commit b004906464
12 changed files with 1165 additions and 135 deletions

934
wiki/dump_proxy.py Normal file
View file

@ -0,0 +1,934 @@
# -*- coding: utf-8 -*-
"""
MoinMoin - Dump a MoinMoin wiki to static pages
Version modifiée par ADG pour les besoins du Cr@ns.
Ce fichier devrait être linké depuis /usr/lib/pymodules/python2.6/MoinMoin/script/export/
@copyright: 2002-2004 Juergen Hermann <jh@web.de>,
2005-2006 MoinMoin:ThomasWaldmann
@license: GNU GPL, see COPYING for details.
"""
import sys, os, time, codecs, shutil, re, errno
from MoinMoin import config, wikiutil, Page, user
from MoinMoin import script
from MoinMoin.action import AttachFile
url_prefix_static = "."
logo_html = '<img src="logo.png">'
HTML_SUFFIX = ".html"
page_template = u'''<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=%(charset)s">
<title>%(pagename)s</title>
<style type="text/css">
/* common.css - MoinMoin Default Styles
Copyright (c) 2001, 2002, 2003 by Juergen Hermann
*/
/* content styles */
html { background-color: white; color: black; font-family: sans-serif; font-size: 0.85em; line-height: 1.1em; }
body { margin: 0; }
/* Links */
a {color: #0044B3;}
a:visited {color: #597BB3;}
a.nonexistent, a.badinterwiki {color: gray;}
/* Headings */
h1 { margin: 0; padding: 0; color: black; font-size: 2em; font-weight: bold; line-height: 1.2em; /*display: none;*/ }
h1 a, h1 a:visited { text-decoration: none; color: black; /*display: none;*/ }
h2, h3, h4, h5, h6 { margin: 0.9em 0 0 0; padding: 0; color: black; line-height: 1.2em; }
h2 { font-size: 2em; width:100%%; border-bottom: thin solid red; /*background: url(../img/BarreRouge.png) repeat-x;*/ text-align:left; }
h3 {font-size: 1.3em;}
h4 {font-size: 1.1em;}
h5, h6 {font-size: 1em;}
tt {font-size: 1em;}
li p { margin: .25em 0; }
li.gap { margin-top: 0.5em;}
dt { margin-top: 0.5em; font-weight: bold; }
dd { margin-top: 0; margin-bottom: 0; }
dd p { margin: 0.25em 0;}
a, img, img.drawing { border: 0; }
pre { border: 1pt solid #AEBDCC; background-image: url(../img/bleutransparent.png); padding: 5pt; font-family: courier, monospace; white-space: pre;
/* begin css 3 or browser specific rules - do not remove!
see: http://forums.techguy.org/archive/index.php/t-249849.html */
white-space: pre-wrap; word-wrap: break-word; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; /* end css 3 or browser specific rules */ }
table { margin: 0.5em 0; border-collapse: collapse; }
td { padding: 0.25em; border: 1pt solid #ADB9CC; }
td p { margin: 0; padding: 0; }
.footnotes div { width: 5em; border-top: 1pt solid gray; }
.footnotes ul { padding: 0 2em; margin: 0 0 1em; list-style: none; }
.footnotes li { }
.info { font-size: 0.85em; color: gray; }
#pageinfo { margin-top: 2em; }
.seperator { color: gray; }
/* standard rule ---- */
hr { clear: both; height: 1pt; background-color: #9C9C9C; border: 0;}
/* custom rules ----- to ---------- */
.hr1 {height: 2pt;}
.hr2 {height: 3pt;}
.hr3 {height: 4pt;}
.hr4 {height: 5pt;}
.hr5 {height: 6pt;}
.hr6 {height: 7pt;}
/* Replacement for html 3 u tag */
.u {text-decoration: underline;}
/* eye catchers */
.warning { color: red; }
.error { color: red; }
strong.highlight { background-color: #CCE0FF; padding: 1pt; }
/* Recent changes */
.rcrss { float: right;margin: 0;}
.recentchanges[dir="rtl"] .rcrss {float: left;}
.recentchanges table {clear: both;}
.recentchanges td {vertical-align: top; border: none; border-bottom: 1pt solid #E6EAF0; background: #F2F4F7;}
.rcdaybreak td { background: #B8C5D9;border: none;}
.rcdaybreak td a {font-size: 0.88em;}
.rcicon1, .rcicon2 {text-align: center;}
.rcpagelink {width: 33%%;}
.rctime {font-size: 0.88em;white-space: nowrap;}
.rceditor {white-space: nowrap; font-size: 0.88em;}
.rccomment {width: 66%%; color: gray;font-size: 0.88em;}
/* User Preferences */
.userpref table, .userpref td { border: none;}
/* CSS for new code_area markup used by Colorizer and ParserBase */
div.codearea { /* the div makes the border */margin: 0.5em 0;padding: 0;border: 1pt solid #AEBDCC;background-color: #F3F5F7;color: black;}
div.codearea pre { /* the pre has no border and is inside the div */
margin: 0;padding: 10pt;border: none;}
a.codenumbers { /* format of the line numbering link */
margin: 0 10pt; font-size: 0.85em; color: gray;}
/* format of certain syntax spans */
div.codearea pre span.LineNumber {color: gray;}
div.codearea pre span.ID {color: #000000;}
div.codearea pre span.Operator {color: #0000C0;}
div.codearea pre span.Char {color: #004080;}
div.codearea pre span.Comment {color: #008000;}
div.codearea pre span.Number {color: #0080C0;}
div.codearea pre span.String {color: #004080;}
div.codearea pre span.SPChar {color: #0000C0;}
div.codearea pre span.ResWord {color: #A00000;}
div.codearea pre span.ConsWord {color: #008080; font-weight: bold;}
div.codearea pre span.Error {color: #FF8080; border: solid 1.5pt #FF0000;}
div.codearea pre span.ResWord2 {color: #0080ff; font-weight: bold;}
div.codearea pre span.Special {color: #0000ff;}
div.codearea pre span.Preprc {color: #803999;}
/* Search results */
.searchresults dt { margin-top: 1em; font-weight: normal;}
.searchresults dd { font-size: 0.85em;}
/* Liens dactions */
.editbar { display: block;}
.editbar li { float: left; padding: 0;}
#wrapper { width: 50em; margin:0 auto; padding:1em 2em 1em 5em; text-align: left;}
#wrapper img#logo { margin-left: -4em; margin-bottom: 2em;}
/*<!-- DATE DE MISE A JOUR -->*/
p.creation { margin-top: 5em;border-top: 1px solid #6C7680;font-style: italic;color: gray; padding: 10px 30px ;}
</style>
</head>
<body>
<div id="wrapper">
<img id="logo" src="data:image/png;base64,
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
YII=" />
<div dir="ltr" id="content" lang="fr">
%(pagehtml)s
</div>
<p class="creation">
Cette page a été extraite du wiki le %(timestamp)s.
</p>
</div>
</body>
</html>
'''
def _attachment(request, pagename, filename, outputdir, **kw):
filename = filename.encode(config.charset)
source_dir = AttachFile.getAttachDir(request, pagename)
source_file = os.path.join(source_dir, filename)
dest_dir = os.path.join(outputdir, "attachments", wikiutil.quoteWikinameFS(pagename))
dest_file = os.path.join(dest_dir, filename)
dest_url = "attachments/%s/%s" % (wikiutil.quoteWikinameFS(pagename), wikiutil.url_quote(filename))
if os.access(source_file, os.R_OK):
if not os.access(dest_dir, os.F_OK):
try:
os.makedirs(dest_dir)
except:
script.fatal("Cannot create attachment directory '%s'" % dest_dir)
elif not os.path.isdir(dest_dir):
script.fatal("'%s' is not a directory" % dest_dir)
shutil.copyfile(source_file, dest_file)
script.log('Writing "%s"...' % dest_url)
return dest_url
else:
return ""
class PluginScript(script.MoinScript):
"""\
Purpose:
========
This tool allows you to dump MoinMoin wiki pages to static HTML files.
Detailed Instructions:
======================
General syntax: moin [options] export dump_proxy [dump-options]
[options] usually should be:
--config-dir=/path/to/my/cfg/ --wiki-url=http://wiki.example.org/
[dump-options] see below:
0. You must run this script as owner of the wiki files, usually this is the
web server user.
1. To dump all the pages on the wiki to the directory '/mywiki'
moin ... export dump_proxy --target-dir=/mywiki
2. To dump all the pages readable by 'JohnSmith' on the wiki to the directory
'/mywiki'
moin ... export dump_proxy --target-dir=/mywiki --username JohnSmith
"""
def __init__(self, argv=None, def_values=None):
script.MoinScript.__init__(self, argv, def_values)
self.parser.add_option(
"-t", "--target-dir", dest = "target_dir",
help = "Write html dump to DIRECTORY"
)
self.parser.add_option(
"-u", "--username", dest = "dump_user",
help = "User the dump will be performed as (for ACL checks, etc)"
)
def mainloop(self):
""" moin-dump's main code. """
# Prepare output directory
if not self.options.target_dir:
script.fatal("you must use --target-dir=/your/output/path to specify the directory we write the html files to")
outputdir = os.path.abspath(self.options.target_dir)
try:
os.mkdir(outputdir)
script.log("Created output directory '%s'!" % outputdir)
except OSError, err:
if err.errno != errno.EEXIST:
script.fatal("Cannot create output directory '%s'!" % outputdir)
# Insert config dir or the current directory to the start of the path.
config_dir = self.options.config_dir
if config_dir and os.path.isfile(config_dir):
config_dir = os.path.dirname(config_dir)
if config_dir and not os.path.isdir(config_dir):
script.fatal("bad path given to --config-dir option")
sys.path.insert(0, os.path.abspath(config_dir or os.curdir))
self.init_request()
request = self.request
# fix url_prefix_static so we get relative paths in output html
request.cfg.url_prefix_static = url_prefix_static
# use this user for permissions checks
request.user = user.User(request, name=self.options.dump_user)
pages = request.rootpage.getPageList(user='') # get list of all pages in wiki
pages.sort()
if self.options.page: # did user request a particular page or group of pages?
try:
namematch = re.compile(self.options.page)
pages = [page for page in pages if namematch.match(page)]
if not pages:
pages = [self.options.page]
except:
pages = [self.options.page]
wikiutil.quoteWikinameURL = lambda pagename, qfn=wikiutil.quoteWikinameFS: (qfn(pagename) + HTML_SUFFIX)
AttachFile.getAttachUrl = lambda pagename, filename, request, **kw: _attachment(request, pagename, filename, outputdir, **kw)
errfile = os.path.join(outputdir, 'error.log')
errlog = open(errfile, 'w')
errcnt = 0
page_front_page = wikiutil.getLocalizedPage(request, request.cfg.page_front_page).page_name
page_title_index = wikiutil.getLocalizedPage(request, 'TitleIndex').page_name
page_word_index = wikiutil.getLocalizedPage(request, 'WordIndex').page_name
navibar_html = ''
for p in [page_front_page, page_title_index, page_word_index]:
navibar_html += '[<a href="%s">%s</a>]&nbsp;' % (wikiutil.quoteWikinameURL(p), wikiutil.escape(p))
urlbase = request.url # save wiki base url
for pagename in pages:
# we have the same name in URL and FS
file = wikiutil.quoteWikinameURL(pagename)
script.log('Writing "%s"...' % file)
try:
pagehtml = ''
request.url = urlbase + pagename # add current pagename to url base
page = Page.Page(request, pagename)
request.page = page
try:
request.reset()
pagehtml = request.redirectedOutput(page.send_page, count_hit=0, content_only=1)
except:
errcnt = errcnt + 1
print >> sys.stderr, "*** Caught exception while writing page!"
print >> errlog, "~" * 78
print >> errlog, file # page filename
import traceback
traceback.print_exc(None, errlog)
finally:
timestamp = time.strftime("%Y-%m-%d %H:%M")
filepath = os.path.join(outputdir, file)
fileout = codecs.open(filepath, 'w', config.charset)
fileout.write(page_template % {
'charset': config.charset,
'pagename': pagename,
'pagehtml': pagehtml,
'timestamp': timestamp,
})
fileout.close()
# copy FrontPage to "index.html"
indexpage = page_front_page
if self.options.page:
indexpage = pages[0] # index page has limited use when dumping specific pages, but create one anyway
shutil.copyfile(
os.path.join(outputdir, wikiutil.quoteWikinameFS(indexpage) + HTML_SUFFIX),
os.path.join(outputdir, 'index' + HTML_SUFFIX)
)
errlog.close()
if errcnt:
print >> sys.stderr, "*** %d error(s) occurred, see '%s'!" % (errcnt, errfile)