def get_all_indexed_models(): backends = haystack_connections.connections_info.keys() available_models = {} for backend_key in backends: connection = haystack_connections[backend_key] backend = connection.get_backend() unified_index = haystack_connections[backend_key].get_unified_index() for app in haystack_load_apps(): for model in haystack_get_models(app): try: index = unified_index.get_index(model) except NotHandled: continue model_name = model.__module__ + '.' + model.__name__ available_models[model_name] = { 'backend_key': backend_key, 'backend': backend, 'app': app, 'model': model, 'index': index, } return available_models
def handle(self, **options): self.verbosity = int(options.get("verbosity", 1)) self.batchsize = options.get("batchsize", DEFAULT_BATCH_SIZE) self.start_date = None self.end_date = None self.remove = options.get("remove", False) self.workers = options.get("workers", 0) self.commit = options.get("commit", True) self.max_retries = options.get("max_retries", DEFAULT_MAX_RETRIES) self.backends = options.get("using") if not self.backends: self.backends = haystack_connections.connections_info.keys() age = options.get("age", DEFAULT_AGE) minutes = options.get("minutes", DEFAULT_AGE) start_date = options.get("start_date") end_date = options.get("end_date") if self.verbosity > 2: LOG.setLevel(logging.DEBUG) elif self.verbosity > 1: LOG.setLevel(logging.INFO) if (minutes and age) or (minutes and start_date) or (age and start_date): raise CommandError( "Minutes / age / start date options are mutually exclusive" ) if minutes is not None: self.start_date = now() - timedelta(minutes=minutes) if age is not None: self.start_date = now() - timedelta(hours=age) if start_date is not None: from dateutil.parser import parse as dateutil_parse try: self.start_date = dateutil_parse(start_date) except ValueError: pass if end_date is not None: from dateutil.parser import parse as dateutil_parse try: self.end_date = dateutil_parse(end_date) except ValueError: pass labels = options.get("app_label") or haystack_load_apps() for label in labels: for using in self.backends: try: self.update_backend(label, using) except Exception: LOG.exception("Error updating %s using %s ", label, using) raise
def test_load_apps(self): apps = app_loading.haystack_load_apps() self.assertIsInstance(apps, (list, GeneratorType)) self.assertIn('hierarchal_app_django', apps) self.assertNotIn('test_app_without_models', apps, msg='haystack_load_apps should exclude apps without defined models')
def test_load_apps(self): apps = app_loading.haystack_load_apps() self.assertIsInstance(apps, (list, GeneratorType)) self.assertIn("hierarchal_app_django", apps) self.assertNotIn( "test_app_without_models", apps, msg="haystack_load_apps should exclude apps without defined models", )
def handle(self, *items, **options): self.verbosity = int(options.get('verbosity', 1)) self.batchsize = options.get('batchsize', DEFAULT_BATCH_SIZE) self.start_date = None self.end_date = None self.remove = options.get('remove', False) self.workers = int(options.get('workers', 0)) self.commit = options.get('commit', True) self.filterfiled = options.get('filed', None) self.filterkey = options.get('filedkey', None) # self.startid = options.get('startid', 0) if sys.version_info < (2, 7): warnings.warn('multiprocessing is disabled on Python 2.6 and earlier. ' 'See https://github.com/toastdriven/django-haystack/issues/1001') self.workers = 0 self.backends = options.get('using') if not self.backends: self.backends = haystack_connections.connections_info.keys() age = options.get('age', DEFAULT_AGE) start_date = options.get('start_date') end_date = options.get('end_date') if age is not None: self.start_date = now() - timedelta(hours=int(age)) if start_date is not None: from dateutil.parser import parse as dateutil_parse try: self.start_date = dateutil_parse(start_date) except ValueError: pass if end_date is not None: from dateutil.parser import parse as dateutil_parse try: self.end_date = dateutil_parse(end_date) except ValueError: pass if not items: items = haystack_load_apps() return super(Command, self).handle(*items, **options)
def handle(self, *args, **options): self.verbosity = int(options.get('verbosity', 1)) self.batchsize = options.get('batchsize', DEFAULT_BATCH_SIZE) self.start_date = None self.end_date = None self.remove = options.get('remove', False) self.workers = int(options.get('workers', 0)) self.commit = options.get('commit', True) if sys.version_info < (2, 7): warnings.warn( 'multiprocessing is disabled on Python 2.6 and earlier. ' 'See https://github.com/toastdriven/django-haystack/issues/1001' ) self.workers = 0 self.backends = options.get('using') if not self.backends: self.backends = haystack_connections.connections_info.keys() age = options.get('age', DEFAULT_AGE) start_date = options.get('start_date') end_date = options.get('end_date') if age is not None: self.start_date = now() - timedelta(hours=int(age)) if start_date is not None: from dateutil.parser import parse as dateutil_parse try: self.start_date = dateutil_parse(start_date) except ValueError: pass if end_date is not None: from dateutil.parser import parse as dateutil_parse try: self.end_date = dateutil_parse(end_date) except ValueError: pass if not args: args = haystack_load_apps() output = [] for label in args: label_output = self.handle_label(label, **options) if label_output: output.append(label_output) return '\n'.join(output)
def handle(self, **options): self.verbosity = int(options.get('verbosity', 1)) self.batchsize = options.get('batchsize', DEFAULT_BATCH_SIZE) self.start_date = None self.end_date = None self.remove = options.get('remove', False) self.missing = options.get('missing', False) self.workers = options.get('workers', 0) self.commit = options.get('commit', True) self.connection = options.get('connection', DEFAULT_DB_ALIAS) self.max_retries = options.get('max_retries', DEFAULT_MAX_RETRIES) self.backends = options.get('using') if not self.backends: self.backends = haystack_connections.connections_info.keys() age = options.get('age', DEFAULT_AGE) start_date = options.get('start_date') end_date = options.get('end_date') if self.verbosity > 2: LOG.setLevel(logging.DEBUG) elif self.verbosity > 1: LOG.setLevel(logging.INFO) if age is not None: self.start_date = now() - timedelta(hours=int(age)) if start_date is not None: from dateutil.parser import parse as dateutil_parse try: self.start_date = dateutil_parse(start_date) except ValueError: pass if end_date is not None: from dateutil.parser import parse as dateutil_parse try: self.end_date = dateutil_parse(end_date) except ValueError: pass labels = options.get('app_label') or haystack_load_apps() for label in labels: for using in self.backends: try: self.update_backend(label, using) except: LOG.exception("Error updating %s using %s ", label, using) raise
def handle(self, **options): self.verbosity = int(options.get('verbosity', 1)) self.batchsize = options.get('batchsize', DEFAULT_BATCH_SIZE) self.start_date = None self.end_date = None self.remove = options.get('remove', False) self.workers = options.get('workers', 0) self.commit = options.get('commit', True) self.max_retries = options.get('max_retries', DEFAULT_MAX_RETRIES) self.backends = options.get('using') if not self.backends: self.backends = haystack_connections.connections_info.keys() age = options.get('age', DEFAULT_AGE) start_date = options.get('start_date') end_date = options.get('end_date') if self.verbosity > 2: LOG.setLevel(logging.DEBUG) elif self.verbosity > 1: LOG.setLevel(logging.INFO) if age is not None: self.start_date = now() - timedelta(hours=int(age)) if start_date is not None: from dateutil.parser import parse as dateutil_parse try: self.start_date = dateutil_parse(start_date) except ValueError: pass if end_date is not None: from dateutil.parser import parse as dateutil_parse try: self.end_date = dateutil_parse(end_date) except ValueError: pass labels = options.get('app_label') or haystack_load_apps() for label in labels: for using in self.backends: try: self.update_backend(label, using) except: LOG.exception("Error updating %s using %s ", label, using) raise
def handle(self, *items, **options): self.verbosity = int(options.get('verbosity', 1)) self.batchsize = options.get('batchsize', DEFAULT_BATCH_SIZE) self.start_date = None self.end_date = None self.remove = options.get('remove', False) self.workers = int(options.get('workers', 0)) self.commit = options.get('commit', True) self.max_retries = options.get('max_retries', DEFAULT_MAX_RETRIES) self.backends = options.get('using') if not self.backends: self.backends = haystack_connections.connections_info.keys() age = options.get('age', DEFAULT_AGE) start_date = options.get('start_date') end_date = options.get('end_date') if self.verbosity > 2: LOG.setLevel(logging.DEBUG) elif self.verbosity > 1: LOG.setLevel(logging.INFO) if age is not None: self.start_date = now() - timedelta(hours=int(age)) if start_date is not None: from dateutil.parser import parse as dateutil_parse try: self.start_date = dateutil_parse(start_date) except ValueError: pass if end_date is not None: from dateutil.parser import parse as dateutil_parse try: self.end_date = dateutil_parse(end_date) except ValueError: pass if not items: items = haystack_load_apps() return super(Command, self).handle(*items, **options)