E4XML/TasksWriter.py

changeset 0
de9c2efb9d02
child 12
1d8dd9706f46
equal deleted inserted replaced
-1:000000000000 0:de9c2efb9d02
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2005 - 2009 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing the writer class for writing an XML tasks file.
8 """
9
10 import os
11 import time
12
13 from E4Gui.E4Application import e4App
14
15 from XMLWriterBase import XMLWriterBase
16 from Config import tasksFileFormatVersion
17
18 import Preferences
19 import Utilities
20
21 class TasksWriter(XMLWriterBase):
22 """
23 Class implementing the writer class for writing an XML tasks file.
24 """
25 def __init__(self, file, forProject = False, projectName=""):
26 """
27 Constructor
28
29 @param file open file (like) object for writing
30 @param forProject flag indicating project related mode (boolean)
31 @param projectName name of the project (string)
32 """
33 XMLWriterBase.__init__(self, file)
34
35 self.name = projectName
36 self.forProject = forProject
37
38 def writeXML(self):
39 """
40 Public method to write the XML to the file.
41 """
42 XMLWriterBase.writeXML(self)
43
44 self._write('<!DOCTYPE Tasks SYSTEM "Tasks-%s.dtd">' % tasksFileFormatVersion)
45
46 # add some generation comments
47 if self.forProject:
48 self._write("<!-- eric4 tasks file for project %s -->" % self.name)
49 if Preferences.getProject("XMLTimestamp"):
50 self._write("<!-- Saved: %s -->" % time.strftime('%Y-%m-%d, %H:%M:%S'))
51 else:
52 self._write("<!-- eric4 tasks file -->")
53 self._write("<!-- Saved: %s -->" % time.strftime('%Y-%m-%d, %H:%M:%S'))
54
55 # add the main tag
56 self._write('<Tasks version="%s">' % tasksFileFormatVersion)
57
58 # do the tasks
59 if self.forProject:
60 tasks = e4App().getObject("TaskViewer").getProjectTasks()
61 else:
62 tasks = e4App().getObject("TaskViewer").getGlobalTasks()
63 for task in tasks:
64 self._write(' <Task priority="%d" completed="%s" bugfix="%s">' % \
65 (task.priority, task.completed, task.isBugfixTask))
66 self._write(' <Summary>%s</Summary>' % \
67 self.escape("%s" % task.description.strip()))
68 self._write(' <Description>%s</Description>' % \
69 self.escape(self.encodedNewLines(task.longtext.strip())))
70 self._write(' <Created>%s</Created>' % \
71 time.strftime("%Y-%m-%d, %H:%M:%S", time.localtime(task.created)))
72 if task.filename:
73 self._write(' <Resource>')
74 self._write(' <Filename>%s</Filename>' % \
75 Utilities.fromNativeSeparators(task.filename))
76 self._write(' <Linenumber>%d</Linenumber>' % task.lineno)
77 self._write(' </Resource>')
78 self._write(' </Task>')
79
80 self._write('</Tasks>', newline = False)

eric ide

mercurial