Ticket #116: wikieditor.py

File wikieditor.py, 0.9 kB (added by coderanger, 3 years ago)

Requested script

Line 
1 #! /usr/bin/env python
2 from trac.core import *
3 from trac.env import Environment
4 from trac.wiki.model import WikiPage
5 from tempfile import NamedTemporaryFile
6 import sys
7 import os
8 import pwd
9 import string
10
11 # Grab the arguments
12 name = sys.argv[1]
13 editor = os.environ['EDITOR']
14
15 # Open the envrionment
16 env = Environment('/var/trac/helpdesk')
17
18 # Grab the page model
19 page = WikiPage(env, name)
20
21 # Make a temporary file
22 safename = name.translate(string.maketrans('/','_'))
23 file = NamedTemporaryFile(mode='w+',prefix=safename,suffix='.txt')
24
25 # If the page exists, populate the tempfile
26 if page.exists:
27     file.write(page.text)
28     file.flush()
29    
30 # Open the file in $EDITOR
31 os.spawnlp(os.P_WAIT,editor,editor,file.name)
32
33 # Reread the text
34 file.seek(0)
35 page.text = file.read()
36
37 # Save the file back
38 try:
39     page.save(author=os.getlogin(), comment='', remote_addr='127.0.0.1')
40     print 'Page changed succesfully'
41 except TracError, e:
42     print 'Error: %s' % e.message