def port_checkins(self): project = self.project pr = getToolByName(project, "portal_repository") cat = getToolByName(project, "portal_catalog") session = self.session db = self.db checkout = self.checkoutdir repo = BzrAccess(checkout, default_commit_message=" ") checkins = session.query(Checkin).order_by(Checkin.timestamp) filename_map = {} for checkin in checkins: pageId = str(checkin.wikipage) version = checkin.version logger.info("page: %s" % pageId) try: page = project.unrestrictedTraverse(pageId) except Exception, e: print e import pdb; pdb.set_trace() continue if version == -99: # it's the current version msg = None content = page.EditableBody() timestamp = zDateTime(page.ModificationDate()).timeTime() author = ILastModifiedAuthorId(page) else: version = pr.retrieve(page, checkin.version) object = version.object author = version.sys_metadata['principal'] msg = version.comment content = object.EditableBody() timestamp = version.sys_metadata['timestamp'] logger.info("page: %s\trev: %s" % (page, checkin.version)) try: repo.write(pageId, content, msg=msg, author=author, committer=self.committer, timestamp=timestamp) filename_map[pageId] = pageId except IOError, e: if e.errno == 36: import md5 hashedId = md5.md5(pageId).hexdigest() repo.write(hashedId, content, msg=msg, author=author, committer=self.committer, timestamp=timestamp) filename_map[pageId] = hashedId
def write_page(self, path, contents, msg=None, username=None): repo = BzrAccess(self.repo_path) return repo.write(path, contents, msg=msg, author=username)
def write_pages(self, files, prefix='', msg=None, username=None): repo = BzrAccess(self.repo_path) for path, contents in files: repo.write("%s/%s" % (prefix, path), contents, commit=False) return repo.commit(prefix, msg=msg, author=username)
def write(dir, x, y, value): fs = BzrAccess(dir) bit_uri = os.path.join("bits", "%s-%s" % (y, x)) fs.write(bit_uri, value)