E4XML/TasksWriter.py

changeset 50
a36eecf45b2e
parent 49
f991944e859c
child 51
7d80b0f20ca6
equal deleted inserted replaced
49:f991944e859c 50:a36eecf45b2e
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2005 - 2010 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("<!-- eric5 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("<!-- eric5 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