def handle(self, *args, **opts): index = Index() index.open() self.delete_old(index) try: index.optimize() finally: index.close()
def setUp(self): JVM.attachCurrentThread() WLTestCase.setUp(self) settings.NO_SEARCH_INDEX = False settings.SEARCH_INDEX = path.join(settings.MEDIA_ROOT, 'search') txt = path.join(path.dirname(__file__), 'files/fraszka-do-anusie.xml') self.book = models.Book.from_xml_file(txt) index = Index() index.open() try: index.index_book(self.book) except: index.close() self.search = Search()
def handle(self, *directories, **options): from django.db import transaction self.style = color_style() verbose = options.get('verbose') force = options.get('force') show_traceback = options.get('traceback', False) import_picture = options.get('import_picture') wait_until = None if options.get('wait_until'): wait_until = time.mktime(time.strptime(options.get('wait_until'), '%Y-%m-%d %H:%M:%S')) if verbose > 0: print "Will wait until %s; it's %f seconds from now" % ( time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(wait_until)), wait_until - time.time()) if options.get('search_index') and not settings.NO_SEARCH_INDEX: index = Index() index.open() try: index.index_tags() finally: index.close() # Start transaction management. transaction.commit_unless_managed() transaction.enter_transaction_management() transaction.managed(True) files_imported = 0 files_skipped = 0 for dir_name in directories: if not os.path.isdir(dir_name): print self.style.ERROR("%s: Not a directory. Skipping." % dir_name) else: # files queue files = sorted(os.listdir(dir_name)) postponed = {} while files: file_name = files.pop(0) file_path = os.path.join(dir_name, file_name) file_base, ext = os.path.splitext(file_path) # Skip files that are not XML files if not ext == '.xml': continue if verbose > 0: print "Parsing '%s'" % file_path else: sys.stdout.write('.') sys.stdout.flush() # Import book files try: if import_picture: self.import_picture(file_path, options) else: self.import_book(file_path, options) files_imported += 1 transaction.commit() except (Book.AlreadyExists, Picture.AlreadyExists): print self.style.ERROR('%s: Book or Picture already imported. Skipping. To overwrite use --force.' % file_path) files_skipped += 1 except Book.DoesNotExist, e: if file_name not in postponed or postponed[file_name] < files_imported: # push it back into the queue, maybe the missing child will show up if verbose: print self.style.NOTICE('Waiting for missing children') files.append(file_name) postponed[file_name] = files_imported else: # we're in a loop, nothing's being imported - some child is really missing raise e