view MoinMoin/script/xmlrpc/ @ 3070:ed1a433803c6

PEP8 fixes
author Reimar Bauer <rb.proj AT googlemail DOT com>
date Fri, 22 Feb 2008 19:28:52 +0100
parents 6259bb49366c
children 2572688e031a
line wrap: on
line source

# -*- coding: iso-8859-1 -*-
    MoinMoin - page contents writer

    Commented example of how to edit a page with xmlrpc.

    @copyright: 2007 MoinMoin:JohannesBerg
    @license: GNU GPL, see COPYING for details.

import xmlrpclib
import sys

from MoinMoin.script import MoinScript
from import MultiCall

class PluginScript(MoinScript):
    def __init__(self, argv, def_values):
        MoinScript.__init__(self, argv, def_values)
        self.argv = argv

    # script entrypoint
    def mainloop(self):
        # grab parameters
        url = self.argv[0]
        user = self.argv[1]
        passwd = self.argv[2]
        pagename = self.argv[3]

        # get auth token from server giving username/password
        s = xmlrpclib.ServerProxy(url)
        token = s.getAuthToken(user, passwd)

        if token == '':
            print 'Invalid username/password'

        # Verify that the token is valid by using it
        # and checking that the result is 'SUCCESS'.
        # The token should be valid for 15 minutes.
        assert s.applyAuthToken(token) == 'SUCCESS'

            # read new page contents
            content =

            # build a multicall object that
            mcall = MultiCall(s)
            # first applies the token and
            # then edits the page
            mcall.putPage(pagename, content)

            # now execute the multicall
            results = mcall()

            # everything should have worked
            # instead of the asserts you can have anything else
            # but you should definitely access all the results
            # once so that faults are checked and raised
            assert results[0] == 'SUCCESS'
            assert results[1] is True

            # be nice to the server and clean up the token
            # regardless of what happened
            assert s.deleteAuthToken(token) == 'SUCCESS'