~ubuntu-branches/ubuntu/natty/moin/natty-updates

« back to all changes in this revision

Viewing changes to MoinMoin/xmlrpc/UpdateGroup.py

  • Committer: Bazaar Package Importer
  • Author(s): Jonas Smedegaard
  • Date: 2008-06-22 21:17:13 UTC
  • mfrom: (0.9.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20080622211713-fpo2zrq3s5dfecxg
Tags: 1.7.0-3
Simplify /etc/moin/wikilist format: "USER URL" (drop unneeded middle
CONFIG_DIR that was wrongly advertised as DATA_DIR).  Make
moin-mass-migrate handle both formats and warn about deprecation of
the old one.

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
"""
3
3
    MoinMoin - Wiki XMLRPC group creation
4
4
 
5
 
    @copyright: (c) Bastian Blank, Florian Festi, Thomas Waldmann
 
5
    @copyright: 2005-2006 Bastian Blank, Florian Festi, Thomas Waldmann
6
6
    @license: GNU GPL, see COPYING for details.
7
7
"""
8
8
 
9
 
import sys, xmlrpclib, re
10
 
 
11
 
from MoinMoin.Page import Page
 
9
import sys, xmlrpclib
 
10
 
 
11
from MoinMoin import log
 
12
logging = log.getLogger(__name__)
 
13
 
12
14
from MoinMoin.PageEditor import PageEditor
13
15
 
14
 
_debug = 0
15
 
 
16
16
def execute(self, groupname, groupcomment, memberlist, pageacls=u"All:read"):
17
17
    """
18
18
    create or overwrite a group definition page
23
23
    @rtype: bool
24
24
    @return: true on success
25
25
    """
26
 
    if self.request.cfg.xmlrpc_putpage_enabled:
27
 
        pagename = self._instr(groupname)
28
 
    else:
29
 
        pagename = u"TestUpdateGroup"
30
26
 
31
 
    # By default, only authenticated (trusted) users may use putPage!
32
 
    # Trusted currently means being authenticated by http auth.
33
 
    # if you also want untrusted users to be able to write pages, then
34
 
    # change your wikiconfig to have xmlrpc_putpage_trusted_only = 0
35
 
    # and make very very sure that nobody untrusted can access your wiki
36
 
    # via network or somebody will raid your wiki some day!
37
 
        
38
 
    if self.request.cfg.xmlrpc_putpage_trusted_only and not self.request.user.trusted:
39
 
        return xmlrpclib.Fault(1, "You are not allowed to edit this page")
 
27
    pagename = self._instr(groupname)
40
28
 
41
29
    # also check ACLs
42
30
    if not self.request.user.may.write(pagename):
43
31
        return xmlrpclib.Fault(1, "You are not allowed to edit this page")
44
32
 
45
33
    # check if groupname matches page_group_regex
46
 
    if not re.match(self.request.cfg.page_group_regex, groupname):
 
34
    if not self.request.cfg.cache.page_group_regexact.search(groupname):
47
35
        return xmlrpclib.Fault(2, "The groupname %s does not match your page_group_regex (%s)" % (
48
 
                                  groupname, self.request.cfg.page_group_regex))
 
36
                               groupname, self.request.cfg.page_group_regex))
49
37
 
50
38
    newtext = """\
51
39
#acl %(acl)s
56
44
    'comment': groupcomment,
57
45
    'memberlist': "\n * ".join([''] + memberlist)
58
46
    }
59
 
    
 
47
 
60
48
    page = PageEditor(self.request, pagename)
61
49
    try:
62
50
        msg = page.saveText(newtext, 0)
63
51
    except page.SaveError, msg:
 
52
        logging.error("SaveError msg: %s" % str(msg))
64
53
        return xmlrpclib.Fault(3, msg)
65
 
    if _debug and msg:
66
 
        sys.stderr.write("Msg: %s\n" % msg)
 
54
    if msg:
 
55
        logging.debug("saveText msg: %s" % msg)
67
56
 
68
57
    #we need this to update pagelinks cache:
69
58
    self.request.args = self.request.form = self.request.setup_args({})
70
 
    self.request.redirectedOutput(page.send_page, self.request, content_only=1)
 
59
    self.request.redirectedOutput(page.send_page, content_only=1)
71
60
 
72
61
    return xmlrpclib.Boolean(1)
73
62