Merge lp:~marten-de-vries/openteacher/abby-lingvo-tutor-filetype into lp:~openteachermaintainers/openteacher/2.x-broken

Proposed by Marten de Vries
Status: Merged
Merged at revision: 125
Proposed branch: lp:~marten-de-vries/openteacher/abby-lingvo-tutor-filetype
Merge into: lp:~openteachermaintainers/openteacher/2.x-broken
Diff against target: 78 lines (+49/-1)
2 files modified
src/fileTypes.py (+45/-0)
src/openteacher.py (+4/-1)
To merge this branch: bzr merge lp:~marten-de-vries/openteacher/abby-lingvo-tutor-filetype
Reviewer Review Type Date Requested Status
OpenTeacher Maintainers Pending
Review via email: mp+61279@code.launchpad.net

Commit message

Adds ABBYY Lingvo Tutor file import support.

Description of the change

Adds ABBYY Lingvo Tutor file import support.

Only needs a code review, all the files mailed by Pasha.P.Komar are already tested and were imported succesfully.

To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/fileTypes.py'
2--- src/fileTypes.py 2010-12-13 16:54:55 +0000
3+++ src/fileTypes.py 2011-05-17 16:36:04 +0000
4@@ -40,6 +40,51 @@
5 text = unicode(text).encode("UTF-8")
6 return xml.dom.minidom.Document.createTextNode(self, text)
7
8+class ABBYLingvoTutorFile:
9+ """The representation of an ABBY Lingvo Tutor (.xml) file"""
10+ def __init__(self, location):
11+ self.wordList = words.WordList()
12+ self.location = location
13+
14+ def load(self):
15+ try:
16+ dom = xml.dom.minidom.parse(self.location.encode(sys.getfilesystemencoding()))
17+ except xml.parsers.expat.ExpatError, e:
18+ print e
19+ raise errors.ContentError()
20+ try:
21+ root = dom.getElementsByTagName("dictionary")[0]
22+ except IndexError, e:
23+ print e
24+ raise errors.ContentError()
25+
26+ if root.hasAttribute("title"):
27+ self.wordList.title = root.getAttribute("title")
28+ for card in root.getElementsByTagName("card"):
29+ word = words.Word()
30+ try:
31+ word.question = card.getElementsByTagName("word")[0].childNodes[0].nodeValue
32+ except IndexError, e:
33+ print e
34+ raise errors.ContentError()
35+ try:
36+ translations = card.getElementsByTagName("translations")[0]
37+ except IndexError, e:
38+ print e
39+ raise errors.ContentError()
40+ answers = translations.getElementsByTagName("word")
41+ try:
42+ word.answer = answers[0].childNodes[0].nodeValue
43+ except IndexError:
44+ pass
45+ try:
46+ answers = answers[1:]
47+ answers = [a.childNodes[0].nodeValue for a in answers]
48+ word.secondAnswer = u", ".join(answers)
49+ except IndexError:
50+ pass
51+ self.wordList.addWord(word)
52+
53 class OpenTeacherFile:
54 """The OpenTeacherFile class represents an xml file"""
55 def __init__(self, location):
56
57=== modified file 'src/openteacher.py'
58--- src/openteacher.py 2011-05-15 14:44:31 +0000
59+++ src/openteacher.py 2011-05-17 16:36:04 +0000
60@@ -1840,7 +1840,7 @@
61 self,
62 QtCore.QCoreApplication.translate("OpenTeacher", "Open..."),
63 self.currentDir,
64- QtCore.QCoreApplication.translate("OpenTeacher", "Supported") + " (*.ot *.t2k *.wrts)")
65+ QtCore.QCoreApplication.translate("OpenTeacher", "Supported") + " (*.ot *.t2k *.wrts *.xml)")
66 )
67 #If not clicked cancel
68 if openFilename:
69@@ -1871,6 +1871,9 @@
70 elif extension == ".wrts":
71 #Parse as WRTS file
72 parsedFile = fileTypes.WrtsFile(filename)
73+ elif extension == ".xml":
74+ #Parse ABBY Lingvo Tutor file
75+ parsedFile = fileTypes.ABBYLingvoTutorFile(filename)
76 else:
77 #Unsupported file, tell user.
78 raise errors.UnsupportedFileImportError()

Subscribers

People subscribed via source and target branches