| 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 |
|---|