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