def update_fulltext(self, *args): from weblate.trans.models import Unit ids = extract_batch_args(*args) fulltext = Fulltext() # Filter matching units units = Unit.objects.filter(id__in=[x[0] for x in ids]) # Update index try: fulltext.update_index(units) except LockError as exc: raise self.retry(exc=exc)
def delete_fulltext(self, *args): ids = extract_batch_args(*args) fulltext = Fulltext() units = set() languages = {} for unit, language in ids: units.add(unit) if language not in languages: languages[language] = set() languages[language].add(unit) try: fulltext.delete_search_units(units, languages) except LockError as exc: raise self.retry(exc=exc)
def delete_fulltext(self, *args): ids = extract_batch_args(*args) fulltext = Fulltext() units = set() languages = defaultdict(set) for unit, language in ids: units.add(unit) if language is None: continue languages[language].add(unit) try: fulltext.delete_search_units(units, languages) except LockError: LOGGER.info('retrying delete batch of len %d', len(ids)) # Manually handle retries, it doesn't work # with celery-batches sleep(10) for unit in ids: delete_fulltext.delay(*unit)
def delete_fulltext(self, *args): ids = extract_batch_args(*args) fulltext = Fulltext() units = set() languages = {} for unit, language in ids: units.add(unit) if language is None: continue if language not in languages: languages[language] = set() languages[language].add(unit) try: fulltext.delete_search_units(units, languages) except LockError: # Manually handle retries, it doesn't work # with celery-batches sleep(10) for unit in ids: delete_fulltext.delay(*unit)