Mercurial > moin > 1.9
annotate MoinMoin/PageEditor.py @ 2841:93be75db2051
handle out-of-space errors in PageEditor and caching, avoid 'current' corruption (thanks to TheAnarcat)
author | Thomas Waldmann <tw AT waldmann-edv DOT de> |
---|---|
date | Wed, 19 Sep 2007 21:39:48 +0200 |
parents | c4ab7c81146d |
children | 384135a7bb0a |
rev | line source |
---|---|
1851
d4274455706a
PageEditor.CopyPage log entry for pages which could not be saved by PageEditor.saveText
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1850
diff
changeset
|
1 # -*- coding: iso-8859-1 -*- |
0
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 - PageEditor class |
2286
01f05e74aa9c
Big PEP8 and whitespace cleanup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2189
diff
changeset
|
4 |
1909
be140a589f11
improved some module docstrings
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1896
diff
changeset
|
5 PageEditor is used for r/w access to a wiki page (edit, rename, delete operations). |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
6 |
1961
4e528d291fc0
Page*.py: improve docstrings
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1956
diff
changeset
|
7 TODO: |
4e528d291fc0
Page*.py: improve docstrings
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1956
diff
changeset
|
8 * See comments in Page.py, most apply here, too. |
4e528d291fc0
Page*.py: improve docstrings
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1956
diff
changeset
|
9 * The editor code should be modularized so we will be able to use it for any |
4e528d291fc0
Page*.py: improve docstrings
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1956
diff
changeset
|
10 text/* mimetype data with some special features enabled depending on the |
4e528d291fc0
Page*.py: improve docstrings
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1956
diff
changeset
|
11 mimetype (e.g. enable wiki markup help when editing wiki mimetype). |
2286
01f05e74aa9c
Big PEP8 and whitespace cleanup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2189
diff
changeset
|
12 |
1918
bb2e053067fb
fixing copyright headers: remove umlauts (encoding troubles), make epydoc compatible, reformat
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1909
diff
changeset
|
13 @copyright: 2000-2004 by Juergen Hermann <jh@web.de>, |
bb2e053067fb
fixing copyright headers: remove umlauts (encoding troubles), make epydoc compatible, reformat
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1909
diff
changeset
|
14 2005-2007 by MoinMoin:ThomasWaldmann, |
1993
93877b7d87b9
fixing copyright headers:unified my name
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1961
diff
changeset
|
15 2007 by MoinMoin:ReimarBauer |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
16 @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
|
17 """ |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
18 |
1792
c907c2942372
Eclipse PyDev Check: fixed lots of its errors and warnings
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1791
diff
changeset
|
19 import os, time, codecs, errno |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
20 |
2336 | 21 |
1792
c907c2942372
Eclipse PyDev Check: fixed lots of its errors and warnings
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1791
diff
changeset
|
22 from MoinMoin import caching, config, user, wikiutil, error |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
23 from MoinMoin.Page import Page |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
24 from MoinMoin.widget import html |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
25 from MoinMoin.widget.dialog import Status |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
26 from MoinMoin.logfile import editlog, eventlog |
2595
5e7b45489430
moved python2.3/2.4 compatibility code to MoinMoin.support.python_compatibility (thanks to Heinrich Wendel)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2469
diff
changeset
|
27 from MoinMoin.support.python_compatibility import set |
1791
6dd2e29acffe
Eclipse PyDev Check: fixed lots of its errors and warnings
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1784
diff
changeset
|
28 from MoinMoin.util import filesys, timefuncs, web |
750
f158c4e8fea2
moved mail related functions to MoinMoin.mail
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
747
diff
changeset
|
29 from MoinMoin.mail import sendmail |
2396
cf85b6916d17
Add a PagePreSave event; abort page save if handlers return Abort.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2385
diff
changeset
|
30 from MoinMoin.events import PageDeletedEvent, PageRenamedEvent, PageCopiedEvent |
cf85b6916d17
Add a PagePreSave event; abort page save if handlers return Abort.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2385
diff
changeset
|
31 from MoinMoin.events import PagePreSaveEvent, Abort, send_event |
2318
062b76cf8d48
Introduce an base EventResult class for event handler return values.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2189
diff
changeset
|
32 import MoinMoin.events.notification as notification |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
33 |
1140
3155f908de85
Refactored conflict markers.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents:
1069
diff
changeset
|
34 # used for merging |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
35 conflict_markers = ("\n---- /!\\ '''Edit conflict - other version:''' ----\n", |
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
36 "\n---- /!\\ '''Edit conflict - your version:''' ----\n", |
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
37 "\n---- /!\\ '''End of edit conflict''' ----\n") |
1140
3155f908de85
Refactored conflict markers.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents:
1069
diff
changeset
|
38 |
3155f908de85
Refactored conflict markers.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents:
1069
diff
changeset
|
39 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
40 ############################################################################# |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
41 ### Javascript code for editor page |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
42 ############################################################################# |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
43 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
44 # we avoid the "--" operator to make this XHTML happy! |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
45 _countdown_js = """ |
194
722b8f648630
Use addLoadEvent instead of window.onload=..., move countdown JS to external file
Thomas Waldmann <tw@waldmann-edv.de>
parents:
191
diff
changeset
|
46 %(countdown_script)s |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
47 <script type="text/javascript"> |
194
722b8f648630
Use addLoadEvent instead of window.onload=..., move countdown JS to external file
Thomas Waldmann <tw@waldmann-edv.de>
parents:
191
diff
changeset
|
48 var countdown_timeout_min = %(lock_timeout)s |
722b8f648630
Use addLoadEvent instead of window.onload=..., move countdown JS to external file
Thomas Waldmann <tw@waldmann-edv.de>
parents:
191
diff
changeset
|
49 var countdown_lock_expire = "%(lock_expire)s" |
722b8f648630
Use addLoadEvent instead of window.onload=..., move countdown JS to external file
Thomas Waldmann <tw@waldmann-edv.de>
parents:
191
diff
changeset
|
50 var countdown_lock_mins = "%(lock_mins)s" |
722b8f648630
Use addLoadEvent instead of window.onload=..., move countdown JS to external file
Thomas Waldmann <tw@waldmann-edv.de>
parents:
191
diff
changeset
|
51 var countdown_lock_secs = "%(lock_secs)s" |
722b8f648630
Use addLoadEvent instead of window.onload=..., move countdown JS to external file
Thomas Waldmann <tw@waldmann-edv.de>
parents:
191
diff
changeset
|
52 addLoadEvent(countdown) |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
53 </script> |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
54 """ |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
55 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
56 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
57 ############################################################################# |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
58 ### PageEditor - Edit pages |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
59 ############################################################################# |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
60 class PageEditor(Page): |
1961
4e528d291fc0
Page*.py: improve docstrings
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1956
diff
changeset
|
61 """ Editor for a wiki page. """ |
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 # exceptions for .saveText() |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
64 class SaveError(error.Error): |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
65 pass |
2698
0a6f74a01646
Fix revert action and xmlrpc call.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2595
diff
changeset
|
66 class RevertError(SaveError): |
0a6f74a01646
Fix revert action and xmlrpc call.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2595
diff
changeset
|
67 pass |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
68 class AccessDenied(SaveError): |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
69 pass |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
70 class Immutable(AccessDenied): |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
71 pass |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
72 class NoAdmin(AccessDenied): |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
73 pass |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
74 class EmptyPage(SaveError): |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
75 pass |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
76 class Unchanged(SaveError): |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
77 pass |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
78 class EditConflict(SaveError): |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
79 pass |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
80 class CouldNotLock(SaveError): |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
81 pass |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
82 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
83 def __init__(self, request, page_name, **keywords): |
1961
4e528d291fc0
Page*.py: improve docstrings
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1956
diff
changeset
|
84 """ Create page editor object. |
2286
01f05e74aa9c
Big PEP8 and whitespace cleanup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2189
diff
changeset
|
85 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
86 @param page_name: name of the page |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
87 @param request: the request object |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
88 @keyword do_revision_backup: if 0, suppress making a page backup per revision |
1640
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
89 @keyword do_editor_backup: if 0, suppress saving of draft copies |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
90 @keyword uid_override: override user id and name (default None) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
91 """ |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
92 Page.__init__(self, request, page_name, **keywords) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
93 self._ = request.getText |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
94 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
95 self.do_revision_backup = keywords.get('do_revision_backup', 1) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
96 self.do_editor_backup = keywords.get('do_editor_backup', 1) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
97 self.uid_override = keywords.get('uid_override', None) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
98 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
99 self.lock = PageLock(self) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
100 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
101 def mergeEditConflict(self, origrev): |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
102 """ Try to merge current page version with new version the user tried to save |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
103 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
104 @param origrev: the original revision the user was editing |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
105 @rtype: bool |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
106 @return: merge success status |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
107 """ |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
108 from MoinMoin.util import diff3 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
109 allow_conflicts = 1 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
110 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
111 # Get current editor text |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
112 savetext = self.get_raw_body() |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
113 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
114 # The original text from the revision the user was editing |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
115 original_text = Page(self.request, self.page_name, rev=origrev).get_raw_body() |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
116 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
117 # The current revision someone else saved |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
118 saved_text = Page(self.request, self.page_name).get_raw_body() |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
119 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
120 # And try to merge all into one with edit conflict separators |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
121 verynewtext = diff3.text_merge(original_text, saved_text, savetext, |
1140
3155f908de85
Refactored conflict markers.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents:
1069
diff
changeset
|
122 allow_conflicts, *conflict_markers) |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
123 if verynewtext: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
124 self.set_raw_body(verynewtext) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
125 return True |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
126 |
779
9834dda36973
Added conflict icon in RecentChanges, refactored conflict handling in the code. Translators, esp. german translators!, there seems to be an outdated string. You will see it on the editing conflict.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents:
682
diff
changeset
|
127 # this should never happen, except for empty pages |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
128 return False |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
129 |
542
2f495a1be4c7
confirm leaving JS added to gui editor, TODO: add flgChange update JS code
Thomas Waldmann <tw@waldmann-edv.de>
parents:
526
diff
changeset
|
130 def sendconfirmleaving(self): |
1961
4e528d291fc0
Page*.py: improve docstrings
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1956
diff
changeset
|
131 """ Prevents moving away from the page without saving it. """ |
542
2f495a1be4c7
confirm leaving JS added to gui editor, TODO: add flgChange update JS code
Thomas Waldmann <tw@waldmann-edv.de>
parents:
526
diff
changeset
|
132 _ = self._ |
2f495a1be4c7
confirm leaving JS added to gui editor, TODO: add flgChange update JS code
Thomas Waldmann <tw@waldmann-edv.de>
parents:
526
diff
changeset
|
133 self.request.write(u'''\ |
2f495a1be4c7
confirm leaving JS added to gui editor, TODO: add flgChange update JS code
Thomas Waldmann <tw@waldmann-edv.de>
parents:
526
diff
changeset
|
134 <script type="text/javascript"> |
2f495a1be4c7
confirm leaving JS added to gui editor, TODO: add flgChange update JS code
Thomas Waldmann <tw@waldmann-edv.de>
parents:
526
diff
changeset
|
135 var flgChange = false; |
2f495a1be4c7
confirm leaving JS added to gui editor, TODO: add flgChange update JS code
Thomas Waldmann <tw@waldmann-edv.de>
parents:
526
diff
changeset
|
136 function confirmleaving() { |
2f495a1be4c7
confirm leaving JS added to gui editor, TODO: add flgChange update JS code
Thomas Waldmann <tw@waldmann-edv.de>
parents:
526
diff
changeset
|
137 if ( flgChange ) |
2f495a1be4c7
confirm leaving JS added to gui editor, TODO: add flgChange update JS code
Thomas Waldmann <tw@waldmann-edv.de>
parents:
526
diff
changeset
|
138 return "%s"; |
2f495a1be4c7
confirm leaving JS added to gui editor, TODO: add flgChange update JS code
Thomas Waldmann <tw@waldmann-edv.de>
parents:
526
diff
changeset
|
139 } |
2f495a1be4c7
confirm leaving JS added to gui editor, TODO: add flgChange update JS code
Thomas Waldmann <tw@waldmann-edv.de>
parents:
526
diff
changeset
|
140 </script> |
2f495a1be4c7
confirm leaving JS added to gui editor, TODO: add flgChange update JS code
Thomas Waldmann <tw@waldmann-edv.de>
parents:
526
diff
changeset
|
141 ''' % _("Your changes are not saved!")) |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
142 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
143 def sendEditor(self, **kw): |
1961
4e528d291fc0
Page*.py: improve docstrings
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1956
diff
changeset
|
144 """ Send the editor form page. |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
145 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
146 @keyword preview: if given, show this text in preview mode |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
147 @keyword staytop: don't go to #preview |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
148 @keyword comment: comment field (when preview is true) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
149 """ |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
150 from MoinMoin import i18n |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
151 try: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
152 from MoinMoin.action import SpellCheck |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
153 except ImportError: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
154 SpellCheck = None |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
155 request = self.request |
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
156 form = request.form |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
157 _ = self._ |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
158 |
199
4e9b5e9610da
fixed editor preview throwing away page content for new pages
Thomas Waldmann <tw@waldmann-edv.de>
parents:
194
diff
changeset
|
159 raw_body = '' |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
160 msg = None |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
161 conflict_msg = None |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
162 edit_lock_message = None |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
163 preview = kw.get('preview', None) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
164 staytop = kw.get('staytop', 0) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
165 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
166 from MoinMoin.formatter.text_html import Formatter |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
167 request.formatter = Formatter(request, store_pagelinks=1) |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
168 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
169 # check edit permissions |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
170 if not request.user.may.write(self.page_name): |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
171 msg = _('You are not allowed to edit this page.') |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
172 elif not self.isWritable(): |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
173 msg = _('Page is immutable!') |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
174 elif self.rev: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
175 # Trying to edit an old version, this is not possible via |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
176 # the web interface, but catch it just in case... |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
177 msg = _('Cannot edit old revisions!') |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
178 else: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
179 try: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
180 # try to acquire edit lock |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
181 ok, edit_lock_message = self.lock.acquire() |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
182 if not ok: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
183 # failed to get the lock |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
184 if preview is not None: |
36
eb3b18ffb28b
fixed some english strings, better converter debugging msgs, move lineno anchors to formatter
Thomas Waldmann <tw@waldmann-edv.de>
parents:
33
diff
changeset
|
185 edit_lock_message = _('The lock you held timed out. Be prepared for editing conflicts!' |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
186 ) + "<br>" + edit_lock_message |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
187 else: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
188 msg = edit_lock_message |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
189 except OSError, err: |
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:
1919
diff
changeset
|
190 if err.errno == errno.ENAMETOOLONG: |
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:
1919
diff
changeset
|
191 msg = _("Page name is too long, try shorter 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:
1919
diff
changeset
|
192 else: |
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:
1919
diff
changeset
|
193 raise |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
194 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
195 # Did one of the prechecks fail? |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
196 if msg: |
1777
ed44b93599b5
remove unneeded request param from page.send_page()
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1776
diff
changeset
|
197 self.send_page(msg=msg) |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
198 return |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
199 |
2707
2d93b9a28ea3
PageEditor.sendEditor: bug fix of emitting http_headers twice if edit_locking is set to 'lock x'
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
2698
diff
changeset
|
200 # Emmit http_headers after checks (send_page) |
2d93b9a28ea3
PageEditor.sendEditor: bug fix of emitting http_headers twice if edit_locking is set to 'lock x'
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
2698
diff
changeset
|
201 request.disableHttpCaching(level=2) |
2d93b9a28ea3
PageEditor.sendEditor: bug fix of emitting http_headers twice if edit_locking is set to 'lock x'
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
2698
diff
changeset
|
202 request.emit_http_headers() |
2d93b9a28ea3
PageEditor.sendEditor: bug fix of emitting http_headers twice if edit_locking is set to 'lock x'
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
2698
diff
changeset
|
203 |
1640
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
204 # check if we want to load a draft |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
205 use_draft = None |
1868
64507f46beb2
reduce usage of has_key()
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1866
diff
changeset
|
206 if 'button_load_draft' in form: |
1640
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
207 wanted_draft_timestamp = int(form.get('draft_ts', ['0'])[0]) |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
208 if wanted_draft_timestamp: |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
209 draft = self._load_draft() |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
210 if draft is not None: |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
211 draft_timestamp, draft_rev, draft_text = draft |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
212 if draft_timestamp == wanted_draft_timestamp: |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
213 use_draft = draft_text |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
214 |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
215 # Check for draft / normal / preview submit |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
216 if use_draft is not None: |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
217 title = _('Draft of "%(pagename)s"') |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
218 # Propagate original revision |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
219 rev = int(form['draft_rev'][0]) |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
220 self.set_raw_body(use_draft, modified=1) |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
221 preview = use_draft |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
222 elif preview is None: |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
223 title = _('Edit "%(pagename)s"') |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
224 else: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
225 title = _('Preview of "%(pagename)s"') |
1640
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
226 # Propagate original revision |
1682
30116d7d098a
request.rev is either revision integer (when given in form) or None
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1640
diff
changeset
|
227 rev = request.rev |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
228 self.set_raw_body(preview, modified=1) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
229 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
230 # send header stuff |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
231 lock_timeout = self.lock.timeout / 60 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
232 lock_page = wikiutil.escape(self.page_name, quote=1) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
233 lock_expire = _("Your edit lock on %(lock_page)s has expired!") % {'lock_page': lock_page} |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
234 lock_mins = _("Your edit lock on %(lock_page)s will expire in # minutes.") % {'lock_page': lock_page} |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
235 lock_secs = _("Your edit lock on %(lock_page)s will expire in # seconds.") % {'lock_page': lock_page} |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
236 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
237 # get request parameters |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
238 try: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
239 text_rows = int(form['rows'][0]) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
240 except StandardError: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
241 text_rows = self.cfg.edit_rows |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
242 if request.user.valid: |
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
243 text_rows = int(request.user.edit_rows) |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
244 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
245 if preview is not None: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
246 # Check for editing conflicts |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
247 if not self.exists(): |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
248 # page does not exist, are we creating it? |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
249 if rev: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
250 conflict_msg = _('Someone else deleted this page while you were editing!') |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
251 elif rev != self.current_rev(): |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
252 conflict_msg = _('Someone else changed this page while you were editing!') |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
253 if self.mergeEditConflict(rev): |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
254 conflict_msg = _("""Someone else saved this page while you were editing! |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
255 Please review the page and save then. Do not save this page as it is!""") |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
256 rev = self.current_rev() |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
257 if conflict_msg: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
258 # We don't show preview when in conflict |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
259 preview = None |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
260 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
261 elif self.exists(): |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
262 # revision of existing page |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
263 rev = self.current_rev() |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
264 else: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
265 # page creation |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
266 rev = 0 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
267 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
268 # Page editing is done using user language |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
269 request.setContentLanguage(request.lang) |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
270 |
1640
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
271 # Get the text body for the editor field. |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
272 # TODO: what about deleted pages? show the text of the last revision or use the template? |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
273 if preview is not None: |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
274 raw_body = self.get_raw_body() |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
275 if use_draft: |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
276 request.write(_("[Content loaded from draft]"), '<br>') |
1640
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
277 elif self.exists(): |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
278 # If the page exists, we get the text from the page. |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
279 # TODO: maybe warn if template argument was ignored because the page exists? |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
280 raw_body = self.get_raw_body() |
1868
64507f46beb2
reduce usage of has_key()
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1866
diff
changeset
|
281 elif 'template' in form: |
1640
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
282 # If the page does not exists, we try to get the content from the template parameter. |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
283 template_page = wikiutil.unquoteWikiname(form['template'][0]) |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
284 if request.user.may.read(template_page): |
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
285 raw_body = Page(request, template_page).get_raw_body() |
1640
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
286 if raw_body: |
2286
01f05e74aa9c
Big PEP8 and whitespace cleanup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2189
diff
changeset
|
287 request.write(_("[Content of new page loaded from %s]") % (template_page, ), '<br>') |
1640
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
288 else: |
2286
01f05e74aa9c
Big PEP8 and whitespace cleanup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2189
diff
changeset
|
289 request.write(_("[Template %s not found]") % (template_page, ), '<br>') |
1640
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
290 else: |
2286
01f05e74aa9c
Big PEP8 and whitespace cleanup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2189
diff
changeset
|
291 request.write(_("[You may not read %s]") % (template_page, ), '<br>') |
1640
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
292 |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
293 # Make backup on previews - but not for new empty pages |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
294 if not use_draft and preview and raw_body: |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
295 self._save_draft(raw_body, rev) |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
296 |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
297 draft_message = None |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
298 loadable_draft = False |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
299 if preview is None: |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
300 draft = self._load_draft() |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
301 if draft is not None: |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
302 draft_timestamp, draft_rev, draft_text = draft |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
303 if draft_text != raw_body: |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
304 loadable_draft = True |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
305 page_rev = rev |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
306 draft_timestamp_str = request.user.getFormattedDateTime(draft_timestamp) |
2725
388204baf00f
change [[macro]] to <<macro>> in all built-in markup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2595
diff
changeset
|
307 draft_message = _(u"'''<<BR>>Your draft based on revision %(draft_rev)d (saved %(draft_timestamp_str)s) can be loaded instead of the current revision %(page_rev)d by using the load draft button - in case you lost your last edit somehow without saving it.''' A draft gets saved for you when you do a preview, cancel an edit or unsuccessfully save.") % locals() |
1640
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
308 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
309 # Setup status message |
1640
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
310 status = [kw.get('msg', ''), conflict_msg, edit_lock_message, draft_message] |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
311 status = [msg for msg in status if msg] |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
312 status = ' '.join(status) |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
313 status = Status(request, content=status) |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
314 |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
315 request.theme.send_title( |
1776
fc75423e26a8
remove unneeded request param from page.split_title()
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1716
diff
changeset
|
316 title % {'pagename': self.split_title(), }, |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
317 page=self, |
1779
224e2106ab89
call send_title with page kw arg, if available, not with pagename
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1777
diff
changeset
|
318 msg=status, |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
319 html_head=self.lock.locktype and ( |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
320 _countdown_js % { |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
321 'countdown_script': request.theme.externalScript('countdown'), |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
322 'lock_timeout': lock_timeout, |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
323 'lock_expire': lock_expire, |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
324 'lock_mins': lock_mins, |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
325 'lock_secs': lock_secs, |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
326 }) or '', |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
327 editor_mode=1, |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
328 ) |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
329 |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
330 request.write(request.formatter.startContent("content")) |
191
e5ca7fa46f2e
fixed Page(Graphical)Editor so that template param doesnt destroy existing pages
Thomas Waldmann <tw@waldmann-edv.de>
parents:
148
diff
changeset
|
331 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
332 # Generate default content for new pages |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
333 if not raw_body: |
2286
01f05e74aa9c
Big PEP8 and whitespace cleanup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2189
diff
changeset
|
334 raw_body = _('Describe %s here.') % (self.page_name, ) |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
335 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
336 # send form |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
337 request.write('<form id="editor" method="post" action="%s/%s#preview" onSubmit="flgChange = false;">' % ( |
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
338 request.getScriptname(), |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
339 wikiutil.quoteWikinameURL(self.page_name), |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
340 )) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
341 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
342 # yet another weird workaround for broken IE6 (it expands the text |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
343 # editor area to the right after you begin to type...). IE sucks... |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
344 # http://fplanque.net/2003/Articles/iecsstextarea/ |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
345 request.write('<fieldset style="border:none;padding:0;">') |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
346 |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
347 request.write(unicode(html.INPUT(type="hidden", name="action", value="edit"))) |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
348 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
349 # Send revision of the page our edit is based on |
2286
01f05e74aa9c
Big PEP8 and whitespace cleanup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2189
diff
changeset
|
350 request.write('<input type="hidden" name="rev" value="%d">' % (rev, )) |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
351 |
1573
1453513eaa7e
use tickets for editing, cfg.edit_ticketing, make tickets more safe, invalidate old tickets
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1565
diff
changeset
|
352 # Create and send a ticket, so we can check the POST |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
353 request.write('<input type="hidden" name="ticket" value="%s">' % wikiutil.createTicket(request)) |
1573
1453513eaa7e
use tickets for editing, cfg.edit_ticketing, make tickets more safe, invalidate old tickets
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1565
diff
changeset
|
354 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
355 # Save backto in a hidden input |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
356 backto = form.get('backto', [None])[0] |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
357 if backto: |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
358 request.write(unicode(html.INPUT(type="hidden", name="backto", value=backto))) |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
359 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
360 # button bar |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
361 button_spellcheck = (SpellCheck and |
127
df23ca172546
warn using onBeforeUnload when trying to trash unsaved content, text editor only, todo: gui editor
Thomas Waldmann <tw@waldmann-edv.de>
parents:
126
diff
changeset
|
362 '<input class="button" type="submit" name="button_spellcheck" value="%s" onClick="flgChange = false;">' |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
363 % _('Check Spelling')) or '' |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
364 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
365 save_button_text = _('Save Changes') |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
366 cancel_button_text = _('Cancel') |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
367 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
368 if self.cfg.page_license_enabled: |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
369 request.write('<p><em>', _( |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
370 """By hitting '''%(save_button_text)s''' you put your changes under the %(license_link)s. |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
371 If you don't want that, hit '''%(cancel_button_text)s''' to cancel your changes.""") % { |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
372 'save_button_text': save_button_text, |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
373 'cancel_button_text': cancel_button_text, |
1784
2668d470091f
wikiutil.getSysPage renamed to getLocalizedPage
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1779
diff
changeset
|
374 'license_link': wikiutil.getLocalizedPage(request, self.cfg.page_license_page).link_to(request), |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
375 }, '</em></p>') |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
376 |
518
e779addaf39a
partial fix for the gui switch button problem (at least it is not then when forced text is active)
Thomas Waldmann <tw@waldmann-edv.de>
parents:
490
diff
changeset
|
377 |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
378 request.write(''' |
127
df23ca172546
warn using onBeforeUnload when trying to trash unsaved content, text editor only, todo: gui editor
Thomas Waldmann <tw@waldmann-edv.de>
parents:
126
diff
changeset
|
379 <input class="button" type="submit" name="button_save" value="%s" onClick="flgChange = false;"> |
df23ca172546
warn using onBeforeUnload when trying to trash unsaved content, text editor only, todo: gui editor
Thomas Waldmann <tw@waldmann-edv.de>
parents:
126
diff
changeset
|
380 <input class="button" type="submit" name="button_preview" value="%s" onClick="flgChange = false;"> |
2286
01f05e74aa9c
Big PEP8 and whitespace cleanup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2189
diff
changeset
|
381 ''' % (save_button_text, _('Preview'), )) |
1640
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
382 |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
383 if not (request.cfg.editor_force and request.cfg.editor_default == 'text'): |
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
384 request.write(''' |
518
e779addaf39a
partial fix for the gui switch button problem (at least it is not then when forced text is active)
Thomas Waldmann <tw@waldmann-edv.de>
parents:
490
diff
changeset
|
385 <input id="switch2gui" style="display: none;" class="button" type="submit" name="button_switch" value="%s"> |
2286
01f05e74aa9c
Big PEP8 and whitespace cleanup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2189
diff
changeset
|
386 ''' % (_('GUI Mode'), )) |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
387 |
1640
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
388 if loadable_draft: |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
389 request.write(''' |
1640
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
390 <input class="button" type="submit" name="button_load_draft" value="%s" onClick="flgChange = false;"> |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
391 <input type="hidden" name="draft_ts" value="%d"> |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
392 <input type="hidden" name="draft_rev" value="%d"> |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
393 ''' % (_('Load Draft'), draft_timestamp, draft_rev)) |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
394 |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
395 request.write(''' |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
396 %s |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
397 <input class="button" type="submit" name="button_cancel" value="%s"> |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
398 <input type="hidden" name="editor" value="text"> |
2286
01f05e74aa9c
Big PEP8 and whitespace cleanup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2189
diff
changeset
|
399 ''' % (button_spellcheck, cancel_button_text, )) |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
400 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
401 # Add textarea with page text |
1880
b07b4c102d3d
began refactoring send_page(): processing instruction extraction, getting meta/data part of page only, fixed related problems with language detection. Removed lots of duplicate or unused code.
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1870
diff
changeset
|
402 self.sendconfirmleaving() |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
403 |
1880
b07b4c102d3d
began refactoring send_page(): processing instruction extraction, getting meta/data part of page only, fixed related problems with language detection. Removed lots of duplicate or unused code.
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1870
diff
changeset
|
404 lang = self.pi.get('language', request.cfg.language_default) |
127
df23ca172546
warn using onBeforeUnload when trying to trash unsaved content, text editor only, todo: gui editor
Thomas Waldmann <tw@waldmann-edv.de>
parents:
126
diff
changeset
|
405 |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
406 request.write( |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
407 u'''\ |
2708
5092edd82058
bug fix for non css browsers like w3m: for input fields set size of textarea and text to cols="80"
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
2707
diff
changeset
|
408 <textarea id="editor-textarea" name="savetext" lang="%(lang)s" dir="%(dir)s" rows="%(rows)d" cols="80" |
127
df23ca172546
warn using onBeforeUnload when trying to trash unsaved content, text editor only, todo: gui editor
Thomas Waldmann <tw@waldmann-edv.de>
parents:
126
diff
changeset
|
409 onChange="flgChange = true;" onKeyPress="flgChange = true;">\ |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
410 %(text)s\ |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
411 </textarea>''' % { |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
412 'lang': lang, |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
413 'dir': i18n.getDirection(lang), |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
414 'rows': text_rows, |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
415 'text': wikiutil.escape(raw_body) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
416 }) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
417 |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
418 request.write("<p>") |
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
419 request.write(_("Comment:"), |
2708
5092edd82058
bug fix for non css browsers like w3m: for input fields set size of textarea and text to cols="80"
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
2707
diff
changeset
|
420 ' <input id="editor-comment" type="text" name="comment" value="%s" size="80" maxlength="200"' |
127
df23ca172546
warn using onBeforeUnload when trying to trash unsaved content, text editor only, todo: gui editor
Thomas Waldmann <tw@waldmann-edv.de>
parents:
126
diff
changeset
|
421 ' onChange="flgChange = true;" onKeyPress="flgChange = true;">' % ( |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
422 wikiutil.escape(kw.get('comment', ''), 1), )) |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
423 request.write("</p>") |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
424 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
425 # Category selection |
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:
1919
diff
changeset
|
426 filterfn = self.cfg.cache.page_category_regex.search |
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:
1919
diff
changeset
|
427 cat_pages = request.rootpage.getPageList(filter=filterfn) |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
428 cat_pages.sort() |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
429 cat_pages = [wikiutil.pagelinkmarkup(p) for p in cat_pages] |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
430 cat_pages.insert(0, ('', _('<No addition>', formatted=False))) |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
431 request.write("<p>") |
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
432 request.write(_('Add to: %(category)s') % { |
1791
6dd2e29acffe
Eclipse PyDev Check: fixed lots of its errors and warnings
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1784
diff
changeset
|
433 'category': unicode(web.makeSelection('category', cat_pages)), |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
434 }) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
435 |
18
316340dd9a7f
remove subscribe icon in classic when no mail is enabled. fix check for sendmail.
Thomas Waldmann <tw@waldmann-edv.de>
parents:
0
diff
changeset
|
436 if self.cfg.mail_enabled: |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
437 request.write(''' |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
438 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
439 <input type="checkbox" name="trivial" id="chktrivial" value="1" %(checked)s> |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
440 <label for="chktrivial">%(label)s</label> ''' % { |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
441 'checked': ('', 'checked')[form.get('trivial', ['0'])[0] == '1'], |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
442 'label': _("Trivial change"), |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
443 }) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
444 |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
445 request.write(''' |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
446 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
447 <input type="checkbox" name="rstrip" id="chkrstrip" value="1" %(checked)s> |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
448 <label for="chkrstrip">%(label)s</label> |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
449 ''' % { |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
450 'checked': ('', 'checked')[form.get('rstrip', ['0'])[0] == '1'], |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
451 'label': _('Remove trailing whitespace from each line') |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
452 }) |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
453 request.write("</p>") |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
454 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
455 badwords_re = None |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
456 if preview is not None: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
457 if SpellCheck and ( |
1868
64507f46beb2
reduce usage of has_key()
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1866
diff
changeset
|
458 'button_spellcheck' in form or |
64507f46beb2
reduce usage of has_key()
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1866
diff
changeset
|
459 'button_newwords' in form): |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
460 badwords, badwords_re, msg = SpellCheck.checkSpelling(self, request, own_form=0) |
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
461 request.write("<p>%s</p>" % msg) |
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
462 request.write('</fieldset>') |
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
463 request.write("</form>") |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
464 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
465 # QuickHelp originally by Georg Mischler <schorsch@lightingwiki.com> |
1880
b07b4c102d3d
began refactoring send_page(): processing instruction extraction, getting meta/data part of page only, fixed related problems with language detection. Removed lots of duplicate or unused code.
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1870
diff
changeset
|
466 markup = self.pi['format'] or request.cfg.default_markup |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
467 quickhelp = request.cfg.editor_quickhelp.get(markup, "") |
526
d0dba03190b6
cfg.editor_quickhelp to make quickhelp work correctly and configurably for default markup at least
Thomas Waldmann <tw@waldmann-edv.de>
parents:
518
diff
changeset
|
468 if quickhelp: |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
469 request.write(request.formatter.div(1, id="editor-help")) |
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
470 request.write(_(quickhelp)) |
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
471 request.write(request.formatter.div(0)) |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
472 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
473 if preview is not None: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
474 if staytop: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
475 content_id = 'previewbelow' |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
476 else: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
477 content_id = 'preview' |
1777
ed44b93599b5
remove unneeded request param from page.send_page()
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1776
diff
changeset
|
478 self.send_page(content_id=content_id, content_only=1, hilite_re=badwords_re) |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
479 |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
480 request.write(request.formatter.endContent()) |
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
481 request.theme.send_footer(self.page_name) |
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
482 request.theme.send_closing_html() |
617
cf420addd95c
removed MoinMoinNoFooter at many places, added call to theme.send_closing_html() where needed
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
616
diff
changeset
|
483 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
484 def sendCancel(self, newtext, rev): |
1961
4e528d291fc0
Page*.py: improve docstrings
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1956
diff
changeset
|
485 """ User clicked on Cancel button. |
4e528d291fc0
Page*.py: improve docstrings
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1956
diff
changeset
|
486 If edit locking is active, delete the current lock file. |
1916
d41e6ef31c0e
PageEditor.copyPage: write access checked on old page instead of the copied one
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1909
diff
changeset
|
487 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
488 @param newtext: the edited text (which has been cancelled) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
489 @param rev: not used!? |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
490 """ |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
491 request = self.request |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
492 _ = self._ |
1640
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
493 self._save_draft(newtext, rev) # shall we really save a draft on CANCEL? |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
494 self.lock.release() |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
495 |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
496 backto = request.form.get('backto', [None])[0] |
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
497 page = backto and Page(request, backto) or self |
1777
ed44b93599b5
remove unneeded request param from page.send_page()
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1776
diff
changeset
|
498 page.send_page(msg=_('Edit was cancelled.')) |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
499 |
1850
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
500 def copyPage(self, newpagename, comment=None): |
1961
4e528d291fc0
Page*.py: improve docstrings
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1956
diff
changeset
|
501 """ Copy the current version of the page (keeping the backups, logs and attachments). |
1916
d41e6ef31c0e
PageEditor.copyPage: write access checked on old page instead of the copied one
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1909
diff
changeset
|
502 |
1850
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
503 @param comment: Comment given by user |
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
504 @rtype: unicode |
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
505 @return: success flag, error message |
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
506 """ |
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
507 request = self.request |
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
508 _ = self._ |
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
509 |
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
510 if not newpagename: |
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
511 return False, _("You can't copy to an empty pagename.") |
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
512 |
1896
1de612a8c553
PageEditor: CopyPage bug fixed check write rights
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1895
diff
changeset
|
513 if not self.request.user.may.write(newpagename): |
1de612a8c553
PageEditor: CopyPage bug fixed check write rights
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1895
diff
changeset
|
514 return False, _('You are not allowed to copy this page!') |
1916
d41e6ef31c0e
PageEditor.copyPage: write access checked on old page instead of the copied one
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1909
diff
changeset
|
515 |
1850
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
516 newpage = PageEditor(request, newpagename) |
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
517 |
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
518 pageexists_error = _("""'''A page with the name {{{'%s'}}} already exists.''' |
2830
c4ab7c81146d
Fixed XSS issue in RenamePage/DeletePage action
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2754
diff
changeset
|
519 |
c4ab7c81146d
Fixed XSS issue in RenamePage/DeletePage action
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2754
diff
changeset
|
520 Try a different name.""") % (wikiutil.escape(newpagename), ) |
1850
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
521 |
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
522 # Check whether a page with the new name already exists |
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
523 if newpage.exists(includeDeleted=1): |
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
524 return False, pageexists_error |
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
525 |
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
526 # Get old page text |
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
527 savetext = self.get_raw_body() |
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
528 |
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
529 oldpath = self.getPagePath(check_create=0) |
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
530 newpath = newpage.getPagePath(check_create=0) |
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
531 |
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
532 # Copy page |
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
533 # NOTE: might fail if another process created newpagename just |
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
534 try: |
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
535 filesys.copytree(oldpath, newpath) |
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
536 self.error = None |
1851
d4274455706a
PageEditor.CopyPage log entry for pages which could not be saved by PageEditor.saveText
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1850
diff
changeset
|
537 if not comment: |
d4274455706a
PageEditor.CopyPage log entry for pages which could not be saved by PageEditor.saveText
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1850
diff
changeset
|
538 comment = u"## page was copied from %s" % self.page_name |
2036
8f709cef5aa5
Page.getACL: don't cache acls for nonexisting pages. PageEditor.copyPage tests now the newpagename
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1993
diff
changeset
|
539 if request.user.may.write(newpagename): |
8f709cef5aa5
Page.getACL: don't cache acls for nonexisting pages. PageEditor.copyPage tests now the newpagename
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1993
diff
changeset
|
540 # Save page text with a comment about the old name and log entry |
1850
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
541 savetext = u"## page was copied from %s\n%s" % (self.page_name, savetext) |
2385
53fbdf5899ff
Use the event handling framework to (re)generate xapian indexes.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2336
diff
changeset
|
542 newpage.saveText(savetext, 0, comment=comment, extra=self.page_name, action='SAVE', notify=False) |
1851
d4274455706a
PageEditor.CopyPage log entry for pages which could not be saved by PageEditor.saveText
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1850
diff
changeset
|
543 else: |
d4274455706a
PageEditor.CopyPage log entry for pages which could not be saved by PageEditor.saveText
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1850
diff
changeset
|
544 # if user is not able to write to the page itselfs we set a log entry only |
d4274455706a
PageEditor.CopyPage log entry for pages which could not be saved by PageEditor.saveText
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1850
diff
changeset
|
545 from MoinMoin import packages |
d4274455706a
PageEditor.CopyPage log entry for pages which could not be saved by PageEditor.saveText
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1850
diff
changeset
|
546 rev = newpage.current_rev() |
d4274455706a
PageEditor.CopyPage log entry for pages which could not be saved by PageEditor.saveText
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1850
diff
changeset
|
547 packages.edit_logfile_append(self, newpagename, newpath, rev, 'SAVENEW', logname='edit-log', |
d4274455706a
PageEditor.CopyPage log entry for pages which could not be saved by PageEditor.saveText
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1850
diff
changeset
|
548 comment=comment, author=u"CopyPage action") |
1850
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
549 |
2385
53fbdf5899ff
Use the event handling framework to (re)generate xapian indexes.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2336
diff
changeset
|
550 event = PageCopiedEvent(request, newpage, self, comment) |
53fbdf5899ff
Use the event handling framework to (re)generate xapian indexes.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2336
diff
changeset
|
551 send_event(event) |
53fbdf5899ff
Use the event handling framework to (re)generate xapian indexes.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2336
diff
changeset
|
552 |
1850
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
553 return True, None |
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
554 except OSError, err: |
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
555 # Try to understand what happened. Maybe its better to check |
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
556 # the error code, but I just reused the available code above... |
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
557 if newpage.exists(includeDeleted=1): |
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
558 return False, pageexists_error |
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
559 else: |
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
560 return False, _('Could not copy page because of file system error: %s.') % unicode(err) |
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
561 |
610
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
562 def renamePage(self, newpagename, comment=None): |
1961
4e528d291fc0
Page*.py: improve docstrings
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1956
diff
changeset
|
563 """ Rename the current version of the page (making a backup before deletion |
4e528d291fc0
Page*.py: improve docstrings
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1956
diff
changeset
|
564 and keeping the backups, logs and attachments). |
1916
d41e6ef31c0e
PageEditor.copyPage: write access checked on old page instead of the copied one
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1909
diff
changeset
|
565 |
610
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
566 @param comment: Comment given by user |
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
567 @rtype: unicode |
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
568 @return: success flag, error message |
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
569 """ |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
570 request = self.request |
610
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
571 _ = self._ |
1845
6ccc22836dd1
PageEditor.renamePage: added acl raise condition
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1844
diff
changeset
|
572 |
1849
ff8a6ed6d7aa
revert changeset 1846:ca2c9a7f06c6
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
1846
diff
changeset
|
573 if not (request.user.may.delete(self.page_name) |
ff8a6ed6d7aa
revert changeset 1846:ca2c9a7f06c6
Johannes Berg <johannes AT sipsolutions DOT net>
parents:
1846
diff
changeset
|
574 and request.user.may.write(newpagename)): |
1845
6ccc22836dd1
PageEditor.renamePage: added acl raise condition
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1844
diff
changeset
|
575 msg = _('You are not allowed to rename this page!') |
6ccc22836dd1
PageEditor.renamePage: added acl raise condition
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1844
diff
changeset
|
576 raise self.AccessDenied, msg |
6ccc22836dd1
PageEditor.renamePage: added acl raise condition
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1844
diff
changeset
|
577 |
610
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
578 if not newpagename: |
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
579 return False, _("You can't rename to an empty pagename.") |
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
580 |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
581 newpage = PageEditor(request, newpagename) |
610
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
582 |
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
583 pageexists_error = _("""'''A page with the name {{{'%s'}}} already exists.''' |
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
584 |
2830
c4ab7c81146d
Fixed XSS issue in RenamePage/DeletePage action
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2754
diff
changeset
|
585 Try a different name.""") % (wikiutil.escape(newpagename), ) |
610
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
586 |
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
587 # Check whether a page with the new name already exists |
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
588 if newpage.exists(includeDeleted=1): |
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
589 return False, pageexists_error |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
590 |
610
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
591 # Get old page text |
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
592 savetext = self.get_raw_body() |
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
593 |
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
594 oldpath = self.getPagePath(check_create=0) |
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
595 newpath = newpage.getPagePath(check_create=0) |
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
596 |
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
597 # Rename page |
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
598 |
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
599 # NOTE: might fail if another process created newpagename just |
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
600 # NOW, while you read this comment. Rename is atomic for files - |
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
601 # but for directories, rename will fail if the directory |
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
602 # exists. We should have global edit-lock to avoid this. |
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
603 # See http://docs.python.org/lib/os-file-dir.html |
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
604 try: |
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
605 os.rename(oldpath, newpath) |
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
606 self.error = None |
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
607 # Save page text with a comment about the old name |
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
608 savetext = u"## page was renamed from %s\n%s" % (self.page_name, savetext) |
2385
53fbdf5899ff
Use the event handling framework to (re)generate xapian indexes.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2336
diff
changeset
|
609 newpage.saveText(savetext, 0, comment=comment, extra=self.page_name, action='SAVE/RENAME', notify=False) |
1828
09e81597c7ce
PageEditor:cache cleaning for renamePage, DeletePage, minor optimisation, RenamePage feature added to rename all subpages
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1816
diff
changeset
|
610 # delete pagelinks |
1894
5ae7a098f6e4
RenamePage bugfix: clean caches of the new page (there is nothing at the old place anyway)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1880
diff
changeset
|
611 arena = newpage |
1828
09e81597c7ce
PageEditor:cache cleaning for renamePage, DeletePage, minor optimisation, RenamePage feature added to rename all subpages
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1816
diff
changeset
|
612 key = 'pagelinks' |
09e81597c7ce
PageEditor:cache cleaning for renamePage, DeletePage, minor optimisation, RenamePage feature added to rename all subpages
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1816
diff
changeset
|
613 cache = caching.CacheEntry(request, arena, key, scope='item') |
09e81597c7ce
PageEditor:cache cleaning for renamePage, DeletePage, minor optimisation, RenamePage feature added to rename all subpages
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1816
diff
changeset
|
614 cache.remove() |
09e81597c7ce
PageEditor:cache cleaning for renamePage, DeletePage, minor optimisation, RenamePage feature added to rename all subpages
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1816
diff
changeset
|
615 |
09e81597c7ce
PageEditor:cache cleaning for renamePage, DeletePage, minor optimisation, RenamePage feature added to rename all subpages
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1816
diff
changeset
|
616 # clean the cache |
09e81597c7ce
PageEditor:cache cleaning for renamePage, DeletePage, minor optimisation, RenamePage feature added to rename all subpages
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1816
diff
changeset
|
617 for formatter_name in self.cfg.caching_formats: |
1894
5ae7a098f6e4
RenamePage bugfix: clean caches of the new page (there is nothing at the old place anyway)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1880
diff
changeset
|
618 arena = newpage |
1828
09e81597c7ce
PageEditor:cache cleaning for renamePage, DeletePage, minor optimisation, RenamePage feature added to rename all subpages
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1816
diff
changeset
|
619 key = formatter_name |
09e81597c7ce
PageEditor:cache cleaning for renamePage, DeletePage, minor optimisation, RenamePage feature added to rename all subpages
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1816
diff
changeset
|
620 cache = caching.CacheEntry(request, arena, key, scope='item') |
09e81597c7ce
PageEditor:cache cleaning for renamePage, DeletePage, minor optimisation, RenamePage feature added to rename all subpages
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1816
diff
changeset
|
621 cache.remove() |
1478
53e9c1db5ace
support for page/attachment removal and renaming (preliminary commit to show activity, needs more testing)
Franz Pletz <fpletz AT franz-pletz DOT org>
parents:
1473
diff
changeset
|
622 |
2385
53fbdf5899ff
Use the event handling framework to (re)generate xapian indexes.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2336
diff
changeset
|
623 event = PageRenamedEvent(request, newpage, self, comment) |
2329
9a71ea0c941b
Add support for PageRenamed event. Not tested yet.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2318
diff
changeset
|
624 send_event(event) |
1478
53e9c1db5ace
support for page/attachment removal and renaming (preliminary commit to show activity, needs more testing)
Franz Pletz <fpletz AT franz-pletz DOT org>
parents:
1473
diff
changeset
|
625 |
610
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
626 return True, None |
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
627 except OSError, err: |
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
628 # Try to understand what happened. Maybe its better to check |
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
629 # the error code, but I just reused the available code above... |
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
630 if newpage.exists(includeDeleted=1): |
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
631 return False, pageexists_error |
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
632 else: |
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
633 return False, _('Could not rename page because of file system error: %s.') % unicode(err) |
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
634 |
2698
0a6f74a01646
Fix revert action and xmlrpc call.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2595
diff
changeset
|
635 |
0a6f74a01646
Fix revert action and xmlrpc call.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2595
diff
changeset
|
636 def revertPage(self, revision): |
0a6f74a01646
Fix revert action and xmlrpc call.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2595
diff
changeset
|
637 """ Reverts page to the given revision |
0a6f74a01646
Fix revert action and xmlrpc call.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2595
diff
changeset
|
638 |
0a6f74a01646
Fix revert action and xmlrpc call.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2595
diff
changeset
|
639 @param revision: revision to revert to |
0a6f74a01646
Fix revert action and xmlrpc call.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2595
diff
changeset
|
640 @type revision: int |
0a6f74a01646
Fix revert action and xmlrpc call.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2595
diff
changeset
|
641 |
0a6f74a01646
Fix revert action and xmlrpc call.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2595
diff
changeset
|
642 """ |
0a6f74a01646
Fix revert action and xmlrpc call.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2595
diff
changeset
|
643 _ = self.request.getText |
0a6f74a01646
Fix revert action and xmlrpc call.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2595
diff
changeset
|
644 |
0a6f74a01646
Fix revert action and xmlrpc call.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2595
diff
changeset
|
645 if not self.request.user.may.revert(self.page_name): |
0a6f74a01646
Fix revert action and xmlrpc call.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2595
diff
changeset
|
646 raise self.RevertError(_('You are not allowed to revert this page!')) |
0a6f74a01646
Fix revert action and xmlrpc call.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2595
diff
changeset
|
647 elif revision is None: |
0a6f74a01646
Fix revert action and xmlrpc call.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2595
diff
changeset
|
648 raise self.RevertError(_('You were viewing the current revision of this page when you called the revert action. ' |
0a6f74a01646
Fix revert action and xmlrpc call.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2595
diff
changeset
|
649 'If you want to revert to an older revision, first view that older revision and ' |
0a6f74a01646
Fix revert action and xmlrpc call.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2595
diff
changeset
|
650 'then call revert to this (older) revision again.')) |
0a6f74a01646
Fix revert action and xmlrpc call.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2595
diff
changeset
|
651 else: |
0a6f74a01646
Fix revert action and xmlrpc call.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2595
diff
changeset
|
652 revstr = '%08d' % revision |
0a6f74a01646
Fix revert action and xmlrpc call.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2595
diff
changeset
|
653 pg = Page(self.request, self.page_name, rev=revision) |
0a6f74a01646
Fix revert action and xmlrpc call.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2595
diff
changeset
|
654 msg = self.saveText(pg.get_raw_body(), 0, extra=revstr, action="SAVE/REVERT", notify=False) |
0a6f74a01646
Fix revert action and xmlrpc call.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2595
diff
changeset
|
655 |
0a6f74a01646
Fix revert action and xmlrpc call.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2595
diff
changeset
|
656 # Remove cache entry (if exists) |
0a6f74a01646
Fix revert action and xmlrpc call.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2595
diff
changeset
|
657 from MoinMoin import caching |
0a6f74a01646
Fix revert action and xmlrpc call.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2595
diff
changeset
|
658 pg = Page(self.request, self.page_name) |
0a6f74a01646
Fix revert action and xmlrpc call.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2595
diff
changeset
|
659 key = self.request.form.get('key', ['text_html'])[0] |
0a6f74a01646
Fix revert action and xmlrpc call.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2595
diff
changeset
|
660 caching.CacheEntry(self.request, pg, key, scope='item').remove() |
0a6f74a01646
Fix revert action and xmlrpc call.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2595
diff
changeset
|
661 caching.CacheEntry(self.request, pg, "pagelinks", scope='item').remove() |
0a6f74a01646
Fix revert action and xmlrpc call.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2595
diff
changeset
|
662 |
0a6f74a01646
Fix revert action and xmlrpc call.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2595
diff
changeset
|
663 # Notify observers |
0a6f74a01646
Fix revert action and xmlrpc call.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2595
diff
changeset
|
664 from MoinMoin.events import PageRevertedEvent, send_event |
0a6f74a01646
Fix revert action and xmlrpc call.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2595
diff
changeset
|
665 e = PageRevertedEvent(self.request, self.page_name, revision, revstr) |
0a6f74a01646
Fix revert action and xmlrpc call.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2595
diff
changeset
|
666 send_event(e) |
0a6f74a01646
Fix revert action and xmlrpc call.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2595
diff
changeset
|
667 |
0a6f74a01646
Fix revert action and xmlrpc call.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2595
diff
changeset
|
668 return msg |
0a6f74a01646
Fix revert action and xmlrpc call.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2595
diff
changeset
|
669 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
670 def deletePage(self, comment=None): |
1961
4e528d291fc0
Page*.py: improve docstrings
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1956
diff
changeset
|
671 """ Delete the current version of the page (making a backup before deletion |
4e528d291fc0
Page*.py: improve docstrings
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1956
diff
changeset
|
672 and keeping the backups, logs and attachments). |
1916
d41e6ef31c0e
PageEditor.copyPage: write access checked on old page instead of the copied one
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1909
diff
changeset
|
673 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
674 @param comment: Comment given by user |
148
4a64816584ae
fixed MoinMoinBugs/MailStatusOnDeletePage
Florian Festi <Florian.Festi@trick.informatik.uni-stuttgart.de>
parents:
131
diff
changeset
|
675 @rtype: unicode |
610
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
676 @return: success flag, error message |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
677 """ |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
678 request = self.request |
148
4a64816584ae
fixed MoinMoinBugs/MailStatusOnDeletePage
Florian Festi <Florian.Festi@trick.informatik.uni-stuttgart.de>
parents:
131
diff
changeset
|
679 _ = self._ |
610
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
680 success = True |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
681 if not (request.user.may.write(self.page_name) |
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
682 and request.user.may.delete(self.page_name)): |
1334
a4efeab7a10f
Added security check to PageEditor.deletePage.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents:
1317
diff
changeset
|
683 msg = _('You are not allowed to delete this page!') |
a4efeab7a10f
Added security check to PageEditor.deletePage.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents:
1317
diff
changeset
|
684 raise self.AccessDenied, msg |
a4efeab7a10f
Added security check to PageEditor.deletePage.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents:
1317
diff
changeset
|
685 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
686 try: |
2385
53fbdf5899ff
Use the event handling framework to (re)generate xapian indexes.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2336
diff
changeset
|
687 msg = self.saveText(u"deleted\n", 0, comment=comment or u'', deleted=True, notify=False) |
148
4a64816584ae
fixed MoinMoinBugs/MailStatusOnDeletePage
Florian Festi <Florian.Festi@trick.informatik.uni-stuttgart.de>
parents:
131
diff
changeset
|
688 msg = msg.replace( |
4a64816584ae
fixed MoinMoinBugs/MailStatusOnDeletePage
Florian Festi <Florian.Festi@trick.informatik.uni-stuttgart.de>
parents:
131
diff
changeset
|
689 _("Thank you for your changes. Your attention to detail is appreciated."), |
2830
c4ab7c81146d
Fixed XSS issue in RenamePage/DeletePage action
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2754
diff
changeset
|
690 _('Page "%s" was successfully deleted!') % (wikiutil.escape(self.page_name), )) |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
691 |
2385
53fbdf5899ff
Use the event handling framework to (re)generate xapian indexes.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2336
diff
changeset
|
692 event = PageDeletedEvent(request, self, comment) |
53fbdf5899ff
Use the event handling framework to (re)generate xapian indexes.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2336
diff
changeset
|
693 send_event(event) |
53fbdf5899ff
Use the event handling framework to (re)generate xapian indexes.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2336
diff
changeset
|
694 |
148
4a64816584ae
fixed MoinMoinBugs/MailStatusOnDeletePage
Florian Festi <Florian.Festi@trick.informatik.uni-stuttgart.de>
parents:
131
diff
changeset
|
695 except self.SaveError, message: |
1844
58ebb64243cc
added TODO for error handling in PageEditor
tw@server.firma.waldmann-edv.de
parents:
1832
diff
changeset
|
696 # XXX do not only catch base class SaveError here, but |
58ebb64243cc
added TODO for error handling in PageEditor
tw@server.firma.waldmann-edv.de
parents:
1832
diff
changeset
|
697 # also the derived classes, so we can give better err msgs |
610
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
698 success = False |
383
1c86e97448fa
DeletePage: fix uninitialized msg attribute in case of SaveError exception
Thomas Waldmann <tw@waldmann-edv.de>
parents:
199
diff
changeset
|
699 msg = "SaveError has occured in PageEditor.deletePage. We need locking there." |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
700 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
701 # delete pagelinks |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
702 arena = self |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
703 key = 'pagelinks' |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
704 cache = caching.CacheEntry(request, arena, key, scope='item') |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
705 cache.remove() |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
706 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
707 # clean the cache |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
708 for formatter_name in self.cfg.caching_formats: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
709 arena = self |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
710 key = formatter_name |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
711 cache = caching.CacheEntry(request, arena, key, scope='item') |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
712 cache.remove() |
610
8dac4b68072b
refactor RenamePage and DeletePage action to use ActionBase base class, move rename page code to PageEditor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
542
diff
changeset
|
713 return success, msg |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
714 |
883
a170df39355f
@SIG@ etc. generate local time stamps now, no difference visible on page view.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents:
876
diff
changeset
|
715 def _get_local_timestamp(self): |
1961
4e528d291fc0
Page*.py: improve docstrings
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1956
diff
changeset
|
716 """ Returns the string that can be used by the TIME substitution. |
883
a170df39355f
@SIG@ etc. generate local time stamps now, no difference visible on page view.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents:
876
diff
changeset
|
717 |
a170df39355f
@SIG@ etc. generate local time stamps now, no difference visible on page view.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents:
876
diff
changeset
|
718 @return: str with a timestamp in it |
a170df39355f
@SIG@ etc. generate local time stamps now, no difference visible on page view.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents:
876
diff
changeset
|
719 """ |
a170df39355f
@SIG@ etc. generate local time stamps now, no difference visible on page view.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents:
876
diff
changeset
|
720 |
a170df39355f
@SIG@ etc. generate local time stamps now, no difference visible on page view.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents:
876
diff
changeset
|
721 now = time.time() |
a170df39355f
@SIG@ etc. generate local time stamps now, no difference visible on page view.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents:
876
diff
changeset
|
722 # default: UTC |
a170df39355f
@SIG@ etc. generate local time stamps now, no difference visible on page view.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents:
876
diff
changeset
|
723 zone = "Z" |
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:
1919
diff
changeset
|
724 u = self.request.user |
883
a170df39355f
@SIG@ etc. generate local time stamps now, no difference visible on page view.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents:
876
diff
changeset
|
725 |
a170df39355f
@SIG@ etc. generate local time stamps now, no difference visible on page view.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents:
876
diff
changeset
|
726 # setup the timezone |
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:
1919
diff
changeset
|
727 if u.valid and u.tz_offset: |
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:
1919
diff
changeset
|
728 tz = u.tz_offset |
883
a170df39355f
@SIG@ etc. generate local time stamps now, no difference visible on page view.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents:
876
diff
changeset
|
729 # round to minutes |
a170df39355f
@SIG@ etc. generate local time stamps now, no difference visible on page view.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents:
876
diff
changeset
|
730 tz -= tz % 60 |
a170df39355f
@SIG@ etc. generate local time stamps now, no difference visible on page view.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents:
876
diff
changeset
|
731 minutes = tz / 60 |
a170df39355f
@SIG@ etc. generate local time stamps now, no difference visible on page view.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents:
876
diff
changeset
|
732 hours = minutes / 60 |
a170df39355f
@SIG@ etc. generate local time stamps now, no difference visible on page view.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents:
876
diff
changeset
|
733 minutes -= hours * 60 |
a170df39355f
@SIG@ etc. generate local time stamps now, no difference visible on page view.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents:
876
diff
changeset
|
734 |
a170df39355f
@SIG@ etc. generate local time stamps now, no difference visible on page view.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents:
876
diff
changeset
|
735 # construct the offset |
a170df39355f
@SIG@ etc. generate local time stamps now, no difference visible on page view.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents:
876
diff
changeset
|
736 zone = "%+0.2d%02d" % (hours, minutes) |
a170df39355f
@SIG@ etc. generate local time stamps now, no difference visible on page view.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents:
876
diff
changeset
|
737 # correct the time by the offset we've found |
a170df39355f
@SIG@ etc. generate local time stamps now, no difference visible on page view.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents:
876
diff
changeset
|
738 now += tz |
a170df39355f
@SIG@ etc. generate local time stamps now, no difference visible on page view.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents:
876
diff
changeset
|
739 |
a170df39355f
@SIG@ etc. generate local time stamps now, no difference visible on page view.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents:
876
diff
changeset
|
740 return time.strftime("%Y-%m-%dT%H:%M:%S", timefuncs.tmtuple(now)) + zone |
a170df39355f
@SIG@ etc. generate local time stamps now, no difference visible on page view.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents:
876
diff
changeset
|
741 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
742 def _expand_variables(self, text): |
1961
4e528d291fc0
Page*.py: improve docstrings
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1956
diff
changeset
|
743 """ Expand @VARIABLE@ in `text`and return the expanded text. |
2286
01f05e74aa9c
Big PEP8 and whitespace cleanup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2189
diff
changeset
|
744 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
745 @param text: current text of wikipage |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
746 @rtype: string |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
747 @return: new text of wikipage, variables replaced |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
748 """ |
1796
57f12932915f
cleaning up comments, minor refactorings in heading formatter
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1792
diff
changeset
|
749 # TODO: Allow addition of variables via wikiconfig or a global wiki dict. |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
750 request = self.request |
883
a170df39355f
@SIG@ etc. generate local time stamps now, no difference visible on page view.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents:
876
diff
changeset
|
751 now = self._get_local_timestamp() |
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:
1919
diff
changeset
|
752 u = request.user |
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:
1919
diff
changeset
|
753 signature = u.signature() |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
754 variables = { |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
755 'PAGE': self.page_name, |
2725
388204baf00f
change [[macro]] to <<macro>> in all built-in markup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2595
diff
changeset
|
756 'TIME': "<<DateTime(%s)>>" % now, |
388204baf00f
change [[macro]] to <<macro>> in all built-in markup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2595
diff
changeset
|
757 'DATE': "<<Date(%s)>>" % now, |
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:
1919
diff
changeset
|
758 'ME': u.name, |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
759 'USERNAME': signature, |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
760 'USER': "-- %s" % signature, |
2725
388204baf00f
change [[macro]] to <<macro>> in all built-in markup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2595
diff
changeset
|
761 'SIG': "-- %s <<DateTime(%s)>>" % (signature, now), |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
762 } |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
763 |
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:
1919
diff
changeset
|
764 if u.valid and u.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:
1919
diff
changeset
|
765 if u.email: |
2725
388204baf00f
change [[macro]] to <<macro>> in all built-in markup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2595
diff
changeset
|
766 variables['MAILTO'] = "<<MailTo(%s)>>" % u.email |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
767 # Users can define their own variables via |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
768 # UserHomepage/MyDict, which override the default variables. |
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:
1919
diff
changeset
|
769 userDictPage = u.name + "/MyDict" |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
770 if request.dicts.has_dict(userDictPage): |
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
771 variables.update(request.dicts.dict(userDictPage)) |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
772 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
773 for name in variables: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
774 text = text.replace('@%s@' % name, variables[name]) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
775 return text |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
776 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
777 def normalizeText(self, text, **kw): |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
778 """ Normalize text |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
779 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
780 Make sure text uses '\n' line endings, and has a trailing |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
781 newline. Strip whitespace on end of lines if needed. |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
782 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
783 You should normalize any text you enter into a page, for |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
784 example, when getting new text from the editor, or when setting |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
785 new text manually. |
1916
d41e6ef31c0e
PageEditor.copyPage: write access checked on old page instead of the copied one
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1909
diff
changeset
|
786 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
787 @param text: text to normalize (unicode) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
788 @keyword stripspaces: if 1, strip spaces from text |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
789 @rtype: unicode |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
790 @return: normalized text |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
791 """ |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
792 if text: |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
793 lines = text.splitlines() |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
794 # Strip trailing spaces if needed |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
795 if kw.get('stripspaces', 0): |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
796 lines = [line.rstrip() for line in lines] |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
797 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
798 # Add final newline if not present, better for diffs (does |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
799 # not include former last line when just adding text to |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
800 # bottom; idea by CliffordAdams) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
801 if not lines[-1] == u'': |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
802 # '' will make newline after join |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
803 lines.append(u'') |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
804 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
805 text = u'\n'.join(lines) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
806 return text |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
807 |
1640
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
808 def _save_draft(self, text, rev, **kw): |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
809 """ Save an editor backup to the drafts cache arena. |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
810 |
1640
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
811 @param text: draft text of the page |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
812 (if None, the draft gets removed from the cache) |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
813 @param rev: the revision of the page this draft is based on |
490
ca35d9e6d63e
eypdoc comments: fixed some warnings/errors
Thomas Waldmann <tw@waldmann-edv.de>
parents:
476
diff
changeset
|
814 @param kw: no keyword args used currently |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
815 """ |
1640
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
816 request = self.request |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
817 if not request.user.valid or not self.do_editor_backup: |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
818 return None |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
819 |
1640
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
820 arena = 'drafts' |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
821 key = request.user.id |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
822 cache = caching.CacheEntry(request, arena, key, scope='wiki', use_pickle=True) |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
823 if cache.exists(): |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
824 cache_data = cache.content() |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
825 else: |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
826 cache_data = {} |
1791
6dd2e29acffe
Eclipse PyDev Check: fixed lots of its errors and warnings
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1784
diff
changeset
|
827 pagename = self.page_name |
1640
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
828 if text is None: |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
829 try: |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
830 del cache_data[pagename] |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
831 except: |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
832 pass |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
833 else: |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
834 timestamp = int(time.time()) |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
835 cache_data[pagename] = (timestamp, rev, text) |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
836 cache.update(cache_data) |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
837 |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
838 def _load_draft(self): |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
839 """ Get a draft from the drafts cache arena. |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
840 |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
841 @rtype: unicode |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
842 @return: draft text or None |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
843 """ |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
844 request = self.request |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
845 if not request.user.valid: |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
846 return None |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
847 |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
848 arena = 'drafts' |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
849 key = request.user.id |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
850 cache = caching.CacheEntry(request, arena, key, scope='wiki', use_pickle=True) |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
851 pagename = self.page_name |
1640
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
852 try: |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
853 cache_data = cache.content() |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
854 return cache_data.get(pagename) |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
855 except caching.CacheError: |
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
856 return None |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
857 |
1850
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
858 def copy_underlay_page(self): |
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
859 # renamed from copypage to avoid conflicts with copyPage |
1961
4e528d291fc0
Page*.py: improve docstrings
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1956
diff
changeset
|
860 """ Copy a page from underlay directory to page directory """ |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
861 src = self.getPagePath(use_underlay=1, check_create=0) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
862 dst = self.getPagePath(use_underlay=0, check_create=0) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
863 if src and dst and src != dst and os.path.exists(src): |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
864 try: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
865 os.rmdir(dst) # simply remove empty dst dirs |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
866 # XXX in fact, we should better remove anything we regard as an |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
867 # empty page, maybe also if there is also an edit-lock or |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
868 # empty cache. revisions subdir... |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
869 except: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
870 pass |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
871 if not os.path.exists(dst): |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
872 filesys.copytree(src, dst) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
873 self.reset() # reinit stuff |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
874 |
1716
9a3290aeff36
fixed cached inconsistency caused by DeletePage
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1713
diff
changeset
|
875 def _write_file(self, text, action='SAVE', comment=u'', extra=u'', deleted=False): |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
876 """ Write the text to the page file (and make a backup of old page). |
1916
d41e6ef31c0e
PageEditor.copyPage: write access checked on old page instead of the copied one
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1909
diff
changeset
|
877 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
878 @param text: text to save for this page |
1716
9a3290aeff36
fixed cached inconsistency caused by DeletePage
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1713
diff
changeset
|
879 @param deleted: if True, then don't write page content (used by deletePage) |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
880 @rtype: int |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
881 @return: mtime_usec of new page |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
882 """ |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
883 request = self.request |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
884 _ = self._ |
1880
b07b4c102d3d
began refactoring send_page(): processing instruction extraction, getting meta/data part of page only, fixed related problems with language detection. Removed lots of duplicate or unused code.
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1870
diff
changeset
|
885 was_deprecated = self.pi.get('deprecated', False) |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
886 |
1850
3d38db210672
action CopyPage added
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1849
diff
changeset
|
887 self.copy_underlay_page() |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
888 |
1162
3e2b4beb65ed
Moved conflict state detection again into another function.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents:
1157
diff
changeset
|
889 # remember conflict state |
3e2b4beb65ed
Moved conflict state detection again into another function.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents:
1157
diff
changeset
|
890 self.setConflict(wikiutil.containsConflictMarker(text)) |
3e2b4beb65ed
Moved conflict state detection again into another function.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents:
1157
diff
changeset
|
891 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
892 # Write always on the standard directory, never change the |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
893 # underlay directory copy! |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
894 pagedir = self.getPagePath(use_underlay=0, check_create=0) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
895 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
896 revdir = os.path.join(pagedir, 'revisions') |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
897 cfn = os.path.join(pagedir, 'current') |
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
898 clfn = os.path.join(pagedir, 'current-locked') |
2841
93be75db2051
handle out-of-space errors in PageEditor and caching, avoid 'current' corruption (thanks to TheAnarcat)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2830
diff
changeset
|
899 cltfn = os.path.join(pagedir, 'current-locked.tmp') |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
900 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
901 # !!! these log objects MUST be created outside the locked area !!! |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
902 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
903 # The local log should be the standard edit log, not the |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
904 # underlay copy log! |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
905 pagelog = self.getPagePath('edit-log', use_underlay=0, isfile=1) |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
906 llog = editlog.EditLog(request, filename=pagelog, |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
907 uid_override=self.uid_override) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
908 # Open the global log |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
909 glog = editlog.EditLog(request, uid_override=self.uid_override) |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
910 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
911 if not os.path.exists(pagedir): # new page, create and init pagedir |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
912 os.mkdir(pagedir) |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
913 if not os.path.exists(revdir): |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
914 os.mkdir(revdir) |
1619
a103f4d38ce5
cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1581
diff
changeset
|
915 f = file(cfn, 'w') |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
916 f.write('%08d\n' % 0) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
917 f.close() |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
918 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
919 got_lock = False |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
920 retry = 0 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
921 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
922 try: |
1619
a103f4d38ce5
cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1581
diff
changeset
|
923 while not got_lock and retry < 100: |
a103f4d38ce5
cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1581
diff
changeset
|
924 retry += 1 |
a103f4d38ce5
cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1581
diff
changeset
|
925 try: |
a103f4d38ce5
cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1581
diff
changeset
|
926 filesys.rename(cfn, clfn) |
a103f4d38ce5
cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1581
diff
changeset
|
927 got_lock = True |
a103f4d38ce5
cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1581
diff
changeset
|
928 except OSError, err: |
a103f4d38ce5
cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1581
diff
changeset
|
929 got_lock = False |
a103f4d38ce5
cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1581
diff
changeset
|
930 if err.errno == 2: # there was no 'current' file |
a103f4d38ce5
cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1581
diff
changeset
|
931 time.sleep(0.1) |
a103f4d38ce5
cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1581
diff
changeset
|
932 else: |
a103f4d38ce5
cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1581
diff
changeset
|
933 raise self.CouldNotLock, _("Page could not get locked. Unexpected error (errno=%d).") % err.errno |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
934 |
1619
a103f4d38ce5
cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1581
diff
changeset
|
935 if not got_lock: |
a103f4d38ce5
cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1581
diff
changeset
|
936 raise self.CouldNotLock, _("Page could not get locked. Missing 'current' file?") |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
937 |
1619
a103f4d38ce5
cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1581
diff
changeset
|
938 # increment rev number of current(-locked) page |
a103f4d38ce5
cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1581
diff
changeset
|
939 f = file(clfn) |
a103f4d38ce5
cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1581
diff
changeset
|
940 revstr = f.read() |
a103f4d38ce5
cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1581
diff
changeset
|
941 f.close() |
2841
93be75db2051
handle out-of-space errors in PageEditor and caching, avoid 'current' corruption (thanks to TheAnarcat)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2830
diff
changeset
|
942 try: |
93be75db2051
handle out-of-space errors in PageEditor and caching, avoid 'current' corruption (thanks to TheAnarcat)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2830
diff
changeset
|
943 rev = int(revstr) |
93be75db2051
handle out-of-space errors in PageEditor and caching, avoid 'current' corruption (thanks to TheAnarcat)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2830
diff
changeset
|
944 except ValueError, err: |
93be75db2051
handle out-of-space errors in PageEditor and caching, avoid 'current' corruption (thanks to TheAnarcat)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2830
diff
changeset
|
945 raise self.SaveError, _("Unable to determine current page revision from the 'current' file. The page %s is damaged and cannot be edited right now.") % self.page_name |
93be75db2051
handle out-of-space errors in PageEditor and caching, avoid 'current' corruption (thanks to TheAnarcat)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2830
diff
changeset
|
946 |
1619
a103f4d38ce5
cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1581
diff
changeset
|
947 if not was_deprecated: |
a103f4d38ce5
cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1581
diff
changeset
|
948 if self.do_revision_backup or rev == 0: |
a103f4d38ce5
cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1581
diff
changeset
|
949 rev += 1 |
a103f4d38ce5
cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1581
diff
changeset
|
950 revstr = '%08d' % rev |
2841
93be75db2051
handle out-of-space errors in PageEditor and caching, avoid 'current' corruption (thanks to TheAnarcat)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2830
diff
changeset
|
951 # write the current page rev to a temporary file |
93be75db2051
handle out-of-space errors in PageEditor and caching, avoid 'current' corruption (thanks to TheAnarcat)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2830
diff
changeset
|
952 try: |
93be75db2051
handle out-of-space errors in PageEditor and caching, avoid 'current' corruption (thanks to TheAnarcat)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2830
diff
changeset
|
953 f = file(cltfn, 'w') |
93be75db2051
handle out-of-space errors in PageEditor and caching, avoid 'current' corruption (thanks to TheAnarcat)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2830
diff
changeset
|
954 f.write(revstr+'\n') |
93be75db2051
handle out-of-space errors in PageEditor and caching, avoid 'current' corruption (thanks to TheAnarcat)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2830
diff
changeset
|
955 f.close() |
93be75db2051
handle out-of-space errors in PageEditor and caching, avoid 'current' corruption (thanks to TheAnarcat)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2830
diff
changeset
|
956 except IOError, err: |
93be75db2051
handle out-of-space errors in PageEditor and caching, avoid 'current' corruption (thanks to TheAnarcat)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2830
diff
changeset
|
957 try: |
93be75db2051
handle out-of-space errors in PageEditor and caching, avoid 'current' corruption (thanks to TheAnarcat)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2830
diff
changeset
|
958 os.remove(cltfn) |
93be75db2051
handle out-of-space errors in PageEditor and caching, avoid 'current' corruption (thanks to TheAnarcat)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2830
diff
changeset
|
959 except: |
93be75db2051
handle out-of-space errors in PageEditor and caching, avoid 'current' corruption (thanks to TheAnarcat)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2830
diff
changeset
|
960 pass # we don't care for errors in the os.remove |
93be75db2051
handle out-of-space errors in PageEditor and caching, avoid 'current' corruption (thanks to TheAnarcat)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2830
diff
changeset
|
961 # throw a nicer exception |
93be75db2051
handle out-of-space errors in PageEditor and caching, avoid 'current' corruption (thanks to TheAnarcat)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2830
diff
changeset
|
962 if err.errno == errno.ENOSPC: |
93be75db2051
handle out-of-space errors in PageEditor and caching, avoid 'current' corruption (thanks to TheAnarcat)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2830
diff
changeset
|
963 raise self.SaveError, _("Cannot save page %s, no storage space left.") % self.page_name |
93be75db2051
handle out-of-space errors in PageEditor and caching, avoid 'current' corruption (thanks to TheAnarcat)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2830
diff
changeset
|
964 else: |
93be75db2051
handle out-of-space errors in PageEditor and caching, avoid 'current' corruption (thanks to TheAnarcat)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2830
diff
changeset
|
965 raise self.SaveError, _("An I/O error occurred while saving page %s (errno=%d)") % (self.page_name, err.errno) |
93be75db2051
handle out-of-space errors in PageEditor and caching, avoid 'current' corruption (thanks to TheAnarcat)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2830
diff
changeset
|
966 # atomically put it in place (except on windows) |
93be75db2051
handle out-of-space errors in PageEditor and caching, avoid 'current' corruption (thanks to TheAnarcat)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2830
diff
changeset
|
967 else: |
93be75db2051
handle out-of-space errors in PageEditor and caching, avoid 'current' corruption (thanks to TheAnarcat)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2830
diff
changeset
|
968 filesys.rename(cltfn, clfn) |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
969 |
1716
9a3290aeff36
fixed cached inconsistency caused by DeletePage
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1713
diff
changeset
|
970 if not deleted: |
9a3290aeff36
fixed cached inconsistency caused by DeletePage
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1713
diff
changeset
|
971 # save to page file |
9a3290aeff36
fixed cached inconsistency caused by DeletePage
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1713
diff
changeset
|
972 pagefile = os.path.join(revdir, revstr) |
9a3290aeff36
fixed cached inconsistency caused by DeletePage
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1713
diff
changeset
|
973 f = codecs.open(pagefile, 'wb', config.charset) |
9a3290aeff36
fixed cached inconsistency caused by DeletePage
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1713
diff
changeset
|
974 # Write the file using text/* mime type |
9a3290aeff36
fixed cached inconsistency caused by DeletePage
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1713
diff
changeset
|
975 f.write(self.encodeTextMimeType(text)) |
9a3290aeff36
fixed cached inconsistency caused by DeletePage
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1713
diff
changeset
|
976 f.close() |
9a3290aeff36
fixed cached inconsistency caused by DeletePage
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1713
diff
changeset
|
977 mtime_usecs = wikiutil.timestamp2version(os.path.getmtime(pagefile)) |
9a3290aeff36
fixed cached inconsistency caused by DeletePage
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1713
diff
changeset
|
978 # set in-memory content |
9a3290aeff36
fixed cached inconsistency caused by DeletePage
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1713
diff
changeset
|
979 self.set_raw_body(text) |
9a3290aeff36
fixed cached inconsistency caused by DeletePage
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1713
diff
changeset
|
980 else: |
9a3290aeff36
fixed cached inconsistency caused by DeletePage
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1713
diff
changeset
|
981 mtime_usecs = wikiutil.timestamp2version(time.time()) |
9a3290aeff36
fixed cached inconsistency caused by DeletePage
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1713
diff
changeset
|
982 # set in-memory content |
9a3290aeff36
fixed cached inconsistency caused by DeletePage
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1713
diff
changeset
|
983 self.set_raw_body(None) |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
984 |
1619
a103f4d38ce5
cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1581
diff
changeset
|
985 # reset page object |
a103f4d38ce5
cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1581
diff
changeset
|
986 self.reset() |
a103f4d38ce5
cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1581
diff
changeset
|
987 |
a103f4d38ce5
cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1581
diff
changeset
|
988 # write the editlog entry |
a103f4d38ce5
cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1581
diff
changeset
|
989 # for now simply make 2 logs, better would be some multilog stuff maybe |
a103f4d38ce5
cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1581
diff
changeset
|
990 if self.do_revision_backup: |
1640
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
991 # do not globally log edits with no revision backup |
1619
a103f4d38ce5
cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1581
diff
changeset
|
992 # if somebody edits a deprecated page, log it in global log, but not local log |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
993 glog.add(request, mtime_usecs, rev, action, self.page_name, None, extra, comment) |
1619
a103f4d38ce5
cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1581
diff
changeset
|
994 if not was_deprecated and self.do_revision_backup: |
a103f4d38ce5
cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1581
diff
changeset
|
995 # if we did not create a new revision number, do not locally log it |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
996 llog.add(request, mtime_usecs, rev, action, self.page_name, None, extra, comment) |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
997 finally: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
998 if got_lock: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
999 filesys.rename(clfn, cfn) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1000 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1001 # add event log entry |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
1002 elog = eventlog.EventLog(request) |
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
1003 elog.add(request, 'SAVEPAGE', {'pagename': self.page_name}, 1, mtime_usecs) |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1004 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1005 return mtime_usecs, rev |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1006 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1007 def saveText(self, newtext, rev, **kw): |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1008 """ Save new text for a page. |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1009 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1010 @param newtext: text to save for this page |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1011 @param rev: revision of the page |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1012 @keyword trivial: trivial edit (default: 0) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1013 @keyword extra: extra info field (e.g. for SAVE/REVERT with revno) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1014 @keyword comment: comment field (when preview is true) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1015 @keyword action: action for editlog (default: SAVE) |
1478
53e9c1db5ace
support for page/attachment removal and renaming (preliminary commit to show activity, needs more testing)
Franz Pletz <fpletz AT franz-pletz DOT org>
parents:
1473
diff
changeset
|
1016 @keyword index: needs indexing, not already handled (default: 1) |
1716
9a3290aeff36
fixed cached inconsistency caused by DeletePage
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1713
diff
changeset
|
1017 @keyword deleted: if True, then don't save page content (used by DeletePage, default: False) |
2333 | 1018 @keyword notify: if False (default: True), don't send a PageChangedEvent |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1019 @rtype: unicode |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1020 @return: error msg |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1021 """ |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
1022 request = self.request |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1023 _ = self._ |
1640
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
1024 self._save_draft(newtext, rev, **kw) |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1025 action = kw.get('action', 'SAVE') |
1716
9a3290aeff36
fixed cached inconsistency caused by DeletePage
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1713
diff
changeset
|
1026 deleted = kw.get('deleted', False) |
2333 | 1027 notify = kw.get('notify', True) |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1028 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1029 #!!! need to check if we still retain the lock here |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1030 #!!! rev check is not enough since internal operations use "0" |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1031 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1032 # expand variables, unless it's a template or form page |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
1033 if not wikiutil.isTemplatePage(request, self.page_name): |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1034 newtext = self._expand_variables(newtext) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1035 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1036 msg = "" |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
1037 if not request.user.may.save(self, newtext, rev, **kw): |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1038 msg = _('You are not allowed to edit this page!') |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1039 raise self.AccessDenied, msg |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1040 elif not self.isWritable(): |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1041 msg = _('Page is immutable!') |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1042 raise self.Immutable, msg |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1043 elif not newtext: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1044 msg = _('You cannot save empty pages.') |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1045 raise self.EmptyPage, msg |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1046 elif rev != 0 and rev != self.current_rev(): |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1047 # check if we already saved that page |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1048 other = False |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1049 pagelog = self.getPagePath('edit-log', use_underlay=0, isfile=1) |
1565
6eae21f5f3f9
fix UnboundLocalError (port to 1.6)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1556
diff
changeset
|
1050 next_line = None |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
1051 for line in editlog.EditLog(request, pagelog).reverse(): |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
1052 if int(line.rev) == int(rev): |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1053 break |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
1054 if not line.is_from_current_user(request): |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1055 other = True |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1056 next_line = line |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
1057 if next_line and next_line.is_from_current_user(request): |
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
1058 saved_page = Page(request, self.page_name, rev=int(next_line.rev)) |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
1059 if newtext == saved_page.get_raw_body(): |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1060 msg = _("You already saved this page!") |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1061 return msg |
779
9834dda36973
Added conflict icon in RecentChanges, refactored conflict handling in the code. Translators, esp. german translators!, there seems to be an outdated string. You will see it on the editing conflict.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents:
682
diff
changeset
|
1062 else: |
9834dda36973
Added conflict icon in RecentChanges, refactored conflict handling in the code. Translators, esp. german translators!, there seems to be an outdated string. You will see it on the editing conflict.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents:
682
diff
changeset
|
1063 msg = _("You already edited this page! Please do not use the back button.") |
9834dda36973
Added conflict icon in RecentChanges, refactored conflict handling in the code. Translators, esp. german translators!, there seems to be an outdated string. You will see it on the editing conflict.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents:
682
diff
changeset
|
1064 raise self.EditConflict, msg |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1065 |
785
f3c1ea6ef86e
Refactored conflict messages, removed link to diff because it is not necessary for a 3-way merge.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents:
779
diff
changeset
|
1066 msg = _("""Someone else saved this page while you were editing! |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
1067 Please review the page and save then. Do not save this page as it is!""") |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1068 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1069 raise self.EditConflict, msg |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1070 elif newtext == self.get_raw_body(): |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1071 msg = _('You did not change the page content, not saved!') |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1072 raise self.Unchanged, msg |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1073 else: |
747
e178ada80ead
moved wikiacl.py to security/__init__.py
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
682
diff
changeset
|
1074 from MoinMoin.security import parseACL |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1075 # Get current ACL and compare to new ACL from newtext. If |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1076 # they are not the sames, the user must have admin |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1077 # rights. This is a good place to update acl cache - instead |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1078 # of wating for next request. |
1695
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
1079 acl = self.getACL(request) |
9ae9f564380e
fix backtrace on editor preview, refactor code to use 'request', not 'self.request'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1682
diff
changeset
|
1080 if (not request.user.may.admin(self.page_name) and |
2189
a37491dbb605
Correctly check the ACL lists in the PageEditor for the admin check instead of the wrapping objects, reordered some comments and doc strings, return None instead of 0 in may if applicable. Should be ported to 1.7.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents:
2109
diff
changeset
|
1081 parseACL(request, newtext).acl != acl.acl and |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1082 action != "SAVE/REVERT"): |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1083 msg = _("You can't change ACLs on this page since you have no admin rights on it!") |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1084 raise self.NoAdmin, msg |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
1085 |
2396
cf85b6916d17
Add a PagePreSave event; abort page save if handlers return Abort.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2385
diff
changeset
|
1086 presave = PagePreSaveEvent(request, self, newtext) |
cf85b6916d17
Add a PagePreSave event; abort page save if handlers return Abort.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2385
diff
changeset
|
1087 results = send_event(presave) |
2399
245181ec9fe2
Whitespace fixes.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2396
diff
changeset
|
1088 |
2396
cf85b6916d17
Add a PagePreSave event; abort page save if handlers return Abort.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2385
diff
changeset
|
1089 for result in results: |
cf85b6916d17
Add a PagePreSave event; abort page save if handlers return Abort.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2385
diff
changeset
|
1090 if isinstance(result, Abort): |
cf85b6916d17
Add a PagePreSave event; abort page save if handlers return Abort.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2385
diff
changeset
|
1091 # XXX: this should return a list of messages to the sorrounding context |
cf85b6916d17
Add a PagePreSave event; abort page save if handlers return Abort.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2385
diff
changeset
|
1092 # XXX: rather than dumbly concatenate them. Fix in the future. |
cf85b6916d17
Add a PagePreSave event; abort page save if handlers return Abort.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2385
diff
changeset
|
1093 msg = msg + result.reason |
cf85b6916d17
Add a PagePreSave event; abort page save if handlers return Abort.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2385
diff
changeset
|
1094 |
cf85b6916d17
Add a PagePreSave event; abort page save if handlers return Abort.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2385
diff
changeset
|
1095 # save only if no error occurred (msg is empty) and no abort has been requested |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1096 if not msg: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1097 # set success msg |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1098 msg = _("Thank you for your changes. Your attention to detail is appreciated.") |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
1099 |
2286
01f05e74aa9c
Big PEP8 and whitespace cleanup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2189
diff
changeset
|
1100 # determine action for edit log |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1101 if action == 'SAVE' and not self.exists(): |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1102 action = 'SAVENEW' |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1103 comment = kw.get('comment', u'') |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1104 extra = kw.get('extra', u'') |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1105 trivial = kw.get('trivial', 0) |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
1106 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1107 # write the page file |
1716
9a3290aeff36
fixed cached inconsistency caused by DeletePage
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1713
diff
changeset
|
1108 mtime_usecs, rev = self._write_file(newtext, action, comment, extra, deleted=deleted) |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1109 self.clean_acl_cache() |
1640
6478c7744221
new per page drafts functionality, replaces old /MoinEditorBackup method
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1619
diff
changeset
|
1110 self._save_draft(None, None) # everything fine, kill the draft for this page |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
1111 |
2333 | 1112 if notify: |
2330
38f4f0311a98
Attempt to remove situations when unnecessary PageChangedEvent is sent.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2329
diff
changeset
|
1113 # send notifications |
38f4f0311a98
Attempt to remove situations when unnecessary PageChangedEvent is sent.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2329
diff
changeset
|
1114 from MoinMoin import events |
2469
663867be4afc
Add a separate TrivialPageChangedEvent users can subscribe to.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2406
diff
changeset
|
1115 |
663867be4afc
Add a separate TrivialPageChangedEvent users can subscribe to.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2406
diff
changeset
|
1116 if trivial: |
663867be4afc
Add a separate TrivialPageChangedEvent users can subscribe to.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2406
diff
changeset
|
1117 e = events.TrivialPageChangedEvent(self.request, self, comment) |
663867be4afc
Add a separate TrivialPageChangedEvent users can subscribe to.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2406
diff
changeset
|
1118 else: |
663867be4afc
Add a separate TrivialPageChangedEvent users can subscribe to.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2406
diff
changeset
|
1119 e = events.PageChangedEvent(self.request, self, comment) |
2330
38f4f0311a98
Attempt to remove situations when unnecessary PageChangedEvent is sent.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2329
diff
changeset
|
1120 results = events.send_event(e) |
2318
062b76cf8d48
Introduce an base EventResult class for event handler return values.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2189
diff
changeset
|
1121 |
2330
38f4f0311a98
Attempt to remove situations when unnecessary PageChangedEvent is sent.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2329
diff
changeset
|
1122 recipients = set() |
38f4f0311a98
Attempt to remove situations when unnecessary PageChangedEvent is sent.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2329
diff
changeset
|
1123 for result in results: |
38f4f0311a98
Attempt to remove situations when unnecessary PageChangedEvent is sent.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2329
diff
changeset
|
1124 if isinstance(result, notification.Success): |
38f4f0311a98
Attempt to remove situations when unnecessary PageChangedEvent is sent.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2329
diff
changeset
|
1125 recipients.update(result.recipients) |
2318
062b76cf8d48
Introduce an base EventResult class for event handler return values.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2189
diff
changeset
|
1126 |
2330
38f4f0311a98
Attempt to remove situations when unnecessary PageChangedEvent is sent.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2329
diff
changeset
|
1127 if recipients: |
38f4f0311a98
Attempt to remove situations when unnecessary PageChangedEvent is sent.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2329
diff
changeset
|
1128 info = _("Notifications sent to:") |
38f4f0311a98
Attempt to remove situations when unnecessary PageChangedEvent is sent.
Karol Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2329
diff
changeset
|
1129 msg = msg + "<p>%s %s</p>" % (info, ",".join(recipients)) |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
1130 |
1925
b198c7372ba8
update the page trail after successfully saving a page, needed for NewPage macro because it does not send the newly created page
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1920
diff
changeset
|
1131 # Update page trail with the page we just saved. |
b198c7372ba8
update the page trail after successfully saving a page, needed for NewPage macro because it does not send the newly created page
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1920
diff
changeset
|
1132 # This is needed for NewPage macro with backto because it does not |
b198c7372ba8
update the page trail after successfully saving a page, needed for NewPage macro because it does not send the newly created page
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1920
diff
changeset
|
1133 # send the page we just saved. |
1956
477760dd8487
speedup addTrail by passing existing page object
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1925
diff
changeset
|
1134 request.user.addTrail(self) |
1925
b198c7372ba8
update the page trail after successfully saving a page, needed for NewPage macro because it does not send the newly created page
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1920
diff
changeset
|
1135 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1136 # remove lock (forcibly if we were allowed to break it by the UI) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1137 # !!! this is a little fishy, since the lock owner might not notice |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1138 # we broke his lock ==> but revision checking during preview will |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1139 self.lock.release(force=not msg) # XXX does "not msg" make any sense? |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
1140 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1141 return msg |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
1142 |
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
1143 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1144 class PageLock: |
1961
4e528d291fc0
Page*.py: improve docstrings
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1956
diff
changeset
|
1145 """ PageLock - Lock pages """ |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1146 # TODO: race conditions throughout, need to lock file during queries & update |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1147 def __init__(self, pageobj): |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1148 """ |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1149 """ |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1150 self.pageobj = pageobj |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1151 self.page_name = pageobj.page_name |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1152 request = pageobj.request |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1153 self.request = request |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1154 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
|
1155 self.cfg = self.request.cfg |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1156 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1157 # current time and user for later checks |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1158 self.now = int(time.time()) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1159 self.uid = request.user.valid and request.user.id or request.remote_addr |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1160 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1161 # get details of the locking preference, i.e. warning or lock, and timeout |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1162 self.locktype = None |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1163 self.timeout = 10 * 60 # default timeout in minutes |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1164 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1165 if self.cfg.edit_locking: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1166 lockinfo = self.cfg.edit_locking.split() |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1167 if 1 <= len(lockinfo) <= 2: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1168 self.locktype = lockinfo[0].lower() |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1169 if len(lockinfo) > 1: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1170 try: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1171 self.timeout = int(lockinfo[1]) * 60 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1172 except ValueError: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1173 pass |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1174 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1175 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1176 def acquire(self): |
1961
4e528d291fc0
Page*.py: improve docstrings
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1956
diff
changeset
|
1177 """ Begin an edit lock depending on the mode chosen in the config. |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1178 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1179 @rtype: tuple |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1180 @return: tuple is returned containing 2 values: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1181 * a bool indicating successful acquiry |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1182 * a string giving a reason for failure or an informational msg |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1183 """ |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1184 if not self.locktype: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1185 # we are not using edit locking, so always succeed |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1186 return 1, '' |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1187 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1188 _ = self._ |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1189 #!!! race conditions, need to lock file during queries & update |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1190 self._readLockFile() |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1191 bumptime = self.request.user.getFormattedDateTime(self.now + self.timeout) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1192 timestamp = self.request.user.getFormattedDateTime(self.timestamp) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1193 owner = self.owner_html |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1194 secs_valid = self.timestamp + self.timeout - self.now |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1195 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1196 # do we own the lock, or is it stale? |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1197 if self.owner is None or self.uid == self.owner or secs_valid < 0: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1198 # create or bump the lock |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1199 self._writeLockFile() |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1200 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1201 msg = [] |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1202 if self.owner is not None and -10800 < secs_valid < 0: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1203 mins_ago = secs_valid / -60 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1204 msg.append(_( |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1205 "The lock of %(owner)s timed out %(mins_ago)d minute(s) ago," |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1206 " and you were granted the lock for this page." |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1207 ) % {'owner': owner, 'mins_ago': mins_ago}) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1208 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1209 if self.locktype == 'lock': |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1210 msg.append(_( |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1211 "Other users will be ''blocked'' from editing this page until %(bumptime)s." |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1212 ) % {'bumptime': bumptime}) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1213 else: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1214 msg.append(_( |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1215 "Other users will be ''warned'' until %(bumptime)s that you are editing this page." |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1216 ) % {'bumptime': bumptime}) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1217 msg.append(_( |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1218 "Use the Preview button to extend the locking period." |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1219 )) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1220 result = 1, '\n'.join(msg) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1221 else: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1222 mins_valid = (secs_valid+59) / 60 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1223 if self.locktype == 'lock': |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1224 # lout out user |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1225 result = 0, _( |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1226 "This page is currently ''locked'' for editing by %(owner)s until %(timestamp)s," |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1227 " i.e. for %(mins_valid)d minute(s)." |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1228 ) % {'owner': owner, 'timestamp': timestamp, 'mins_valid': mins_valid} |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1229 else: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1230 # warn user about existing lock |
33
55ff4feb0f59
src cosmetics: remove TODOs, CVS stuff
Thomas Waldmann <tw@waldmann-edv.de>
parents:
18
diff
changeset
|
1231 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1232 result = 1, _( |
2725
388204baf00f
change [[macro]] to <<macro>> in all built-in markup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2595
diff
changeset
|
1233 """This page was opened for editing or last previewed at %(timestamp)s by %(owner)s.<<BR>> |
33
55ff4feb0f59
src cosmetics: remove TODOs, CVS stuff
Thomas Waldmann <tw@waldmann-edv.de>
parents:
18
diff
changeset
|
1234 '''You should ''refrain from editing'' this page for at least another %(mins_valid)d minute(s), |
2725
388204baf00f
change [[macro]] to <<macro>> in all built-in markup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
2595
diff
changeset
|
1235 to avoid editing conflicts.'''<<BR>> |
33
55ff4feb0f59
src cosmetics: remove TODOs, CVS stuff
Thomas Waldmann <tw@waldmann-edv.de>
parents:
18
diff
changeset
|
1236 To leave the editor, press the Cancel button.""") % { |
55ff4feb0f59
src cosmetics: remove TODOs, CVS stuff
Thomas Waldmann <tw@waldmann-edv.de>
parents:
18
diff
changeset
|
1237 'timestamp': timestamp, 'owner': owner, 'mins_valid': mins_valid} |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1238 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1239 return result |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1240 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1241 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1242 def release(self, force=0): |
1961
4e528d291fc0
Page*.py: improve docstrings
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1956
diff
changeset
|
1243 """ Release lock, if we own it. |
1916
d41e6ef31c0e
PageEditor.copyPage: write access checked on old page instead of the copied one
Reimar Bauer <rb.proj AT googlemail DOT com>
parents:
1909
diff
changeset
|
1244 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1245 @param force: if 1, unconditionally release the lock. |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1246 """ |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1247 if self.locktype: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1248 # check that we own the lock in order to delete it |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1249 #!!! race conditions, need to lock file during queries & update |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1250 self._readLockFile() |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1251 if force or self.uid == self.owner: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1252 self._deleteLockFile() |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1253 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1254 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1255 def _filename(self): |
1961
4e528d291fc0
Page*.py: improve docstrings
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1956
diff
changeset
|
1256 """ Get path and filename for edit-lock file. """ |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1257 return self.pageobj.getPagePath('edit-lock', isfile=1) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1258 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1259 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1260 def _readLockFile(self): |
1961
4e528d291fc0
Page*.py: improve docstrings
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1956
diff
changeset
|
1261 """ Load lock info if not yet loaded. """ |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1262 _ = self._ |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1263 self.owner = None |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1264 self.owner_html = wikiutil.escape(_("<unknown>")) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1265 self.timestamp = 0 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1266 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1267 if self.locktype: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1268 try: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1269 entry = editlog.EditLog(self.request, filename=self._filename()).next() |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1270 except StopIteration: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1271 entry = None |
1577
c2457afd322d
cosmetic changes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1573
diff
changeset
|
1272 |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1273 if entry: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1274 self.owner = entry.userid or entry.addr |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1275 self.owner_html = entry.getEditor(self.request) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1276 self.timestamp = wikiutil.version2timestamp(entry.ed_time_usecs) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1277 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1278 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1279 def _writeLockFile(self): |
1961
4e528d291fc0
Page*.py: improve docstrings
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1956
diff
changeset
|
1280 """ Write new lock file. """ |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1281 self._deleteLockFile() |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1282 try: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1283 editlog.EditLog(self.request, filename=self._filename()).add( |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1284 self.request, wikiutil.timestamp2version(self.now), 0, "LOCK", self.page_name) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1285 except IOError: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1286 pass |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1287 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1288 def _deleteLockFile(self): |
1961
4e528d291fc0
Page*.py: improve docstrings
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
1956
diff
changeset
|
1289 """ Delete the lock file unconditionally. """ |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1290 try: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1291 os.remove(self._filename()) |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1292 except OSError: |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1293 pass |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1294 |