Mercurial > moin > 1.9
annotate MoinMoin/macro/__init__.py @ 2786:a16ba90d1f7e
macro.__init__.py:GetVal bug fixed of respecting acls and test added
author | Reimar Bauer <rb.proj AT googlemail DOT com> |
---|---|
date | Wed, 29 Aug 2007 19:46:01 +0200 |
parents | cdda42a9d8a8 |
children | 8608b258f8e6 |
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 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
28 |
2521
b4118a77105d
externalize PageCount macro
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2520
diff
changeset
|
29 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
|
30 # Macros with arguments |
2521
b4118a77105d
externalize PageCount macro
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2520
diff
changeset
|
31 "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
|
32 ] |
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 ### Helpers |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
36 ############################################################################# |
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 def getNames(cfg): |
1550
a4f0632414da
using request.cfg.cache more
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1449
diff
changeset
|
39 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
|
40 lnames = names[:] |
688
15c55ecd7ccb
fix some i18n bugs
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
684
diff
changeset
|
41 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
|
42 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
|
43 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
|
44 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
|
45 |
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 ############################################################################# |
2725
388204baf00f
change [[macro]] to <<macro>> in all built-in markup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2549
diff
changeset
|
48 ### Macros - Handlers for <<macroname>> markup |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
49 ############################################################################# |
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 class Macro: |
2286
01f05e74aa9c
Big PEP8 and whitespace cleanup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2226
diff
changeset
|
52 """ Macro handler |
01f05e74aa9c
Big PEP8 and whitespace cleanup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2226
diff
changeset
|
53 |
01f05e74aa9c
Big PEP8 and whitespace cleanup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2226
diff
changeset
|
54 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
|
55 * 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
|
56 * 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
|
57 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
|
58 * 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
|
59 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
|
60 """ |
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
|
61 defaultDependency = ["time"] |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
62 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
63 Dependencies = { |
1001
ed7febba892b
whitespace-only cleanup and minor style changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
950
diff
changeset
|
64 "TitleSearch": ["namespace"], |
2520
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
65 "PageList": ["namespace"], |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
66 "TemplateList": ["namespace"], |
1001
ed7febba892b
whitespace-only cleanup and minor style changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
950
diff
changeset
|
67 "WordIndex": ["namespace"], |
ed7febba892b
whitespace-only cleanup and minor style changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
950
diff
changeset
|
68 "TitleIndex": ["namespace"], |
2520
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
69 "Goto": [], |
1001
ed7febba892b
whitespace-only cleanup and minor style changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
950
diff
changeset
|
70 "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
|
71 "Date": ["time"], |
ed7febba892b
whitespace-only cleanup and minor style changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
950
diff
changeset
|
72 "DateTime": ["time"], |
ed7febba892b
whitespace-only cleanup and minor style changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
950
diff
changeset
|
73 "Anchor": [], |
ed7febba892b
whitespace-only cleanup and minor style changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
950
diff
changeset
|
74 "Mailto": ["user"], |
ed7febba892b
whitespace-only cleanup and minor style changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
950
diff
changeset
|
75 "GetVal": ["pages"], |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
76 } |
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 # 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
|
79 # 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
|
80 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
|
81 Dependencies[lang] = [] |
950
4eb66637ccd0
whitespace-only cleanup, small style changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
919
diff
changeset
|
82 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
83 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
84 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
|
85 self.parser = parser |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
86 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
|
87 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
|
88 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
|
89 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
|
90 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
|
91 |
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
|
92 # 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
|
93 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
|
94 |
2540
fa4252cb4077
move macro invoker to wikiutil
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2538
diff
changeset
|
95 def _wrap(self, function, args, fixed=[]): |
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
|
96 try: |
2540
fa4252cb4077
move macro invoker to wikiutil
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2538
diff
changeset
|
97 return wikiutil.invoke_extension_function(self.request, function, |
fa4252cb4077
move macro invoker to wikiutil
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2538
diff
changeset
|
98 args, fixed) |
2549
fb88a3706761
macro invoker doesn't need to catch TypeError any more
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2546
diff
changeset
|
99 except ValueError, e: |
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
|
100 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
|
101 |
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
|
102 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
|
103 """ format an error object for output instead of normal macro output """ |
2725
388204baf00f
change [[macro]] to <<macro>> in all built-in markup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2549
diff
changeset
|
104 return self.formatter.text(u'<<%s: %s>>' % (self.name, err.args[0])) |
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
|
105 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
106 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
|
107 """ Get and execute a macro |
01f05e74aa9c
Big PEP8 and whitespace cleanup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2226
diff
changeset
|
108 |
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
|
109 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
|
110 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
|
111 """ |
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
|
112 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
|
113 try: |
2541
5477d7f5ad64
small try/except cleanup in macro code
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2540
diff
changeset
|
114 call = wikiutil.importPlugin(self.cfg, 'macro', macro_name, |
5477d7f5ad64
small try/except cleanup in macro code
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2540
diff
changeset
|
115 function='macro_%s' % macro_name) |
5477d7f5ad64
small try/except cleanup in macro code
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2540
diff
changeset
|
116 execute = lambda _self, _args: _self._wrap(call, _args, [self]) |
5477d7f5ad64
small try/except cleanup in macro code
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2540
diff
changeset
|
117 except wikiutil.PluginAttributeError: |
5477d7f5ad64
small try/except cleanup in macro code
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2540
diff
changeset
|
118 # fall back to old execute() method, no longer recommended |
5477d7f5ad64
small try/except cleanup in macro code
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2540
diff
changeset
|
119 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
|
120 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
|
121 try: |
2540
fa4252cb4077
move macro invoker to wikiutil
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2538
diff
changeset
|
122 call = getattr(self, 'macro_%s' % macro_name) |
fa4252cb4077
move macro invoker to wikiutil
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2538
diff
changeset
|
123 execute = lambda _self, _args: _self._wrap(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
|
124 except AttributeError: |
688
15c55ecd7ccb
fix some i18n bugs
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
684
diff
changeset
|
125 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
|
126 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
|
127 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
|
128 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
|
129 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
|
130 |
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
|
131 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
|
132 """ 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
|
133 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
134 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
|
135 * [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
|
136 * [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
|
137 """ |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
138 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
|
139 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
|
140 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
|
141 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
|
142 |
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
|
143 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
|
144 return '' |
950
4eb66637ccd0
whitespace-only cleanup, small style changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
919
diff
changeset
|
145 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
146 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
|
147 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
|
148 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
|
149 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
|
150 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
|
151 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
|
152 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
|
153 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
|
154 |
2515
41bc022c2160
use new arg parser for buitlin macros
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2513
diff
changeset
|
155 def macro_TitleSearch(self): |
1924
5dc0896d145a
search: fixed wrong import
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1920
diff
changeset
|
156 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
|
157 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
|
158 |
2520
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
159 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
|
160 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
|
161 _ = self._ |
2520
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
162 case = 0 |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
163 |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
164 # 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
|
165 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
|
166 |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
167 # 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
|
168 if not needle.strip(): |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
169 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
|
170 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
|
171 |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
172 # 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
|
173 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
|
174 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
|
175 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
|
176 |
2530
0a8fc701e40d
use the new automatic macro arg conversion in some internal macros
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2529
diff
changeset
|
177 def macro_TemplateList(self, needle=u'.+'): |
2520
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
178 # 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
|
179 _ = self._ |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
180 try: |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
181 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
|
182 except re.error, err: |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
183 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
|
184 |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
185 # 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
|
186 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
|
187 hits.sort() |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
188 |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
189 result = [] |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
190 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
|
191 for pagename in hits: |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
192 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
|
193 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
|
194 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
|
195 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
|
196 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
|
197 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
|
198 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
|
199 |
2515
41bc022c2160
use new arg parser for buitlin macros
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2513
diff
changeset
|
200 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
|
201 """ 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
|
202 |
e3c44dc8f488
merge common code of TitleIndex and WordIndex into _make_index
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
688
diff
changeset
|
203 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
|
204 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
|
205 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
|
206 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
|
207 |
1832
b180f047d918
comments only: cleaned up TODO, XXX, ...
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1805
diff
changeset
|
208 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
|
209 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
|
210 """ |
28
ef8b90110f33
WordIndex: make systempages excludeable
Thomas Waldmann <tw@waldmann-edv.de>
parents:
27
diff
changeset
|
211 _ = self._ |
1785
e54f99c9beba
make TitleIndex/WordIndex use the formatter
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1674
diff
changeset
|
212 request = self.request |
e54f99c9beba
make TitleIndex/WordIndex use the formatter
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1674
diff
changeset
|
213 fmt = self.formatter |
28
ef8b90110f33
WordIndex: make systempages excludeable
Thomas Waldmann <tw@waldmann-edv.de>
parents:
27
diff
changeset
|
214 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
|
215 # 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
|
216 if allpages: |
1785
e54f99c9beba
make TitleIndex/WordIndex use the formatter
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1674
diff
changeset
|
217 pages = request.rootpage.getPageList() |
28
ef8b90110f33
WordIndex: make systempages excludeable
Thomas Waldmann <tw@waldmann-edv.de>
parents:
27
diff
changeset
|
218 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
|
219 def nosyspage(name): |
1785
e54f99c9beba
make TitleIndex/WordIndex use the formatter
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1674
diff
changeset
|
220 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
|
221 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
|
222 |
735
e3c44dc8f488
merge common code of TitleIndex and WordIndex into _make_index
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
688
diff
changeset
|
223 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
|
224 wordmap = {} |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
225 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
|
226 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
|
227 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
|
228 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
|
229 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
|
230 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
|
231 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
|
232 |
735
e3c44dc8f488
merge common code of TitleIndex and WordIndex into _make_index
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
688
diff
changeset
|
233 # 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
|
234 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
|
235 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
|
236 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
|
237 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
238 index_letters = [] |
28
ef8b90110f33
WordIndex: make systempages excludeable
Thomas Waldmann <tw@waldmann-edv.de>
parents:
27
diff
changeset
|
239 current_letter = None |
1785
e54f99c9beba
make TitleIndex/WordIndex use the formatter
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1674
diff
changeset
|
240 output = [] |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
241 for word in all_words: |
28
ef8b90110f33
WordIndex: make systempages excludeable
Thomas Waldmann <tw@waldmann-edv.de>
parents:
27
diff
changeset
|
242 letter = wikiutil.getUnicodeIndexGroup(word) |
ef8b90110f33
WordIndex: make systempages excludeable
Thomas Waldmann <tw@waldmann-edv.de>
parents:
27
diff
changeset
|
243 if letter != current_letter: |
2286
01f05e74aa9c
Big PEP8 and whitespace cleanup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2226
diff
changeset
|
244 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
|
245 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
|
246 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
|
247 output.append(fmt.heading(0, 2)) |
28
ef8b90110f33
WordIndex: make systempages excludeable
Thomas Waldmann <tw@waldmann-edv.de>
parents:
27
diff
changeset
|
248 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
|
249 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
|
250 index_letters.append(letter) |
1958
aa3e4fb31c62
WordIndex/TitleIndex: fix wrong attr name
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1924
diff
changeset
|
251 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
|
252 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
|
253 output.append(fmt.strong(1)) |
e54f99c9beba
make TitleIndex/WordIndex use the formatter
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1674
diff
changeset
|
254 output.append(word) |
e54f99c9beba
make TitleIndex/WordIndex use the formatter
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1674
diff
changeset
|
255 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
|
256 |
1785
e54f99c9beba
make TitleIndex/WordIndex use the formatter
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1674
diff
changeset
|
257 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
|
258 links.sort() |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
259 last_page = None |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
260 for name in links: |
28
ef8b90110f33
WordIndex: make systempages excludeable
Thomas Waldmann <tw@waldmann-edv.de>
parents:
27
diff
changeset
|
261 if name == last_page: |
ef8b90110f33
WordIndex: make systempages excludeable
Thomas Waldmann <tw@waldmann-edv.de>
parents:
27
diff
changeset
|
262 continue |
1785
e54f99c9beba
make TitleIndex/WordIndex use the formatter
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1674
diff
changeset
|
263 output.append(fmt.listitem(1)) |
e54f99c9beba
make TitleIndex/WordIndex use the formatter
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1674
diff
changeset
|
264 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
|
265 output.append(fmt.listitem(0)) |
e54f99c9beba
make TitleIndex/WordIndex use the formatter
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1674
diff
changeset
|
266 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
|
267 |
1785
e54f99c9beba
make TitleIndex/WordIndex use the formatter
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1674
diff
changeset
|
268 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
|
269 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
|
270 def letter_link(ch): |
2286
01f05e74aa9c
Big PEP8 and whitespace cleanup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2226
diff
changeset
|
271 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
|
272 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
|
273 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
|
274 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
|
275 |
1785
e54f99c9beba
make TitleIndex/WordIndex use the formatter
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1674
diff
changeset
|
276 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
|
277 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
|
278 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
|
279 |
1785
e54f99c9beba
make TitleIndex/WordIndex use the formatter
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1674
diff
changeset
|
280 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
|
281 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
|
282 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
|
283 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
284 |
2515
41bc022c2160
use new arg parser for buitlin macros
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2513
diff
changeset
|
285 def macro_TitleIndex(self): |
41bc022c2160
use new arg parser for buitlin macros
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2513
diff
changeset
|
286 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
|
287 |
2515
41bc022c2160
use new arg parser for buitlin macros
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2513
diff
changeset
|
288 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
|
289 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
|
290 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
|
291 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
|
292 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
|
293 |
2520
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
294 def macro_GoTo(self): |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
295 """ 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
|
296 |
2520
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
297 @rtype: unicode |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
298 @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
|
299 """ |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
300 _ = self._ |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
301 html = [ |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
302 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
|
303 u'<div>', |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
304 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
|
305 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
|
306 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
|
307 u'</div>', |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
308 u'</form>', |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
309 ] |
02766a483465
builtin macros: just reorder, no other changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2519
diff
changeset
|
310 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
|
311 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
|
312 |
2530
0a8fc701e40d
use the new automatic macro arg conversion in some internal macros
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2529
diff
changeset
|
313 def macro_Icon(self, icon=u''): |
0a8fc701e40d
use the new automatic macro arg conversion in some internal macros
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2529
diff
changeset
|
314 # empty icon name isn't valid either |
0a8fc701e40d
use the new automatic macro arg conversion in some internal macros
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2529
diff
changeset
|
315 if not icon: |
0a8fc701e40d
use the new automatic macro arg conversion in some internal macros
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2529
diff
changeset
|
316 raise ValueError("You need to give a non-empty icon name") |
2515
41bc022c2160
use new arg parser for buitlin macros
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2513
diff
changeset
|
317 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
|
318 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
319 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
|
320 _ = 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
|
321 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
|
322 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
|
323 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
|
324 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
|
325 # 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
|
326 # 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
|
327 try: |
950
4eb66637ccd0
whitespace-only cleanup, small style changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
919
diff
changeset
|
328 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
|
329 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
|
330 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
|
331 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
|
332 if tz: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
333 sign = tz[0] |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
334 if sign in '+-': |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
335 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
|
336 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
|
337 if sign == '-': |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
338 tzoffset = -tzoffset |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
339 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
|
340 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
|
341 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
|
342 # 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
|
343 # 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
|
344 try: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
345 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
|
346 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
|
347 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
|
348 else: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
349 # 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
|
350 try: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
351 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
|
352 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
|
353 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
|
354 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
|
355 |
2515
41bc022c2160
use new arg parser for buitlin macros
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2513
diff
changeset
|
356 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
|
357 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
|
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_DateTime(self, stamp=None): |
41bc022c2160
use new arg parser for buitlin macros
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2513
diff
changeset
|
360 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
|
361 |
2517
50b12f981890
builtin macros: fix bug, handle errors giving help to users
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2515
diff
changeset
|
362 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
|
363 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
|
364 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
|
365 |
2536
72a31f09d5a1
allow types as defaults for macro args to force conversion to that type
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2532
diff
changeset
|
366 def macro_MailTo(self, email=unicode, text=u''): |
2530
0a8fc701e40d
use the new automatic macro arg conversion in some internal macros
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
2529
diff
changeset
|
367 if not email: |
2517
50b12f981890
builtin macros: fix bug, handle errors giving help to users
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2515
diff
changeset
|
368 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
|
369 |
753
d48400378d4c
fixed MailTo macro import
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
735
diff
changeset
|
370 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
|
371 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
372 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
|
373 # 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
|
374 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
|
375 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
|
376 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
|
377 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
|
378 else: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
379 # 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
|
380 # 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
|
381 |
1674
a45b23e6217d
minor MailTo macro change from docbook branch
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1550
diff
changeset
|
382 if text: |
2700
a0b85757e5d0
MailTo macro: do fix at right place, cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2687
diff
changeset
|
383 result = self.formatter.text(text + " ") |
a0b85757e5d0
MailTo macro: do fix at right place, cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2687
diff
changeset
|
384 else: |
a0b85757e5d0
MailTo macro: do fix at right place, cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2687
diff
changeset
|
385 result = '' |
2286
01f05e74aa9c
Big PEP8 and whitespace cleanup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2226
diff
changeset
|
386 |
2700
a0b85757e5d0
MailTo macro: do fix at right place, cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2687
diff
changeset
|
387 result += (self.formatter.code(1) + |
a0b85757e5d0
MailTo macro: do fix at right place, cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2687
diff
changeset
|
388 self.formatter.text("<%s>" % email) + |
a0b85757e5d0
MailTo macro: do fix at right place, cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2687
diff
changeset
|
389 self.formatter.code(0)) |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
390 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
391 return result |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
392 |
2517
50b12f981890
builtin macros: fix bug, handle errors giving help to users
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2515
diff
changeset
|
393 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
|
394 page = wikiutil.get_unicode(self.request, page, 'page') |
2786
a16ba90d1f7e
macro.__init__.py:GetVal bug fixed of respecting acls and test added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
2733
diff
changeset
|
395 if not self.request.user.may.read(page): |
a16ba90d1f7e
macro.__init__.py:GetVal bug fixed of respecting acls and test added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
2733
diff
changeset
|
396 raise ValueError("You don't have enough rights on this page") |
2517
50b12f981890
builtin macros: fix bug, handle errors giving help to users
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2515
diff
changeset
|
397 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
|
398 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
|
399 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
|
400 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
|
401 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
|
402 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
|
403 |