###
import codecs
+import cookielib
import getpass
import hashlib
-import mw.api
import mw.metadir
from optparse import OptionParser, OptionGroup
import os
+import simplemediawiki
import sys
sys.exit(1)
def _api_setup(self):
+ cookie_file = os.path.join(self.metadir.location, 'cookies')
+ print cookie_file
self.api_url = self.metadir.config.get('remote', 'api_url')
- self.api = mw.api.API(self.api_url, self.metadir)
+ self.api = simplemediawiki.MediaWiki(self.api_url,
+ cookie_file=cookie_file)
class InitCommand(CommandBase):
self.metadir.pagedict_add(pagename, pageid, revids[-1])
self.metadir.pages_add_rv(int(pageid),
response[pageid]['revisions'][0])
- filename = mw.api.pagename_to_filename(pagename)
+ filename = mw.metadir.pagename_to_filename(pagename)
with file(os.path.join(self.metadir.root, filename + '.wiki'),
'w') as fd:
- data = response[pageid]['revisions'][0]['*'].encode('utf-8')
+ data = response[pageid]['revisions'][0]['*']
+ data = data.encode('utf-8')
fd.write(data)
+
class StatusCommand(CommandBase):
def __init__(self):
for file in status:
if status[file] == 'U':
print self.metadir.diff_rv_to_working(
- mw.api.filename_to_pagename(file[:-5])),
+ mw.metadir.filename_to_pagename(file[:-5])),
class CommitCommand(CommandBase):
'action': 'query',
'prop': 'info|revisions',
'intoken': 'edit',
- 'titles': mw.api.filename_to_pagename(file[:-5]),
+ 'titles': mw.metadir.filename_to_pagename(file[:-5]),
}
response = self.api.call(data)
pageid = response['query']['pages'].keys()[0]
- revid = response['query']['pages'][pageid]['revisions'][0]['revid']
- awaitedrevid = self.metadir.pages_get_rv_list( {'id': pageid } )[0]
- if revid != awaitedrevid :
- print "Ignoring %s - Edition conflict detected %s - %s " % ( file , awaitedrevid, revid)
+ revid = response['query']['pages'][pageid]['revisions'][0]\
+ ['revid']
+ awaitedrevid = self.metadir.pages_get_rv_list({'id': pageid})\
+ [0]
+ if revid != awaitedrevid:
+ print 'warning: edit conflict detected on %s (%s -> %s) ' \
+ '-- skipping!' % (file, awaitedrevid, revid)
continue
edittoken = response['query']['pages'][pageid]['edittoken']
- # FIXME use basetimestamp and starttimestamp
filename = os.path.join(self.metadir.root, file)
text = codecs.open(filename, 'r', 'utf-8').read()
text = text.encode('utf-8')
textmd5 = md5.hexdigest()
data = {
'action': 'edit',
- 'title': mw.api.filename_to_pagename(file[:-5]),
+ 'title': mw.metadir.filename_to_pagename(file[:-5]),
'token': edittoken,
'text': text,
'md5': textmd5,
data['bot'] = 'bot'
response = self.api.call(data)
if response['edit']['result'] == 'Success':
- if response['edit'].has_key('nochange'):
- print "Ignoring %s - No changes were detected - " \
- "Removing ending lf" % file
+ if 'nochange' in response['edit']:
+ print 'warning: no changes detected in %s - ' \
+ 'skipping and removing ending LF' % file
self.metadir.clean_page(file[:-5])
continue
if response['edit']['oldrevid'] != revid:
- print "Ignoring %s - Colision detected " % file
+ print 'warning: edit conflict detected on %s -- ' \
+ 'skipping!' % file
continue
data = {
'action': 'query',
self.metadir.pages_add_rv(int(pageid),
response[pageid]['revisions'][0])
else:
- print 'committing %s failed: %s' % \
+ print 'error: committing %s failed: %s' % \
(file, response['edit']['result'])