Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/mwlib/timeline.py
diff options
context:
space:
mode:
Diffstat (limited to 'mwlib/timeline.py')
-rwxr-xr-xmwlib/timeline.py52
1 files changed, 52 insertions, 0 deletions
diff --git a/mwlib/timeline.py b/mwlib/timeline.py
new file mode 100755
index 0000000..e85dd84
--- /dev/null
+++ b/mwlib/timeline.py
@@ -0,0 +1,52 @@
+#! /usr/bin/env python
+
+# Copyright (c) 2007-2008 PediaPress GmbH
+# See README.txt for additional licensing information.
+
+"""implement http://meta.wikimedia.org/wiki/EasyTimeline
+"""
+
+import os
+import tempfile
+try:
+ from hashlib import md5
+except ImportError:
+ from md5 import md5
+
+
+def drawTimeline(script, basedir=None):
+ if isinstance(script, unicode):
+ script = script.encode('utf8')
+ if basedir is None:
+ basedir = os.path.join(tempfile.gettempdir(), "timeline-%s" % (os.getuid(),))
+ if not os.path.exists(basedir):
+ os.mkdir(basedir)
+
+ m=md5()
+ m.update(script)
+ ident = m.hexdigest()
+
+ pngfile = os.path.join(basedir, ident+'.png')
+
+ if os.path.exists(pngfile):
+ return pngfile
+
+ scriptfile = os.path.join(basedir, ident+'.txt')
+ open(scriptfile, 'w').write(script)
+ et = os.path.join(os.path.dirname(__file__), "EasyTimeline.pl")
+
+ err = os.system("perl %s -P /usr/bin/ploticus -T /tmp/ -i %s" % (et, scriptfile))
+ if err != 0:
+ return None
+
+ svgfile = os.path.join(basedir, ident+'.svg')
+
+ if os.path.exists(svgfile):
+ os.unlink(svgfile)
+
+ if os.path.exists(pngfile):
+ return pngfile
+
+ return None
+
+