~openlp-core/openlp/trunk

« back to all changes in this revision

Viewing changes to openlp/plugins/bibles/lib/csvbible.py

  • Committer: Tim Bentley
  • Author(s): Tomas Groth
  • Date: 2015-02-17 18:50:10 UTC
  • mfrom: (2494.4.8 bugfixes14)
  • Revision ID: tim.bentley@gmail.com-20150217185010-hi6aybvfdpc9chn9
Use the doubleclick-go-live setting in the preview controller. Fixes bug 1422197.
If no copyright info is given for bible, don't print it. Fixes bug 1420785.
Make csv-bible import work with python3. Fixes bug 1421136.
Add default shortcut bindings for preview next/prev, and make the appear in the shortcut edit dialog. Fixes bug 1412570.

Show diffs side-by-side

added added

removed removed

Lines of Context:
73
73
        """
74
74
        log.info(self.__class__.__name__)
75
75
        BibleDB.__init__(self, parent, **kwargs)
76
 
        self.books_file = kwargs['books_file']
 
76
        self.books_file = kwargs['booksfile']
77
77
        self.verses_file = kwargs['versefile']
78
78
 
79
79
    def do_import(self, bible_name=None):
93
93
        # Populate the Tables
94
94
        try:
95
95
            details = get_file_encoding(self.books_file)
96
 
            books_file = open(self.books_file, 'r')
97
 
            if not books_file.read(3) == '\xEF\xBB\xBF':
98
 
                # no BOM was found
99
 
                books_file.seek(0)
 
96
            books_file = open(self.books_file, 'r', encoding=details['encoding'])
100
97
            books_reader = csv.reader(books_file, delimiter=',', quotechar='"')
101
98
            for line in books_reader:
102
99
                if self.stop_import_flag:
103
100
                    break
104
 
                self.wizard.increment_progress_bar(translate('BiblesPlugin.CSVBible', 'Importing books... %s') %
105
 
                                                   str(line[2], details['encoding']))
106
 
                book_ref_id = self.get_book_ref_id_by_name(str(line[2], details['encoding']), 67, language_id)
 
101
                self.wizard.increment_progress_bar(translate('BiblesPlugin.CSVBible', 'Importing books... %s')
 
102
                                                   % line[2])
 
103
                book_ref_id = self.get_book_ref_id_by_name(line[2], 67, language_id)
107
104
                if not book_ref_id:
108
105
                    log.error('Importing books from "%s" failed' % self.books_file)
109
106
                    return False
110
107
                book_details = BiblesResourcesDB.get_book_by_id(book_ref_id)
111
 
                self.create_book(str(line[2], details['encoding']), book_ref_id, book_details['testament_id'])
112
 
                book_list[int(line[0])] = str(line[2], details['encoding'])
 
108
                self.create_book(line[2], book_ref_id, book_details['testament_id'])
 
109
                book_list.update({int(line[0]): line[2]})
113
110
            self.application.process_events()
114
111
        except (IOError, IndexError):
115
112
            log.exception('Loading books from file failed')
125
122
        try:
126
123
            book_ptr = None
127
124
            details = get_file_encoding(self.verses_file)
128
 
            verse_file = open(self.verses_file, 'rb')
129
 
            if not verse_file.read(3) == '\xEF\xBB\xBF':
130
 
                # no BOM was found
131
 
                verse_file.seek(0)
 
125
            verse_file = open(self.verses_file, 'r', encoding=details['encoding'])
132
126
            verse_reader = csv.reader(verse_file, delimiter=',', quotechar='"')
133
127
            for line in verse_reader:
134
128
                if self.stop_import_flag:
136
130
                try:
137
131
                    line_book = book_list[int(line[0])]
138
132
                except ValueError:
139
 
                    line_book = str(line[0], details['encoding'])
 
133
                    line_book = line[0]
140
134
                if book_ptr != line_book:
141
135
                    book = self.get_book(line_book)
142
136
                    book_ptr = book.name
144
138
                        translate('BiblesPlugin.CSVBible',
145
139
                                  'Importing verses from %s...' % book.name, 'Importing verses from <book name>...'))
146
140
                    self.session.commit()
147
 
                try:
148
 
                    verse_text = str(line[3], details['encoding'])
149
 
                except UnicodeError:
150
 
                    verse_text = str(line[3], 'cp1252')
 
141
                verse_text = line[3]
151
142
                self.create_verse(book.id, line[1], line[2], verse_text)
152
143
            self.wizard.increment_progress_bar(translate('BiblesPlugin.CSVBible', 'Importing verses... done.'))
153
144
            self.application.process_events()
170
161
    """
171
162
    detect_file = None
172
163
    try:
173
 
        detect_file = open(filename, 'r')
 
164
        detect_file = open(filename, 'rb')
174
165
        details = chardet.detect(detect_file.read(1024))
175
166
    except IOError:
176
167
        log.exception('Error detecting file encoding')