Rename Page

Occasionally one wants to rename a page to refactor the information space. (My big personal challenge is having a bunch of blog entries with the wrong year in the datestamp!)

Here are the basic requirements:

  • ask for current name, new name

  • make sure new name not already taken (and is valid Wiki Name? not anything in square brackets works)

  • rename page itself

  • adjust any pages which list the old name as a parent (note, a page can have multiple parents, so can't just overwrite the entire property)

  • do backlinks search to replace body text referring to old name

  • (in searching, beware possibility that Wiki Name is really just part of Wiki NameLonger)

My personal needs are simpler (I haven't referred (yet) to a weblog entry, I know the new intended names aren't taken, have stuck with single parent for each page, etc.), with the extra need of wanting it to run as a batch

  • find any page with id starting 'z2001'

  • rename it using 'z2002'

  • edit Parents property for appropriate child pages (I can do a real hack here - instead of finding child for each renamed page, I can just step again through the entire batch of pages, and change any parent values from 2001 to 2002.)

So I should just write/run my own batch process for now. The biggest barrier, perhaps, figuring out the right packaging for the code... looks like a [script](http://www.zope.org/Members/michel/ZB/Scripting Zope.dtml) is the answer.

Mar 22'02

  • can't do regexp from within Script, but can use 'string' module

  • hmm, how many spaces equal a tab in an HTML form editing a Script? After some experimenting, it looks like almost any number works. I use 2.

  • wrote the 2 scripts, got both working. Yippee!!

    • use manage_renameObject

    • discover (doh) that slicing indexes work a little differently than I expected. 'theId[0:5] = "z2001"', it's not 'theId[0:4]'

    • use 'manage_changeProperties(parents=[newParent])'


Edited:    |       |    Search Twitter for discussion