Adds support for previewing modifications on redmine's wiki pages.

Status: draft (needs further work to be really useful)
This commit is contained in:
Clément Schreiner 2011-02-01 13:47:13 +01:00
commit e3f46ac751
4 changed files with 28 additions and 0 deletions

View file

@ -72,3 +72,14 @@ class RedmineBackend(BaseBackend, ICapContent):
with self.browser:
return self.browser.set_wiki_source(project, page, content.content, message)
def preview_content(self, content):
try:
_type, project, page = self.id2path(content.id)
except ValueError:
return
with self.browser:
return self.browser.get_wiki_preview(project, page, content.content)

View file

@ -17,6 +17,7 @@
from urlparse import urlsplit
import urllib
from weboob.tools.browser import BaseBrowser, BrowserIncorrectPassword
@ -74,3 +75,10 @@ class RedmineBrowser(BaseBrowser):
def set_wiki_source(self, project, page, data, message):
self.location('%s/projects/%s/wiki/%s/edit' % (self.BASEPATH, project, page))
self.page.set_source(data, message)
def get_wiki_preview(self, project, page, data):
url = '%s/projects/%s/wiki/%s/preview' % (self.BASEPATH, project, page)
params = {}
params['content[text]'] = data.encode('utf-8')
params['authenticity_token'] = "%s" % self.page.get_authenticity_token()
return self.readurl(url, urllib.urlencode(params))

View file

@ -30,5 +30,11 @@ class WikiEditPage(BasePage):
self.browser['content[comments]'] = message.encode('utf-8')
self.browser.submit()
def get_authenticity_token(self):
wiki_form = select(self.document.getroot(), 'form#wiki_form', 1)
return wiki_form.xpath('div/input')[0].get('value')
class WikiPage(BasePage):
pass

View file

@ -35,3 +35,6 @@ class ICapContent(IBaseCap):
def push_content(self, content, message=None):
raise NotImplementedError()
def preview_content(self, content):
raise NotImplementedError()