X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/5913c54d19b8f6775633176032161d49f9b2f1aa..6b0f855c770066db9b5b3fa11a9af64c4b8c60bd:/src/catalogue/management/__init__.py diff --git a/src/catalogue/management/__init__.py b/src/catalogue/management/__init__.py index bc3d6c02..6f6f6b6e 100644 --- a/src/catalogue/management/__init__.py +++ b/src/catalogue/management/__init__.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- -# # This file is part of FNP-Redakcja, licensed under GNU Affero GPLv3 or later. # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. # @@ -54,14 +52,14 @@ class XmlUpdater(object): def fix_chunk(self, chunk, user, verbose=0, dry_run=False): """Runs the update for a single chunk.""" if verbose >= 2: - print chunk.get_absolute_url() + print(chunk.get_absolute_url()) old_head = chunk.head src = old_head.materialize() try: tree = etree.fromstring(src) except: if verbose: - print "%s: invalid XML" % chunk.get_absolute_url() + print("%s: invalid XML" % chunk.get_absolute_url()) self.counters['Bad XML'] += 1 return @@ -82,7 +80,7 @@ class XmlUpdater(object): if not dry_run: new_head = chunk.commit( - etree.tostring(tree, encoding=unicode), + etree.tostring(tree, encoding='unicode'), author=user, description=self.commit_desc ) @@ -90,7 +88,7 @@ class XmlUpdater(object): if old_head.publishable: new_head.set_publishable(True) if verbose >= 2: - print "done" + print("done") self.counters['Updated chunks'] += 1 def run(self, user, verbose=0, dry_run=False, books=None): @@ -100,21 +98,17 @@ class XmlUpdater(object): books = Book.objects.all() # Start transaction management. - transaction.enter_transaction_management() - - for book in books: - self.counters['All books'] += 1 - chunks = book.chunk_set.all() - if self.only_first_chunk: - chunks = chunks[:1] - for chunk in chunks: - self.counters['All chunks'] += 1 - self.fix_chunk(chunk, user, verbose, dry_run) - - transaction.commit() - transaction.leave_transaction_management() + with transaction.atomic(): + for book in books: + self.counters['All books'] += 1 + chunks = book.chunk_set.all() + if self.only_first_chunk: + chunks = chunks[:1] + for chunk in chunks: + self.counters['All chunks'] += 1 + self.fix_chunk(chunk, user, verbose, dry_run) def print_results(self): """Prints the counters.""" for item in sorted(self.counters.items()): - print "%s: %d" % item + print("%s: %d" % item)