Mercurial > moin > 1.9
annotate MoinMoin/macro/__init__.py @ 2529:df375ab9fbde
automatically convert macro args with defaults to the default's type
author | Johannes Berg <johannes AT sipsolutions DOT net> |
---|---|
date | Mon, 23 Jul 2007 12:32:06 +0200 |
parents | ee8d1a2cc252 |
children | 0a8fc701e40d |
rev | line source |
---|---|
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1 # -*- coding: iso-8859-1 -*- |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
2 """ |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
3 MoinMoin - Macro Implementation |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
4 |
657
016a8a3ef354
wikiutil.MimeType class, renamed parsers to mimetype like module names
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
636
diff
changeset
|
5 These macros are used by the wiki parser module to implement complex |
016a8a3ef354
wikiutil.MimeType class, renamed parsers to mimetype like module names
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
636
diff
changeset
|
6 and/or dynamic page content. |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
7 |
635
9e17ec23650c
moved wikimacro.py to macro/__init__.py
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
615
diff
changeset
|
8 The canonical interface to plugin macros is their execute() function, |
9e17ec23650c
moved wikimacro.py to macro/__init__.py
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
615
diff
changeset
|
9 which gets passed an instance of the Macro class. Such an instance |
9e17ec23650c
moved wikimacro.py to macro/__init__.py
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
615
diff
changeset
|
10 has the four members parser, formatter, form and request. |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
11 |
635
9e17ec23650c
moved wikimacro.py to macro/__init__.py
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
615
diff
changeset
|
12 Using "form" directly is deprecated and should be replaced by "request.form". |
9e17ec23650c
moved wikimacro.py to macro/__init__.py
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
615
diff
changeset
|
13 |
1918
bb2e053067fb
fixing copyright headers: remove umlauts (encoding troubles), make epydoc compatible, reformat
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1870
diff
changeset
|
14 @copyright: 2000-2004 Juergen Hermann <jh@web.de>, |
2515
41bc022c2160
use new arg parser for buitlin macros
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2513
diff
changeset
|
15 2006-2007 MoinMoin:ThomasWaldmann, |
41bc022c2160
use new arg parser for buitlin macros
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2513
diff
changeset
|
16 2007 MoinMoin:JohannesBerg |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
17 @license: GNU GPL, see COPYING for details. |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
18 """ |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
19 |
635
9e17ec23650c
moved wikimacro.py to macro/__init__.py
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
615
diff
changeset
|
20 from MoinMoin.util import pysupport |
1133
db56bd53fc32
cleanup plugin related code / attributes, remove unused stuff
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1001
diff
changeset
|
21 modules = pysupport.getPackageModules(__file__) |
635
9e17ec23650c
moved wikimacro.py to macro/__init__.py
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
615
diff
changeset
|
22 |
510
e1990b501b22
human readable SystemInfo, added disk usage
Thomas Waldmann <tw@waldmann-edv.de>
parents:
413
diff
changeset
|
23 import re, time, os |
635
9e17ec23650c
moved wikimacro.py to macro/__init__.py
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
615
diff
changeset
|
24 from MoinMoin import action, config, util |
636
b77ab6ea0c18
move wikiaction.py to action/__init__.py
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
635
diff
changeset
|
25 from MoinMoin import wikiutil, i18n |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
26 from MoinMoin.Page import Page |
2529
df375ab9fbde
automatically convert macro args with defaults to the default's type
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2523
diff
changeset
|
27 from inspect import getargspec |
df375ab9fbde
automatically convert macro args with defaults to the default's type
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2523
diff
changeset
|
28 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
29 |
2521
b4118a77105d
externalize PageCount macro
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2520
diff
changeset
|
30 names = ["TitleSearch", "WordIndex", "TitleIndex", "GoTo", |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
31 # Macros with arguments |
2521
b4118a77105d
externalize PageCount macro
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2520
diff
changeset
|
32 "Icon", "PageList", "Date", "DateTime", "Anchor", "MailTo", "GetVal", "TemplateList", |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
33 ] |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
34 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
35 ############################################################################# |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
36 ### Helpers |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
37 ############################################################################# |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
38 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
39 def getNames(cfg): |
1550
a4f0632414da
using request.cfg.cache more
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1449
diff
changeset
|
40 if not hasattr(cfg.cache, 'macro_names'): |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
41 lnames = names[:] |
688
15c55ecd7ccb
fix some i18n bugs
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
684
diff
changeset
|
42 lnames.extend(i18n.wikiLanguages().keys()) |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
43 lnames.extend(wikiutil.getPlugins('macro', cfg)) |
1550
a4f0632414da
using request.cfg.cache more
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1449
diff
changeset
|
44 cfg.cache.macro_names = lnames # remember it |
a4f0632414da
using request.cfg.cache more
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1449
diff
changeset
|
45 return cfg.cache.macro_names |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
46 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
47 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
48 ############################################################################# |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
49 ### Macros - Handlers for [[macroname]] markup |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
50 ############################################################################# |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
51 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
52 class Macro: |
2286
01f05e74aa9c
Big PEP8 and whitespace cleanup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2226
diff
changeset
|
53 """ Macro handler |
01f05e74aa9c
Big PEP8 and whitespace cleanup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2226
diff
changeset
|
54 |
01f05e74aa9c
Big PEP8 and whitespace cleanup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2226
diff
changeset
|
55 There are three kinds of macros: |
2515
41bc022c2160
use new arg parser for buitlin macros
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2513
diff
changeset
|
56 * Builtin Macros - implemented in this file and named macro_[name] |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
57 * Language Pseudo Macros - any lang the wiki knows can be use as |
2286
01f05e74aa9c
Big PEP8 and whitespace cleanup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2226
diff
changeset
|
58 macro and is implemented here by _m_lang() |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
59 * External macros - implemented in either MoinMoin.macro package, or |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
60 in the specific wiki instance in the plugin/macro directory |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
61 """ |
51
54d5932d5a03
merge moin--main--1.3--patch-930: fix error handling in plugins, fix broken chart action
Nir Soffer <nirs@freeshell.org>
parents:
39
diff
changeset
|
62 defaultDependency = ["time"] |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
63 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
64 Dependencies = { |
1001
ed7febba892b
whitespace-only cleanup and minor style changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
950
diff
changeset
|
65 "TitleSearch": ["namespace"], |
2520
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
66 "PageList": ["namespace"], |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
67 "TemplateList": ["namespace"], |
1001
ed7febba892b
whitespace-only cleanup and minor style changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
950
diff
changeset
|
68 "WordIndex": ["namespace"], |
ed7febba892b
whitespace-only cleanup and minor style changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
950
diff
changeset
|
69 "TitleIndex": ["namespace"], |
2520
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
70 "Goto": [], |
1001
ed7febba892b
whitespace-only cleanup and minor style changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
950
diff
changeset
|
71 "Icon": ["user"], # users have different themes and user prefs |
ed7febba892b
whitespace-only cleanup and minor style changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
950
diff
changeset
|
72 "Date": ["time"], |
ed7febba892b
whitespace-only cleanup and minor style changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
950
diff
changeset
|
73 "DateTime": ["time"], |
ed7febba892b
whitespace-only cleanup and minor style changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
950
diff
changeset
|
74 "Anchor": [], |
ed7febba892b
whitespace-only cleanup and minor style changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
950
diff
changeset
|
75 "Mailto": ["user"], |
ed7febba892b
whitespace-only cleanup and minor style changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
950
diff
changeset
|
76 "GetVal": ["pages"], |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
77 } |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
78 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
79 # we need the lang macros to execute when html is generated, |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
80 # to have correct dir and lang html attributes |
1870
9406e02388cf
reduce usage of .keys()
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1832
diff
changeset
|
81 for lang in i18n.wikiLanguages(): |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
82 Dependencies[lang] = [] |
950
4eb66637ccd0
whitespace-only cleanup, small style changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
919
diff
changeset
|
83 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
84 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
85 def __init__(self, parser): |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
86 self.parser = parser |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
87 self.form = self.parser.form |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
88 self.request = self.parser.request |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
89 self.formatter = self.request.formatter |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
90 self._ = self.request.getText |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
91 self.cfg = self.request.cfg |
950
4eb66637ccd0
whitespace-only cleanup, small style changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
919
diff
changeset
|
92 |
51
54d5932d5a03
merge moin--main--1.3--patch-930: fix error handling in plugins, fix broken chart action
Nir Soffer <nirs@freeshell.org>
parents:
39
diff
changeset
|
93 # Initialized on execute |
54d5932d5a03
merge moin--main--1.3--patch-930: fix error handling in plugins, fix broken chart action
Nir Soffer <nirs@freeshell.org>
parents:
39
diff
changeset
|
94 self.name = None |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
95 |
2529
df375ab9fbde
automatically convert macro args with defaults to the default's type
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2523
diff
changeset
|
96 def _convert_arg(self, value, default, name=None): |
df375ab9fbde
automatically convert macro args with defaults to the default's type
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2523
diff
changeset
|
97 if isinstance(default, bool): |
df375ab9fbde
automatically convert macro args with defaults to the default's type
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2523
diff
changeset
|
98 return wikiutil.get_boolean(self.request, value, name, default) |
df375ab9fbde
automatically convert macro args with defaults to the default's type
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2523
diff
changeset
|
99 elif isinstance(default, int) or isinstance(default, long): |
df375ab9fbde
automatically convert macro args with defaults to the default's type
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2523
diff
changeset
|
100 return wikiutil.get_int(self.request, value, name, default) |
df375ab9fbde
automatically convert macro args with defaults to the default's type
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2523
diff
changeset
|
101 elif isinstance(default, float): |
df375ab9fbde
automatically convert macro args with defaults to the default's type
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2523
diff
changeset
|
102 return wikiutil.get_float(self.request, value, name, default) |
df375ab9fbde
automatically convert macro args with defaults to the default's type
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2523
diff
changeset
|
103 elif isinstance(default, unicode): |
df375ab9fbde
automatically convert macro args with defaults to the default's type
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2523
diff
changeset
|
104 return wikiutil.get_unicode(self.request, value, name, default) |
df375ab9fbde
automatically convert macro args with defaults to the default's type
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2523
diff
changeset
|
105 return value |
df375ab9fbde
automatically convert macro args with defaults to the default's type
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2523
diff
changeset
|
106 |
2507
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
107 def _wrap(self, macro_name, fn, args): |
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
108 """ |
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
109 Parses arguments for a macro call and calls the macro |
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
110 function with the arguments. |
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
111 """ |
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
112 if args: |
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
113 positional, keyword, trailing = \ |
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
114 wikiutil.parse_quoted_separated(args) |
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
115 |
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
116 kwargs = {} |
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
117 nonascii = {} |
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
118 for kw in keyword: |
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
119 try: |
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
120 kwargs[str(kw)] = keyword[kw] |
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
121 except UnicodeEncodeError: |
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
122 nonascii[kw] = keyword[kw] |
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
123 |
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
124 # add trailing args as keyword argument if present, |
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
125 # otherwise remove if the user entered some |
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
126 # (so macros don't get a string where they expect a list) |
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
127 if trailing: |
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
128 kwargs['_trailing_args'] = trailing |
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
129 elif '_trailing_args' in kwargs: |
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
130 del kwargs['_trailing_args'] |
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
131 |
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
132 # add nonascii args as keyword argument if present, |
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
133 # otherwise remove if the user entered some |
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
134 # (so macros don't get a string where they expect a list) |
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
135 if nonascii: |
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
136 kwargs['_non_ascii_kwargs'] = nonascii |
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
137 elif '_non_ascii_kwargs' in kwargs: |
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
138 del kwargs['_non_ascii_kwargs'] |
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
139 |
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
140 else: |
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
141 positional = [] |
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
142 kwargs = {} |
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
143 |
2529
df375ab9fbde
automatically convert macro args with defaults to the default's type
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2523
diff
changeset
|
144 args, varargs, varkw, defaults = getargspec(fn) |
df375ab9fbde
automatically convert macro args with defaults to the default's type
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2523
diff
changeset
|
145 argc = len(args) - 1 |
df375ab9fbde
automatically convert macro args with defaults to the default's type
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2523
diff
changeset
|
146 if not defaults: |
df375ab9fbde
automatically convert macro args with defaults to the default's type
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2523
diff
changeset
|
147 defaults = [] |
df375ab9fbde
automatically convert macro args with defaults to the default's type
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2523
diff
changeset
|
148 |
df375ab9fbde
automatically convert macro args with defaults to the default's type
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2523
diff
changeset
|
149 # if the first (macro) parameter has a default too... |
df375ab9fbde
automatically convert macro args with defaults to the default's type
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2523
diff
changeset
|
150 if argc < len(defaults): |
df375ab9fbde
automatically convert macro args with defaults to the default's type
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2523
diff
changeset
|
151 defaults = defaults[1:] |
df375ab9fbde
automatically convert macro args with defaults to the default's type
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2523
diff
changeset
|
152 defstart = argc - len(defaults) |
df375ab9fbde
automatically convert macro args with defaults to the default's type
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2523
diff
changeset
|
153 |
2507
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
154 try: |
2529
df375ab9fbde
automatically convert macro args with defaults to the default's type
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2523
diff
changeset
|
155 for idx in range(defstart, argc): |
df375ab9fbde
automatically convert macro args with defaults to the default's type
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2523
diff
changeset
|
156 argname = args[idx + 1] |
df375ab9fbde
automatically convert macro args with defaults to the default's type
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2523
diff
changeset
|
157 default = defaults[idx - defstart] |
df375ab9fbde
automatically convert macro args with defaults to the default's type
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2523
diff
changeset
|
158 if argname in kwargs: |
df375ab9fbde
automatically convert macro args with defaults to the default's type
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2523
diff
changeset
|
159 kwargs[argname] = self._convert_arg(kwargs[argname], |
df375ab9fbde
automatically convert macro args with defaults to the default's type
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2523
diff
changeset
|
160 default, argname) |
df375ab9fbde
automatically convert macro args with defaults to the default's type
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2523
diff
changeset
|
161 |
df375ab9fbde
automatically convert macro args with defaults to the default's type
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2523
diff
changeset
|
162 if idx >= len(positional): |
df375ab9fbde
automatically convert macro args with defaults to the default's type
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2523
diff
changeset
|
163 continue |
df375ab9fbde
automatically convert macro args with defaults to the default's type
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2523
diff
changeset
|
164 |
df375ab9fbde
automatically convert macro args with defaults to the default's type
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2523
diff
changeset
|
165 if positional[idx] is None: |
df375ab9fbde
automatically convert macro args with defaults to the default's type
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2523
diff
changeset
|
166 positional[idx] = default |
df375ab9fbde
automatically convert macro args with defaults to the default's type
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2523
diff
changeset
|
167 else: |
df375ab9fbde
automatically convert macro args with defaults to the default's type
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2523
diff
changeset
|
168 positional[idx] = self._convert_arg(positional[idx], |
df375ab9fbde
automatically convert macro args with defaults to the default's type
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2523
diff
changeset
|
169 default) |
df375ab9fbde
automatically convert macro args with defaults to the default's type
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2523
diff
changeset
|
170 |
2507
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
171 return fn(self, *positional, **kwargs) |
2513
6de0e14591f7
macro.format_error to format what a macro shows in case of ValueError/TypeError happening, refactor MonthCalendar to use new arg parsing
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2507
diff
changeset
|
172 except (ValueError, TypeError), e: |
6de0e14591f7
macro.format_error to format what a macro shows in case of ValueError/TypeError happening, refactor MonthCalendar to use new arg parsing
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2507
diff
changeset
|
173 return self.format_error(e) |
6de0e14591f7
macro.format_error to format what a macro shows in case of ValueError/TypeError happening, refactor MonthCalendar to use new arg parsing
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2507
diff
changeset
|
174 |
6de0e14591f7
macro.format_error to format what a macro shows in case of ValueError/TypeError happening, refactor MonthCalendar to use new arg parsing
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2507
diff
changeset
|
175 def format_error(self, err): |
2517
50b12f981890
builtin macros: fix bug, handle errors giving help to users
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2515
diff
changeset
|
176 """ format an error object for output instead of normal macro output """ |
2523
ee8d1a2cc252
XSS fix for format_error
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2521
diff
changeset
|
177 return self.formatter.text(u'[[%s: %s]]' % (self.name, unicode(err))) |
2507
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
178 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
179 def execute(self, macro_name, args): |
2286
01f05e74aa9c
Big PEP8 and whitespace cleanup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2226
diff
changeset
|
180 """ Get and execute a macro |
01f05e74aa9c
Big PEP8 and whitespace cleanup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2226
diff
changeset
|
181 |
51
54d5932d5a03
merge moin--main--1.3--patch-930: fix error handling in plugins, fix broken chart action
Nir Soffer <nirs@freeshell.org>
parents:
39
diff
changeset
|
182 Try to get a plugin macro, or a builtin macro or a language |
2286
01f05e74aa9c
Big PEP8 and whitespace cleanup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2226
diff
changeset
|
183 macro, or just raise ImportError. |
51
54d5932d5a03
merge moin--main--1.3--patch-930: fix error handling in plugins, fix broken chart action
Nir Soffer <nirs@freeshell.org>
parents:
39
diff
changeset
|
184 """ |
54d5932d5a03
merge moin--main--1.3--patch-930: fix error handling in plugins, fix broken chart action
Nir Soffer <nirs@freeshell.org>
parents:
39
diff
changeset
|
185 self.name = macro_name |
54d5932d5a03
merge moin--main--1.3--patch-930: fix error handling in plugins, fix broken chart action
Nir Soffer <nirs@freeshell.org>
parents:
39
diff
changeset
|
186 try: |
2507
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
187 try: |
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
188 call = wikiutil.importPlugin(self.cfg, 'macro', macro_name, |
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
189 function='macro_%s' % macro_name) |
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
190 execute = lambda _self, _args: _self._wrap(macro_name, call, _args) |
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
191 except wikiutil.PluginAttributeError: |
ea255685d6b0
add macro argument parser and use it to invoke macros with args directly
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2294
diff
changeset
|
192 execute = wikiutil.importPlugin(self.cfg, 'macro', macro_name) |
53
699811601bed
merge moin--main--1.3--patch-934,935: detect correctly missing plguins and missing names in plugins
Nir Soffer <nirs@freeshell.org>
parents:
51
diff
changeset
|
193 except wikiutil.PluginMissingError: |
51
54d5932d5a03
merge moin--main--1.3--patch-930: fix error handling in plugins, fix broken chart action
Nir Soffer <nirs@freeshell.org>
parents:
39
diff
changeset
|
194 try: |
2515
41bc022c2160
use new arg parser for buitlin macros
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2513
diff
changeset
|
195 call = getattr(self.__class__, 'macro_%s' % macro_name) |
41bc022c2160
use new arg parser for buitlin macros
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2513
diff
changeset
|
196 execute = lambda _self, _args: _self._wrap(macro_name, call, _args) |
51
54d5932d5a03
merge moin--main--1.3--patch-930: fix error handling in plugins, fix broken chart action
Nir Soffer <nirs@freeshell.org>
parents:
39
diff
changeset
|
197 except AttributeError: |
688
15c55ecd7ccb
fix some i18n bugs
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
684
diff
changeset
|
198 if macro_name in i18n.wikiLanguages(): |
51
54d5932d5a03
merge moin--main--1.3--patch-930: fix error handling in plugins, fix broken chart action
Nir Soffer <nirs@freeshell.org>
parents:
39
diff
changeset
|
199 execute = builtins._m_lang |
54d5932d5a03
merge moin--main--1.3--patch-930: fix error handling in plugins, fix broken chart action
Nir Soffer <nirs@freeshell.org>
parents:
39
diff
changeset
|
200 else: |
53
699811601bed
merge moin--main--1.3--patch-934,935: detect correctly missing plguins and missing names in plugins
Nir Soffer <nirs@freeshell.org>
parents:
51
diff
changeset
|
201 raise ImportError("Cannot load macro %s" % macro_name) |
51
54d5932d5a03
merge moin--main--1.3--patch-930: fix error handling in plugins, fix broken chart action
Nir Soffer <nirs@freeshell.org>
parents:
39
diff
changeset
|
202 return execute(self, args) |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
203 |
51
54d5932d5a03
merge moin--main--1.3--patch-930: fix error handling in plugins, fix broken chart action
Nir Soffer <nirs@freeshell.org>
parents:
39
diff
changeset
|
204 def _m_lang(self, text): |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
205 """ Set the current language for page content. |
2286
01f05e74aa9c
Big PEP8 and whitespace cleanup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2226
diff
changeset
|
206 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
207 Language macro are used in two ways: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
208 * [lang] - set the current language until next lang macro |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
209 * [lang(text)] - insert text with specific lang inside page |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
210 """ |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
211 if text: |
51
54d5932d5a03
merge moin--main--1.3--patch-930: fix error handling in plugins, fix broken chart action
Nir Soffer <nirs@freeshell.org>
parents:
39
diff
changeset
|
212 return (self.formatter.lang(1, self.name) + |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
213 self.formatter.text(text) + |
51
54d5932d5a03
merge moin--main--1.3--patch-930: fix error handling in plugins, fix broken chart action
Nir Soffer <nirs@freeshell.org>
parents:
39
diff
changeset
|
214 self.formatter.lang(0, self.name)) |
950
4eb66637ccd0
whitespace-only cleanup, small style changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
919
diff
changeset
|
215 |
51
54d5932d5a03
merge moin--main--1.3--patch-930: fix error handling in plugins, fix broken chart action
Nir Soffer <nirs@freeshell.org>
parents:
39
diff
changeset
|
216 self.request.current_lang = self.name |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
217 return '' |
950
4eb66637ccd0
whitespace-only cleanup, small style changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
919
diff
changeset
|
218 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
219 def get_dependencies(self, macro_name): |
51
54d5932d5a03
merge moin--main--1.3--patch-930: fix error handling in plugins, fix broken chart action
Nir Soffer <nirs@freeshell.org>
parents:
39
diff
changeset
|
220 if macro_name in self.Dependencies: |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
221 return self.Dependencies[macro_name] |
51
54d5932d5a03
merge moin--main--1.3--patch-930: fix error handling in plugins, fix broken chart action
Nir Soffer <nirs@freeshell.org>
parents:
39
diff
changeset
|
222 try: |
54d5932d5a03
merge moin--main--1.3--patch-930: fix error handling in plugins, fix broken chart action
Nir Soffer <nirs@freeshell.org>
parents:
39
diff
changeset
|
223 return wikiutil.importPlugin(self.request.cfg, 'macro', |
54d5932d5a03
merge moin--main--1.3--patch-930: fix error handling in plugins, fix broken chart action
Nir Soffer <nirs@freeshell.org>
parents:
39
diff
changeset
|
224 macro_name, 'Dependencies') |
53
699811601bed
merge moin--main--1.3--patch-934,935: detect correctly missing plguins and missing names in plugins
Nir Soffer <nirs@freeshell.org>
parents:
51
diff
changeset
|
225 except wikiutil.PluginError: |
51
54d5932d5a03
merge moin--main--1.3--patch-930: fix error handling in plugins, fix broken chart action
Nir Soffer <nirs@freeshell.org>
parents:
39
diff
changeset
|
226 return self.defaultDependency |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
227 |
2515
41bc022c2160
use new arg parser for buitlin macros
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2513
diff
changeset
|
228 def macro_TitleSearch(self): |
1924
5dc0896d145a
search: fixed wrong import
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1920
diff
changeset
|
229 from MoinMoin.macro.FullSearch import search_box |
1217
237ca54182a7
copied code for search box over to macro/FullSearch.py
Franz Pletz <fpletz AT franz-pletz DOT org>
parents:
1198
diff
changeset
|
230 return search_box("titlesearch", self) |
950
4eb66637ccd0
whitespace-only cleanup, small style changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
919
diff
changeset
|
231 |
2520
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
232 def macro_PageList(self, needle=None): |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
233 from MoinMoin import search |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
234 _ = self._ |
2520
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
235 case = 0 |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
236 |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
237 # If called with empty or no argument, default to regex search for .+, the full page list. |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
238 needle = wikiutil.get_unicode(self.request, needle, 'needle', u'regex:.+') |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
239 |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
240 # With whitespace argument, return same error message as FullSearch |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
241 if not needle.strip(): |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
242 err = _('Please use a more selective search term instead of {{{"%s"}}}') % needle |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
243 return '<span class="error">%s</span>' % err |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
244 |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
245 # Return a title search for needle, sorted by name. |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
246 results = search.searchPages(self.request, needle, |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
247 titlesearch=1, case=case, sort='page_name') |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
248 return results.pageList(self.request, self.formatter, paging=False) |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
249 |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
250 def macro_TemplateList(self, needle=None): |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
251 # TODO: this should be renamed (RegExPageNameList?), it does not list only Templates... |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
252 _ = self._ |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
253 needle = wikiutil.get_unicode(self.request, needle, 'needle', u'.+') |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
254 try: |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
255 needle_re = re.compile(needle, re.IGNORECASE) |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
256 except re.error, err: |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
257 raise ValueError("Error in regex %r: %s" % (needle, err)) |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
258 |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
259 # Get page list readable by current user, filtered by needle |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
260 hits = self.request.rootpage.getPageList(filter=needle_re.search) |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
261 hits.sort() |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
262 |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
263 result = [] |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
264 result.append(self.formatter.bullet_list(1)) |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
265 for pagename in hits: |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
266 result.append(self.formatter.listitem(1)) |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
267 result.append(self.formatter.pagelink(1, pagename, generated=1)) |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
268 result.append(self.formatter.text(pagename)) |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
269 result.append(self.formatter.pagelink(0, pagename)) |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
270 result.append(self.formatter.listitem(0)) |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
271 result.append(self.formatter.bullet_list(0)) |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
272 return ''.join(result) |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
273 |
2515
41bc022c2160
use new arg parser for buitlin macros
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2513
diff
changeset
|
274 def _make_index(self, word_re=u'.+'): |
735
e3c44dc8f488
merge common code of TitleIndex and WordIndex into _make_index
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
688
diff
changeset
|
275 """ make an index page (used for TitleIndex and WordIndex macro) |
e3c44dc8f488
merge common code of TitleIndex and WordIndex into _make_index
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
688
diff
changeset
|
276 |
e3c44dc8f488
merge common code of TitleIndex and WordIndex into _make_index
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
688
diff
changeset
|
277 word_re is a regex used for splitting a pagename into fragments |
e3c44dc8f488
merge common code of TitleIndex and WordIndex into _make_index
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
688
diff
changeset
|
278 matched by it (used for WordIndex). For TitleIndex, we just match |
e3c44dc8f488
merge common code of TitleIndex and WordIndex into _make_index
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
688
diff
changeset
|
279 the whole page name, so we only get one fragment that is the same |
e3c44dc8f488
merge common code of TitleIndex and WordIndex into _make_index
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
688
diff
changeset
|
280 as the pagename. |
e3c44dc8f488
merge common code of TitleIndex and WordIndex into _make_index
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
688
diff
changeset
|
281 |
1832
b180f047d918
comments only: cleaned up TODO, XXX, ...
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1805
diff
changeset
|
282 TODO: _make_index could get a macro on its own, more powerful / less special than WordIndex and TitleIndex. |
b180f047d918
comments only: cleaned up TODO, XXX, ...
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1805
diff
changeset
|
283 It should be able to filter for specific mimetypes, maybe match pagenames by regex (replace PageList?), etc. |
735
e3c44dc8f488
merge common code of TitleIndex and WordIndex into _make_index
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
688
diff
changeset
|
284 """ |
28
ef8b90110f33
WordIndex: make systempages excludeable
Thomas Waldmann <tw@waldmann-edv.de>
parents:
27
diff
changeset
|
285 _ = self._ |
1785
e54f99c9beba
make TitleIndex/WordIndex use the formatter
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1674
diff
changeset
|
286 request = self.request |
e54f99c9beba
make TitleIndex/WordIndex use the formatter
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1674
diff
changeset
|
287 fmt = self.formatter |
28
ef8b90110f33
WordIndex: make systempages excludeable
Thomas Waldmann <tw@waldmann-edv.de>
parents:
27
diff
changeset
|
288 allpages = int(self.form.get('allpages', [0])[0]) != 0 |
1785
e54f99c9beba
make TitleIndex/WordIndex use the formatter
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1674
diff
changeset
|
289 # Get page list readable by current user, filter by isSystemPage if needed |
28
ef8b90110f33
WordIndex: make systempages excludeable
Thomas Waldmann <tw@waldmann-edv.de>
parents:
27
diff
changeset
|
290 if allpages: |
1785
e54f99c9beba
make TitleIndex/WordIndex use the formatter
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1674
diff
changeset
|
291 pages = request.rootpage.getPageList() |
28
ef8b90110f33
WordIndex: make systempages excludeable
Thomas Waldmann <tw@waldmann-edv.de>
parents:
27
diff
changeset
|
292 else: |
1920
b06ef2a53efa
'make pylint', fixed lots of minor stuff found by pylint (and there is still lots left to do)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1918
diff
changeset
|
293 def nosyspage(name): |
1785
e54f99c9beba
make TitleIndex/WordIndex use the formatter
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1674
diff
changeset
|
294 return not wikiutil.isSystemPage(request, name) |
1920
b06ef2a53efa
'make pylint', fixed lots of minor stuff found by pylint (and there is still lots left to do)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1918
diff
changeset
|
295 pages = request.rootpage.getPageList(filter=nosyspage) |
950
4eb66637ccd0
whitespace-only cleanup, small style changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
919
diff
changeset
|
296 |
735
e3c44dc8f488
merge common code of TitleIndex and WordIndex into _make_index
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
688
diff
changeset
|
297 word_re = re.compile(word_re, re.UNICODE) |
1920
b06ef2a53efa
'make pylint', fixed lots of minor stuff found by pylint (and there is still lots left to do)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1918
diff
changeset
|
298 wordmap = {} |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
299 for name in pages: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
300 for word in word_re.findall(name): |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
301 try: |
1920
b06ef2a53efa
'make pylint', fixed lots of minor stuff found by pylint (and there is still lots left to do)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1918
diff
changeset
|
302 if not wordmap[word].count(name): |
b06ef2a53efa
'make pylint', fixed lots of minor stuff found by pylint (and there is still lots left to do)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1918
diff
changeset
|
303 wordmap[word].append(name) |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
304 except KeyError: |
1920
b06ef2a53efa
'make pylint', fixed lots of minor stuff found by pylint (and there is still lots left to do)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1918
diff
changeset
|
305 wordmap[word] = [name] |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
306 |
735
e3c44dc8f488
merge common code of TitleIndex and WordIndex into _make_index
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
688
diff
changeset
|
307 # Sort ignoring case |
1920
b06ef2a53efa
'make pylint', fixed lots of minor stuff found by pylint (and there is still lots left to do)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1918
diff
changeset
|
308 tmp = [(word.upper(), word) for word in wordmap] |
735
e3c44dc8f488
merge common code of TitleIndex and WordIndex into _make_index
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
688
diff
changeset
|
309 tmp.sort() |
e3c44dc8f488
merge common code of TitleIndex and WordIndex into _make_index
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
688
diff
changeset
|
310 all_words = [item[1] for item in tmp] |
e3c44dc8f488
merge common code of TitleIndex and WordIndex into _make_index
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
688
diff
changeset
|
311 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
312 index_letters = [] |
28
ef8b90110f33
WordIndex: make systempages excludeable
Thomas Waldmann <tw@waldmann-edv.de>
parents:
27
diff
changeset
|
313 current_letter = None |
1785
e54f99c9beba
make TitleIndex/WordIndex use the formatter
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1674
diff
changeset
|
314 output = [] |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
315 for word in all_words: |
28
ef8b90110f33
WordIndex: make systempages excludeable
Thomas Waldmann <tw@waldmann-edv.de>
parents:
27
diff
changeset
|
316 letter = wikiutil.getUnicodeIndexGroup(word) |
ef8b90110f33
WordIndex: make systempages excludeable
Thomas Waldmann <tw@waldmann-edv.de>
parents:
27
diff
changeset
|
317 if letter != current_letter: |
2286
01f05e74aa9c
Big PEP8 and whitespace cleanup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2226
diff
changeset
|
318 cssid = "idx" + wikiutil.quoteWikinameURL(letter).replace('%', '') |
1785
e54f99c9beba
make TitleIndex/WordIndex use the formatter
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1674
diff
changeset
|
319 output.append(fmt.heading(1, 2, id=cssid)) # fmt.anchordef didn't work |
e54f99c9beba
make TitleIndex/WordIndex use the formatter
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1674
diff
changeset
|
320 output.append(fmt.text(letter.replace('~', 'Others'))) |
e54f99c9beba
make TitleIndex/WordIndex use the formatter
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1674
diff
changeset
|
321 output.append(fmt.heading(0, 2)) |
28
ef8b90110f33
WordIndex: make systempages excludeable
Thomas Waldmann <tw@waldmann-edv.de>
parents:
27
diff
changeset
|
322 current_letter = letter |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
323 if letter not in index_letters: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
324 index_letters.append(letter) |
1958
aa3e4fb31c62
WordIndex/TitleIndex: fix wrong attr name
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1924
diff
changeset
|
325 links = wordmap[word] |
735
e3c44dc8f488
merge common code of TitleIndex and WordIndex into _make_index
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
688
diff
changeset
|
326 if len(links) and links[0] != word: # show word fragment as on WordIndex |
1785
e54f99c9beba
make TitleIndex/WordIndex use the formatter
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1674
diff
changeset
|
327 output.append(fmt.strong(1)) |
e54f99c9beba
make TitleIndex/WordIndex use the formatter
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1674
diff
changeset
|
328 output.append(word) |
e54f99c9beba
make TitleIndex/WordIndex use the formatter
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1674
diff
changeset
|
329 output.append(fmt.strong(0)) |
950
4eb66637ccd0
whitespace-only cleanup, small style changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
919
diff
changeset
|
330 |
1785
e54f99c9beba
make TitleIndex/WordIndex use the formatter
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1674
diff
changeset
|
331 output.append(fmt.bullet_list(1)) |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
332 links.sort() |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
333 last_page = None |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
334 for name in links: |
28
ef8b90110f33
WordIndex: make systempages excludeable
Thomas Waldmann <tw@waldmann-edv.de>
parents:
27
diff
changeset
|
335 if name == last_page: |
ef8b90110f33
WordIndex: make systempages excludeable
Thomas Waldmann <tw@waldmann-edv.de>
parents:
27
diff
changeset
|
336 continue |
1785
e54f99c9beba
make TitleIndex/WordIndex use the formatter
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1674
diff
changeset
|
337 output.append(fmt.listitem(1)) |
e54f99c9beba
make TitleIndex/WordIndex use the formatter
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1674
diff
changeset
|
338 output.append(Page(request, name).link_to(request, attachment_indicator=1)) |
e54f99c9beba
make TitleIndex/WordIndex use the formatter
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1674
diff
changeset
|
339 output.append(fmt.listitem(0)) |
e54f99c9beba
make TitleIndex/WordIndex use the formatter
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1674
diff
changeset
|
340 output.append(fmt.bullet_list(0)) |
950
4eb66637ccd0
whitespace-only cleanup, small style changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
919
diff
changeset
|
341 |
1785
e54f99c9beba
make TitleIndex/WordIndex use the formatter
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1674
diff
changeset
|
342 def _make_index_key(index_letters): |
735
e3c44dc8f488
merge common code of TitleIndex and WordIndex into _make_index
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
688
diff
changeset
|
343 index_letters.sort() |
e3c44dc8f488
merge common code of TitleIndex and WordIndex into _make_index
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
688
diff
changeset
|
344 def letter_link(ch): |
2286
01f05e74aa9c
Big PEP8 and whitespace cleanup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2226
diff
changeset
|
345 cssid = "idx" + wikiutil.quoteWikinameURL(ch).replace('%', '') |
1785
e54f99c9beba
make TitleIndex/WordIndex use the formatter
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1674
diff
changeset
|
346 return fmt.anchorlink(1, cssid) + fmt.text(ch.replace('~', 'Others')) + fmt.anchorlink(0) |
735
e3c44dc8f488
merge common code of TitleIndex and WordIndex into _make_index
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
688
diff
changeset
|
347 links = [letter_link(letter) for letter in index_letters] |
1785
e54f99c9beba
make TitleIndex/WordIndex use the formatter
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1674
diff
changeset
|
348 return ' | '.join(links) |
735
e3c44dc8f488
merge common code of TitleIndex and WordIndex into _make_index
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
688
diff
changeset
|
349 |
1785
e54f99c9beba
make TitleIndex/WordIndex use the formatter
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1674
diff
changeset
|
350 page = fmt.page |
735
e3c44dc8f488
merge common code of TitleIndex and WordIndex into _make_index
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
688
diff
changeset
|
351 allpages_txt = (_('Include system pages'), _('Exclude system pages'))[allpages] |
2226
cff573edd028
fixed wrong link generation for WordIndex/TitleIndex
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2207
diff
changeset
|
352 allpages_url = page.url(request, querystr={'allpages': allpages and '0' or '1'}, relative=False) |
735
e3c44dc8f488
merge common code of TitleIndex and WordIndex into _make_index
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
688
diff
changeset
|
353 |
1785
e54f99c9beba
make TitleIndex/WordIndex use the formatter
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1674
diff
changeset
|
354 output = [fmt.paragraph(1), _make_index_key(index_letters), fmt.linebreak(0), |
e54f99c9beba
make TitleIndex/WordIndex use the formatter
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1674
diff
changeset
|
355 fmt.url(1, allpages_url), fmt.text(allpages_txt), fmt.url(0), fmt.paragraph(0)] + output |
e54f99c9beba
make TitleIndex/WordIndex use the formatter
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1674
diff
changeset
|
356 return u''.join(output) |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
357 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
358 |
2515
41bc022c2160
use new arg parser for buitlin macros
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2513
diff
changeset
|
359 def macro_TitleIndex(self): |
41bc022c2160
use new arg parser for buitlin macros
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2513
diff
changeset
|
360 return self._make_index() |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
361 |
2515
41bc022c2160
use new arg parser for buitlin macros
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2513
diff
changeset
|
362 def macro_WordIndex(self): |
2207
7ae581d79352
updated bot useragents list, reduce bot cpu usage of some macros (ported from 1.5 repo)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1965
diff
changeset
|
363 if self.request.isSpiderAgent: # reduce bot cpu usage |
7ae581d79352
updated bot useragents list, reduce bot cpu usage of some macros (ported from 1.5 repo)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1965
diff
changeset
|
364 return '' |
735
e3c44dc8f488
merge common code of TitleIndex and WordIndex into _make_index
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
688
diff
changeset
|
365 word_re = u'[%s][%s]+' % (config.chars_upper, config.chars_lower) |
2515
41bc022c2160
use new arg parser for buitlin macros
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2513
diff
changeset
|
366 return self._make_index(word_re=word_re) |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
367 |
2520
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
368 def macro_GoTo(self): |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
369 """ Make a goto box |
735
e3c44dc8f488
merge common code of TitleIndex and WordIndex into _make_index
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
688
diff
changeset
|
370 |
2520
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
371 @rtype: unicode |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
372 @return: goto box html fragment |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
373 """ |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
374 _ = self._ |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
375 html = [ |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
376 u'<form method="get" action="">', |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
377 u'<div>', |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
378 u'<input type="hidden" name="action" value="goto">', |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
379 u'<input type="text" name="target" size="30">', |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
380 u'<input type="submit" value="%s">' % _("Go To Page"), |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
381 u'</div>', |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
382 u'</form>', |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
383 ] |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
384 html = u'\n'.join(html) |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
385 return self.formatter.rawHTML(html) |
950
4eb66637ccd0
whitespace-only cleanup, small style changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
919
diff
changeset
|
386 |
2517
50b12f981890
builtin macros: fix bug, handle errors giving help to users
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2515
diff
changeset
|
387 def macro_Icon(self, icon=None): |
50b12f981890
builtin macros: fix bug, handle errors giving help to users
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2515
diff
changeset
|
388 icon = wikiutil.get_unicode(self.request, icon, 'icon') |
50b12f981890
builtin macros: fix bug, handle errors giving help to users
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2515
diff
changeset
|
389 if icon is None: |
50b12f981890
builtin macros: fix bug, handle errors giving help to users
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2515
diff
changeset
|
390 raise ValueError("You need to give an Icon name") |
2515
41bc022c2160
use new arg parser for buitlin macros
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2513
diff
changeset
|
391 return self.formatter.icon(icon.lower()) |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
392 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
393 def __get_Date(self, args, format_date): |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
394 _ = self._ |
2517
50b12f981890
builtin macros: fix bug, handle errors giving help to users
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2515
diff
changeset
|
395 if args is None: |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
396 tm = time.time() # always UTC |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
397 elif len(args) >= 19 and args[4] == '-' and args[7] == '-' \ |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
398 and args[10] == 'T' and args[13] == ':' and args[16] == ':': |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
399 # we ignore any time zone offsets here, assume UTC, |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
400 # and accept (and ignore) any trailing stuff |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
401 try: |
950
4eb66637ccd0
whitespace-only cleanup, small style changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
919
diff
changeset
|
402 year, month, day = int(args[0:4]), int(args[5:7]), int(args[8:10]) |
4eb66637ccd0
whitespace-only cleanup, small style changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
919
diff
changeset
|
403 hour, minute, second = int(args[11:13]), int(args[14:16]), int(args[17:19]) |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
404 tz = args[19:] # +HHMM, -HHMM or Z or nothing (then we assume Z) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
405 tzoffset = 0 # we assume UTC no matter if there is a Z |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
406 if tz: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
407 sign = tz[0] |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
408 if sign in '+-': |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
409 tzh, tzm = int(tz[1:3]), int(tz[3:]) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
410 tzoffset = (tzh*60+tzm)*60 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
411 if sign == '-': |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
412 tzoffset = -tzoffset |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
413 tm = (year, month, day, hour, minute, second, 0, 0, 0) |
2517
50b12f981890
builtin macros: fix bug, handle errors giving help to users
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2515
diff
changeset
|
414 except ValueError, err: |
50b12f981890
builtin macros: fix bug, handle errors giving help to users
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2515
diff
changeset
|
415 raise ValueError("Bad timestamp %r: %s" % (args, err)) |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
416 # as mktime wants a localtime argument (but we only have UTC), |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
417 # we adjust by our local timezone's offset |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
418 try: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
419 tm = time.mktime(tm) - time.timezone - tzoffset |
1805
ebcebba1afb3
removed some unused attributes, used 'dummy' for dummies
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1794
diff
changeset
|
420 except (OverflowError, ValueError): |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
421 tm = 0 # incorrect, but we avoid an ugly backtrace |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
422 else: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
423 # try raw seconds since epoch in UTC |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
424 try: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
425 tm = float(args) |
2517
50b12f981890
builtin macros: fix bug, handle errors giving help to users
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2515
diff
changeset
|
426 except ValueError, err: |
50b12f981890
builtin macros: fix bug, handle errors giving help to users
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2515
diff
changeset
|
427 raise ValueError("Bad timestamp %r: %s" % (args, err)) |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
428 return format_date(tm) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
429 |
2515
41bc022c2160
use new arg parser for buitlin macros
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2513
diff
changeset
|
430 def macro_Date(self, stamp=None): |
41bc022c2160
use new arg parser for buitlin macros
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2513
diff
changeset
|
431 return self.__get_Date(stamp, self.request.user.getFormattedDate) |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
432 |
2515
41bc022c2160
use new arg parser for buitlin macros
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2513
diff
changeset
|
433 def macro_DateTime(self, stamp=None): |
41bc022c2160
use new arg parser for buitlin macros
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2513
diff
changeset
|
434 return self.__get_Date(stamp, self.request.user.getFormattedDateTime) |
41bc022c2160
use new arg parser for buitlin macros
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2513
diff
changeset
|
435 |
2517
50b12f981890
builtin macros: fix bug, handle errors giving help to users
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2515
diff
changeset
|
436 def macro_Anchor(self, anchor=None): |
50b12f981890
builtin macros: fix bug, handle errors giving help to users
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2515
diff
changeset
|
437 anchor = wikiutil.get_unicode(self.request, anchor, 'anchor', u'anchor') |
50b12f981890
builtin macros: fix bug, handle errors giving help to users
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2515
diff
changeset
|
438 return self.formatter.anchordef(anchor) |
2515
41bc022c2160
use new arg parser for buitlin macros
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2513
diff
changeset
|
439 |
2517
50b12f981890
builtin macros: fix bug, handle errors giving help to users
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2515
diff
changeset
|
440 def macro_MailTo(self, email=None, text=None): |
50b12f981890
builtin macros: fix bug, handle errors giving help to users
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2515
diff
changeset
|
441 email = wikiutil.get_unicode(self.request, email, 'email') |
50b12f981890
builtin macros: fix bug, handle errors giving help to users
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2515
diff
changeset
|
442 if email is None: |
50b12f981890
builtin macros: fix bug, handle errors giving help to users
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2515
diff
changeset
|
443 raise ValueError("You need to give an (obfuscated) email address") |
50b12f981890
builtin macros: fix bug, handle errors giving help to users
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2515
diff
changeset
|
444 text = wikiutil.get_unicode(self.request, text, 'text') |
50b12f981890
builtin macros: fix bug, handle errors giving help to users
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2515
diff
changeset
|
445 |
753
d48400378d4c
fixed MailTo macro import
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
735
diff
changeset
|
446 from MoinMoin.mail.sendmail import decodeSpamSafeEmail |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
447 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
448 if self.request.user.valid: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
449 # decode address and generate mailto: link |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
450 email = decodeSpamSafeEmail(email) |
410
1a2bd0457cf3
fix some wrong attributes, todo: fix quoting, see comment in text_html.url
Thomas Waldmann <tw@waldmann-edv.de>
parents:
407
diff
changeset
|
451 result = (self.formatter.url(1, 'mailto:' + email, css='mailto', do_escape=0) + |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
452 self.formatter.text(text or email) + |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
453 self.formatter.url(0)) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
454 else: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
455 # unknown user, maybe even a spambot, so |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
456 # just return text as given in macro args |
2286
01f05e74aa9c
Big PEP8 and whitespace cleanup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2226
diff
changeset
|
457 |
1674
a45b23e6217d
minor MailTo macro change from docbook branch
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1550
diff
changeset
|
458 if text: |
a45b23e6217d
minor MailTo macro change from docbook branch
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1550
diff
changeset
|
459 result = self.formatter.text(text+" ") |
2286
01f05e74aa9c
Big PEP8 and whitespace cleanup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2226
diff
changeset
|
460 |
1674
a45b23e6217d
minor MailTo macro change from docbook branch
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1550
diff
changeset
|
461 result += self.formatter.code(1) + \ |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
462 self.formatter.text("<%s>" % email) + \ |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
463 self.formatter.code(0) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
464 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
465 return result |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
466 |
2517
50b12f981890
builtin macros: fix bug, handle errors giving help to users
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2515
diff
changeset
|
467 def macro_GetVal(self, page=None, key=None): |
50b12f981890
builtin macros: fix bug, handle errors giving help to users
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2515
diff
changeset
|
468 page = wikiutil.get_unicode(self.request, page, 'page') |
50b12f981890
builtin macros: fix bug, handle errors giving help to users
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2515
diff
changeset
|
469 key = wikiutil.get_unicode(self.request, key, 'key') |
50b12f981890
builtin macros: fix bug, handle errors giving help to users
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2515
diff
changeset
|
470 if page is None or key is None: |
50b12f981890
builtin macros: fix bug, handle errors giving help to users
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2515
diff
changeset
|
471 raise ValueError("You need to give: pagename, key") |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
472 d = self.request.dicts.dict(page) |
950
4eb66637ccd0
whitespace-only cleanup, small style changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
919
diff
changeset
|
473 result = d.get(key, '') |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
474 return self.formatter.text(result) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
475 |