本文整理汇总了Python中MoinMoin.PageEditor.PageEditor.get_raw_body_str方法的典型用法代码示例。如果您正苦于以下问题:Python PageEditor.get_raw_body_str方法的具体用法?Python PageEditor.get_raw_body_str怎么用?Python PageEditor.get_raw_body_str使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MoinMoin.PageEditor.PageEditor
的用法示例。
在下文中一共展示了PageEditor.get_raw_body_str方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: run
# 需要导入模块: from MoinMoin.PageEditor import PageEditor [as 别名]
# 或者: from MoinMoin.PageEditor.PageEditor import get_raw_body_str [as 别名]
def run(yielder, sp):
# XXX add locking, acquire read-lock on sp
if debug:
self.log_status(ActionClass.INFO, raw_suffix="Processing %r" % sp)
local_pagename = sp.local_name
if not self.request.user.may.write(local_pagename):
self.log_status(ActionClass.WARN, _("Skipped page %s because of no write access to local page."), (local_pagename, ))
return
current_page = PageEditor(self.request, local_pagename) # YYY direct access
comment = u"Local Merge - %r" % (remote.get_interwiki_name() or remote.get_iwid())
tags = TagStore(current_page)
matching_tags = tags.fetch(iwid_full=remote.iwid_full, direction=match_direction)
matching_tags.sort()
if debug:
self.log_status(ActionClass.INFO, raw_suffix="Tags: %r <<BR>> All: %r" % (matching_tags, tags.tags))
# some default values for non matching tags
normalised_name = None
remote_rev = None
local_rev = sp.local_rev # merge against the newest version
old_contents = ""
if matching_tags:
newest_tag = matching_tags[-1]
local_change = newest_tag.current_rev != sp.local_rev
remote_change = newest_tag.remote_rev != sp.remote_rev
# handle some cases where we cannot continue for this page
if not remote_change and (direction == DOWN or not local_change):
return # no changes done, next page
if sp.local_deleted and sp.remote_deleted:
return
if sp.remote_deleted and not local_change:
msg = local.delete_page(sp.local_name, comment)
if not msg:
self.log_status(ActionClass.INFO, _("Deleted page %s locally."), (sp.name, ))
else:
self.log_status(ActionClass.ERROR, _("Error while deleting page %s locally:"), (sp.name, ), msg)
return
if sp.local_deleted and not remote_change:
if direction == DOWN:
return
yield remote.delete_page_pre(sp.remote_name, sp.remote_rev, local_full_iwid)
msg = remote.delete_page_post(yielder.fetch_result())
if not msg:
self.log_status(ActionClass.INFO, _("Deleted page %s remotely."), (sp.name, ))
else:
self.log_status(ActionClass.ERROR, _("Error while deleting page %s remotely:"), (sp.name, ), msg)
return
if sp.local_mime_type != MIMETYPE_MOIN and not (local_change ^ remote_change):
self.log_status(ActionClass.WARN, _("The item %s cannot be merged automatically but was changed in both wikis. Please delete it in one of both wikis and try again."), (sp.name, ))
return
if sp.local_mime_type != sp.remote_mime_type:
self.log_status(ActionClass.WARN, _("The item %s has different mime types in both wikis and cannot be merged. Please delete it in one of both wikis or unify the mime type, and try again."), (sp.name, ))
return
if newest_tag.normalised_name != sp.name:
self.log_status(ActionClass.WARN, _("The item %s was renamed locally. This is not implemented yet. Therefore the full synchronisation history is lost for this page."), (sp.name, )) # XXX implement renames
else:
normalised_name = newest_tag.normalised_name
local_rev = newest_tag.current_rev
remote_rev = newest_tag.remote_rev
old_contents = Page(self.request, local_pagename, rev=newest_tag.current_rev).get_raw_body_str() # YYY direct access
else:
if (sp.local_deleted and not sp.remote_rev) or (
sp.remote_deleted and not sp.local_rev):
return
self.log_status(ActionClass.INFO, _("Synchronising page %s with remote page %s ..."), (local_pagename, sp.remote_name))
if direction == DOWN:
remote_rev = None # always fetch the full page, ignore remote conflict check
patch_base_contents = ""
else:
patch_base_contents = old_contents
# retrieve remote contents diff
if remote_rev != sp.remote_rev:
if sp.remote_deleted: # ignore remote changes
current_remote_rev = sp.remote_rev
is_remote_conflict = False
diff = None
self.log_status(ActionClass.WARN, _("The page %s was deleted remotely but changed locally."), (sp.name, ))
else:
yield remote.get_diff_pre(sp.remote_name, remote_rev, None, normalised_name)
diff_result = remote.get_diff_post(yielder.fetch_result())
if diff_result is None:
self.log_status(ActionClass.ERROR, _("The page %s could not be synced. The remote page was renamed. This is not supported yet. You may want to delete one of the pages to get it synced."), (sp.remote_name, ))
return
is_remote_conflict = diff_result["conflict"]
assert diff_result["diffversion"] == 1
diff = diff_result["diff"]
current_remote_rev = diff_result["current"]
else:
current_remote_rev = remote_rev
if sp.local_mime_type == MIMETYPE_MOIN:
#.........这里部分代码省略.........